แสดงผล P10 LED ด้วย ARDUINO สั่งงานผ่าน Bluetooth

.

แสดงผล P10 LED ด้วย ARDUINO สั่งงานผ่าน Bluetooth

อภิรักษ์  นามแถ่ง

(aphirak112@gmail.com)

งบประมาณ 3,600 บาท (ไม่รวมกรอบอะคริลิค)

 

โครงงานนี้เป็นการใช้บอร์ด Arduino มาใช้ควบคุมการแสดงผลของบอร์ด P10 LED ขนาด 32×16 ต่ออนุกรมกัน 2 บอร์ด

เพื่อให้ได้การแสดงผลขนาด 64×16 สามารถเปลี่ยนข้อความ, ปรับความเร็วการวิ่งตัวอักษรและปรับความสว่างของบอร์ดแสดงผลได้ผ่าน Bluetooth 

ป้ายไฟแสดงผลเป็นตัวเลขหรือตัวอักษรวิ่งแบบ LED ปัจจุบันจะปรากฏอยู่แทบทุกสื่อ เนื่องจากมีความโดดเด่นในด้านการแสดงผลและสามารถสู้แสงแดดได้เมื่อถูกติดตั้งอยู่ภายนอกอาคาร มีความกลมกลืนและสวยงาม ทำให้การโฆษณาประชามสัมพันธ์ ต่างๆ มีความน่าสนใจเข้าถึงทุกกลุ่ม เนื่องจากสามารถปรับเปลี่ยนรูปแบบการแสดงผลได้หลากหลาย ซึ่งในแง่ของนักพัฒนาอย่างเราๆ ย่อมเคยผ่านงานแสดงผลด้วย LED มาบ้างไม่มากก็น้อย ซึ่งอดีตการต่อ LED เพื่อแสดงผลจะค่อนข้างยุ่งยากและกว่าจะประกอบเป็นบอร์ดใหญ่ๆ ได้ก็คงใช้เวลานานอยู่พอสมควร ปัจจุบันโมดูล LED Display มีราคาที่ถูกลงมากเหลือเพียงไม่กี่ร้อยบาท สำหรับผู้เขียนเองมองว่าคุ้มค่าเมื่อเทียบกับการที่ไม่ต้องเสียเวลาเดินซื้อของและประกอบเอง รวมถึงหากซื้อที่เป็นโมดูลมาใช้ก็จะมีความสวยงามมากกว่าด้วย

P10 โมดูล LED Display

โมดูล LED Display ที่นำมาใช้ในโครงงานนี้เป็นบอร์ดแอลอีดีสำเร็จรูปที่มีการจัดวางตำแหน่งของหลอดอีดีเป็นลักษณะเมทริกซ์ ซึ่งในหนึ่งบอร์ดจะมีการวางจำนวนแอลอีดีทางด้านแนวนอนจำนวน 32 ดวงและวางแอลอีดีทางด้านแนวตั้งจำนวน 16 ดวง หรือขนาด 32×16 พิกเซล มีจำนวนแอลอีดีทั้งหมดจำนวน 512 ดวง และระยะห่างระหว่างแอลอีดีแต่ละดวงจะมีระยะห่างขนาด 10 มิลลิเมตร โดยจะถูกเรียกชื่อว่าโมดูล P10

บนโมดูลจะมีไอซีที่ทำหน้าที่ค้างสถานะการติด/ดับของหลอดแอลอีดีแต่ละดวงด้วยไอซี 74HC595 ที่ทำหน้าที่เป็นวงจรรับข้อมูลขนาด 8 บิต (8-bit Shift Register) การรับข้อมูลจะรับเข้ามาทีละหนึ่งบิตหรือเรียกว่าแบบอนุกรม (Serial-In) ในส่วนการแสดงผลเอาต์พุตจะเป็นแบบ 8 บิต (Q0-Q7) เหมือนกันแต่จะอยู่ในรูปแบบขนาน (Parallel Data Output) การกำหนดสถานะลอจิกของขาเอาต์พุตทั้ง 8 จะต้องใช้วิธีเลื่อนทีละ 1 บิต เข้าที่อินพุตขา DS (ขา 14) และสร้างสัญญาณ Clock ป้อนเข้าที่ขา SHCP (ขา 12) เพื่อกำหนดจังหวะในการทำงาน และสามารถเลือกใช้ความถี่ของสัญญาณอินพุต SHCP ได้เกินกว่า 10MHz สัญญาณ SHCP หนึ่งไซเกิล (Clock Cycle) หมายถึง การเลื่อนบิตหนึ่งครั้ง ดังนั้นจึงต้องใช้ทั้งหมด 8 ไซเกิล สำหรับ 8 บิต ถ้าเลื่อนบิตมากกว่า 8 ไซเกิล ข้อมูลในรีจิสเตอร์ ก็จะถูกส่งออกมาตามลำดับที่ขา Q7s (ขา 9)

