Arduino scrolling Text ป้ายไฟแบบพกพาสั่งงานผ่านบลูทูธ

.

.

Arduino scrolling Text ป้ายไฟแบบพกพาสั่งงานผ่านบลูทูธ

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

aphirak112@gmail.com

งบประมาณ 1,500 บาท

 

โครงงานนี้เป็นการนำเอา Arduino มาแสดงผล Dot matrix ขนาด 32×8 แบบพกพา ขนาดเล็กกระทัดรัด เหมาะสำหรับการนำไปใช้เป็นป้ายแสดงผลที่สามารถเคลื่อนที่ได้ สามารถเปลี่ยนข้อความได้ง่ายผ่านแอพพลิเคชันบนมือถือ และสามารถใช้ Power Bank เป็นแหล่งจ่ายได้ด้วย

 

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

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

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

รูปที่ 2 วงจรของโมดูล MAX7219 Dot matrix

รูปที่ 3 รูปชิ้นส่วนของโมดูล MAX7219 Dot matrix

หลักการทำงาน

รูปที่ 1 เป็นวงจรสมบูรณ์ของโครงงานนี้ จะเห็นว่าวงจรมีเพียงไม่กี่ชิ้นเท่านั้น หัวใจหลักของโครงงานนี้ คือ บอร์ด Arduino UNO ทำหน้าที่ประมวลผล โดยแบ่งออกเป็น 2 ส่วน คือ ส่วนการแสดงผลและส่วนการรับคำสั่งจากบลูทูธ

ในส่วนการแสดงผลจะใช้ LED Dot matrix ขนาด 32×8 การแสดงผลจะใช้การสแกนให้ LED แต่ละดวงให้ติดและดับตามรูปแบบที่กำหนดไว้ ในการใช้งานจริงเพื่อให้สะดวกต่อการใช้งาน โครงงานนี้ผู้เขียนเลือกใช้โมดูลสำเร็จรูปที่ถูกจัดเรียงกันในรูปแบบ matrix ขนาด 8×8 จำนวน 4 ตัวนำมาเรียงกันเพื่อให้ได้ขนาดที่ต้องการ ภายในโมดูลแต่ละตัวจะใช้ไอซี MAX7219 ควบคุมการแสดงผล ข้อดีหลักๆ ของไอซี MAX7219 นี้ คือ ใช้ขาเพื่อควบคุมการแสดงผล (Interface) เพียงแค่สามเส้น, สามารถปรับระดับความสว่างได้, มีหน่วยความจำในตัวเพียงแค่ส่งข้อมูลเข้าไปในหน่วยความจำก็สามารถแสดงผลตามข้อมูลนั้นๆ ได้เลย

รูปที่ 2 เป็นวงจรภายในของโมดู MAX7219 Dot matrix จะประกอบด้วยไอซี MAX7219 ที่เป็นไอซีสำหรับการแสดงตัวเลขด้วย 7 เซกเมนต์ได้สูงสุด 8 หลัก แต่ในที่นี้เราจะนำมาขับ LED Dot matrix ขนาด 8×8 มีการสื่อสารด้วยมาตรฐาน SPI มีขาใช้งานอยู่ 3 ขาด้วยกัน คือ LOAD (หรือ Chip Select), CLK และ DIN ในกรณีที่ขับ LED Dot Matrix มากกว่าหนึ่งหลักจะต้องต่อ MAX7219 หลายตัว ดังนั้นขา DOUT จะถูกนำมาใช้ต่อกับขา DIN ของ MAX7219 ตัวถัดไป (ดังแสดงในรูปที่ 2) จะเห็นว่า DOUT (ขา 24) จะถูกตระเตรียมไว้ที่ J2 เพื่อจะนำไปต่อกับ DIN ของโมดูลถัดไป ซึ่งจะถูกเตรียมไว้ที่ J1

ในส่วนของ Dot Matrix ขา DIG0-DIG7 จะต่อเข้ากับแถวที่ 1-8 ตามลำดับ ในส่วนของคอลัมน์ที่ 1-8 จะต่อเข้ากับขา SEG DP, SEG A- SEG G การจะให้ LED ที่ตำแหน่งใดติดจะใช้หลักการสแกนลอจิกที่ตำแหน่งแถวและคอลัมน์ตามลำดับ ยกตัวอย่าง หากต้องการให้ LED ที่ตำแหน่งแถวที่ 1 และคอลัมน์ที่ 1 ติด จะต้องกำหนดให้ขา SEG DP เป็นลอจิกสูงและขา DIG0 เป็นลอจิกต่ำ เท่านี้ LED ที่ตำแหน่งดังกล่าวก็จะติดสว่างขึ้นมา

