- วัสดุที่ต้องการ:
- แผนภูมิวงจรรวม:
- การสร้างแอปพลิเคชัน Android โดยใช้การประมวลผล:
- การทำความเข้าใจรหัสการประมวลผล:
- การเขียนโปรแกรม Arduino ของคุณ:
- การออกแบบวงจรและ PCB โดยใช้ EasyEDA:
- การคำนวณและการสั่งซื้อตัวอย่างออนไลน์:
- การทำงานของจอแสดงผล Bluetooth Sign Board:
ไม่ว่าจะเป็นทางหลวงที่ทอดยาวหรือประตูหน้าบ้านแพทย์ของคุณเรามีป้ายติดไว้ทุกที่เพื่อให้ข้อมูลแก่เรา แต่ป้ายเหล่านี้มักจะน่าเบื่อและไม่สามารถกำหนดค่าได้ตามความสนใจของเราเป็นครั้งคราว ดังนั้นในโครงการนี้เราจะไปสร้างกระดานเข้าสู่ระบบบลูทู ธ ควบคุมการใช้จอแสดงผล คุณลักษณะเฉพาะของโครงการนี้คือโปรแกรมหุ่นยนต์ซึ่งจะช่วยให้ผู้ใช้สามารถควบคุมการทำงานทุก 64 ไฟ LED เป็นรายบุคคลจากโทรศัพท์มือถือ สิ่งนี้ทำให้ผู้ใช้สามารถสร้างแบบกำหนดเองได้อย่างง่ายดายและแสดงบนจอ LED ฟังดูน่าสนใจใช่ไหม !! มาเริ่มกันเลย…
วัสดุที่ต้องการ:
- Arduino Pro mini
- MAX7219
- โมดูลบลูทู ธ HC-05
- 8 * 8 จอแสดงผล LED Matrix
- ตัวต้านทาน 20k
- แจ็ค Barrel DC
แผนภูมิวงจรรวม:
แผนภาพวงจรบอร์ด LED ที่ควบคุมด้วยบลูทู ธนี้สร้างขึ้นโดยใช้แอปพลิเคชัน EasyEDA เราจะใช้แผนผังเดียวกันในการพัฒนาPCBจากมันและสร้างโดยใช้ EasyEDA
วงจรค่อนข้างตรงไปตรงมา โครงการทั้งหมดใช้พลังงานจากอะแดปเตอร์ 12V ซึ่งมอบให้โดยตรงกับขา Raw ของบอร์ด Arduino แรงดันไฟฟ้าวัตถุดิบนี้จะถูกควบคุมแล้วถึง + 5V ซึ่งจะถูกส่งไปยังโมดูลบลูทู ธ และ MAX7219 IC หมุด Tx และ Rx ของโมดูลบลูทู ธ เชื่อมต่อกับ D11 และ D10 ของ Arduino เพื่อเปิดใช้งานการเชื่อมต่อแบบอนุกรม
พินดิจิทัล D5 ถึง D7 เชื่อมต่อกับ MAX7219 IC เพื่อส่งและรับข้อมูลผ่านการสื่อสาร SPI พิน ISET ของ MAX7219 ถูกดึงสูงผ่านตัวต้านทาน 20k
สำหรับโครงการนี้ฉันได้ประดิษฐ์ PCBคุณสามารถรับไฟล์ออกแบบของ PCB และใช้แบบเดียวกันหรือสร้างวงจรบนเขียงหั่นขนม อย่างไรก็ตามเนื่องจากความซับซ้อนขอแนะนำให้ซื้อโมดูลจอแสดงผล 8x8 หรือใช้ PCB
เมทริกซ์ 8x8เป็นโมดูลการแสดงผลที่มีประโยชน์มากและสามารถใช้ในโครงการเจ๋ง ๆ มากมาย:
- การควบคุมเมทริกซ์ LED 8x8 ด้วย Raspberry Pi
- การเลื่อนการแสดงข้อความบนเมทริกซ์ LED 8x8 โดยใช้ Arduino
- 8x8 LED Matrix โดยใช้ Arduino
- 8x8 LED Matrix Interfacing กับ AVR Microcontroller
การสร้างแอปพลิเคชัน Android โดยใช้การประมวลผล:
ก่อนที่เราจะเริ่มเขียนโปรแกรม Arduino ของเราเราควรทราบว่าข้อมูลประเภทใดที่เราจะได้รับจากโทรศัพท์มือถือเพื่อตอบสนองกลับไป ลองมาดูกันว่าแอปพลิเคชัน Android ถูกสร้างขึ้นอย่างไรและคุณจะใช้งานบนสมาร์ทโฟนของคุณเพื่อควบคุมเมทริกซ์ LED 8x8ได้อย่างไร
แอปพลิเคชัน Android สำหรับโครงการนี้สร้างขึ้นโดยใช้ซอฟต์แวร์ประมวลผล เป็นแอปพลิเคชันการพัฒนา Open-Source และสามารถดาวน์โหลดและนำไปใช้ในการพัฒนาโครงการที่น่าสนใจโดยใช้ Arduino หรือไมโครคอนโทรลเลอร์อื่น ๆ ได้อย่างง่ายดายเนื่องจากสามารถพัฒนาแอปพลิเคชัน Android และแอปพลิเคชันระบบ เราได้ทำโปรเจ็กต์บางอย่างโดยใช้การประมวลผลแล้วและคุณสามารถตรวจสอบได้โดยคลิกที่ลิงค์ด้านล่าง
- DIY วิทยุ FM โดยใช้การประมวลผล
- ความจริงเสมือน / การควบคุมท่าทางโดยใช้ Arduino
- ห้องแชทส่วนตัวโดยใช้ Arduino
- ระบบเรดาร์ Arduino โดยใช้แอปประมวลผลและเซ็นเซอร์อัลตราโซนิก
- การตรวจจับใบหน้าแบบเรียลไทม์และการติดตามโดยใช้ Arduino
- DIY Speedometer โดยใช้ Arduino และการประมวลผล
- เกมปิงปองโดยใช้ Arduino Accelerometer
- หุ่นยนต์สองมือโดยใช้ Arduino
- กล้องถ่ายภาพความร้อน DIY Arduino
กลับไปที่หัวข้อเป็นไปไม่ได้ที่ฉันจะอธิบายรหัสทั้งหมดของแอปพลิเคชัน Android ดังนั้นคุณจะต้องเรียนรู้การประมวลผลด้วยตัวเองจากนั้นดูรหัสเพื่อทำความเข้าใจว่ามันทำงานอย่างไร ดังนั้นสำหรับผู้ที่ต้องการข้ามขั้นตอนการเรียนรู้การประมวลผลสามารถดาวน์โหลดแอปพลิเคชัน Android ได้จากลิงค์ด้านล่าง
- ดาวน์โหลดแอปพลิเคชัน Android
ด้านล่างนี้เป็นอินเทอร์เฟซของแอปพลิเคชัน Android ของเรา:
ไฟล์ APK สามารถติดตั้งได้โดยตรงบนแอปพลิเคชัน Android และเปิดใช้งานเหมือนกับแอปพลิเคชันอื่น ๆ แต่ตรวจสอบให้แน่ใจว่าอุปกรณ์บลูทู ธ HC-05 ของคุณมีชื่อว่า“ HC-05” เพราะจะใช้งานได้เท่านั้น
การทำความเข้าใจรหัสการประมวลผล:
ผู้ที่สนใจทราบว่าเกิดอะไรขึ้นหลังหน้าจอสามารถอ่านเพิ่มเติมได้ส่วนอื่น ๆ สามารถข้ามไปยังหัวข้อถัดไปได้ โดยทั่วไปแอปพลิเคชัน Android จะเชื่อมต่อกับอุปกรณ์บลูทู ธ ที่เรียกว่า“ HC-05” ระหว่างการเริ่มต้นระบบและแสดงชุดไฟ LED 64 ดวงในรูปแบบวงกลม จากนั้นเมื่อผู้ใช้กดวงกลมวงกลมจะเปลี่ยนเป็นสีแดงและหมายเลขวงกลมจะถูกส่งไปยัง Arduino ผ่านบลูทู ธ เมื่อได้รับหมายเลขของวงกลม Arduino จะเปิด LED ดู Let 's เข้าไปในเส้นที่สำคัญของโปรแกรมการประมวลผลที่จะเข้าใจได้ดียิ่งขึ้น สามารถดาวน์โหลดโค้ดทั้งหมดของแอปพลิเคชัน Android ได้จากลิงค์ด้านล่าง
- รหัสประมวลผลสำหรับแอปพลิเคชัน Android
เราใช้คลาสและอ็อบเจ็กต์เพื่อแสดง LED 64 ดวงเพื่อให้เราสามารถจัดการกับแต่ละอันได้อย่างง่ายดาย ดังที่คุณเห็นในโค้ดด้านล่างเราใช้ for loop เพื่อวนซ้ำจาก 1 ถึง 64 โดยใช้อาร์เรย์ นี่คือ LED แต่ละดวงจะมีค่าตำแหน่ง X ตำแหน่ง Y และสีของตัวเองและเราสามารถเปลี่ยนได้อย่างง่ายดาย
// dipslay leds ทั้งหมดสำหรับ (int i = 1; i <= 64; i ++) led_array.display (); // leds ทั้งหมดแสดงคลาส Led { float X_Pos; ลอย Y_Pos; สีสี; // CONSTRUTOR Led (float tempx, float tempy, color tempc) { X_Pos = tempx; Y_Pos = อุณหภูมิ; color = tempc; } โมฆะแสดง () { เติม (สี); วงรี (X_Pos, Y_Pos, led_dia, led_dia); } }
ไฟ LED จะถูกโหลดบนหน้าจอตามลำดับเดียวกันของจอแสดงผล LED แต่ละดวงจะถูกคั่นด้วยระยะทางที่เท่ากับเส้นผ่านศูนย์กลางของ LED ด้วยวิธีนี้เราสามารถแยกแยะได้อย่างง่ายดายว่า LED ใดที่ผู้ใช้เลือกอยู่ในปัจจุบัน ดังที่แสดงในโปรแกรมด้านล่างเราสร้างอาร์เรย์ซึ่งแต่ละองค์ประกอบเก็บข้อมูลของตำแหน่ง X, Y และสีของ LED
โมฆะ load_leds () { led_array = led ใหม่; int a = 1; สำหรับ (int j = 0; j <= 7; j ++) { float y = height / 6 + j * (led_dia * 1.5); สำหรับ (int i = 0; i <= 7; i ++) { float x = (width / 6) + i * (led_dia * 1.5); // เติม (255); // วงรี (x, y, led_dia, led_dia); led_array = Led ใหม่ (x, y, สี (255,255,255)); a ++; } } }
ขั้นตอนหลักในโครงการคือการตรวจสอบว่าผู้ใช้มีการกด LED ใด ๆ และถ้าใช่เรามีการเปลี่ยนสีของไฟ LED และส่งจำนวน LED ผ่านบลูทู ธเนื่องจากตอนนี้เราสามารถระบุตำแหน่งและสีของ LED แต่ละดวงได้อย่างง่ายดายโดยการเปรียบเทียบค่า X, Y ของตำแหน่งที่ผู้ใช้กดกับค่า X, Y ของ LED หากค่ารวมเข้าด้วยกันเราจะเปลี่ยนสถานะของ LED และส่งตัวเลขผ่านบลูทู ธ ดังที่แสดงด้านล่าง
// ตรวจสอบว่านำเมาส์ไปวางหรือไม่ // ถ้าใช่ให้ส่งหมายเลขนำ สำหรับ (int i = 1; i <= 64; i ++) { if ((mouseX <(led_array.X_Pos + led_dia / 2)) && (mouseX> (led_array.X_Pos - led_dia / 2)) && (mouseY <(led_array.Y_Pos + led_dia / 2)) && (mouseY> (led_array.Y_Pos - led_dia / 2))) {led_array = Led ใหม่ (led_array.X_Pos, led_array Y_Pos, led_color); ข้อมูลไบต์ = {byte (i)}; bt.broadcast (ข้อมูล); } }
นอกจากนี้โปรแกรมยังสามารถรีเซ็ต LED ทั้งหมดได้โดยการปิดทั้งหมดและคุณสามารถทำให้ LED เปลี่ยนเป็นสีแดง (เปิด) หรือสีขาว (ปิด) ดังนั้นเราจึงมีปุ่มสลับสำหรับสิ่งนั้นด้วย ปุ่มสลับจะปรากฏขึ้นและรอการป้อนข้อมูล หากกดจะดำเนินการตามลำดับ รหัสที่ต้องทำเช่นเดียวกันแสดงอยู่ด้านล่างเป็นฟังก์ชันที่เรียกว่าภายในลูปวาด
โมฆะ load_buttons () { rectMode (CENTER); textAlign (ตรงกลาง, ตรงกลาง); noStroke (); เติม (# 1BF2D4); rect (กว้าง / 2-width / 4, สูง / 1.3, กว้าง / 4, สูง / 12); เติม (0); ข้อความ ("รีเซ็ต", กว้าง / 2-width / 4, สูง / 1.3); // ปุ่ม 1 if (สีแดง == จริง) {เติม (# 080F89); rect (กว้าง / 2 + กว้าง / 4, สูง / 1.3, กว้าง / 4, สูง / 12); เติม (255,0,0); ข้อความ ("RED", width / 2 + width / 4, height / 1.3);} // button 2 if (red == false) {fill (# 080F89); rect (กว้าง / 2 + กว้าง / 4, สูง / 1.3, กว้าง / 4, สูง / 12); เติม (255); ข้อความ ("WHITE", width / 2 + width / 4, height / 1.3);} // button 2 } void read_buttons () { if (mousePressed && click_flag == true) { color_val = get (mouseX, mouseY); click_flag = false; ถ้า (color_val == - 14945580) { byte data = {0}; bt.broadcast (ข้อมูล); println ("RESET"); load_leds (); // โหลด led ทั้งหมดในตำแหน่งและสี } if (color_val == - 16248951) { byte data = {100}; bt.broadcast (ข้อมูล); ถ้า (แดง == จริง) แดง = เท็จ; อื่นถ้า (red == false) red = true; println ("สลับกัน"); } color_val = 0; } }
การเขียนโปรแกรม Arduino ของคุณ:
โปรแกรม Arduino ที่สมบูรณ์สำหรับการนี้บลูทู ธ ควบคุมโครงการคณะไร้สายจะได้รับที่ด้านล่างของหน้าจอนี้; คุณสามารถใช้งานได้โดยตรงและอัปโหลดบนบอร์ดของคุณ บรรทัดสำคัญในโปรแกรมมีคำอธิบายด้านล่าง
โมดูลบลูทู ธ เชื่อมต่อกับขา 10 และ 11ดังนั้นเราต้องใช้ซอฟแวร์แบบอนุกรมเพื่อเปิดใช้งานการสื่อสารแบบอนุกรมบนหมุดเหล่านี้และจากนั้นเราสามารถรับฟังข้อมูลจากพินเหล่านี้ เราได้รับข้อมูลที่ได้รับจากโมดูลบลูทู ธ และบันทึกไว้ในตัวแปรที่เรียกว่าเข้ามา หากค่าของขาเข้าคือ“ 0” เราจะปิด LED ทั้งหมดโดยใช้รหัสด้านล่าง
ถ้า (BT.available ()) { ขาเข้า = BT.read (); Serial.println (ขาเข้า); ถ้า (ขาเข้า == 0) m.clear (); // ล้างการแสดงผล
การใช้ค่าของขาเข้าเราต้องพิจารณาว่า LED ใดที่ผู้ใช้กดบนโทรศัพท์มือถือและสภาพอากาศเพื่อเปิดหรือปิด LED นั้น ดังนั้นเราจึงตรวจสอบว่าค่าเท่ากับ 100 หรือไม่ถ้าค่าเท่ากับ 10 แสดงว่าผู้ใช้ขอให้สลับสีของ LED ดังนั้นเราจึงสลับตัวแปรสีแดงเพื่อให้ทราบว่าควรเปิดหรือปิด LED
else if (ขาเข้า == 100) // ตรวจสอบว่าเราควรเปิดหรือปิด LED หรือไม่ { if (red == true) red = false; อื่นถ้า (red == false) red = true; Serial.print ("RED:"); Serial.println (สีแดง); }
สุดท้ายถ้าค่ามากกว่า 65 หมายความว่าผู้ใช้กด LEDจากตัวเลข 1 ถึง 64 เราต้องพิจารณาว่า LED ใดที่ผู้ใช้กด ในการสลับ LED นั้นเราจะต้องใช้ค่า Row และ Column ของ LED นั้นซึ่งคำนวณและจัดเก็บไว้ในตัวแปร X และ Y ตามลำดับและแสดงไว้ในโค้ดด้านล่าง ในที่สุดขึ้นอยู่กับค่าของตัวแปรสีแดงเราจะเปิดหรือปิด LED ตามคำขอของผู้ใช้
อื่นถ้า (ขาเข้า <= 64) {// คำนวณตำแหน่งที่จะเปิดro ปิด LED toggle = true; Y = ขาเข้า / 8; X = ขาเข้า - (Y * 8); ถ้า (ขาเข้า% 8 == 0) {X = 8; Y - = 1;} Serial.println (X - 1); Serial.println (Y); ถ้า (สีแดง == จริง) m.setDot ((X - 1), (Y), จริง); // LED ON else if (red == false) m.setDot ((X - 1), (Y), false); // LED OFF }
การออกแบบวงจรและ PCB โดยใช้ EasyEDA:
ในการออกแบบ จอแสดงผล Bluetooth Controlled Matrixนี้เราได้เลือกเครื่องมือ EDA ออนไลน์ที่เรียกว่า EasyEDA ก่อนหน้านี้ฉันเคยใช้ EasyEDA หลายครั้งและพบว่ามันสะดวกมากที่จะใช้เนื่องจากมีการรวบรวมรอยเท้าที่ดีและเป็นโอเพ่นซอร์ส หลังจากออกแบบ PCB แล้วเราสามารถสั่งซื้อตัวอย่าง PCB โดยบริการผลิต PCB ต้นทุนต่ำ นอกจากนี้ยังมีบริการจัดหาส่วนประกอบที่มีส่วนประกอบอิเล็กทรอนิกส์จำนวนมากและผู้ใช้สามารถสั่งซื้อส่วนประกอบที่ต้องการพร้อมกับคำสั่งซื้อ PCB
ในขณะที่ออกแบบวงจรและ PCB ของคุณคุณยังสามารถทำให้การออกแบบวงจรและ PCB ของคุณเป็นแบบสาธารณะเพื่อให้ผู้ใช้รายอื่นสามารถคัดลอกหรือแก้ไขได้และสามารถใช้ประโยชน์จากงานของคุณได้เรายังทำให้วงจรและเลย์เอาต์ PCB ทั้งหมดของเราเป็นแบบสาธารณะสำหรับวงจรนี้ด้วยตรวจสอบ ลิงค์ด้านล่าง:
easyeda.com/circuitdigest/8x8-led-matrix-display-control-with-bluetooth
คุณสามารถ ดูเลเยอร์ใดก็ได้ (บน, ล่าง, ท็อปซิล, พื้นและอื่น ๆ) ของ PCB โดยการเลือกเลเยอร์จากหน้าต่าง 'เลเยอร์'
คุณยังสามารถดู PCB วิธีการดูแลการประดิษฐ์โดยใช้ ปุ่มมุมมองภาพถ่ายใน EasyEDA:
การคำนวณและการสั่งซื้อตัวอย่างออนไลน์:
หลังจากออกแบบ PCB เมทริกซ์ควบคุมด้วยบลูทู ธ เสร็จแล้วคุณสามารถสั่งซื้อ PCB ผ่าน JLCPCB.com ในการสั่งซื้อ PCB จาก JLCPCB คุณต้องมีไฟล์ Gerber หากต้องการดาวน์โหลดไฟล์ Gerber ของ PCB ของคุณเพียงคลิกปุ่ม Fabrication Output ในหน้าตัวแก้ไข EasyEDA จากนั้นดาวน์โหลดจากหน้าคำสั่งซื้อ EasyEDA PCB
ไปที่ JLCPCB.com แล้วคลิกที่ Quote Now หรือปุ่มจากนั้นคุณสามารถเลือกจำนวน PCB ที่คุณต้องการสั่งซื้อจำนวนชั้นทองแดงที่คุณต้องการความหนาของ PCB น้ำหนักทองแดงและแม้แต่สี PCB เช่นภาพรวม แสดงด้านล่าง:
หลังจากคุณเลือกตัวเลือกทั้งหมดแล้วให้คลิก“ บันทึกลงในรถเข็น” จากนั้นคุณจะเข้าสู่หน้าที่คุณสามารถอัปโหลดไฟล์ Gerber ของคุณซึ่งเราได้ดาวน์โหลดจาก EasyEDA อัปโหลดไฟล์ Gerber ของคุณแล้วคลิก“ บันทึกลงในรถเข็น” และในที่สุดคลิกที่ชำระเงินอย่างปลอดภัยเพื่อดำเนินการสั่งซื้อให้เสร็จสมบูรณ์จากนั้นคุณจะได้รับ PCBs ของคุณในอีกไม่กี่วัน พวกเขากำลังผลิต PCB ในอัตราที่ต่ำมากซึ่งอยู่ที่ 2 เหรียญ เวลาในการสร้างของพวกเขายังน้อยกว่ามากซึ่ง 48 ชั่วโมงด้วยการจัดส่ง DHL 3-5 วันโดยทั่วไปคุณจะได้รับ PCBs ภายในหนึ่งสัปดาห์หลังจากสั่งซื้อ
หลังจากไม่กี่วันของการสั่งซื้อ PCB ฉันได้รับตัวอย่าง PCB ในบรรจุภัณฑ์ที่ดีดังที่แสดงในภาพด้านล่าง
และหลังจากได้ชิ้นส่วนเหล่านี้ฉันได้บัดกรีส่วนประกอบที่จำเป็นทั้งหมดบน PCB
ใน PCB ของฉันฉันทำผิดพลาดโดยการเลือกรอยเท้าที่ไม่ถูกต้องสำหรับโมดูลการแสดงผล 8 * 8 ดังนั้นฉันจึงต้องใช้บอร์ด Perf เพื่อติดตั้งจอแสดงผลดังที่แสดงในภาพ แต่ตอนนี้รอยเท้าคือการอัปเดตใน PCB และคุณสามารถสั่งซื้อ PCB ที่แก้ไขแล้วและติดตั้งโมดูลการแสดงผลได้อย่างง่ายดาย
การทำงานของจอแสดงผล Bluetooth Sign Board:
เมื่อคุณพร้อมกับฮาร์ดแวร์ไม่ว่าจะผ่านการรับ PCB หรือการเชื่อมต่อบนเขียงหั่นขนมให้ใช้โปรแกรม Arduino ที่ระบุไว้ท้ายหน้าและอัปโหลดไปยังบอร์ด Arduino ของคุณ ไฟล์ APK โปรแกรมหุ่นยนต์นอกจากนี้ยังมีข้างต้นใช้และติดตั้งโปรแกรมประยุกต์บนอุปกรณ์ Android ที่คุณต้องการ
เปิดเครื่องฮาร์ดแวร์และค้นหาชื่ออุปกรณ์ HC-05 บนโทรศัพท์ของคุณเพื่อจับคู่กับอุปกรณ์ รหัสผ่านจะเป็น 1234 โดยค่าเริ่มต้น หลังจากนั้นเปิดแอพพลิเคชั่นที่เราเพิ่งติดตั้ง แอพพลิเคชั่นควรแสดงข้อความ“ เชื่อมต่อกับ HC-05 ” ที่ด้านบนของหน้าจอจากนั้นคุณจะสามารถแตะ LED บนหน้าจอและสังเกตว่าไฟ LED ดวงเดียวกันกำลังเปิดอยู่ในบอร์ดด้วย
คุณยังสามารถปิด LED ทั้งหมดได้โดยกดปุ่มรีเซ็ตและตัดสินใจที่จะเปิดหรือปิด LED เฉพาะโดยการกดปุ่มสลับ โดยค่าเริ่มต้น LED ที่คุณกดจะเปิดขึ้น การทำงานที่สมบูรณ์แบบของโครงการที่สามารถพบได้ในวิดีโอด้านล่างหากคุณมีปัญหาในการทำให้ใช้งานได้โปรดใช้ช่องแสดงความคิดเห็นด้านล่างหรือเขียนในฟอรัมของเราเพื่อขอความช่วยเหลือด้านเทคนิคเพิ่มเติม หวังว่าคุณจะเข้าใจบทช่วยสอนและสนุกกับการสร้างมัน