Arduino совместимая плата IBoard w5100 для народного мониторинга

Код из видео

 



пока только код (

 

/// датчик для народного мониторинга на 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;
}