บทที่ 15.1 ESP32 อ่านค่า เซนเซอร์อุณหภูมิ ความชื้น AHT10 แสดงผลจอ OLED 0.96"

Narin Damnuy (KruRin)
3 min readNov 17, 2023

--

🔥💧📺 ในบทนี้จะนำเสนอการอ่านค่าจากเซนเซอร์อุณหภูมิ ความชื้น AHT10 ซึ่งใช้การเชื่อมต่อแบบ I2C จากรูปด้านล่าง AHT10 จะต่อแบบ I2C ตำแหน่งด้านล่างของบอร์ด IoT Education Kit

IoT Education Kit

การเชื่อมต่อ AHT10 กับบอร์ด ESP32 ด้วย I2C ซึ่งจะมีสายสัญญาณ 4 เส้น ดังนี้ VIN, GND,SCL และ SDA ดังรูปด้านล่าง

คุณสมบัติของ เซนเซอร์ AHT10 มีดังนี้
— ย่านวัดความชื้นช่วง 0–100% ความแม่นยำ +- 2%
— ย่านวัดอุณหภูมิช่วง -40–85 องศาเซลเซียส ความแม่นยำ +- 0.3 องศาเซลเซียส
— ใช้เวลาในการอ่านค่าสัญญาณ 5–30 วินาที

ก่อนการเขียนโปรแกรมจะต้องติดตั้งไลบรารี่ ของ AHT10 ในโปรแกรม Arduino IDE ซึ่งมีขั้นตอนดังนี้

  1. ไปที่เมนู Sketch เลือก Include Library จากนั้นกดที่เมนู Manage Libraries

2.พิมพ์ ahtx0 ในช่อง และหาไลบรารี่ Adafruit AHTX0 จากนั้นกดปุ่ม Install

3. เมื่อติดตั้งเสร็จจะแสดงข้อความ Installed ให้กดปุ่ม close ได้เลย

4. ขั้นตอนเปิดไฟล์ตัวอย่าง เข้าเมนู File เลือก Example >Adafruit AHTX0 กดที่ Adafruit_aht_test

5. จากนั้นให้ UPLOAD โค้ดได้เลย ค่าอุณหภูมิ ความชื้น จะแสดงผลผ่าน Serial Monitor ตั้งค่า baud ที่ 115200

7. ต่อไปนำค่าอุณหภูมิ ความชื้นที่อ่านได้ แสดงผลที่จอ OLED โดยการ copy โค้ดคำสั่งแสดงผลจอ LCD มาใส่ใน โค้ดคำสั่ง AHT10 ดังคำสั่งด้านล่าง

โค้ดหลังจากรวมคำสั่ง

/*****************************************************************
* Mr.Narin Damnuy (KruRin)
* Technology Computer
* Phatthalung Technical College
* fb.com/damnuy : LineID:damnuy27
* Free License
*****************************************************************/
#include <Adafruit_AHTX0.h>
#include <Wire.h> // Only needed for Arduino 1.6.5 and earlier
#include "SSD1306Wire.h" // legacy: #include "SSD1306.h"
SSD1306Wire display(0x3c, SDA, SCL); // ADDRESS, SDA, SCL
Adafruit_AHTX0 aht;
float t,h;
void setup() {
Serial.begin(115200);
display.init();
display.flipScreenVertically();
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.setFont(ArialMT_Plain_16);
Serial.println("Adafruit AHT10/AHT20 demo!");
if (! aht.begin()) {
Serial.println("Could not find AHT? Check wiring");
while (1) delay(10);
}
Serial.println("AHT10 or AHT20 found");
}
void loop() {
sensors_event_t humidity, temp;
aht.getEvent(&humidity, &temp);
t=temp.temperature;
h=humidity.relative_humidity;
Serial.print("Temperature: "); Serial.print(t); Serial.println(" degrees C");
Serial.print("Humidity: "); Serial.print(h); Serial.println("% rH");
display.clear();
display.drawString(10, 5, "Temp : ");
display.drawString(60, 5, String(t));
display.drawString(10, 35, "Humi : ");
display.drawString(60, 35, String(h));
display.display();
delay(2000);
}

ผลการรันคำสั่ง

ขอบคุณที่รับชมครับผม

สนันสนุน KruRin ในการเขียนบทความ เลี้ยงกาแฟซักแก้วครับ กดที่นี่

สนใจบอร์ด IoT Education Kit V1.1

สั่งซื้อใน Shopee ที่ลิ้งค์ด้านล่างได้เลยครับผม

หรือ กด ที่นี่

KruRin

บทต่อไป กดลิ้งค์ด้านล่างเลยครับ

https://medium.com/@KruRin

--

--

Narin Damnuy (KruRin)

Teacher in Computer Technology Department at Phatthalung Technical College