DIY物聯網小型氣象站(NodeMCU + BMP180)[附code及接線圖]
早排接觸到NodeMcu呢樣玩意,類似WiFi版既arduino
用佢來整左個Wifi Weather Station, 量度氣溫,氣壓,濕度,然後upload上thingspeak,咁就可以用電腦 / 電話隨時睇返
大家可以上: https://thingspeak.com/channels/51245 呢個網睇到最新既氣象數據
Weather station主要由NodeMCU(ESP8266) + DHT11 (濕度計) + BMP180 (溫度 + 氣壓計)組成,D sensor 同nodemcu都係上taobao買
Wiring 就如圖:
P.S. : 如果係淘寶果D DHT11 Module,多數已經有10K的上拉電阻,不用再加
實物圖:
Program 方面就用Arduino IDE,係Board Manager 加入 ESP8266
(詳見: http://ruten-proteus.blogspot.hk ... rt-arduino-ide.html 「ESP8266 硬體套件安裝」果一part )
Code:- #include <Arduino.h>
- #include <ESP8266WiFi.h>
- #include <Wire.h>
- #include <Adafruit_BMP085.h> //Download link: https://github.com/adafruit/Adafruit-BMP085-Library
- #include "DHT.h" //Download link: https://github.com/adafruit/DHT-sensor-library
- #define DHTPIN 4
- DHT dht(DHTPIN, DHT11);
- Adafruit_BMP085 bmp;
- WiFiClient client;
- String apiKey = "打返你的thingspeak api key";
- const char* ssid = "你的SSID";
- const char* password = "你的WIFI PW";
- const char* server = "api.thingspeak.com";
- void setup() {
- Serial.begin(115200);
- delay(10);
- Wire.begin(0, 2);
- if (!bmp.begin()) {
- Serial.println("Could not find a valid BMP180 sensor, check wiring!");
- while (1);
- }
- dht.begin();
- WiFi.begin(ssid, password);
- Serial.println();
- Serial.println();
- Serial.print("Connecting with ");
- Serial.println(ssid);
- WiFi.begin(ssid, password);
- while (WiFi.status() != WL_CONNECTED) {
- delay(500);
- Serial.print("Connect failed");
- }
- Serial.println("");
- Serial.println("WiFi Connected");
- }
- void loop() {
- float temp = bmp.readTemperature();
- float pressure = bmp.readPressure();
- pressure = pressure / 100; //Convert to hPa
- float humidity = dht.readHumidity();
- if (client.connect(server, 80)) {
- String postStr = apiKey;
- postStr += "&field1=";
- postStr += String(temp, 2);
- postStr += "&field2=";
- postStr += String(pressure, 2);
- postStr += "&field3=";
- postStr += String(humidity, 2);
- postStr += "\r\n\r\n";
- client.print("POST /update HTTP/1.1\n");
- client.print("Host: api.thingspeak.com\n");
- client.print("Connection: close\n");
- client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
- client.print("Content-Type: application/x-www-form-urlencoded\n");
- client.print("Content-Length: ");
- client.print(postStr.length());
- client.print("\n\n");
- client.print(postStr);
- Serial.println("Temp: " + String(temp) + " Pressure: " + String(pressure) + " Humidity: " + String(humidity));
- Serial.println(postStr);
- }
- client.stop();
- delay(5000);
- }
複製代碼 小弟coding 水平麻麻,大家有建議歡迎提出!
主要都係由呢幾Part 組成,初始化sensor → 連接WiFi → 讀取sensor數據 → 將數據合併到字串postStr 中 →將數據以HTTP POST傳到thingspeak server
歡迎大家比D改善建議~ 或者有做過類似project 既都可以分享下~ |
|
|
附件:
您需要登錄才可以下載或查看附件。沒有帳號?註冊