Raspberry Pi เป็นบอร์ดที่ใช้โปรเซสเซอร์สถาปัตยกรรม ARM ที่ออกแบบมาสำหรับวิศวกรอิเล็กทรอนิกส์และมือสมัครเล่น PI เป็นหนึ่งในแพลตฟอร์มการพัฒนาโครงการที่น่าเชื่อถือที่สุดในขณะนี้ ด้วยความเร็วโปรเซสเซอร์ที่สูงขึ้นและ RAM 1 GB PI สามารถใช้กับโปรเจ็กต์ที่มีรายละเอียดสูงมากมายเช่นการประมวลผลภาพและ IoT
สำหรับการทำโครงการที่มีรายละเอียดสูงจำเป็นต้องเข้าใจฟังก์ชันพื้นฐานของ PI เราจะกล่าวถึงฟังก์ชันพื้นฐานทั้งหมด ของ Raspberry Pi ในบทช่วยสอนเหล่านี้ ในแต่ละบทช่วยสอนเราจะพูดถึงฟังก์ชันหนึ่งของ PI ในตอนท้ายของซีรีส์การสอน Raspberry Pi นี้คุณจะสามารถทำโปรเจ็กต์ที่มีรายละเอียดสูงได้ด้วยตัวเอง ดูบทช่วยสอนด้านล่าง:
- เริ่มต้นกับ Raspberry Pi
- การกำหนดค่า Raspberry Pi
- ไฟ LED Blinky
- การเชื่อมต่อของปุ่ม
- การสร้าง PWM
- การควบคุมมอเตอร์กระแสตรง
- Stepper Motor Control
- การเชื่อมต่อ Shift Register
- การสอน Raspberry Pi ADC
- การควบคุมเซอร์โวมอเตอร์
- ทัชแพดแบบ Capacitive
ในการกวดวิชานี้เราจะควบคุมการแสดงผลแอลซีดี 16x2 โดยใช้ราสเบอร์รี่ Pi เราจะเชื่อมต่อ LCD เข้ากับพิน GPIO (General Purpose Input Output) ของ PI เพื่อแสดงตัวอักษร เราจะเขียนโปรแกรมใน PYTHON เพื่อส่งคำสั่งที่เหมาะสมไปยัง LCD ผ่าน GPIO และแสดงอักขระที่ต้องการบนหน้าจอ หน้าจอนี้จะมีประโยชน์ในการแสดงค่าเซ็นเซอร์สถานะการขัดจังหวะและการแสดงเวลา
มี LCD ประเภทต่างๆในตลาด กราฟิก LCD มีความซับซ้อนมากกว่า LCD 16x2 ดังนั้นที่นี่เราจะใช้จอ LCD 16x2 คุณสามารถใช้ 16x1 LCD ได้หากต้องการ 16x2 LCD มีอักขระทั้งหมด 32 ตัว, 16 in 1 st line และอีก 16 ใน 2 nd line JHD162 คือ 16x2 LCD Module characters LCD เราได้เชื่อมต่อ LCD 16x2 กับ8051, AVR, Arduino เป็นต้นแล้วคุณสามารถค้นหาโครงการที่เกี่ยวข้องกับ LCD 16x2 ทั้งหมดได้โดยไปที่ลิงค์นี้
เราจะพูดคุยเกี่ยวกับ PI GPIO ก่อนที่จะดำเนินการต่อไป
มี 40 GPIO หมุดเอาท์พุทในราสเบอร์รี่ Pi 2 แต่จากทั้งหมด 40 พินสามารถตั้งโปรแกรมได้เพียง 26 พิน GPIO (GPIO2 ถึง GPIO27) หมุดเหล่านี้บางตัวทำหน้าที่พิเศษบางอย่าง ด้วย GPIO พิเศษเรามี 17 GPIO ที่เหลือ
มีพินเอาต์พุตกำลัง + 5V (Pin 2 หรือ 4) และ + 3.3V (Pin 1 หรือ 17) บนบอร์ดซึ่งใช้สำหรับเชื่อมต่อโมดูลและเซ็นเซอร์อื่น ๆ เราจะจ่ายไฟให้กับ LCD 16 * 2 ผ่านราง + 5V เราสามารถส่งสัญญาณควบคุม + 3.3v ไปยัง LCD ได้ แต่สำหรับการทำงานของ LCD เราต้องจ่ายไฟที่ + 5V LCD จะไม่ทำงานกับ + 3.3V
หากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับพิน GPIO และเอาต์พุตปัจจุบันให้ไปที่: LED กะพริบด้วย Raspberry Pi
ส่วนประกอบที่ต้องการ:
ที่นี่เราจะใช้ ราสเบอร์รี่ Pi 2 รุ่น B กับ Raspbian Jessie OS ข้อกำหนดฮาร์ดแวร์และซอฟต์แวร์พื้นฐานทั้งหมดได้กล่าวไว้ก่อนหน้านี้คุณสามารถค้นหาได้ในบทนำ Raspberry Pi นอกเหนือจากที่เราต้องการ:
- หมุดเชื่อมต่อ
- โมดูล LCD 16 * 2
- ตัวต้านทาน1KΩ (2 ชิ้น)
- หม้อ 10K
- ตัวเก็บประจุ 1,000µF
- เขียงหั่นขนม
คำอธิบายวงจรและการทำงาน:
ดังที่แสดงในแผนภาพวงจรเรามีInterfaced Raspberry Pi พร้อมจอแสดงผล LCDโดยการเชื่อมต่อ 10 GPIO พินของ PI เข้ากับ 16 * 2 LCD's Control and Data Transfer Pins เราได้ใช้ GPIO Pin 21, 20, 16, 12, 25, 24, 23 และ 18 เป็น BYTE และสร้างฟังก์ชัน 'PORT' เพื่อส่งข้อมูลไปยัง LCD GPIO 21 คือ LSB (Least Significant Bit) และ GPIO18 คือ MSB (Most Significant Bit)
โมดูล LCD 16x2 มี 16 พินซึ่งสามารถแบ่งออกเป็นห้าประเภท Power Pins, contrast pin, Control Pins, Data pins และ Backlight pins นี่คือคำอธิบายสั้น ๆ เกี่ยวกับพวกเขา:
ประเภท |
หมายเลขพิน |
ชื่อพิน |
ฟังก์ชัน |
พาวเวอร์พิน |
1 |
VSS |
Ground Pin เชื่อมต่อกับกราวด์ |
2 |
VDD หรือ Vcc |
พินแรงดันไฟฟ้า + 5V |
|
คอนทราสต์พิน |
3 |
V0 หรือ VEE |
การตั้งค่าความคมชัดเชื่อมต่อกับ Vcc ตัวต้านทานตัวแปรอย่างละเอียด |
พินควบคุม |
4 |
อาร์เอส |
ลงทะเบียน Select Pin, RS = 0 Command mode, RS = 1 โหมดข้อมูล |
5 |
RW |
อ่าน / เขียนพิน RW = 0 โหมดเขียน RW = 1 โหมดการอ่าน |
|
6 |
จ |
เปิดใช้งานพัลส์สูงถึงต่ำจำเป็นต้องเปิดใช้งาน LCD |
|
หมุดข้อมูล |
7-14 |
D0-D7 |
หมุดข้อมูลเก็บข้อมูลที่จะแสดงบน LCD หรือคำสั่งคำสั่ง |
หมุดแบ็คไลท์ |
15 |
LED + หรือ A |
เพื่อเปิดไฟแบ็คไลท์ + 5V |
16 |
LED- หรือ K |
แบ็คไลท์กราวด์ |
เราขอแนะนำอย่างยิ่งให้อ่านบทความนี้เพื่อทำความเข้าใจว่า LCD ทำงานร่วมกับ Pins และ Hex Commands
เราจะพูดถึงกระบวนการส่งข้อมูลไปยัง LCDโดยสังเขป:
1. ตั้งค่า E ไว้สูง (เปิดใช้งานโมดูล) และ RS ตั้งไว้ต่ำ (บอก LCD ว่าเรากำลังให้คำสั่ง)
2. ให้ค่า 0x01 แก่พอร์ตข้อมูลเพื่อเป็นคำสั่งในการล้างหน้าจอ
3. ตั้งค่า E ไว้สูง (เปิดใช้งานโมดูล) และตั้งค่า RS ไว้สูง (บอก LCD ว่าเรากำลังให้ข้อมูล)
4. การพิสูจน์รหัส ASCII สำหรับอักขระจะต้องแสดง
5. E ถูกตั้งไว้ต่ำ (บอก LCD ว่าเราส่งข้อมูลเสร็จแล้ว)
6. เมื่อขา E นี้ต่ำลง LCD จะประมวลผลข้อมูลที่ได้รับและแสดงผลลัพธ์ที่สอดคล้องกัน ดังนั้นพินนี้จึงถูกตั้งค่าให้สูงก่อนส่งข้อมูลและดึงลงมาที่พื้นหลังจากส่งข้อมูล
อย่างที่บอกว่าเราจะส่งตัวละครไปทีละตัว ตัวละครให้กับจอแอลซีดีโดยรหัส ASCII (มาตรฐานอเมริกันรหัสสำหรับการแลกเปลี่ยนข้อมูล) ตารางของรหัส ASCII แสดงไว้ด้านล่าง ตัวอย่างเช่นหากต้องการแสดงอักขระ“ @” เราจำเป็นต้องส่งรหัสฐานสิบหก“ 40” ถ้าเราให้ค่า 0x73 กับ LCD มันจะแสดง“ s” เช่นนี้เราจะส่งรหัสที่เหมาะสมไปยัง LCD เพื่อแสดงสตริง“ CIRCUITDIGEST ”
คำอธิบายการเขียนโปรแกรม:
เมื่อทุกอย่างมีการเชื่อมต่อตามวงจรที่เราสามารถเปิด PI เพื่อเขียนโปรแกรมใน PYHTON
เราจะพูดคุยเกี่ยวกับคำสั่งไม่กี่รายที่เราจะใช้ใน โปรแกรม PYHTON, เรากำลังจะนำเข้าไฟล์ GPIO จากไลบรารีฟังก์ชันด้านล่างช่วยให้เราสามารถตั้งโปรแกรมพิน GPIO ของ PI ได้ นอกจากนี้เรายังเปลี่ยนชื่อ "GPIO" เป็น "IO" ดังนั้นในโปรแกรมเมื่อใดก็ตามที่เราต้องการอ้างถึงพิน GPIO เราจะใช้คำว่า 'IO'
นำเข้า RPi.GPIO เป็น IO
บางครั้งเมื่อพิน GPIO ที่เราพยายามใช้อยู่อาจจะทำหน้าที่อื่น ๆ ในกรณีนั้นเราจะได้รับคำเตือนขณะดำเนินการโปรแกรม คำสั่งด้านล่างบอกให้ PI เพิกเฉยต่อคำเตือนและดำเนินการกับโปรแกรม
IO.setwarnings (เท็จ)
เราสามารถอ้างอิงพิน GPIO ของ PI ไม่ว่าจะด้วยหมายเลขพินบนบอร์ดหรือตามหมายเลขฟังก์ชัน เช่นเดียวกับ 'PIN 29' บนกระดานคือ 'GPIO5' เราบอกตรงนี้ว่าเราจะแทนหมุดตรงนี้ด้วย '29' หรือ '5'
IO.setmode (IO.BCM)
เรากำลังตั้งหมุด GPIO 10 พินเป็นพินเอาต์พุตสำหรับข้อมูลและพินควบคุมของ LCD
IO.setup (6, IO.OUT) IO.setup (22, IO.OUT) IO.setup (21, IO.OUT) IO.setup (20, IO.OUT) IO.setup (16, IO.OUT) IO.setup (12, IO.OUT) IO.setup (25, IO.OUT) IO.setup (24, IO.OUT) IO.setup (23, IO.OUT) IO.setup (18, IO.OUT)
ในขณะที่ คำสั่ง 1: ใช้เป็นลูปตลอดไปด้วยคำสั่งนี้คำสั่งภายในลูปนี้จะถูกดำเนินการอย่างต่อเนื่อง
ฟังก์ชันและคำสั่งอื่น ๆ ทั้งหมดได้อธิบายไว้ในส่วน 'รหัส' ด้านล่างด้วยความช่วยเหลือของ 'ความคิดเห็น'
หลังจากเขียนโปรแกรมและเรียกใช้งานแล้วRaspberry Pi จะส่งอักขระไปยัง LCDทีละตัวและ LCD จะแสดงตัวอักษรบนหน้าจอ