跳到內容

AHT15溫濕度感測器

5 主題 6 貼文
  • AHT15-數據回傳序列埠

    1
    0 評價
    1 貼文
    15 瀏覽
    尚無回覆
  • AHT15-簡易藍芽傳輸

    1
    0 評價
    1 貼文
    8 瀏覽
    尚無回覆
  • AHT15-LINE應用

    1
    0 評價
    1 貼文
    5 瀏覽
    尚無回覆
  • AHT15-MQTT

    2
    0 評價
    2 貼文
    10 瀏覽
    adminA
    #include <Wire.h> #include <PubSubClient.h> //請先安裝PubSubClient程式庫 #include <WiFi.h> // ------ 以下修改成你自己的WiFi帳號密碼 ------ char* ssid = "SSID"; char* password = "SSIDpassword"; char* MQTTServer = "mqttgo.io";//免註冊MQTT伺服器 int MQTTPort = 1883;//MQTT Port char* MQTTUser = "";//不須帳密 char* MQTTPassword = "";//不須帳密 //推播主題1:推播溫度(記得改Topic) char* MQTTPubTopic1 = "Topic/room/溫度"; //推播主題2:推播濕度(記得改Topic) char* MQTTPubTopic2 = "Topic/room/濕度"; WiFiClient WifiClient; PubSubClient MQTTClient(WifiClient); #define AHT15_ADDRESS 0x38 #define AHT15_RESET 0xBA #define AHT15_INIT 0xBE #define AHT15_START_MEASUREMENT 0xAC void setup() { Wire.begin(); Serial.begin(115200); //開始WiFi連線 WifiConnecte(); //開始MQTT連線 MQTTConnecte(); // Reset sensor Wire.beginTransmission(AHT15_ADDRESS); Wire.write(AHT15_RESET); Wire.endTransmission(); delay(20); // Initialize sensor Wire.beginTransmission(AHT15_ADDRESS); Wire.write(AHT15_INIT); Wire.write(0x08); Wire.write(0x00); Wire.endTransmission(); delay(10); } void loop() { //如果WiFi連線中斷,則重啟WiFi連線 if (WiFi.status() != WL_CONNECTED) { WifiConnecte(); } //如果MQTT連線中斷,則重啟MQTT連線 if (!MQTTClient.connected()) { MQTTConnecte(); } // Start measurement Wire.beginTransmission(AHT15_ADDRESS); Wire.write(AHT15_START_MEASUREMENT); Wire.write(0x33); Wire.write(0x00); Wire.endTransmission(); delay(80); // Read data Wire.requestFrom(AHT15_ADDRESS, 6); uint8_t data[6]; for (int i = 0; i < 6; i++) { data[i] = Wire.read(); } // Calculate humidity and temperature 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; MQTTClient.publish(MQTTPubTopic1, String(temperature).c_str()); MQTTClient.publish(MQTTPubTopic2, String(humidity).c_str()); Serial.print("溫度:"); Serial.print(temperature); Serial.print("℃, 濕度:"); Serial.print(humidity); Serial.println("%"); Serial.println("溫溼度已推播到MQTT Broker"); delay(10000); } //開始WiFi連線 void WifiConnecte() { //開始WiFi連線 WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("WiFi連線成功"); Serial.print("IP Address:"); Serial.println(WiFi.localIP()); } //開始MQTT連線 void MQTTConnecte() { MQTTClient.setServer(MQTTServer, MQTTPort); while (!MQTTClient.connected()) { //以亂數為ClietID String MQTTClientid = "esp32-" + String(random(1000000, 9999999)); if (MQTTClient.connect(MQTTClientid.c_str(), MQTTUser, MQTTPassword)) { //連結成功,顯示「已連線」。 Serial.println("MQTT已連線"); } else { //若連線不成功,則顯示錯誤訊息,並重新連線 Serial.print("MQTT連線失敗,狀態碼="); Serial.println(MQTTClient.state()); Serial.println("五秒後重新連線"); delay(5000); } } }
  • AHT15溫濕度感測器-NB-IoT

    已移動
    1
    27
    0 評價
    1 貼文
    14 瀏覽
    尚無回覆
風狂logo 藏碳logo 南台logo SDGS2 SDGS7 SDGS12