Arduino mini pro + W5100+dht22+bmp180+фото датчик+датчик дождя.
- Войдите на сайт для отправки комментариев
Чт, 16/04/2015 - 19:26
Какая то проблема, не могу вывести данные с датчика дождя, датчик дождя выводит напряжение 0-5в на А1 , такое впечатление что в коде есть ограничение на количество датчиков до 6 штук.
#include <dht.h> dht DHT; #define DHT22_PIN 3 #include <Dhcp.h> #include <Dns.h> #include <Ethernet.h> #include <EthernetClient.h> #include <EthernetServer.h> #include <EthernetUdp.h> #include <util.h> #include <SPI.h> #include <Wire.h> #include <BMP085.h> #include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); BMP085 bmp; int sensorPin = A0; // Датчик света фотодатчик unsigned int sensorValue = 0; // цифровое значение фоторезистора int analogPin = 1; // датчик дождя int val = 0; // переменная для хранения значения датчика дождя /от 0-5в const unsigned long postingInterval = 300000; // интервал между отправками данных в миллисекундах (5 минут) unsigned long lastConnectionTime = 0; // время последней передачи данных boolean lastConnected = false; // состояние подключения int HighByte, LowByte, TReading, SignBit, Tc_100; char replyBuffer[106]; char CurTemp[8], CurHum[8], Dav[8], Temp1[8], Temp3[8], Foto[8], Dojd[8]; // ========================Задаем данные сети====================== byte mac[] = { мак адресс }; //mac - адрес ethernet shielda EthernetClient client; // //int ledPin = 9; // указываем что светодиод будет управляться через 9 Pin String readString = String(30); //string for fetching data from address boolean LEDON = false; //изначальный статус светодиода - выключен IPAddress server(94, 19, 113, 221); // IP сервера narodmon.ru // =============================================================== void setup() { delay(4000); // Ethernet connection: if (Ethernet.begin(mac) == 0) { //Serial.println("Failed to configure Ethernet using DHCP"); // ничего не делаем. doing nothing for (;;); } // пара секунд для инициализации Ethernet. Couple of seconds just to warm up Ethernet. delay(2000); lastConnectionTime = millis() - postingInterval + 15000; //первое соединение через 15 секунд после запуска. First connection after 15 sec timeout. bmp.begin(); sensors.begin(); } void loop() { sensors.requestTemperatures(); // READ DATA int chk = DHT.read22(DHT22_PIN); switch (chk) delay (1000); // TempDig = DHT.temperature; dtostrf(DHT.temperature, 4, 1, CurTemp); delay (1000); dtostrf(DHT.humidity, 4, 1, CurHum); delay(50000); if (client.available()) { char c = client.read(); } if (client.connected() && lastConnected) { client.stop(); } if (!client.connected() && (millis() - lastConnectionTime > postingInterval)) { //формирование HTTP-запроса. Preparing http request. memset(replyBuffer, 0, sizeof(replyBuffer)); strcpy(replyBuffer, "ID="); //Конвертируем MAC-адрес. Converting mac address. for (int k = 0; k < 6; k++) { int b1 = mac[k] / 16; int b2 = mac[k] % 16; char c1[2], c2[2]; if (b1 > 9) c1[0] = (char)(b1 - 10) + 'A'; else c1[0] = (char)(b1) + '0'; if (b2 > 9) c2[0] = (char)(b2 - 10) + 'A'; else c2[0] = (char)(b2) + '0'; c1[1] = '\0'; c2[1] = '\0'; strcat(replyBuffer, c1); strcat(replyBuffer, c2); } //конвертируем адрес термодатчика. Converting first sensor address. strcat(replyBuffer, "&"); for (int k = 0; k < 6; k++) { int b1 = mac[k] / 16; int b2 = mac[k] % 16; char c1[2], c2[2]; if (b1 > 9) c1[0] = (char)(b1 - 10) + 'A'; else c1[0] = (char)(b1) + '0'; if (b2 > 9) c2[0] = (char)(b2 - 10) + 'A'; else c2[0] = (char)(b2) + '0'; c1[1] = '\0'; c2[1] = '\0'; strcat(replyBuffer, c1); strcat(replyBuffer, c2); } strcat(replyBuffer, "01"); //01 темп улица DHT22 //конвертируем адрес датчика влажности. Converting secong sensor address. strcat(replyBuffer, "="); if (SignBit) { strcat(replyBuffer, "-"); } strcat(replyBuffer, CurTemp); strcat(replyBuffer, "&"); for (int k = 0; k < 6; k++) { int b1 = mac[k] / 16; int b2 = mac[k] % 16; char c1[2], c2[2]; if (b1 > 9) c1[0] = (char)(b1 - 10) + 'A'; else c1[0] = (char)(b1) + '0'; if (b2 > 9) c2[0] = (char)(b2 - 10) + 'A'; else c2[0] = (char)(b2) + '0'; c1[1] = '\0'; c2[1] = '\0'; strcat(replyBuffer, c1); strcat(replyBuffer, c2); } strcat(replyBuffer, "2");//12 влажность улица DHT22 strcat(replyBuffer, "="); strcat(replyBuffer, CurHum); strcat(replyBuffer, "&"); for (int k = 0; k < 6; k++) { int b1 = mac[k] / 16; int b2 = mac[k] % 16; char c1[2], c2[2]; if (b1 > 9) c1[0] = (char)(b1 - 10) + 'A'; else c1[0] = (char)(b1) + '0'; if (b2 > 9) c2[0] = (char)(b2 - 10) + 'A'; else c2[0] = (char)(b2) + '0'; c1[1] = '\0'; c2[1] = '\0'; strcat(replyBuffer, c1); strcat(replyBuffer, c2); } strcat(replyBuffer, "03");//11 давление 085 strcat(replyBuffer, "="); dtostrf(bmp.readPressure(), 4, 1, Dav); strcat(replyBuffer, Dav); strcat(replyBuffer, "&"); for (int k = 0; k < 6; k++) { int b1 = mac[k] / 16; int b2 = mac[k] % 16; char c1[2], c2[2]; if (b1 > 9) c1[0] = (char)(b1 - 10) + 'A'; else c1[0] = (char)(b1) + '0'; if (b2 > 9) c2[0] = (char)(b2 - 10) + 'A'; else c2[0] = (char)(b2) + '0'; c1[1] = '\0'; c2[1] = '\0'; strcat(replyBuffer, c1); strcat(replyBuffer, c2); } strcat(replyBuffer, "04");//10 температура 085 strcat(replyBuffer, "="); dtostrf(bmp.readTemperature(), 4, 1, Temp1); strcat(replyBuffer, Temp1); strcat(replyBuffer, "&"); for (int k = 0; k < 6; k++) { int b1 = mac[k] / 16; int b2 = mac[k] % 16; char c1[2], c2[2]; if (b1 > 9) c1[0] = (char)(b1 - 10) + 'A'; else c1[0] = (char)(b1) + '0'; if (b2 > 9) c2[0] = (char)(b2 - 10) + 'A'; else c2[0] = (char)(b2) + '0'; c1[1] = '\0'; c2[1] = '\0'; strcat(replyBuffer, c1); strcat(replyBuffer, c2); } strcat(replyBuffer, "5");//8 температура 1820 strcat(replyBuffer, "="); dtostrf(sensors.getTempCByIndex(0), 4, 1, Temp3); strcat(replyBuffer, Temp3); strcat(replyBuffer, "&"); for (int k = 0; k < 6; k++) { int b1 = mac[k] / 16; int b2 = mac[k] % 16; char c1[2], c2[2]; if (b1 > 9) c1[0] = (char)(b1 - 10) + 'A'; else c1[0] = (char)(b1) + '0'; if (b2 > 9) c2[0] = (char)(b2 - 10) + 'A'; else c2[0] = (char)(b2) + '0'; c1[1] = '\0'; c2[1] = '\0'; strcat(replyBuffer, c1); strcat(replyBuffer, c2); } /*strcat(replyBuffer, "07"); //23 Датчик дождя++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ strcat(replyBuffer, "="); if (SignBit) val = analogRead(analogPin); dtostrf(val, 4, 1, Dojd); strcat(replyBuffer, Dojd); strcat(replyBuffer, "&"); for (int k = 0; k < 6; k++) { int b1 = mac[k] / 16; int b2 = mac[k] % 16; char c1[2], c2[2]; if (b1 > 9) c1[0] = (char)(b1 - 10) + 'A'; else c1[0] = (char)(b1) + '0'; if (b2 > 9) c2[0] = (char)(b2 - 10) + 'A'; else c2[0] = (char)(b2) + '0'; c1[1] = '\0'; c2[1] = '\0'; strcat(replyBuffer, c1); strcat(replyBuffer, c2); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ strcat(replyBuffer, "06"); //Фото датчик 05 strcat(replyBuffer, "="); sensorValue = analogRead(sensorPin); dtostrf(sensorValue, 4, 1, Foto); strcat(replyBuffer, Foto); strcat(replyBuffer, "&"); httpRequest(); } lastConnected = client.connected(); } void httpRequest() { if (client.connect(server, 80)) { // send the HTTP POST request: client.println("POST http://narodmon.ru/post.php HTTP/1.0"); //Serial.println("POST http://narodmon.ru/post.php HTTP/1.0"); client.println("Host: narodmon.ru"); // Serial.println("Host: narodmon.ru"); //client.println("User-Agent: arduino-ethernet"); //client.println("Connection: close"); client.println("Content-Type: application/x-www-form-urlencoded"); // Serial.println("Content-Type: application/x-www-form-urlencoded"); client.print("Content-Length: "); client.println(strlen(replyBuffer)); // Serial.print("Content-Length: "); // Serial.println(strlen(replyBuffer)); client.println(); // Serial.println(); client.println(replyBuffer); // Serial.println(replyBuffer); client.println(); lastConnectionTime = millis(); delay(1000); } else { // Serial.print("http request failed - client not connected"); client.stop(); } }
тоесть если я вставляю код датчика дождя строчки 240-263, то на сайт ваще данные не поступают.
тоесть если я вставляю код датчика дождя строчки 240-263, то на сайт ваще данные не поступают.
Если есть подозрение на ограничение количества датчиков, я бы попробовал закоммментировать другой датчик, а этот - раскомментировал...
тоесть если я вставляю код датчика дождя строчки 240-263, то на сайт ваще данные не поступают.
Если есть подозрение на ограничение количества датчиков, я бы попробовал закоммментировать другой датчик, а этот - раскомментировал...
делал, работает.
но вопрос, это на сайте ограничение, или у меня в коде?
как можно вставить в этот код.
код ик приёмника. ?
что бы ик приёмник сработал в любой промежуток времени?