AHT15LINE應用_教案.pdf
#include <Wire.h>
#include <WiFi.h>
#include <WiFiClientSecure.h>
#define AHT15_ADDRESS 0x38
#define AHT15_RESET 0xBA
#define AHT15_INIT 0xBE
#define AHT15_START_MEASUREMENT 0xAC
char SSID[] = "Denny";
char PASSWORD[] = "0971711565";
String Linetoken = "iIFWvROwfBrYC7jVTvrVlmfJfJgVwiwDtvcdki9X2k6";
WiFiClientSecure client;
char host[] = "notify-api.line.me";
void setup() {
Wire.begin();
Serial.begin(115200);
Serial.print("Connecting Wifi: ");
Serial.println(SSID);
WiFi.begin(SSID, PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
IPAddress ip = WiFi.localIP();
Serial.println(ip);
client.setInsecure();
Wire.beginTransmission(AHT15_ADDRESS);
Wire.write(AHT15_RESET);
Wire.endTransmission();
delay(20);
Wire.beginTransmission(AHT15_ADDRESS);
Wire.write(AHT15_INIT);
Wire.write(0x08);
Wire.write(0x00);
Wire.endTransmission();
delay(10);
}
void loop() {
Wire.beginTransmission(AHT15_ADDRESS);
Wire.write(AHT15_START_MEASUREMENT);
Wire.write(0x33);
Wire.write(0x00);
Wire.endTransmission();
delay(80);
Wire.requestFrom(AHT15_ADDRESS, 6);
uint8_t data[6];
for (int i = 0; i < 6; i++) {
data[i] = Wire.read();
}
uint32_t rawHumidity = ((uint32_t)data[1] << 12) | ((uint32_t)data[2] << 4) | (data[3] >> 4);
float humidity = rawHumidity * 100.0 / (1 << 20);
uint32_t rawTemperature = (((uint32_t)data[3] & 0xF) << 16) | ((uint32_t)data[4] << 8) | data[5];
float temperature = ((200.0 * rawTemperature) / (1 << 20)) - 50;
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print("% , ");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println("°C");
if ((int)temperature >= 30 || (int)humidity >= 80) {
String message = "檢測環境發生異常,請協助儘速派人查看處理,目前環境狀態:";
message += "\r\n 溫度=" + String((int)temperature) + "℃";
message += "\r\n 濕度=" + String((int)humidity) + " H";
Serial.println(message);
if (client.connect(host, 443)) {
int LEN = message.length();
String url = "/api/notify";
client.println("POST " + url + " HTTP/1.1");
client.print("Host: "); client.println(host);
client.println("Authorization: Bearer " + Linetoken);
client.println("Content-Type: application/x-www-form-urlencoded");
client.println("Content-Length: " + String((LEN + 8)) );
client.println();
client.println("message=" + message);
delay(2000);
String response = client.readString();
Serial.println(response);
client.stop();
}
else {
Serial.println("connected fail");
}
}
delay(10000);
}