รูปที่ 4 กราฟกำหนดปริมาณกระแสสำหรับขับ LED แต่ละเซกเมนต์

ขา ISET เป็นขาที่ใช้กำหนดกระแสในแต่ละเซกเมนต์โดยการต่อตัวต้านทานค่าพูลอัพ ค่าของตัวต้านทานจะเป็นตัวกำหนดปริมาณกระแส ซึ่งสามารถดูได้จากกราฟรูปที่ 4 จะเห็นว่าวงจรจะใช้ตัวต้านทานค่ามาตรฐาน 10 กิโลโอห์มต่อพูลอัพไว้ แต่ถึงอย่างไรก็ตาม ความสว่างของ LED Dot Matrix นั้นจะต้องกำหนดด้วยซอฟต์แวร์อีกครั้งหนึ่งด้วย โดยการกำหนดที่ค่า Intensity เพื่อกำหนดปริมาณกระแสที่ไหลออกจากขา SEG A-SEG G และ SEG DP ซึ่งการเชื่อมต่อกับโมดูล MAX7219 Dot Matrix จะใช้ 3 ขาดังที่กล่าวข้างต้น โดยขา PB2 จะต่อกับขา LOAD (หรือ Chip Select), ขา PB5 จะต่อเข้ากับขา CLK และขา PB3 จะต่อเข้ากับขา DIN

รีจิสเตอร์ที่จำเป็นต้องกำหนด

  • Decode Mode (0x9) กำหนดให้เท่ากับ 0xFF เพื่อแจ้งว่าต้องการใช้งาน Decode Mode

  • Shutdown (0xC) กำหนดให้เท่ากับ 0x01 เพื่อกำหนดให้ MAX7219 อยู่ในโหมดทำงานปกติ

  • Intensity (0xA) กำหนดให้เท่ากับ 0x0F ซึ่งหมายถึง กำหนดระดับความสว่างของ LED สูงสุด (0x00 = ต่ำสุด)

  • Scan Limit (0xB) กำหนดให้เท่ากับ 0x07 ซึ่งหมายถึงการเปิดใช้งาน DIG0 ถึง DIG7 ในการ “สแกน” โดยอัตโนมัติ

โมดูล Bluetooth HC-05 เป็นโมดูล Bluetooth ที่ผู้เขียนนำมารับคำสั่งจากโทรศัพท์ Android เอาต์พุตของโมดูล Bluetooth จะถูกส่งไปยัง Arduino UNO ผ่าน Serial port เข้าที่ขา Rx (ขา D0) ที่มีหน้าที่ขาเป็น Hardware Serial communication เนื่องจากโปรแกรมหลักจะถูกนำไปใช้สแกนข้อความให้กับ Dot Matrix ดังนั้นโปรแกรมจะไม่สามารถวนเพื่ออ่านค่าจากบลูทูธตลอดเวลาได้ หรือหากใช้การวนรับข้อมูลคำสั่งที่อ่านได้อาจจะมาไม่ครบก็เป็นได้ ในโครงงานนี้จะใช้การอินเตอร์รัปต์ที่ขา D2 โดยจะใช้ R1 ต่อระหว่างขา Rx เมื่อมีข้อมูลส่งมาจากบลูทูธจะมีสัญญาณส่งไปที่ขาอินเตอร์รัปต์ด้วย เพื่อให้ Arduino หยุดทำงานในส่วนอื่นก่อนและไปรับข้อมูลเพียงอย่างเดียวจนสำเร็จจึงจะกลับไปทำส่วนอื่นๆ ได้

