Search Code

บทเรียน ESP32 11/55 - การใช้ LCD1602 LCD2004 กับ ESP32 - ชุดเรียนรู้ IoT ESP32 ของ SunFounder

บทเรียน ESP32 11/55 - การใช้ LCD1602 LCD2004 กับ ESP32 - ชุดเรียนรู้ IoT ESP32 ของ SunFounder

ในบทช่วยสอนนี้ เราจะสำรวจวิธีการใช้ LCD1602 และ LCD2004 ร่วมกับไมโครคอนโทรลเลอร์ ESP32 จอ LCD เหล่านี้ช่วยให้เราสามารถแสดงข้อความและข้อมูลอื่นๆ ได้อย่างมีประสิทธิภาพ ช่วยเพิ่มการแสดงผลทางภาพให้กับโปรเจกต์ของเรา เราจะครอบคลุมถึงวิธีการปรับความคมชัดเพื่อให้อ่านง่ายอีกด้วย

ESP32 ซึ่งเป็นส่วนหนึ่งของชุดเรียนรู้ IoT ESP32 ของ SunFounder มีความสามารถ Wi-Fi และ Bluetooth ในตัว ทำให้เป็นเครื่องมือที่ทรงพลังสำหรับแอปพลิเคชัน IoT ต่างๆ โดยการเชื่อมต่อ LCD เข้ากับ ESP32 เราสามารถแสดงข้อความหรือข้อมูลเอาต์พุตจากโค้ดของเราได้อย่างง่ายดาย ทำให้โปรเจกต์ของเราโต้ตอบได้มากขึ้นและใช้งานง่ายขึ้น (ในวิดีโอที่ 00:30)

อธิบายฮาร์ดแวร์

ส่วนประกอบหลักที่เราจะใช้ ได้แก่ ไมโครคอนโทรลเลอร์ ESP32 และโมดูลจอแสดงผล LCD1602 หรือ LCD2004 ESP32 จะทำหน้าที่เป็นสมองของโปรเจกต์ของเรา ประมวลผลอินพุตและควบคุมเอาต์พุต รวมถึงจอ LCD

โมดูล LCD สื่อสารผ่าน I2C ซึ่งช่วยลดความซับซ้อนของการเดินสายโดยใช้พินข้อมูลเพียงสองพิน (SDA และ SCL) สำหรับการสื่อสาร พร้อมกับการเชื่อมต่อไฟและกราวด์ การตั้งค่านี้ช่วยลดความซับซ้อนของการเชื่อมต่อหลายพินลงอย่างมาก ทำให้วงจรสะอาดและจัดการได้ง่ายขึ้น

รายละเอียดจาก Datasheet

ผู้ผลิต SunFounder
หมายเลขชิ้นส่วน LCD1602
แรงดันไฟฟ้าลอจิก/IO 5 V
แรงดันไฟฟ้าจ่าย 5 V
ขนาดจอแสดงผล 16 x 2 ตัวอักษร
ไฟแบ็คไลท์ มี
อินเทอร์เฟซ I2C
ขนาด 80 x 36 มม.
หมายเหตุ / รุ่นต่างๆ มักใช้กับที่อยู่ I2C 0x27

 

  • ตรวจสอบให้แน่ใจว่าใช้แรงดันไฟฟ้าที่ถูกต้อง (5 V) เพื่อป้องกันความเสียหาย
  • ใช้สายไฟสั้นเพื่อลดการรบกวนบนสาย I2C
  • ปรับโพเทนชิโอมิเตอร์เพื่อความคมชัดในการมองเห็นที่เหมาะสมที่สุด
  • ตรวจสอบที่อยู่ I2C หากจอแสดงผลไม่เริ่มทำงาน (ที่อยู่ทั่วไป: 0x27, 0x3F)
  • ล้างจอแสดงผลก่อนอัปเดตข้อความเพื่อหลีกเลี่ยงการซ้อนทับกัน

คำแนะนำการเดินสายไฟ

แผนผังการเดินสายไฟ ESP32-11_LCD
ESP32-11_LCD-wiring

ในการเดินสายไฟ LCD1602 เข้ากับ ESP32 ขั้นแรกให้เชื่อมต่อพินกราวด์ของ LCD เข้ากับพินกราวด์บน ESP32 จากนั้นเชื่อมต่อพิน VCC ของ LCD เข้ากับเอาต์พุต 5V ของ ESP32 สำหรับการสื่อสาร I2C ให้เชื่อมต่อพิน SDA ของ LCD เข้ากับพิน 21 บน ESP32 และเชื่อมต่อพิน SCL ของ LCD เข้ากับพิน 22 บน ESP32 ตรวจสอบให้แน่ใจว่าการเชื่อมต่อแน่นหนาเพื่อหลีกเลี่ยงปัญหาการสื่อสาร

สิ่งสำคัญที่ควรทราบคือ แม้ว่า ESP32 จะทำงานที่ระดับลอจิก 3.3V แต่ LCD1602 ต้องใช้ 5V เพื่อการทำงานที่ถูกต้อง ดังนั้น ตรวจสอบให้แน่ใจว่าคุณใช้แหล่งจ่ายแรงดันไฟฟ้าที่ถูกต้องเพื่อหลีกเลี่ยงความเสียหายต่อ LCD หากคุณใช้ขนาด LCD ที่แตกต่างกัน ให้ปรับการเดินสายไฟตามที่อยู่ I2C และข้อกำหนดเฉพาะ

