Raspberry Pi 3 [Drive 16×2 LCD with I2C Interface]

หลังจากตอนที่แล้วเราได้ทำการ setup โปรแกรมที่เราต้องการ

ในตอนนี้ขอพูดถึงอุปกรณ์ต่อพ่วงกันบ้าง เพื่อให้ดูเหมือนเข้าสู่ยุค IoT (Internet Of Things) มากขึ้น นั่นคือจอ LCD ระดับเบื้องต้น ขนาด 16×2 ดังรูปนี้

ซึ่งอุปกรณ์ตัวนี้ สามารถแสดงผลได้ 2 แถว แถวละ 16 ตัวอักษร ซึ่งเพียงพอในระดับเบื้องต้นสำหรับการเรียนรู้การเขียนโปรแกรมครับ

โดยในตลาดจะมีขายหลายรุ่น เช่น 16×2, 20×4 ไปจนถึง 128×64 อีกทั้งยังมี จอสีประเภท TFT 2.4 นิ้ว, 3 นิ้ว, 3.2 นิ้ว, 4 นิ้ว เป็นต้น และมีแบบหน้าจอสัมผัสให้เลือกใช้งานอีก มากมาย

 

การเชื่อมต่อจอ 16×2 กับบอร์ด Raspberry Pi 3

โดยทั่วไปแล้ว จะต้องทำการเชื่อมต่อดังรูปด้านล่างนี้

 

         

การเชื่อมต่อแบบ 4 bits (ซ้าย) – การเชื่อมต่อแบบ 8 bits (ขวา)

จะเห็นว่าเป็นการเชื่อมต่อที่ยุ่งยาก ใช้สายหลายเส้น และยากต่อการปรับเปลี่ยนการใช้งาน ดังนั้นจึงมึโมดูลที่เข้ามาช่วยตรงนี้คือ I2C

 

I2C คืออะไร

I2C คือบัสการเชื่อมต่ออนุกรมแบบ Synchronous ด้วยสายสัญญาณเพียง 2 เส้น (แต่จริงๆ ต่อ 4 เส้น ได้แก่ SDA, SLC, +5V และ GND) โดยจะมีสายสัญญาณข้อมูล คือ SDA (Serial Data Line) และสายสัญญาณนาฬิกา คือ SLC (Serial Clock Line) โดยแบ่งการทำงานออกเป็น 4 โหมดตามความเร็วดังนี้

  1. Normal Mode ความเร็ว 100Kbps
  2. Fast Mode ความเร็ว 400Kbps
  3. Fast Mode Plus ความเร็ว 1Mbps
  4. High Speed ควาามเร็ว 3.4Mbps

 

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

 

และเนื่องด้วยความง่ายของการใช้งานของ I2C ทำให้อุปกรณ์จอ LCD ส่วนใหญ่จะทำการติดตั้งมาพร้อมกับจอแล้ว ดังรูป

          

I2C Module คือโมดูลสีเข้มในรูป
บอร์ดสีเขียวคือ ด้านหลังของจอ LCD 16×2 ซึ่งได้ทำการเชื่อมต่อเรียบร้อยแล้ว

 

เริ่มทำการเชื่อมต่อกับ Raspberry Pi

โดย I2C จะต้องทำการเชื่อมต่อ 4 เส้น คือ +5V, GND, SDA, SLC กับ Pinout ของ Raspberry Pi 3

ดูจากข้อมูล Alternate Function เราจะต้องทำการต่อสาย SDA ที่ Pin 3, SCL ที่ Pin 5
และ +5V ที่ Pin 2 หรือ ส่วน GND นั้นมี Pin 6, 9, 25, 39, 14, 20, 30 หรือ 34 ให้เลือก

 

     

จากนั้นทำการ Power On Raspberry PI 3 ขึ้นมาครับ จะพบว่าหน้าจอ LCD ติดพร้อมไฟ Backlight (แต่ไม่มีตัวอักษรอะไรแสดง เพราะเรายังไม่ได้โปรแกรมครับ)

 

หน้าจอสามารถปรับ Contrast (ความเข้มของตัวอักษร) และสามารถ เปิด/ปิด ไฟ backlight ได้ด้วย Jumper บนโมดูล I2C ครับ

 

ตอนต่อไป จะเป็นการเริ่มเขียน Python เพื่อแสดงผลตัวอักษร

 

ผิดพลาดประการใด ขออภัยมา ณ โอกาสนี้ครับ