Код из видео
пока только код (
/// датчик для народного мониторинга на iboard w5100 /// с датчиками BMP180, AM2320 /// версия от 23.07.16 #include <SPI.h> #include <Ethernet.h> #include <MsTimer2.h> //http://playground.arduino.cc/Main/MsTimer2 #include <Wire.h> #include <BMP085.h> #include <AM2320.h> AM2320 th; BMP085 dps = BMP085(); // мак адрес устройства, ДОЛЖЕН БЫТЬ УНИКАЛЬНЫЙ!!! а не FF byte mac[] = { 0x18, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF }; const char* host = "narodmon.ru"; const int httpPort = 8283; // интервал между передачей данных (в секундах) const unsigned int interval = 60*10; // 10 минут long Pressure = 0; long Temperature = 0; volatile unsigned int timer = 0; float AM2320Temp; float AM2320Hum; float BMP180Temp; float BMP180Pres; // функция таймера, выполняется каждую секунду void flash() { timer++; } void dataRead(){ /// AM2320 th.Read(); AM2320Temp = th.t; AM2320Hum = th.h; /// BMP180 dps.getTemperature(&Temperature); dps.getPressure(&Pressure); BMP180Temp = Temperature*0.1; BMP180Pres = Pressure/133.3; //давление в мм.рт ст /// отправка данных с датчиков в Serial void dbg(){ // BMP180 Serial.print("BMP180 - "); Serial.print(BMP180Pres); //Выводим давление в мм.рт ст Serial.print("mmHg "); Serial.print(BMP180Temp); // Температуру в градусах Цельсия Serial.println("\260C"); Serial.print("AM2320 - "); Serial.print(AM2320Hum); Serial.print("%RH "); Serial.print(AM2320Temp); Serial.println("\260C"); Serial.println(); Serial.println("--- dbg ---"); } void setup() { Serial.begin(9600); Wire.begin(); dps.init(MODE_STANDARD, 3200, true); dataRead(); dbg(); // езернет while (Ethernet.begin(mac) == 0) { delay(500); Serial.print("."); } Serial.println(); Serial.print("IP address: "); Serial.println(Ethernet.localIP()); Serial.print("MAC address: "); for(int i = 0; i < 6; i++) Serial.print(mac[i], HEX); // отправляем МАС Serial.println(); // запускаем таймер MsTimer2::set(1000, flash); MsTimer2::start(); Serial.println("Start"); delay(10); } void loop() { dataRead(); // забераем данные в переменные // dbg(); // Подключаемся к сети // подключаемся к серверу Serial.print("connecting to "); Serial.println(host); EthernetClient client; if (!client.connect(host, httpPort)) { Serial.println("connection failed"); return; } // отправляем данные Serial.println("Sending..."); // заголовок client.print("#"); for(int i = 0; i < 6; i++) client.print(mac[i], HEX); // отправляем МАС // client.print("#ard"); // название устройства // client.print("#45.376339,39.660249"); // координаты местонахождения датчика client.println(); // отправляем данные /// AM2320 client.print("#H1-AM2320#"); client.print(AM2320Hum); client.print("#AM2320-humidity"); client.println(); client.print("#T2-AM2320#"); client.print(AM2320Temp); client.print("#AM2320-temp"); client.println(); /// BMP180 client.print("#P1-BMP180#"); client.print(BMP180Pres); //Выводим давление в мм.рт ст client.print("#BMP180-pressure"); client.println(); client.print("#T1BMP180#"); client.print(BMP180Temp); client.print("#BMP180-temperature"); client.println(); client.println("##"); // читаем ответ и отправляем его в сериал // Serial.print("Requesting: "); // while(client.available()){ // char c = client.read(); // Serial.print(c); // хотя это можно убрать // } Serial.println(); Serial.println(); Serial.println("Closing connection"); // перекур 10 минут while (timer < interval){ Serial.println(timer); //мигаем лампой ТХ delay(1000); } timer = 0; }