1. 程式人生 > 實用技巧 >二十五塊DIY 帶螢幕可遠端的溫溼度感測器

二十五塊DIY 帶螢幕可遠端的溫溼度感測器

小米的溫溼度感測器壞了,不帶螢幕。就一個硬幣大小,還得配合小米閘道器使用。。買不起我就自己做一個。。 開啟神奇的拼多多,買一個神器開發板可以連線wifi的Nodemcu,再加一塊2寸螢幕,二十塊包郵。。 再來一個DH11 溫溼度感測器五塊包郵。。

DH11採集溫溼度感測器,顯示到螢幕上。然後通過wifi 傳送資料到 免費的Blynk 伺服器上。。 再手機安裝 Blynk App就可以遠端檢視溫溼度了。。。


#define BLYNK_PRINT Serial // 開啟串列埠監視
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DHT.h>
#include <Wire.h>               // Only needed for Arduino 1.6.5 and earlier
#include "SSD1306Wire.h"        // legacy: #include "SSD1306.h"

char auth[] = "xxxxxxxxxxxxxxxxxxxxxx";//授權碼
char ssid[] = "wifiname";//wifi名稱
char pass[] = "wifipassword";//wifi密碼
#define DHTPIN 2//感測器連線管腳
#define DHTTYPE DHT11     // DHT 11 
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
SSD1306Wire display(0x3c, SDA, SCL);   

int ci = 0;
//該函式將會每秒鐘傳送資料給V5,V6,
//在app端,元件的讀取頻率應該設為PUSH。
void sendSensor()
{
  display.clear();
  ci++;
  float h = dht.readHumidity();
  float t = dht.readTemperature(); //攝氏度
  //float t = dht.readTemperature(true); //華氏度
  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  Blynk.virtualWrite(V5, h);///給V5
  Blynk.virtualWrite(V6, t);//將溼度傳送給V6

   

  display.setTextAlignment(TEXT_ALIGN_LEFT);
  display.setFont(ArialMT_Plain_16);
  display.drawString(0, 0, (String)ci);
  display.drawString(0, 16, "Temp:"+(String)t+"°C");
  display.drawString(0, 32, "Humi:"+(String)h+"%");

  display.display();
}

void setup()
{
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);//官方伺服器
  //Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8080);//自建伺服器域名模式
  //Blynk.begin(auth, ssid, pass, IPAddress(192, 168, 1, 158), 8080);//自建伺服器ip模式
  dht.begin();
  timer.setInterval(1000L, sendSensor);
   display.init();

  display.flipScreenVertically();
  display.setFont(ArialMT_Plain_10);
  
}

void loop()
{
  Blynk.run();
  timer.run();
}
 

https://github.com/zifeiniu/NodeMcu_Temperature