74HC595 หนึ่งตัวจะควบคุมแอลดีได้ 8 ดวง ซึ่งในโมดูล P10 เรามี 74HC595 ทั้งหมด 16 ตัว ดังนั้นเมื่อลองคำนวณแอลอีดีที่ได้ทั้งหมดจะเท่ากับ 128 ดวง (16×8) แต่บนบอร์ดจะมีแอลอีดีทั้งหมด 512 ดวง ดังนั้นการขับหลอดแอลอีดีจะไม่ได้เป็นแบบธรรมดาอย่างแน่นอน โดยโมดูลจะใช้การสแกนเข้ามาช่วย กล่าวคือ ในส่วนการสแกนนี้จะมีไอซีไดร์เวอร์ทั้งหมด 4 ตัว ใน 1 ตัวจะทำหน้าที่ควบคุมการแสดงผลสแกนแอลอีดีจำนวน 128 ดวง ดังนั้นเมื่อใช้ไอซีไดร์เวอร์ 4 ตัว จะสามารถควบคุมการติดดับของแอลอีดีได้ครบทั้ง 512 ดวง (128×4) ในการสแกนทั้ง 16 แถวจะมีการแบ่งตามจำนวนของไอซีไดร์เวอร์ คือ สแกน 1 ครั้งจะเป็นการกำหนดจำนวน 4 แถวนั่นเอง จากรูปที่ 1 เป็นการแสดงตำแหน่งขาบนบอร์ดที่ใช้เพื่อสั่งงานโมดูล

รูปที่ 1

รูปที่ 1 ตำแหน่งขาของคอนเน็กเตอร์อินพุตที่ใช้ควบคุมการแสดงผล

รูปที่ 2

รูปที่ 2 ภาพถ่ายตำแหน่งคอนเน็กเตอร์อินพุต (HUB) บนโมดูลแอลอีดี

ประกอบด้วยขาควบคุมการทำงานดังนี้

  • ขา OE (Output Enable) ขานี้จะใช้ควบคุมการนำข้อมูลเข้าไปยังรีจิสเตอร์ของ 74HC595 มาที่ตำแหน่งขาเอาต์พุต

  • ขา A และ B จะใช้ควบคุมในส่วนการเลือกตำแหน่งไอซีไดรเวอร์ ในรูปแบบไบนารี (Binary) ดังนี้

o   A = 0, B = 0 เลือกการ Scan แถวที่ 1,5,9,13

o   A = 0, B = 1 เลือกการ Scan แถวที่ 2,6,10,14

o   A = 1, B = 0 เลือกการ Scan แถวที่ 3,7,11,15

o   A = 1, B = 1 เลือกการ Scan แถวที่ 4,8,12,16

  • ขา CLK (ขา 8) ใช้สำหรับควบคุมการรับข้อมูลในแต่ละบิต

  • ขา R (ขา 12) ใช้สำหรับแลตช์ข้อมูลในรีจิสเตอร์ 74HC595

  • ขา SCLK (ขา 10) ใช้เพื่อชิพข้อมูลเข้าที่ขา OE ทีละ 1 บิต 

สำหรับบอร์ดโมดูลแอลอีดีจะมีตำแหน่งคอนเน็กเตอร์ขนาด 16 ขาอยู่สองชุด โดยชุดแรกที่อยู่ทางด้านซ้ายมือจะมีหน้าที่เป็นขาอินพุต (ตำแหน่ง HUB) จะต่อเข้ากับบอร์ดควบคุม และชุดที่อยู่ทางด้านขวามือเป็นคอนเน็กเตอร์เอาต์พุตไว้สำหรับเชื่อมต่อกับโมดูลแอลอีดีในบอร์ดถัดไป ในกรณีที่มีการต่อบอร์ดแอลอีดีมากกว่า 1 บอร์ด เหมือนกับโครงงานนี้ที่ใช้บอร์ดแอลอีดีจำนวน 2 บอร์ดต่อกันแบบอนุกรม ซึ่งจะได้ขนาด 64×16 = 1,024 ดวง

3

รูปที่ 3 วงจรสมบูรณ์

การทำงานของวงจรควบคุม

