สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
วันนี้ ผมจะแสดงวิธีการใช้จอแสดงผล TFT LCD บน ESP8266 NodeMCU เพื่อแสดงข้อมูลอุณหภูมิและความชื้นสำหรับสภาพแวดล้อมตามเวลาจริงที่กำหนด ฉันทำตัวอย่างการใช้จอแสดงผลกับ DHT22 ซึ่งเป็นเครื่องวัดอุณหภูมิและความชื้น โดยเฉพาะในวิดีโอนี้ ฉันใช้จอแสดงผลขนาดกะทัดรัดสำหรับเทอร์โมมิเตอร์แบบดิจิตอลของเรา ซึ่งเป็นภาพกราฟิกและช่วยให้สามารถตรวจสอบระบบได้ วัตถุประสงค์ของวันนี้คือเพื่อเรียนรู้เกี่ยวกับการจัดการจอแสดงผลคริสตัลเหลวโดยใช้ ESP8266
ขั้นตอนที่ 1: โมดูลกราฟิก LCD 128x128 RGB TFT ILI 9163C
จอแสดงผลที่เราใช้ในโครงการนี้คือ 128x128 พิกเซล 0, 0 อยู่ที่มุมซ้ายบน และรุ่นนี้มีทั้งฟังก์ชันการพิมพ์ข้อความและการพิมพ์กราฟิก ซึ่งเราจะจัดการในภายหลัง
ขั้นตอนที่ 2: เซ็นเซอร์ความชื้นและอุณหภูมิ AM2302 DHT22
เราจะใช้ AM2302 DHT22 ในการประกอบของเรา ซึ่งเป็นเซ็นเซอร์ที่ฉันชอบมาก เพราะมันแม่นยำมาก
ขั้นตอนที่ 3: วงจร
ในโครงการ เรามี ESP8266 ที่ได้รับการตั้งโปรแกรมและใช้พลังงาน USB แล้ว DHT22 เชื่อมต่อกับ Data และตัวต้านทานแบบดึงขึ้นกับ ESP8266 ซึ่งควบคุมจอแสดงผล LCD
ขั้นตอนที่ 4: การประกอบ
ที่นี่ เรามีไดอะแกรมไฟฟ้าของชุดประกอบ ซึ่งแสดง NodeMCU เซ็นเซอร์ และจอแสดงผล จำไว้ว่านี่คือจอแสดงผลแบบอนุกรม i2c ซึ่งใช้งานง่ายกว่าเพราะมีพินมากกว่า
ขั้นตอนที่ 5: ห้องสมุด
เนื่องจากเราจะตั้งโปรแกรมการแสดงผลด้วยภาษา Arduino C เราจึงต้องการไลบรารี DHT22 เช่นเดียวกับ LCD
ขั้นแรก เพิ่มไลบรารี "ไลบรารีเซ็นเซอร์ DHT" ต่อไปนี้สำหรับการสื่อสารกับเซ็นเซอร์ความชื้นและอุณหภูมิ
เพียงเข้าไปที่ "Sketch >> Include Libraries >> Manage Libraries …"
ตอนนี้ เพิ่มไลบรารีต่อไปนี้ "Adafruit-GFX-Library-master"
เพียงเข้าไปที่ "Sketch >> Include Libraries >> Manage Libraries …"
นอกจากนี้ ให้เพิ่มไลบรารี "TFT_ILI9163C" สำหรับการสื่อสารกับโมดูลกราฟิก LCD
เข้าไปที่ลิงค์ ((((((https://github.com/sumotoy/TFT_ILI9163C)))))) และดาวน์โหลดไลบรารี่
เปิดเครื่องรูดไฟล์และวางลงในโฟลเดอร์ไลบรารีของ Arduino IDE
C: / ไฟล์โปรแกรม (x86) / Arduino / ไลบรารี
ขั้นตอนที่ 6: รหัส
ขั้นแรกให้เพิ่มไลบรารีที่จะใช้ในโค้ดของเรา
#include //utilizada para se comunicar com o módulo LCD#include //utilizada para se comunicar com o เซ็นเซอร์ de umidade e อุณหภูมิ
คำจำกัดความ
เราจะเห็นด้านล่างของตัวแปรที่เราจะใช้ระหว่างโปรแกรมและอินสแตนซ์ของวัตถุ
#define DHTPIN D6 // pino que conectaremos o เซ็นเซอร์ DHT22#define DHTTYPE DHT22 // DHT22 é o tipo do เซ็นเซอร์ que utilizaremos (ตัวสร้างที่สำคัญ) DHT dht (DHTPIN, DHTTYPE); // คอนสตรัคเตอร์ทำ objeto que utilizaremos para se comunicar com o sensor // คำจำกัดความของสี #define BLACK 0x0000 #define BLUE 0x001F #define RED 0xF800 #define GREEN 0x07E0 #define CYAN 0x07FF #define WFFFFF81F #define YELLOW กำหนด _CS D1 // pino que conectaremos o CS do módulo LCD #define _DC D4 // pino que conectaremos o RS สำหรับโมดูล LCD TFT_ILI9163C display = TFT_ILI9163C(_CS, _DC); // Constructor do objeto que utilizaremos para se comunicar com o โมดูโล LCD
ติดตั้ง
ในฟังก์ชันการตั้งค่า () เราเริ่มต้นตัวแปร "dht" ซึ่งมีหน้าที่ในการสื่อสารกับเซ็นเซอร์ความชื้นและอุณหภูมิ นอกจากนี้ เราจะเริ่มต้นตัวแปร "การแสดงผล" ที่ใช้ในการสื่อสารกับโมดูล LCD ด้วย
เราจะกำหนดค่าวัตถุให้เริ่มวาดบนหน้าจอด้วย
การตั้งค่าเป็นโมฆะ (เป็นโมฆะ) { dht.begin(); // เริ่มต้นสำหรับ comunicar com o เซ็นเซอร์ display.begin(); // เริ่มต้นสำหรับ comunicar com หรือโมดูล LCD display.clearScreen(); // ลบเป็น tela ลบ todos ระบบปฏิบัติการ desenhos display.fillScreen(BLACK); // pinta a tela toda de preto display.setTextSize(2); // configura o tamanho do texto com o tamanho 2 display.setTextColor (สีเขียว); // กำหนดค่า a cor do texto como verde display.setCursor(5, 10); // posiciona o เคอร์เซอร์ para começar a escrita a partir do (x, y) display.print("TEMPERATUR"); // escreve em tela display.setCursor(22, 70); // reposiciona หรือเคอร์เซอร์ display.print ("UMIDADE"); // escreve em tela display.setTextColor(WHITE); // กำหนดค่า a cor do texto como branco (a partir de agora) ล่าช้า (1000); // espera ของ 1 segundo }
ห่วง
ในฟังก์ชันวนรอบ () เราจะดึงความชื้นและอุณหภูมิที่เซ็นเซอร์อ่านและเขียนไว้บนหน้าจอในตำแหน่งเฉพาะ ในแต่ละช่วงเวลา 5 วินาที ค่าจะถูกอ่านจากเซ็นเซอร์และเขียนบนหน้าจอ
วงเป็นโมฆะ () { int h = dht.readHumidity(); // faz a leitura da umidade do sensor int t = dht.readTemperature(); // faz a leitura da temperatura do sensor // as 2 linhas seguintes utilizando o método “fillRect”, são para fazer a limpeza do local onde escreveremos a umidade e a temperatura, apagaremos o valor atualment para escrualizadodo. display.fillRect (5, 32, 120, 20, สีดำ); // fillRect(x, y, ความกว้าง, ความสูง, สี); display.fillRect (5, 92, 120, 20, สีดำ); display.setCursor(40, 35); // reposiciona หรือเคอร์เซอร์สำหรับ escrever display.print(t); // หลีกเลี่ยงอุณหภูมิ display.print ((ถ่าน) 247); // escreve o símbolo de grau ° através de código display.print("C"); // coloca o “C” สำหรับ indicar que é graus Celcius display.setCursor(40, 95); // reposiciona หรือเคอร์เซอร์สำหรับ escrever display.print(h); // หลีกเลี่ยง umidade em tela display.print("%"); // escreve o símbolo de “porcentagem” สำหรับ indicar a umidade delay(5000); }
ขั้นตอนที่ 7: ฟังก์ชั่นที่น่าสนใจอื่นๆ
// หมุนเนื้อหาของหน้าจอ (พารามิเตอร์ 0, 1, 2 หรือ 3)
display.setRotation (uint8_t);
// กลับสีที่แสดง (ทำให้เป็นค่าลบ)
display.invertDisplay (บูลีน);
// วาดพิกเซลเดียวบนหน้าจอที่ตำแหน่ง (x, y)
display.drawPixel (x, y, สี);
// ลากเส้นแนวตั้งในตำแหน่ง
display.drawFastVLine (x, y, ความกว้าง, สี);
// ลากเส้นแนวตั้งที่ตำแหน่งที่กำหนด
display.drawFastHLine (x, y, ความกว้าง, สี);
// ลากเส้นแนวนอนที่ตำแหน่งที่กำหนด
display.drawRect (x, y, ความกว้าง, ความสูง, สี);
// วาดวงกลมในตำแหน่งที่กำหนด
display.drawCircle (x, y, รัศมี, สี);