Данный термометр будет показывать температуру, влажность в помещении и температуру датчика, находящегося на улице. Понадобится Arduino NodeMcu на ESP8266, датчик DHT11, датчик DS18B20, библиотеки Remote XY, ESP8266WiFi, OneWire, DallasTemperature, DHT ну и само приложение Remote XY. DS18b20 подключать красный провод на +3в, черный на GND, желтый на D4 DHT11 подключаем (+) на +3в, (-) на GND, OUT на D3. В скетче меняем настройки подключения к вашей точке доступа.
|
// определение режима соединения и подключение библиотеки RemoteXY #define REMOTEXY_MODE__ESP8266WIFI_LIB #include <ESP8266WiFi.h> #include <RemoteXY.h> #include <OneWire.h> #include <DallasTemperature.h> #include <DHT.h> // Для опроса датчика DTH-11 DHT dht;// Для опроса датчика DTH-11 #define ONE_WIRE_BUS_2 2 // подключать на пин D4!!! Я ХУЙ ЕГО ЗНАЕТ КАК ПИСАЛИ ЭТУ БИБЛИОТЕКУ!!! OneWire oneWire_out(ONE_WIRE_BUS_2); DallasTemperature sensor_outhouse(&oneWire_out); double tempoutDOUBLE = 0;//переменная с температурой для 18B20 double vlagaDOUBLE = 0;//переменная с температурой для 18B20 double tempinDOUBLE = 0;//переменная с температурой для 18B20 char tempintxt[11]; // =строка UTF8 оканчивающаяся нулем char tempouttxt[11];//Текстовое поле под температуру char vlagatxt[11];//Текстовое поле под температуру double i = 0; // настройки соединения #define REMOTEXY_WIFI_SSID "wi-fi" //ИМЯ ВАШЕЙ ТОЧКИ ДОСТУПА #define REMOTEXY_WIFI_PASSWORD "password"//ПАРОЛЬ ТОЧКИ ДОСТУПА #define REMOTEXY_SERVER_PORT 6378 //порт для подключения // конфигурация интерфейса #pragma pack(push, 1) uint8_t RemoteXY_CONF[] = { 255,0,0,33,0,59,1,10,185,1, 67,6,12,14,24,14,24,185,11,129, 0,10,10,44,4,165,208,162,208,181, 208,188,208,191,208,181,209,128,208,176, 209,130,209,131,209,128,208,176,32,208, 189,208,176,32,209,131,208,187,208,184, 209,134,208,181,0,129,0,35,16,2, 3,24,32,48,0,129,0,36,18,6, 8,24,208,161,0,129,0,5,31,53, 4,165,208,162,208,181,208,188,208,191, 208,181,209,128,208,176,209,130,209,131, 209,128,208,176,32,208,178,32,208,191, 208,190,208,188,208,181,209,137,208,181, 208,189,208,184,208,184,0,129,0,36, 38,4,6,24,208,161,0,129,0,35, 36,2,3,24,32,48,0,129,0,7, 53,49,4,165,208,146,208,187,208,176, 208,182,208,189,208,190,209,129,209,130, 209,140,32,208,178,32,208,191,208,190, 208,188,208,181,209,137,208,181,208,189, 208,184,208,184,0,129,0,37,60,4, 4,24,37,0,67,6,17,36,18,9, 24,185,11,67,6,18,57,18,9,24, 185,11,129,0,4,20,67,8,37,95, 95,95,95,95,95,95,95,95,95,95, 95,95,95,95,0,129,0,4,42,67, 8,37,95,95,95,95,95,95,95,95, 95,95,95,95,95,95,95,0,129,0, 4,61,67,8,37,95,95,95,95,95, 95,95,95,95,95,95,95,95,95,95, 0,129,0,17,88,29,4,95,119,119, 119,46,52,56,52,56,54,57,46,114, 117,0 }; // структура определяет все переменные и события вашего интерфейса управления struct { // output variables char tempout[11]; // =строка UTF8 оканчивающаяся нулем char tempin[11]; // =строка UTF8 оканчивающаяся нулем char vlaga[11]; // =строка UTF8 оканчивающаяся нулем // output variables // char tempouttext[11]; // =строка UTF8 оканчивающаяся нулем // other variable uint8_t connect_flag; // =1 if wire connected, else =0 } RemoteXY; #pragma pack(pop) ///////////////////////////////////////////// // END RemoteXY include // ///////////////////////////////////////////// void setup(void) { RemoteXY_Init (); Serial.begin(9600); dht.setup(D3); // TODO you setup code sensor_outhouse.begin(); } void loop(void) { RemoteXY_Handler (); //Serial.print("Requesting temperatures..."); double vlagaDOUBLE = dht.getHumidity();/* ВЛАЖНОСТЬ */ double tempinDOUBLE = dht.getTemperature();/* ТЕМПЕРАТУРА */ i=i+1; if (i>40) { sensor_outhouse.requestTemperatures(); tempoutDOUBLE =sensor_outhouse.getTempCByIndex(0); i=0; } dtostrf(tempoutDOUBLE, 0, 0, tempouttxt); dtostrf(vlagaDOUBLE, 0, 0, vlagatxt); dtostrf(tempinDOUBLE, 0, 0, tempintxt); strcpy(RemoteXY.tempout, tempouttxt); if (vlagaDOUBLE>0) { Serial.print("температура в помещении:"); Serial.println(tempintxt); Serial.print("температура на улице:"); Serial.println(tempouttxt); Serial.print("влажность в помещении:"); Serial.println(vlagatxt); strcpy(RemoteXY.tempout, tempouttxt); strcpy(RemoteXY.vlaga, vlagatxt); strcpy(RemoteXY.tempin, tempintxt); } delay (50); }