วงจรส่วนควบคุมการแสดงผลป้ายแอลอีดีออกแบบโดยใช้บอร์ด Arduino UNO เป็นตัวประมวลผลและรับคำสั่งจากผู้ใช้ ผู้เขียนขอเริ่มที่ส่วนควบคุมการแสดงผลโมดูลแอลอีดี โดยจะใช้พอร์ต SPI (MOSI และ CKL) ต่อขา D8 และ D13, ขา D6 ต่อกับขา A, ขา D7 ต่อกับขา B, ขา D11 ต่อกับขา R และขา D5 ต่อกับขา OE สัญญาณจาก Arduino จะส่งผ่านคอนเน็กเตอร์ CON3

CON1 เป็นตำแหน่งสำหรับต่อกับแรงดันไฟฟ้ากระแสตรงขนาด 5 โวลต์ เพื่อเป็นแหล่งจ่ายไฟให้กับ Arduino ซึ่งโครงงานนี้จะใช้สวิตชิ่งเพาเวอร์ซัพพลาย (Switching Power Supply) แรงดันเอาต์พุตเป็นแบบไฟฟ้ากระแสตรง 5 โวลต์ ปริมาณกระแสประมาณ 3-5 แอมป์ เพื่อให้เพียงพอสำหรับจ่ายให้กับวงจรทั้งหมด เนื่องจากโมดูลแอลอีดีหนึ่งบอร์ดจะใช้กระแสประมาณ 1-1.5 แอมป์ในกรณีที่แอลอีดีติดสว่างทั้งหมด แต่สำหรับโครงงานนี้ไม่มีจังหวะที่แอลอีดีจะติดสว่างพร้อมกันทั้งหมด ผู้ใช้สามารถเลือกแหล่งจ่ายไฟที่สามารถจ่ายได้ประมาณ 2 แอมป์ก็เพียงพอแล้ว เนื่องจากกระแสสูงสุดที่วงจรใช้ประมาณ 1.5 แอมป์

4

รูปที่ 4 ลายวงจรพิมพ์ด้านล่างขนาดเท่าแบบ (Bottom Layer)

5

รูปที่ 5 ตำแหน่งการลงอุปกรณ์ที่ถูกต้อง (Top Overlay)

การประกอบ

จากรูปที่ 5 เป็นตำแหน่งการลงอุปกรณ์ทั้งหมดของโครงงานนี้ ลักษณะของวงจรที่เราสร้างจะเป็นบอร์ดชีล (shield) สำหรับเสียบกับบอร์ด Arduino ดังนั้นอุปกรณ์จะมีไม่มากนัก จะสังเกตว่าลายวงจรนั้นก็มีเพียงด้านเดียวและการลงอุปกรณ์ก็ไม่ยุ่งยาก เนื่องจากอุปกรณ์มีน้อยชิ้นและส่วนมากเป็นอุปกรณ์ที่สามารถบัดกรีได้อย่างไม่ลำบากมากนัก แต่ถึงแม้ว่าอุปกรณ์น้อยชิ้นและการลงอุปกรณ์ก็ไม่ยุ่งยากมากนัก แต่ถึงอย่างไรก็ตามก็ควรเริ่มจากตัวที่มีความสูงน้อยที่สุดก่อน อาทิเช่น จุดจั๊มเปอร์และตัวเก็บประจุ เป็นต้น จากนั้นจึงไล่เรียงตามลำดับความสูงจนกระทั่งครบทุกตัว

เมื่อบัดกรีจนครบหมดแล้วให้สำรวจความถูกต้องอีกครั้งจนแน่ใจว่าถูกต้องทุกจุด โดยเฉพาะตำแหน่งขั้วและขาของคอนเน็กเตอร์ เมื่อทุกส่วนถูกต้องครบแล้วให้ประกอบบอร์ดชีลของเราเข้ากับบอร์ด Arduino UNO เพื่อทดสอบการทำงานในขั้นตอนต่อไป

6

รูปที่ 6 การเชื่อมต่อวงจรสำหรับใช้งาน

ทดสอบการทำงาน

ก่อนจะเริ่มทดสอบการทำงานให้ผู้ใช้ไปโหลดโปรแกรมสำหรับ Arduino เสียก่อน โดยเข้าไปดาวน์โหลดที่เว็บไซต์ http://electronics.se-ed.com/download เมื่อเสร็จแล้วให้ทำการเชื่อมต่อบอร์ดเข้าด้วยกันตามแสดงในรูปที่ 6 หลังจากต่ออุปกรณ์ทุกส่วนเข้าด้วยกันแล้วให้จ่ายแรงดันเข้าวงจร หากวงจรทำงานปกติจะพบว่าจะมีการแสดงค่าข้อความ “SEMICONDUCTOR ELECTRONICS” แสดงว่าชิ้นงานของเราสามารถใช้งานได้แล้ว 