แหล่งจ่ายไฟของวงจรนี้สามารถเลือกใช้ได้ 2 แบบ คือ แบบแรกคือเสียบสาย USB เข้าบอร์ด Arduino UNO โดยตรง เหมือนการใช้งานบอร์ด Arduino ทั่วไป ซึ่งการใช้งานจริงท่านไม่จำเป็นต้องต่อเข้ากับคอมพิวเตอร์ก็ได้ เพียงแค่นำอะแด๊ปเตอร์ 5 โวลต์ทั่วไปมาใช้งานได้เลย อีกแบบหนึ่ง คือ เสียบไฟบ้าน (220 VAC) ผ่าน CON1 แรงดันนี้จะถูกป้อนให้กับสวิตชิ่ง 5 โวลต์ เพื่อจ่ายแรงดันให้กับวงจร

รูปที่ 5 ลายวงจรพิมพ์ขนาดเท่าแบบ

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

รูปที่ 7 ตำแหน่งการลงอุปกรณ์ด้านล่าง (Bottom Overlay)

รูปที่ 8 ภาพถ่ายการบัดกรีคอนเน็กเตอร์ด้านล่าง

การประกอบ

จากรูปที่ 6 และ 7 เป็นตำแหน่งการลงอุปกรณ์ของโครงงานนี้ ลักษณะของวงจรที่เราสร้างจะเป็นบอร์ดชีล (shield) สำหรับเสียบกับบอร์ด Arduino การลงอุปกรณ์ไม่ยากมานัก เนื่องจากอุปกรณ์ที่ใช้มีไม่มาก แต่การลงอุปกรณ์จะมีทั้งด้านบน (Top Overlay) และด้านล่าง (Bottom Overlay)

การลงอุปกรณ์ควรเริ่มจากด้านบนก่อน (รูปที่ 6) และควรเริ่มจากอุปกรณ์ที่มีระดับความสูงน้อยที่สุดก่อน นั่นก็คือ ตัวต้านทาน ตามด้วยคอนเน็กเตอร์และอุปกรณ์ที่เหลือทั้งหมด เมื่อบัดกรีด้านบนเสร็จแล้ว ก็ให้บัดกรีอุปกรณ์ด้านล่าง (รูปที่ 7) ซึ่งทั้งหมดเป็นคอนเน็กเตอร์ตัวผู้ สำหรับเสียบกับบอร์ด Arduino UNO ที่เป็นตัวเมีย เมื่อลงอุปกรณ์จนครบหมดแล้วให้สำรวจความถูกต้องอีกครั้งจนแน่ใจว่าถูกต้องทุกจุด

รูปที่ 9 ข้อความแสดงเมื่อเริ่มเปิดเครื่อง

การทดสอบ

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

ขั้นตอนต่อมาให้เริ่มจ่ายไฟเข้าบอร์ด ซึ่งจะจ่ายแรงดันผ่านพอร์ท USB หรือใช้ไฟ 220VAC จ่ายผ่านทาง CON1 ก็สามารถทำได้ทั้งคู่ ขณะนั้น Dot matrix จะแสดงข้อความ “PLEASE SET TEXT” เป็นไฟวิ่งจากซ้ายไปขวา (ดังรูปที่ 9) เพื่อบอกว่าโครงงานของเราสามารถใช้งานงานได้ และพร้อมรับคำสั่ง ในการทดสอบขั้นตอนต่อไป

การตั้งค่า

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

ในการส่งข้อมูลหรือคำสั่งใดๆ โครงงานนี้จะแบ่งออกเป็น 2 รูปแบบ คือ การส่งข้อความตัวอักษรและคำสั่งสำหรับแสดงผล

คำสั่งที่ใช้ในการตั่งค่า

  • การส่งตัวอักษรจะต้องส่งวงเล็บเปิดไปก่อน ตามด้วยตัวอักษรที่ต้องการ และตามด้วยวงเล็บปิด ตัวอย่างเช่น หากต้องการส่งคำว่า “Hello” จะต้องส่ง “(Hello)” ไป

  • ความสว่างของตัวอักษรสามารถเพิ่มหรือลดลงได้ โดยการส่ง “/+” หรือ “/-” ตามลำดับ คำสั่งนี้จะสามารถปรับระดับความสว่าง 16 ระดับ

  • ในทำนองเดียวกันความเร็วในการเลื่อนตัวอักษรสามารถเพิ่มหรือลดลงได้โดยการส่ง “/<” หรือ “/>” ตามลำดับ

  • คำสั่ง “/p” ใช้เพื่อหยุดการเลื่อนข้อความชั่วคราว (pause) หากส่งคำสั่งนี้อีกครั้งจะเป็นการสั่งให้ข้อความดำเนินการต่อไปอีกครั้ง

  • คำสั่ง “/e” ใช้เพื่อลบบัฟเฟอร์หรือลบข้อความที่กำลังแสดงผลอยู่

