На сегодняшний момент я пользуюсь arduino Uno и Ethernet W5100 вместе с датчиком температуры 18B20. И вот на сегодняшний момент хочу каким-то образом совместить два датчика 18B20 и DHT11. То есть получается один датчик для улицы 2 датчик для квартиры. Так как с программированием написания кода У меня есть сложности хотел спросить Может уже есть какие-нибудь готовые проекты по данному вопросу? И самое главное хотелось бы что все выводимые данные с двух датчиков выводились через веб-сервера на платье Ethernet W5100. Заранее огромное Спасибо всем кто может помочь по данному проекту.
новое веяние? У меня на подоконнике на балконе лежит такой проект. Выходит на связь каждые 10 секунд и уже год сцука не может разрядить батарейку 123. Впрочем, в тырнетах таких говнопроектов полно.
они прекрасно совмещаются, только если 18В20 работает, а DHT11 лежит в мусорном ведре.... Только так.
Где купить такую батарейку чтобы Ардуина год на ней работала?Да ещё 123.Она ж 3 вольта.Как у Вас Ethernet W5100 от неё работает?Ему ж 5 вольт надо?
Задача простая. Использовать солнечные панели и литий-ионный аккумулятор. Автономность гарантированная.
Был тут один проект на Blynk.Есть посложнее.Ненужные датчики закоментировать/убрать или просто не подключать.Хотя мне больше нравиться Blynk.Если бы я делал то на нём.
В ходе реализации проекта решено было отказаться от всяких проводов. Сейчас вымучиваю энергоэффектиную схему на солнечных батареях и ионисторе. А если есть Ethernet, то здесь напрашивается PoE.
Что вы имете под солнечной батареей? Солнечная панелька + аккум + контроллер заряда? Или все же просто солнечная панелька? Если второе - то в чем проблема соединить их (панельку и ионистр, если конечно панелька 5ти вольтовая)?
А что можно ещё иметь ввиду под солнечной батареей)))??? соединить - проблемы вообще нет. Проблема заставить их эффективно работать с полной отдачей.
Вот нашёл интересный проект для Esp-8266 и Blynk.То что нужно ТС и немного больше.Есть управление релюхой.Есть оповещение от датчика движения.Если не нужно то всю эту Лабуду подключать не надо и в Блинке на Смартфоне не задействовать.Или в коде ненужное убрать/закоментировать.К сожалению ссылку на Сайт Автора потерял и найти не могу.Но скетч рабочий вчера погонял-мне понравилось.Мой для DHT и DS18b20 наподобие только проще. Код (C++): #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> #include <SimpleTimer.h> #include <OneWire.h> #include <SPI.h> #include <Ethernet.h> //#include <BlynkSimpleEthernet.h> #include <DallasTemperature.h> #include <WidgetRTC.h> #include <dht11.h> dht11 DHT; // определение входов/выходов на плате ESP8266 (ESP-12F/E) #define DHT11_PIN 12 // gpio12 датчик темп. DHT-11 #define ONE_WIRE_BUS 13 // gpio13 датчик температуры DS2B18 или куча датчиков #define Light_PIN 4 // gpio4 рэле на включение света #define Electro_PIN 15 // gpio15 рэле на выключение розетки #define PIR_PIN 5 // gpio5 // определение пина на выход датчика движения HC-SR501 #define BLYNK_MAX_SENDBYTES 600 // увеличить размер сообщений (по умолчанию 128) // цвета виджетов на смартфоне // здесь все просто – каждые 2 цифры в 16-тиричном коде соответствуют R,G и B // кодировки цвета, я в CorelDraw окрасил прямоугольник в нужный цвет // записал значения R,G и B, перевел в 16-тиричный код #define BLYNK_GREEN "#23C48E" #define BLYNK_BLUE "#04C0F8" #define BLYNK_YELLOW "#ED9D00" #define BLYNK_RED "#D3435C" #define BLYNK_DARK_BLUE "#5F7CD8" #define BLYNK_WHITE "#FFFFFF" #define BLYNK_CYAN "#99F7F1" #define BLYNK_YELLOW_L "#E7F799" #define BLYNK_ROSE "#F7B599" #define BLYNK_FIOLET "#F799F2" #define BLYNK_GREEN_L "#99F7B4" OneWire oneWire(ONE_WIRE_BUS); // привязка OneWare-коммуникации к пину на плате DallasTemperature sensors(&oneWire); // привязка датчиков DS2B18 к шине OneWare // персональные данные char auth[] = "------------------------"; //код авторизации в Blynk char ssid[] = "------------------"; //название вашей сети Wi-Fi char pass[] = "------------"; //пароль вашего Wi-Fi SimpleTimer timer; WidgetRTC rtc; // инициализируем виджет часов реального времени // все переменные по свету, сигнализации и датчика движения HC-SR501 bool flagAlarm = false; // произошло проникновение (сигнал с датчика) bool flagSetAlarm = false; // постановка на сигнализацию (сигнал с выджета "кнопка" на смартфоне) bool flagAlarmPrevious = false; // состояние по фронтам сигнала от датчика движения bool flagLightOn = false; // свет в корридоре постоянно включить (сигнал с выджета "кнопка" на смартфоне) bool isFirstConnect = true; bool LIG = false; int lightLev; BLYNK_CONNECTED()// Если установили связь первый раз, то синхонезируем все виджеты { rtc.begin(); if (isFirstConnect) { Blynk.syncAll(); // синхонезируем все виджеты if (year() != 1970) { // Составляем строки с временем и датой и добовляем их к сообщению String currentTime = String(hour()) + ":" + minute() + ":" + second(); String currentDate = String(day()) + "/" + month() + "/" + year() + " "; String Notif_first = "Оборудование Запущено " + currentDate + " " + currentTime; Blynk.notify(Notif_first); isFirstConnect = false; } } } void setup() { Serial.begin(9600); // See the connection status in Serial Monitor Blynk.begin(auth, ssid, pass); sensors.begin(); pinMode(Light_PIN,OUTPUT); pinMode(Electro_PIN,OUTPUT); pinMode(PIR_PIN,INPUT); setSyncInterval(10*60); timer.setInterval(5000L, sendUptime); // задаем 5 сек. } BLYNK_WRITE(V0) // Считываем состояние кнопки "Alarm_On" { if (param.asInt() == 1) { flagSetAlarm =true; Blynk.setProperty(V0,"onLabel","Объект на охране"); Blynk.setProperty(V0,"color",BLYNK_RED); } else { flagSetAlarm =false; Blynk.setProperty(V0,"offLabel","Снят с охраны"); Blynk.setProperty(V0,"color",BLYNK_GREEN); Blynk.setProperty(V0,"label","Охрана Объекта"); } } //BLYNK_WRITE(V0) BLYNK_WRITE(V1) // Считываем состояние кнопки "включить свет" { if (param.asInt() == 1) { flagLightOn =true; Blynk.setProperty(V1,"onLabel","Свет горит"); Blynk.setProperty(V1,"color",BLYNK_YELLOW_L); } else { flagLightOn =false; Blynk.setProperty(V1,"offLabel","Свет - auto mode"); Blynk.setProperty(V1,"color",BLYNK_WHITE); } } // BLYNK_WRITE(V1) BLYNK_WRITE(V2) // Считываем состояние кнопки "выключить розетку" { if (param.asInt() == 1) { digitalWrite(Electro_PIN,HIGH); // выключаем розетку, поскольку контакты рэле Н.З. Blynk.setProperty(V2,"onLabel","Розетка отключена"); Blynk.setProperty(V2,"color",BLYNK_RED); } else { digitalWrite(Electro_PIN,LOW); Blynk.setProperty(V2,"offLabel","Розетка включена"); Blynk.setProperty(V2,"color",BLYNK_BLUE); } } // BLYNK_WRITE(V2) BLYNK_WRITE(V3) // Считываем пороговую уставку уровня освещенности по которой включаем свет (при срабатывании датчика движения) { lightLev = param.asInt(); } // BLYNK_WRITE(V3) void readPIRSensor() // функция для считывания показаний датчика движения { if (digitalRead(PIR_PIN) == HIGH) { flagAlarm = true; } else { flagAlarm = false; } if ((flagAlarm) && (!flagAlarmPrevious)) { flagAlarmPrevious = true; LIG = true; if (lightLev < analogRead(A0)) { LIG = false; } if(flagSetAlarm) { // Составляем строки с временем и датой и добовляем их к сообщению String currentTime = String(hour()) + ":" + minute() + ":" + second(); String currentDate = String(day()) + "/" + month() + "/" + year() + " "; String Notif = currentDate + " " + currentTime + " - проникновение"; Blynk.notify(Notif); //String curMes = "Проникновение - " + currentTime; Blynk.setProperty(V0,"label",Notif); } } if ((!flagAlarm) && (flagAlarmPrevious)) { flagAlarmPrevious = false; LIG = false; delay(200); //на всякий случай - время для восстановления параметров датчика освещенности после выключения света, на случай датчик движения выкл. и бысто вкл. } } // readPIRSensor // программа обработки иннформации от датчиков температуры // по заданному интервалу времени, у нас раз в 5 сек., см. строку 82 (поскольку датчик температуры DHT11 - тормознутый) void sendUptime() { //параметры отсылаем в Blynk Blynk.virtualWrite(10, DHT.temperature - 2); //virtual pin 10 - температура в корридоре Blynk.virtualWrite(11, DHT.humidity); // virtual pin 11 - влажность в корридоре Blynk.virtualWrite(12,analogRead(A0)); // virtual pin 12 освещенность в корридоре sensors.requestTemperatures(); // запрос от сенсоров ds2b18 float tempAir = sensors.getTempCByIndex(0); // получение информ. от сенсора 1 Blynk.virtualWrite(13, tempAir); // virtual pin 13 - температура на улице //float tempAir1 = sensors.getTempCByIndex(1); //получение информ. от сенсора 2 //Blynk.virtualWrite(14, tempAir1); // virtual pin 14 - температура в комнате } void loop() { Blynk.run(); // Initiates Blynk timer.run(); // Initiates SimpleTimer readPIRSensor(); if (flagLightOn) { digitalWrite(Light_PIN,HIGH);//если мы из Blynk нажали клавишу вкл. свет - вкл. свет в безакцептном порядке } else { if (LIG) { digitalWrite(Light_PIN,HIGH); // включаем свет если сработал датчик движения и уровень освещенности меньше установленного в Blynk } else { digitalWrite(Light_PIN,LOW); // выключаем свет } } int chk = DHT.read(DHT11_PIN); // чтение с сенсора DHT11 }