Advertisement
D0cEvil

Arduino Meteostation

Sep 19th, 2022
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.54 KB | Source Code | 0 0
  1. #include <OneWire.h>
  2. #include <DallasTemperature.h>
  3. #include <system.h>
  4. #include <math.h>               // math support
  5. #include "U8glib.h"             //for LCD display
  6. #include "DHT.h"                // for temp/humidity sensor
  7. #include <Wire.h>
  8. #include <Adafruit_BMP085.h>    //for BMP085 pressure sensor
  9. #include <Ethernet.h>           //for Network card
  10.  
  11. #define DHTPIN 9          // К какому пину подключен датчик DHT
  12. //#define DHT2PIN 52        // К какому пину подключен 2-й DHT
  13. #define DHTTYPE DHT22     // Тип термометра-психрометра, DHT 22  (AM2302), AM2321
  14. #define ONE_WIRE_BUS 8    // К какому пину подключен датчик DS18B20
  15.  
  16. OneWire oneWire(ONE_WIRE_BUS);
  17. DallasTemperature sensors(&oneWire);
  18.  
  19. //Подключение ЖК-дисплея
  20.  
  21. // 1 (GND) --> GND
  22. // 2 (Vcc) --> +5V
  23. // 4 (RS) --> 12
  24. // 5 (R/W) --> 11
  25. // 6 (E)--> 10
  26. // 15 (PSB) --> GND
  27. // 19 (BLA) --> +5 (Подсветка дисплея)
  28. // 20 (BLK) --> GND
  29.  
  30. U8GLIB_ST7920_128X64 u8g(10, 11, 12, U8G_PIN_NONE); // Настройка пинов LCD
  31. DHT dht(DHTPIN, DHTTYPE);                           // DHT22 pins
  32. //DHT dht2(53, DHTTYPE);                              // DHT22 pins  
  33.  
  34. Adafruit_BMP085 bmp;                                // Барометр BMP085
  35.  
  36. // Network card //
  37.  
  38. byte mac[] = {0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX};
  39. byte ip[] = {192, 168, 1, 10};  // <- change to match your network
  40. EthernetClient client;
  41. char server[] = "narodmon.ru";
  42.  
  43. void setup()
  44. {
  45.     sensors.begin();            // Активация DS18B20
  46.     Serial.begin(115200);       // COM-port
  47.     Ethernet.begin(mac, ip);    // Активация сетевой карты
  48.     u8g.setFont(u8g_font_6x10); // Выбор шрифта
  49.     if (!bmp.begin())
  50.         {
  51.             Serial.println("Could not find a valid BMP085 sensor, check wiring!");
  52.             while (1) {}
  53.         }
  54. }
  55.  
  56. void loop()
  57. {
  58.    
  59.     sensors.requestTemperatures();
  60.     float z = 0.0;
  61.     int p = 0;
  62.     z = (bmp.readPressure()); // Считываем давление в паскалях с BMP085
  63.     p = z/133.322; // Паскали в мм.рт.ст
  64.     // Reading temperature or humidity takes about 250 milliseconds!
  65.     // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  66.     int h = dht.readHumidity(); //Считываем влажность
  67. //    int g = dht2.readHumidity();
  68.     // Read temperature as Celsius (the default)
  69.     int t = bmp.readTemperature(); //Считываем температуру в градусах Цельсия
  70.     int t2 = (sensors.getTempCByIndex(0));
  71.     t2 = t2 - 5; // corr...
  72.     // Read temperature as Fahrenheit (isFahrenheit = true)
  73.     float f = dht.readTemperature(true);
  74.     // Compute heat index in Fahrenheit (the default)
  75.     float hif = dht.computeHeatIndex(f, h);
  76.     // Compute heat index in Celsius (isFahreheit = false)
  77.     float hic = dht.computeHeatIndex(t, h, false);
  78.  
  79.       sendData(t, h, p, t2);
  80.  
  81.     //Вывод на экран
  82.  
  83.     u8g.firstPage();
  84.    
  85.     do
  86.         {
  87.               u8g.drawStr(0, 10, "Hum");
  88.               u8g.setPrintPos(26, 10);
  89.               u8g.print(h);
  90.               u8g.drawStr(40, 10, "%");
  91.   //            u8g.setPrintPos(65, 10);
  92.   //            u8g.print(g);
  93.   //            u8g.drawStr(80, 10, "%");              
  94.               u8g.drawStr(0, 20, "Temp");
  95.               u8g.setPrintPos(26, 20);
  96.               u8g.print(t);
  97.               u8g.drawStr(40, 20, "\260C");
  98.               u8g.setPrintPos(63, 20);
  99.               u8g.print(t2);
  100.               u8g.drawStr(82, 20, "\260C");
  101.               u8g.drawStr(0, 30, "Press");
  102.               u8g.setPrintPos(34, 30);
  103.               u8g.print(p);
  104.               u8g.drawStr(55, 30, "mm.Hg");
  105.               //u8g.drawStr(0, 40, "Dew pt");
  106.         }
  107.    
  108.     while(u8g.nextPage());
  109. }
  110.  
  111. void sendData(int t, int h, int p, int t2)
  112. {
  113.   client.connect(server, 80);
  114.   client.print("GET /get?ID=MYMACADDRESS");
  115.   client.print("&");
  116.   client.print("t0=");
  117.   client.print(t);
  118.   client.print("&");
  119.   client.print("h0=");
  120.   client.print(h);
  121.   client.print("&");
  122.   client.print("p0=");
  123.   client.print(p);
  124.   client.print("&");
  125.   client.print("t1=");
  126.   client.print(t2);
  127.   client.print("&");
  128.   client.print("name=xxxxxxxxx");
  129.   client.println(" HTTP/1.1");
  130.   client.print( "Host: " );
  131.   client.println(server);
  132.   client.println( "Connection: close" );
  133.   client.println();
  134.   client.println();
  135.   client.stop();
  136.   client.flush();
  137. }
Tags: Arduino
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement