下期第11堂[IOT機器人] [Line接收數據]
今天要利用Line傳訊機器人,把物聯網蒐集到的數據,傳送到聊天室,用手機就可以隨時掌握訊息。
連接DHT11
接線:
GND— G
VCC— 3V
S — D1
注意 : D1不是第1腳
測試感測溫度
http://hower.forwebs.net/robot/archives/1057
申請 Line Notify
下載
https://github.com/TridentTD/TridentTD_LineNotify
放在
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <DHT.h>
#include <TridentTD_LineNotify.h>
#define DHTTYPE DHT11
#define DHTPIN 5
// 修改 Token號碼
#define LINE_TOKEN ""
// 無線基地台SSID跟密碼
const char* ssid = "";
const char* password = "";
DHT dht(DHTPIN, DHTTYPE, 11); // 11 works fine for ESP8266
float humidity, temp_f; // 從 DHT-11 讀取的值
unsigned long previousMillis = 0; // will store last temp was read
const long interval = 2000; // interval at which to read sensor
void setup(void)
{
Serial.begin(9600); // 設定速率 感測器
dht.begin(); // 初始化
WiFi.mode(WIFI_STA);
// 連接無線基地台
WiFi.begin(ssid, password);
Serial.print("\n\r \n\rWorking to connect");
// 等待連線,並從 Console顯示 IP
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("DHT Weather Reading Server");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void loop(void)
{
// 量測間等待至少 2 秒
unsigned long currentMillis = millis();
if(currentMillis - previousMillis >= interval) {
// 將最後讀取感測值的時間紀錄下來
previousMillis = currentMillis;
// 讀取溫度大約 250 微秒!
humidity = dht.readHumidity(); // 讀取濕度(百分比)
temp_f = dht.readTemperature(true); // 讀取溫度(華氏)
// 檢查兩個值是否為空值
if (isnan(humidity) || isnan(temp_f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
}
String tempe="溫度:"+String((int)(temp_f-32)*5/9)+"℃";
String humid="濕度:"+String((int)humidity)+"%";
// 顯示 Line版本
Serial.println(LINE.getVersion());
LINE.setToken(LINE_TOKEN);
// 先換行再顯示
LINE.notify("\n" + tempe + " ;" + humid);
// 每2分鐘發送一次
delay(120000);
}
練習一下
改個歡迎詞吧
2分鐘間隔是為了測試,實際使用不要如此密集,
更高級的方法,可以思考如何寫成”溫度有所變動才發訊”
請上 Google Classroom 回答今日問題
請小組規畫一個IOT的作品