รูปที่ 7

รูปที่ 7 การเปลี่ยนข้อความจากซอร์สโค้ด

รูปที่ 88

รูปที่ 8 โมดูลบลูทูธ HC-05

เปลี่ยนแปลงการแสดงผล

การเปลี่ยนข้อความ, ความเร็วการวิ่งของตัวอักษรและความสว่างของการแสดงผลสามารถทำได้ 2 แบบ คือ เปลี่ยนจากซอร์สโค้ดและAndroid App ที่ผู้เขียนออกไว้อำนวยความสะดวกให้สามารถเปลี่ยนแปลงการแสดงผลได้ง่าย

รูปที่ 7 เป็นส่วนของซอร์สโค้ดสำหรับการเปลี่ยนการแสดงผล ในบรรทัดที่ 62 เป็นข้อความที่ต้องการแสดงผล, บรรทัดที่ 63 เป็นความเร็วในการเลื่อนของตัวอักษร สามารถกำหนดได้ตั้งแต่ 1-255 สุดท้ายเป็นการกำหนดค่าความสว่างในการแสดงผลจะอยู่ในบรรทัดที่ 64 สามารถกำหนดได้ตั้งแต่ 1-255 เช่นเดียวกับการกำหนดความเร็ว

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

รูปที่ 9

รูปที่ 9ใส่รหัส PIN ของอุปกรณ์เพื่อจับคู่ จะเห็นว่าระบบแนะนำเป็น 0000 หรือ 1234 สำหรับ HC-05 ของผู้เขียนเป็น 1234

รูปที่ 10

รูปที่ 10 หน้าตา Android App ที่ใช้สำหรับเปลี่ยนข้อความ

การเชื่อมต่อระหว่างโทรศัพท์ Android จะผ่านโมดูลบลูทูธ (Bluetooth) การใช้งานผู้ใช้จะต้องใช้โทรศัพท์เชื่อมต่อกับโมดูลบลูทูธของเราเสียก่อน โดยในขั้นตอนนี้ยังไม่ต้องใช้ Android App ที่เราสร้างขึ้นเนื่องจากAndroid Appของเรานี้จะทำการเชื่อมต่อกับอุปกรณ์ที่ถูกจับคู่แล้ว ข้อควรระวังในการใช้งาน คือ ห้ามเปลี่ยนชื่อ HC-05 โดยเด็ดขาด เพราะAndroid Appถูกกำหนดให้มองหาโมดูลชื่อ HC-05 หากเปลี่ยนชื่อแอพจะไม่สามารถเชื่อมต่อได้ 

รูปที่ 11

รูปที่ 11 ลิสรายการจับคู่บนโทรศัพท์ของเรา

รูปที่ 10 เป็น Android App ที่ใช้สำหรับโครงงานเรา ผู้ใช้สามารถนำไฟล์ “SEMIP10.apk” ที่ดาวน์โหลดมาแล้วก่อนหน้านี้พร้อมกับซอร์สโค้ดไปติดตั้งบนโทรศัพท์ Android ของท่าน ก่อนใช้งานให้เชื่อมต่อกับบูลทูธ HC-05 เสียก่อน โดยกดที่ปุ่ม “Connect to Device” จากนั้นระบบจะแสดงรายชื่ออุปกรณ์ที่เคยจับคู่ขึ้นมา ให้ผู้ใช้กดเลือกที่โมดูล HC-05 ของเรา เป็นอันสิ้นสุดการเชื่อมต่อ

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

รายการอุปกรณ์

ตัวเก็บประจุ

C1 –                                10uF16V อิเล็กทรอไลต์               1             ตัว

C2 –                               0.1uF50V โพลีเอสเตอร์               1             ตัว 

อื่นๆ

HC-05 –                        Bluetooth ModuleHC-05                                1                  ตัว

CON1 –                          คอนเน็กเตอร์ 16 ขา                                             1                  ตัว

CON2 –                          คอนเน็กเตอร์ 6 ขา                                               1                  ตัว

CON3 –                          เทอร์มินอลบล็อก 2 ขา                                         1                 ตัว

แหล่งจ่ายไฟ 5V 2A                                                                                    1                  ตัว

หมายเหตุ ซอร์สโค้ดทั้งหมดที่ใช้ร่วมกับโครงงานสามารถดาวน์โหลดได้ที่ http://electronics.se-ed.com/download

*** ซอร์สโค้ดที่สามารถดาวน์โหลดได้เพิ่มเติม  http://www.mediafire.com/file/mk0k5n9758g8bi4/Soft_ware_Project_P10.rar

Leave a Comment