Уже использовал разные IDE, на данный момент самая последняя 1.8.1 Код (Text): #include <DHT.h> #include <SPI.h> #include <Ethernet.h> #include <SD.h> #define REQ_BUF_SZ 20 #define DHT11_PIN 7 dht11 DHT; File webFile; char HTTP_req[REQ_BUF_SZ] = {0}; // buffered HTTP request stored as null terminated string char req_index = 0; // index into HTTP_req buffer byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IPAddress ip(192, 168, 1, 100); EthernetServer server(80); void setup() { Ethernet.begin(mac, ip); server.begin(); SD.begin(4); } void loop() { // listen for incoming clients EthernetClient client = server.available(); if (client) { // an http request ends with a blank line boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); if (req_index < (REQ_BUF_SZ - 1)) { HTTP_req[req_index] = c; // save HTTP request character req_index++; } if (c == '\n' && currentLineIsBlank) { if (StrContains(HTTP_req, "GET / ")) { // send a standard http response header client.println("HTTP/1.1 200 OK"); client.println("Connection: close"); client.println(); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<link rel='shortcut icon' href='favicon.ico' type='image/x-icon'>"); client.println("<meta http-equiv='refresh' content='10'/>"); client.println("<meta http-equiv='content-type' content='text/html; charset=UTF-8'>"); client.println("<title>Данные с датчиков</title>"); int smoke_gas = 0; //пин на котором подключен MQ-2 int sensorReading = analogRead(smoke_gas); client.print("<img src='/flame.png'/>Датчик дыма = "); client.print(sensorReading); client.println("<br />"); int chk; chk = DHT.read(DHT11_PIN); client.print("<img src='temp.png' />Температура = "); client.print(DHT.temperature); client.print(" °C<br/>"); client.print("<img src='humid.png /'>Влажность = "); client.print(DHT.humidity); client.print(" %"); client.print("</br>"); client.print("</br>"); client.print("<form action='http://tehnopage.ru 'target='_blank'><button type='submit' >Tehnopage.ru</button></form>"); client.println("</html>"); } else if (StrContains(HTTP_req, "GET /temp.png")) { webFile = SD.open("temp.png"); if (webFile) { client.println("HTTP/1.1 200 OK"); client.println(); } } else if (StrContains(HTTP_req, "GET /humid.png")) { webFile = SD.open("humid.png"); if (webFile) { client.println("HTTP/1.1 200 OK"); client.println(); } } else if (StrContains(HTTP_req, "GET /flame.png")) { webFile = SD.open("flame.png"); if (webFile) { client.println("HTTP/1.1 200 OK"); client.println(); } } else if (StrContains(HTTP_req, "GET /favicon.ico")) { webFile = SD.open("favicon.ico"); if (webFile) { client.println("HTTP/1.1 200 OK"); client.println(); } } if (webFile) { while (webFile.available()) { client.write(webFile.read()); // send web page to client } webFile.close(); } req_index = 0; StrClear(HTTP_req, REQ_BUF_SZ); break; } if (c == '\n') { // you're starting a new line currentLineIsBlank = true; } else if (c != '\r') { // you've gotten a character on the current line currentLineIsBlank = false; } } } // give the web browser time to receive the data delay(1); // close the connection: client.stop(); } } void StrClear(char *str, char length) { for (int i = 0; i < length; i++) { str[i] = 0; } } char StrContains(char *str, char *sfind) { char found = 0; char index = 0; char len; len = strlen(str); if (strlen(sfind) > len) { return 0; } while (index < len) { if (str[index] == sfind[found]) { found++; if (strlen(sfind) == found) { return 1; } } else { found = 0; } index++; } return 0; } Код (Text): DHTtester:9: error: 'dht11' does not name a type dht11 DHT; ^ C:\Users\Maks\AppData\Local\Temp\arduino_modified_sketch_810731\DHTtester.ino: In function 'void loop()': C:\Users\Maks\AppData\Local\Temp\arduino_modified_sketch_810731\DHTtester.ino:41:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] if (StrContains(HTTP_req, "GET / ")) { ^ DHTtester:62: error: expected primary-expression before '.' token chk = DHT.read(DHT11_PIN); ^ DHTtester:64: error: expected primary-expression before '.' token client.print(DHT.temperature); ^ DHTtester:67: error: expected primary-expression before '.' token client.print(DHT.humidity); ^ C:\Users\Maks\AppData\Local\Temp\arduino_modified_sketch_810731\DHTtester.ino:74:59: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] } else if (StrContains(HTTP_req, "GET /temp.png")) { ^ C:\Users\Maks\AppData\Local\Temp\arduino_modified_sketch_810731\DHTtester.ino:81:58: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] else if (StrContains(HTTP_req, "GET /humid.png")) { ^ C:\Users\Maks\AppData\Local\Temp\arduino_modified_sketch_810731\DHTtester.ino:88:58: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] else if (StrContains(HTTP_req, "GET /flame.png")) { ^ C:\Users\Maks\AppData\Local\Temp\arduino_modified_sketch_810731\DHTtester.ino:95:60: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] else if (StrContains(HTTP_req, "GET /favicon.ico")) { ^ Несколько библиотек найдено для "SD.h" Используется: C:\Program Files (x86)\Arduino\libraries\SD Не используется: C:\Users\Maks\Documents\Arduino\libraries\arduino_281218 exit status 1 'dht11' does not name a type
sketch_jan10a:8: error: no matching function for call to 'DHT:HT()' DHT sensor = DHT(); ^ C:\Users\Maks\AppData\Local\Temp\arduino_modified_sketch_802961\sketch_jan10a.ino:8:18: note: candidates are: In file included from C:\Users\Maks\AppData\Local\Temp\arduino_modified_sketch_802961\sketch_jan10a.ino:1:0:
https://github.com/adafruit/DHT-sensor-library/blob/master/DHT.h DHT(uint8_t pin, uint8_t type, uint8_t count=6); Если это ваша библиотека.
Сделал такой скетч Код (Text): /* Скетч для вывода в Монитор порта теспературы в Цельсиях и Влажности с датчика DHT22 и отправки их по MQTT в брокер и MajorDoMo. */ #include <SPI.h> // Библиотека SPI шины #include <Ethernet.h> // Ethernet библиотека #include <PubSubClient.h> // Библиотека MQTT #include <DHT.h> // Библиотека для датчиков DHT11/22 #define DHTPIN A0 // Номер пина, к которому подсоединен датчик #define DHTTYPE DHT11 // Задаём тип DHT датчика DHT dht(DHTPIN, DHTTYPE); #define UNUSED(expr) do { (void)(expr); } while (0) /*Безсмысленный цикл для callback убирающий предупреждение с компилятора*/ // Задаём mac и ip адреса в Локальной сети byte mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED }; IPAddress ip{192, 168, 1, 100}; //ip Адрес Ethernet Shild'a Arduino IPAddress server{192, 168, 1, 237}; //ip Адрес для MQTT Брокера // Шапка Функции Callback для объявления и Инициализации PubSubClient void callback(char* topic, byte* payload, unsigned int length); EthernetClient ethClient; // Инициализируем Ethernet клиент PubSubClient client(server, 1883, callback, ethClient); // Инициализируем MQTT клиент // Функция Callback void callback(char* topic, byte* payload, unsigned int length) { //Используем идентификатор UNUSED для устранения Warning'а при компиляции UNUSED(topic); client.publish("home/data/status/sensor", payload, length); } void setup() { // 1 бод равно 0.8 бит/сек // 1 бит/сек равно 1.25 бод Serial.begin(9600); // Задаём скорость порта в БОД'ах. Serial.println(F("DHT22 test!")); // Тестовое сообщ. при откр. Монитора порта dht.begin(); // Инициализируем dht Ethernet.begin(mac, ip); // Инициализируем mac, ip } void reconnect() { // Повторяем, пока не переподключимся while (!client.connected()) { // Логическое НЕ "!" - Если клиент не подкл.... // Попытка подключиться if (client.connect("DHTClient")) { // Если DHTClient клиент подключен... Serial.println(F("connected!")); // Выводим сообщ., что подключено! } else { Serial.print(F("failed connected - ")); // Ощибка соединения Serial.println(F("Jdem 5 seconds")); // Ждём 5 секунд delay(5000); } } } void loop() { if (!client.connect("DHTClient")) { //Если DHTClient клиент не подключен... reconnect(); //Запускаем функцию перезепуска } client.loop(); int h = dht.readHumidity(); // Переменная типа int для Влажности int t = dht.readTemperature(); // Переменная типа int для Температуры // Преобразуем переменные для отправки по MQTT в Брокер. // В обоих случаях используем с запасом массив символов из 7 элементов (char_temp[7]). static char char_temp[7]; // Переменная для перевода из int в char itoa(t, char_temp, 10); // Перевод из int в char static char char_hum[7]; itoa(h, char_hum, 10); // Отправка данных в Монитор порта. Serial.print(F("Humidity: ")); // Обёртываем в макрос F() для экономии ОЗУ Serial.print(h); Serial.print(F(" %\t")); Serial.print(F("Temperature: ")); Serial.print(t); Serial.println(F(" *C")); //Отправка данных по MQTT в Брокер client.publish("home/data/status/sensor/temp", char_temp); //Температура client.publish("home/data/status/sensor/hum", char_hum); //Влажность delay(2000); // Отправка данных в Брокер раз в 2 секунды } Скомпилился, но данные не приходят ((( Что можно исправить для DHT11?
Ну если DHT11, то поправили бы в комментариях в скетче. Просветите меня, пожалуйста, А0 это порт ведь, да? А какой, аналоговый или цифровой; ввода, вывода, ввода-вывода?