ตัวอย่างโค้ดและคำอธิบาย

ในโค้ด เราเริ่มต้นด้วยการรวมไลบรารีที่จำเป็นสำหรับการสื่อสาร I2C และ LCD เราสร้างอินสแตนซ์ของ LCD โดยใช้ที่อยู่ I2C 0x27 และระบุว่ามี 16 คอลัมน์และ 2 แถว

#include  
#include 

LiquidCrystal_I2C lcd(0x27,16,2);  // กำหนดที่อยู่ LCD เป็น 0x27 สำหรับจอแสดงผล 16 ตัวอักษรและ 2 บรรทัด

การตั้งค่านี้ช่วยให้เราควบคุม LCD ได้อย่างง่ายดาย ในฟังก์ชัน setup() เราจะเริ่มต้น LCD และเปิดไฟแบ็คไลท์ จากนั้นพิมพ์ข้อความต้อนรับ

void setup()
{
  lcd.init(); // เริ่มต้นการทำงานของ LCD 
  lcd.backlight(); // เปิดไฟแบ็คไลท์ของ LCD
  lcd.print("Hello, world!");   // พิมพ์ข้อความลงบน LCD
  delay(3000);
}

ในฟังก์ชัน loop() เราจะอัปเดตจอแสดงผลอย่างต่อเนื่องโดยการล้างหน้าจอ ตั้งตำแหน่งเคอร์เซอร์ และพิมพ์ค่าตัวนับปัจจุบัน ซึ่งแสดงให้เห็นว่า LCD สามารถแสดงข้อมูลที่เปลี่ยนแปลงได้แบบไดนามิก

void loop()
{
  lcd.clear(); 
  lcd.setCursor(0, 0); // ตั้งตำแหน่งเคอร์เซอร์ไปที่แถวแรกและคอลัมน์แรก (0, 0)
  lcd.print("COUNT: ");
  lcd.print(count); // พิมพ์ค่าปัจจุบันของตัวแปร count
  delay(1000);
  count++; // เพิ่มค่าตัวนับขึ้น 1 
}

โค้ดเต็มจะโหลดด้านล่างบทความนี้ ซึ่งคุณสามารถดูการใช้งานที่สมบูรณ์และฟังก์ชันเพิ่มเติมใดๆ ที่เพิ่มสำหรับโปรเจกต์ของคุณ

การสาธิต / สิ่งที่คาดหวัง

เมื่อเชื่อมต่อทุกอย่างเรียบร้อยและอัปโหลดโค้ดแล้ว LCD ควรแสดง "Hello, world!" เป็นเวลา 3 วินาทีก่อนที่จะเริ่มตัวนับที่เพิ่มขึ้นทุกวินาที คุณสามารถปรับความคมชัดโดยใช้โพเทนชิโอมิเตอร์เพื่อให้แน่ใจว่าข้อความอ่านง่าย (ในวิดีโอที่ 08:45)

หากคุณพบปัญหาใดๆ ให้ตรวจสอบการเชื่อมต่อสายไฟและตรวจสอบให้แน่ใจว่าใช้ที่อยู่ I2C ที่ถูกต้อง ข้อผิดพลาดทั่วไปคือการไม่จับคู่ที่อยู่ I2C ของ LCD กับที่ตั้งไว้ในโค้ด ซึ่งอาจทำให้จอแสดงผลทำงานไม่ถูกต้อง

ไทม์สแตมป์ในวิดีโอ

  • 00:00 เริ่มต้น
  • 1:47 แนะนำ LCD
  • 3:26 หน้าคู่มือเอกสาร
  • 5:06 วิธีเดินสายไฟ LCD กับ ESP32
  • 9:07 การเลือกบอร์ด ESP32 และพอร์ต COMP ใน Arduino
  • 8:51 การติดตั้งไลบรารี LCD
  • 10:06 การหาที่อยู่ I2C สำหรับ LCD
  • 14:00 อธิบายโค้ด Arduino
  • 17:50 การสาธิต
  • 20:54 การใช้ LCD2004 กับ ESP32
  • 22:58 LCD1602 สีเขียวดีกว่าสีน้ำเงิน

ภาพ

ESP32_11-5-l2C.MOV_snapshot_00.02.763
ESP32_11-5-l2C.MOV_snapshot_00.02.763
SunFounder-ESP32-Lesson-11-LCD1602.mp4_snapshot_20.23.926
SunFounder-ESP32-Lesson-11-LCD1602.mp4_snapshot_20.23.926
ESP32-11_LCD-wiring
ESP32-11_LCD-wiring
ESP32-11_LCD-wiring-schematic
ESP32-11_LCD-wiring-schematic
810-ESP32 Tutorial 11/55- Arduino code for LCD using ESP32
ภาษา: C++
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

//SDA->21,SCL->22 
LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

int count = 0;

void setup()
{
  lcd.init();// initialize the lcd 
  lcd.backlight(); // Turns on the LCD backlight.
  lcd.print("Hello, world!");   // Print a message to the LCD.
  delay(3000);
}

void loop()
{
  lcd.clear(); 
  lcd.setCursor(0, 0); // Sets the cursor position to the first row and first column (0, 0).
  lcd.print("COUNT: ");
  lcd.print(count); // Prints the current value of the count variable.
  delay(1000);
  count++; // Increments the counter by 1. 
}

แหล่งข้อมูลและเอกสารอ้างอิง

ไฟล์📁

ไม่มีไฟล์ที่พร้อมใช้งาน