รูปที่ 10 แอพพลิเคชัน Bluetooth spp tools pro

รูปที่ 11 หน้าต่างสแกนหาบลูทูธ

รูปที่ 12 เชื่อมต่อกับโมดูลบลูทูธของโครงงานเรา

รูปที่ 13 เลือดโหมดเชื่อมต่อเป็น Keyboard mode

รูปที่ 14 หน้าแรกของการตั้งค่าใน Keyboard mode

รูปที่ 15 ตั้งค่าปุ่ม ERASE เพื่อลบข้อมูลที่แสดงบน Dot matrix

รูปที่ 16 ตั้งค่าปุ่ม PAUSE เพื่อหยุดตัวอักษรที่วิ่งอยู่ชั่วคราว

แอพพลิเคชันบนมือถือ

เนื่องจากโครงงานนี้เป็นการสั่งงานผ่านแอพพลิเคชันบนมือถือ ดังนั้นบนสมาร์ทโฟนของผู้ใช้งานจึงจำเป็นต้องมีแอพพลิเคชันสำหรับสั่งงานด้วย โครงงานนี้จะใช้แอพพลิเคชันที่มีอยู่แล้วใน Google Play ซึ่งมีหลายแอพที่สามารถใช้งานได้ แต่ผู้เขียนเลือกใช้แอพที่ชื่อ Bluetooth spp tools pro (ดังรูปที่ 10) เมื่อโหลดมาลงในสมาร์ทโฟนเราแล้วให้เปิดแอพขึ้นมาและเชื่อมต่อกับบลูทูธบนโครงงาน ในเครื่องของผู้เขียนจะขึ้นว่า HC-05 (ดังรูปที่ 11) เมื่อสแกนพบให้ทำการเชื่อมต่อโดยกดปุ่ม Connect ดังรูปที่ 12

รูปที่ 17 ตั้งค่าปุ่ม MSG2 เพื่อส่งข้อความไปแสดง

รูปที่ 18 ตั้งค่าปุ่ม BRIGHT+ เพื่อสั่งเพิ่มความสว่างของตัวอักษร

รูปที่ 19 ตั้งค่าปุ่ม BRIGHT- เพื่อสั่งลดความสว่างของตัวอักษร

รูปที่ 20 ตั้งค่าปุ่ม SCROLL+ เพื่อสั่งเพิ่มความเร็วการวิ่งของตัวอักษร

รูปที่ 21 ตั้งค่าปุ่ม SCROLL- เพื่อสั่งลดความเร็วการวิ่งของตัวอักษร

เมื่อเชื่อมต่อกับโมดูลบลูทูธได้สำเร็จ แอพพลิเคชันจะเปลี่ยนมายังหน้าสำหรับเลือกโหมดการเชื่อมต่อ “Select communication mode” ขั้นตอนนี้ให้เลือกเป็น Keyboard mode ดังรูปที่ 13 เสร็จแล้วแอพจะเข้ามาที่หน้าการตั้งค่าปุ่มต่างๆ ซึ่งจะมีทั้งหมด 12 ปุ่ม ให้กดทีละปุ่มแล้วตั้งชื่อปุ่มและคำสั่งหรือข้อมูลที่ต้องการส่งออกไปเมื่อปุ่มนั้นๆ ถูกกด ดังแสดงในรูปที่ 14-21 เมื่อเสร็จแล้วให้กดทดสอบการทำงานแต่ละปุ่มดูว่าตรงตามที่เรากำหนดไว้หรือไม่

 

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

 

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

ตัวต่านทาน ¼ วัตต์ +/-1%

R1-     1k                               1                    ตัว

อื่นๆ

Arduino UNO-    บอร์ด Arduino UNO           1                    ตัว

BLUTOOTH-   โมดูล Bluetooth HC-05          1                    ตัว

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

CON2-     คอนเน็กเตอร์ 5 ขา        1                    ตัว

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

 

 

 

Leave a Comment