แผงควบคุมสัญญาณไฟ LED ไร้สายที่มีการควบคุมด้วย Bluetooth 8x8 บน PCBวัสดุที่จำเป็น:
แผนภูมิวงจรรวม:
แผนผังวงจรบอร์ด LED ที่ควบคุมด้วย LED นี้สร้างขึ้นโดยใช้โปรแกรม EasyEDA เราจะใช้แผนงานเดียวกันในการพัฒนาPCBจากนั้นและสร้างโดยใช้ EasyEDA
|
วงจรจะสวยตรงไปข้างหน้า โครงการทั้งหมดใช้พลังงานจากอะแดปเตอร์ขนาด 12V ซึ่งได้รับโดยตรงจาก Pin Raw ของคณะกรรมการ Arduino Board แรงดันไฟฟ้านี้วัตถุดิบจะถูกควบคุมแล้วถึง + 5V ซึ่งจะถูกส่งไปยังโมดูลบลูทู ธ และ MAX7219 IC หมุด Tx และ Rx ของโมดูลบลูทู ธ เชื่อมต่อกับ D11 และ D10 ของ Arduino เพื่อเปิดใช้งานการเชื่อมต่อแบบอนุกรม
หมุดดิจิตอล D5 ถึง D7 เชื่อมต่อกับเครื่อง MAX7219 IC เพื่อส่งและรับข้อมูลผ่านการสื่อสาร SPI ขา ISET ของ MAX7219 ถูกดึงผ่านตัวต้านทาน 20k
สำหรับโครงการนี้ฉันได้ประดิษฐ์ PCBคุณจะได้รับไฟล์การออกแบบของ PCB และใช้เดียวกันหรือสร้างวงจรบน breadboardอย่างไรก็ตามเนื่องจากความซับซ้อนของผลิตภัณฑ์จึงขอแนะนำให้ซื้อโมดูลแสดงผล 8x8 หรือใช้ PCB
8x8 เมทริกซ์เป็นโมดูลการแสดงผลที่มีประโยชน์มากและสามารถใช้ในโครงการที่เย็นมาก
- การควบคุม LED Matrix 8x8 พร้อม Raspberry Pi
- แสดงข้อความแบบเลื่อนลงบนเมทริกซ์ LED 8x8 โดยใช้ Arduino
- 8x8 LED Matrix ใช้ Arduino
- เมทริกซ์ LED 8x8 เชื่อมต่อกับไมโครคอนโทรลเลอร์ AVR
การสร้างแอปพลิเคชัน Android โดยใช้การประมวลผล:
ก่อนที่เราจะเริ่มต้นเขียนโปรแกรม Arduino เราควรทราบว่าข้อมูลประเภทใดที่เราจะได้รับจากโทรศัพท์มือถือเพื่อตอบสนองต่อข้อมูลนั้น ดังนั้นลองมาดูที่วิธีการประยุกต์ใช้ Android จะถูกสร้างขึ้นและวิธีการที่คุณสามารถใช้มันด้วยตัวคุณมาร์ทโฟนที่จะควบคุม 8x8 เมทริกซ์
แอปพลิเคชัน Android สำหรับโครงการนี้สร้างโดยใช้ ซอฟต์แวร์การประมวลผล เป็นโปรแกรมสำหรับพัฒนาโอเพ่นซอร์สและสามารถดาวน์โหลดได้อย่างง่ายดายและนำไปใช้ในการพัฒนาโครงการที่น่าสนใจโดยใช้ Arduino หรือไมโครคอนโทรลเลอร์อื่น ๆ เนื่องจากสามารถพัฒนาแอพพลิเคชันแอพพลิเคชันและระบบแอพพลิเคชันของหุ่นยนต์ได้ เราได้ดำเนินการบางโครงการโดยใช้การประมวลผลแล้วและคุณสามารถตรวจสอบได้โดยคลิกที่ลิงก์ด้านล่าง
- DIY วิทยุ FM ใช้การประมวลผล
- การควบคุมความจริง / ท่าทางเสมือนจริงโดยใช้ Arduino
- ห้องแชทส่วนตัวที่ใช้ Arduino
- Arduino Radar System โดยใช้ Appliance Appliance และ Ultrasonic Sensor
- การตรวจหาใบหน้าแบบเรียลไทม์และการติดตามโดยใช้ Arduino
- DIY Speedometer ใช้ Arduino และการประมวลผล
- เกม Ping Pong ใช้เครื่องวัดความเร็ว Arduino Accelerometer
- หุ่น Biped ใช้ Arduino
- กล้องถ่ายภาพความร้อน DIY Arduino
การกลับไปที่หัวข้อเป็นไปไม่ได้เลยที่ฉันจะอธิบายรหัสที่สมบูรณ์ของแอปพลิเคชันแอนดรอยด์ดังนั้นคุณจะต้องเรียนรู้การประมวลผลด้วยตัวเองและดูโค้ดเพื่อทำความเข้าใจวิธีการทำงาน ดังนั้นสำหรับผู้ที่ยินดีที่จะข้ามขั้นตอนการเรียนรู้การประมวลผลสามารถดาวน์โหลดโปรแกรมหุ่นยนต์จากด้านล่างลิงก์
ด้านล่างเป็นส่วนติดต่อของแอปพลิเคชันแอนดรอยด์ของเรา :
ไฟล์ APK สามารถติดตั้งได้โดยตรงจากแอพพลิเคชันแอพพลิเคชันใด ๆ และเปิดตัวเหมือนแอพพลิเคชันอื่น ๆ แต่ตรวจสอบให้แน่ใจว่าอุปกรณ์บลูทู ธ HC-05 ของคุณมีชื่อว่า "HC-05" เพราะมีเพียงเวลาทำงานเท่านั้น
การทำความเข้าใจรหัสการประมวลผล:
คนที่สนใจที่จะรู้ว่าเกิดอะไรขึ้นหลังหน้าจอสามารถอ่านต่อได้และอื่น ๆ สามารถข้ามไปที่หัวข้อถัดไปได้ โดยทั่วไปแอพพลิเคชัน Android จะเชื่อมต่อกับอุปกรณ์บลูทู ธ ที่เรียกว่า "HC-05" ระหว่างการเริ่มต้นและแสดงชุดไฟ LED จำนวน 64 ดวงในรูปแบบของแวดวง จากนั้นเมื่อผู้ใช้กดวงกลมวงกลมจะเปลี่ยนเป็นสีแดงและหมายเลขวงกลมจะถูกส่งไปยัง Arduino ผ่าน Bluetooth เมื่อได้รับหมายเลขวงกลม Arduino จะเปิดไฟ LED ลองมองเข้าไปในเส้นที่สำคัญของโปรแกรมการประมวลผลที่จะเข้าใจได้ดียิ่งขึ้น คุณสามารถดาวน์โหลดโค้ดทั้งหมดของแอนดรอยด์ได้จากลิงค์ด้านล่าง
เราใช้คลาสและอ็อบเจ็กต์เพื่อแสดง LED 64 ดวงเพื่อให้เราสามารถระบุที่อยู่ได้อย่างง่ายดาย ดังที่คุณเห็นในโค้ดด้านล่างเราจะใช้ลูปสำหรับการวนซ้ำจาก 1 ถึง 64 โดยใช้อาร์เรย์ นี่คือ LED แต่ละตัวจะมีค่าตำแหน่ง X ตำแหน่ง Y และสีและเราสามารถเปลี่ยนได้ง่าย
/ / dipslay leds ทั้งหมดสำหรับ (int i = 1; i <= 64; i ++) led_array [i] .display (); // ไฟ LED แสดงทั้งหมด ชั้นนำ { float X_Pos; ลอย Y_Pos; สีสี; // CONSTRUTOR Led (tempx ลอย, ลอย tempy, tempc สี) { X_Pos = tempx; Y_Pos = tempy; color = tempc; } void display () { กรอกข้อมูล (สี); วงรี (X_Pos, Y_Pos, led_dia, led_dia); } }
LED จะถูกโหลดบนหน้าจอตามลำดับที่เท่ากันของจอแสดงผล LED แต่ละตัวจะถูกคั่นด้วยระยะทางเท่ากับเส้นผ่านศูนย์กลางของหลอด LED ดังนั้นเราจึงสามารถแยกความแตกต่างระหว่าง LED ที่ผู้ใช้เลือกไว้ ดังแสดงในโปรแกรมด้านล่างเราจะสร้างอาร์เรย์ซึ่งแต่ละองค์ประกอบจะเก็บข้อมูลตำแหน่ง X, Y และสีของ LED
โมฆะ load_leds () { led_array = ใหม่ Led [65]; 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 = (กว้าง / 6) + i * (led_dia * 1.5); // กรอก (255); / / วงรี (x, y, led_dia, led_dia); led_array [a] = new Led (x, y, สี (255,255,255)); A ++; } } }
ขั้นตอนหลักในโครงการคือการตรวจสอบว่าผู้ใช้มีการกด LED ใด ๆ และถ้าใช่เรามีการเปลี่ยนสีของไฟ LED และส่งจำนวน LED ผ่านบลูทู ธ ตั้งแต่ตอนนี้เราสามารถระบุตำแหน่งและสีของ LED แต่ละอันได้อย่างง่ายดายโดยการเปรียบเทียบค่า X, Y ของตำแหน่งที่ผู้ใช้กดด้วยค่า X, Y ของ LEDs หากการควบรวมค่าเข้ากันและกันเราจะเปลี่ยนสถานะของ LED และยังส่งหมายเลขผ่านบลูทู ธ ตามที่แสดงด้านล่าง
// ตรวจสอบว่ามีการนำเมาส์ไปวางไว้หรือไม่ถ้าใช่ให้ส่งเลขนำ สำหรับ (int i = 1; i <= 64; i ++) { if ((mouseX <(led_array [i] .X_Pos + led_dia / 2)) && ( mouseX> (led_array [i] .X_Pos - led_dia / 2)) && (mouseY <(led_array [i] .Y_Pos + led_dia / 2)) && (mouseY> (led_array [i] .Y_Pos - led_dia / 2))) {led_array [i] = ใหม่ Led (led_array [i] .X_Pos, led_array [i] .Y_Pos, led_color); ไบต์ [] ข้อมูล = {ไบต์ (i)}; bt.broadcast (ข้อมูล); } }
นอกจากนี้โปรแกรมยังสามารถรีเซ็ต LED ที่สมบูรณ์โดยการปิดทั้งหมดและคุณยังสามารถทำให้ LED เปิดสีแดง (ON) หรือสีขาว (OFF) เพื่อให้เรายังมีปุ่มสลับสำหรับการที่ ปุ่มสลับปรากฏขึ้นและรอให้อินพุท หากกดการกระทำที่เกี่ยวข้องจะถูกถ่าย รหัสที่จะทำเช่นเดียวกันจะปรากฏด้านล่างเป็นฟังก์ชันที่เรียกว่าภายในวงเงินการวาด
void load_buttons () { rectMode (CENTER); TextAlign (ศูนย์); noStroke (); เติม (# 1BF2D4); ดูแลรักษา (กว้าง / 2-ความกว้าง / 4 สูง / 1.3 กว้าง / 4 สูง / 12); กรอก (0); ข้อความ ( "Reset" ความกว้าง / 2-ความกว้าง / 4 สูง / 1.3); // ปุ่ม 1 if (red == true) {กรอกข้อมูล (# 080F89); ดูแลรักษา (กว้าง / 2 + ความกว้าง / 4 สูง / 1.3 กว้าง / 4 สูง / 12); กรอก (255,0,0); ข้อความ ("RED", กว้าง / 2 + กว้าง / 4, ความสูง / 1.3);} // ปุ่ม 2 ถ้า (สีแดง == เท็จ) {fill (# 080F89); ดูแลรักษา (กว้าง / 2 + ความกว้าง / 4 สูง / 1.3 กว้าง / 4 สูง / 12); กรอก (255); ข้อความ ("WHITE", กว้าง / 2 + กว้าง / 4, ความสูง / 1.3);} // ปุ่ม 2 } void read_buttons () { if (mousePressed && click_flag == true) { color_val = get (mouseX, mouseY); click_flag = false; if (color_val == - 14945580) { byte [] data = {0}; bt.broadcast (ข้อมูล); println ( "RESET"); load_leds (); / / โหลดทั้งหมดนำในตำแหน่งและสี } ถ้า (color_val == - 16248951) { byte [] data = {100}; bt.broadcast (ข้อมูล); if (red == true) red = false; else if (red == false) red = true; println ( "สลับ"); } color_val = 0; } }
การเขียนโปรแกรม Arduino ของคุณ:
โปรแกรม Arduino ที่สมบูรณ์สำหรับการนี้โครงการคณะกรรมการควบคุมไร้สายบลูทู ธจะได้รับที่ด้านล่างของหน้าจอนี้; คุณสามารถใช้งานได้โดยตรงและอัพโหลดลงบนกระดานของคุณ บรรทัดที่สำคัญในโปรแกรมจะอธิบายด้านล่าง
โมดูลบลูทู ธ เชื่อมต่อกับขา 10 และ 11ดังนั้นเราต้องใช้ซอฟแวร์แบบอนุกรมเพื่อเปิดใช้งานการสื่อสารแบบอนุกรมบนหมุดเหล่านี้และจากนั้นเราสามารถรับฟังข้อมูลจากพินเหล่านี้ เราได้รับข้อมูลที่ได้รับจากโมดูลบลูทู ธ และบันทึกไว้ในตัวแปรที่เรียกว่าเข้ามาหากค่าของขาเข้าเป็น "0" เราจะปิดไฟ LED ทั้งหมดโดยใช้รหัสด้านล่าง
ถ้า (BT.available ()) { incoming = BT.read (); Serial.println (ขาเข้า); if (incoming == 0) m.clear (); // ล้างหน้าจอ
ใช้ค่าของขาเข้าที่เราต้องตรวจสอบว่า LED ใดที่ผู้ใช้กดบนโทรศัพท์มือถือและสภาพอากาศเพื่อเปิดหรือปิด LED นั้น ดังนั้นเราจึงตรวจสอบว่าค่าเท่ากับ 100 ถ้าค่าเป็น 10 หมายความว่าผู้ใช้ได้ขอให้สลับสีของ LED ดังนั้นเราจึงสลับสีแดงเพื่อให้ทราบว่าควรเปิดหรือปิดไฟ LED
else if (incoming == 100) // ตรวจสอบว่าเราควรจะเปิดหรือปิด LED { if (red == true) red = false; else if (red == false) red = true; Serial.print ( "RED:"); Serial.println (สีแดง); }
สุดท้ายถ้าค่ามากกว่า 65 หมายความว่าผู้ใช้กดบน LED ขึ้นอยู่กับจำนวนตั้งแต่ 1 ถึง 64 เราจะต้องตรวจสอบ LED ที่ผู้ใช้กด เพื่อสลับ LED ที่เราจะต้องมีค่าของแถวและคอลัมน์ของ LED ที่คำนวณและเก็บไว้ในตัวแปร X และ Y ตามลำดับและแสดงในรหัสด้านล่าง สุดท้ายขึ้นอยู่กับค่าของตัวแปรสีแดงที่เราทั้งเปิดหรือปิดไฟ LED ตามคำขอของผู้ใช้
อื่นถ้า (ขาเข้า <= 64) {// คำนวณที่เป็น ON RO ปิดไฟ LED สลับ = true; Y = ขาเข้า / 8; X = ขาเข้า - (Y * 8); if (incoming% 8 == 0) {X = 8; Y - = 1;} Serial.println (X - 1); Serial.println (Y); if (red == true) m.setDot ((X - 1), (Y), true); // LED ON else if (red == false) m.setDot ((X - 1), (Y), false); // LED OFF }
การออกแบบวงจรและ PCB โดยใช้ EasyEDA:
การออกแบบนี้ แสดงผลเมทริกซ์บลูทู ธ ควบคุมเราได้เลือก เครื่องมือ EDA ออนไลน์ที่เรียกว่า EasyEDA ฉันเคยใช้ EasyEDA มาแล้วหลายครั้งและพบว่าสะดวกในการใช้เนื่องจากมีรอยเท้าที่ดีและเป็นโอเพนซอร์ส หลังจากการออกแบบ PCB ที่เราสามารถสั่งซื้อตัวอย่าง PCB โดยค่าใช้จ่ายต่ำของพวกเขา ให้บริการการผลิต PCB พวกเขายังมี บริการจัดหาส่วนประกอบ ที่มีสต็อกชิ้นส่วนอิเล็กทรอนิกส์จำนวนมากและผู้ใช้สามารถสั่งซื้อชิ้นส่วนที่จำเป็นได้พร้อมกับใบสั่ง PCB
ในขณะที่ออกแบบวงจรและ PCBs ของคุณคุณยังสามารถทำวงจรและการออกแบบ PCB ให้กับสาธารณะเพื่อให้ผู้ใช้รายอื่นสามารถคัดลอกหรือแก้ไขได้และสามารถใช้ประโยชน์จากงานของคุณได้นอกจากนี้เรายังได้จัดทำวงจรและแผนผัง PCB ทั้งหมดสำหรับวงจรนี้ไว้ตรวจสอบ ลิงก์ด้านล่าง:
คุณสามารถ ดู Layer (Top, Bottom, Topsilk, Bottomsilk ฯลฯ ) ของ PCB ได้โดยเลือก Layer Layers จากหน้าต่าง Layers
นอกจากนี้คุณยังสามารถดู PCB ได้ว่าจะทำอย่างไรจึงจะดูหลังจากสร้างโดยใช้ ปุ่มPhoto Viewใน EasyEDA:
การทำงานของจอแสดงผลป้ายสัญลักษณ์ Bluetooth:
เมื่อคุณพร้อมกับฮาร์ดแวร์ทั้งผ่านการ PCB หรือการเชื่อมต่อกับ breadboard ให้ใช้โปรแกรม Arduino ที่ระบุในตอนท้ายของหน้าและอัปโหลดไปยัง Arduino Board ของคุณ ไฟล์ APK โปรแกรมหุ่นยนต์ยังเป็นที่ให้ไว้ข้างต้นใช้และติดตั้งโปรแกรมบนอุปกรณ์ Android ที่คุณต้องการ
เปิดใช้ฮาร์ดแวร์และค้นหาชื่ออุปกรณ์ HC-05 ในโทรศัพท์เพื่อจับคู่กับอุปกรณ์ รหัสผ่านจะเป็นค่าเริ่มต้น 1234 หลังจากนั้นให้เปิดแอพพลิเคชันที่เราเพิ่งติดตั้ง แอ็พพลิเคชันควรแสดง " เชื่อมต่อกับ HC-05 " ที่ด้านบนของหน้าจอจากนั้นคุณจะสามารถสัมผัส LED บนหน้าจอและสังเกตได้ว่ามีการเปิด LED เดียวกันในบอร์ดด้วยเช่นกัน
นอกจากนี้คุณยังสามารถปิดไฟ LED ทั้งหมดได้โดยการกดปุ่มรีเซ็ตและตัดสินใจเปิดหรือปิดไฟ LED โดยเฉพาะโดยการกดปุ่ม Toggle ตามค่าเริ่มต้นที่เคย LED คุณกดจะถูกเปิด การทำงานที่สมบูรณ์แบบของโครงการที่สามารถพบได้ในวิดีโอด้านล่าง หากคุณมีปัญหาใด ๆ ในการทำให้การทำงานใช้กล่องความคิดเห็นด้านล่างหรือเขียนในฟอรั่มของเราสำหรับความช่วยเหลือทางเทคนิคเพิ่มเติม หวังว่าคุณจะเข้าใจการสอนและสนุกกับการสร้างมัน
รหัส
/ *
8 * 8 จอแสดงผลป้าย LED
B.Squitet Raj
www.circuitdigest.com
library: GitHub | riyas-org / max7219 https://github.com/riyas-org/max7219
* /
8 * 8 จอแสดงผลป้าย LED
B.Squitet Raj
www.circuitdigest.com
library: GitHub | riyas-org / max7219 https://github.com/riyas-org/max7219
* /
#include <MaxMatrix.h>
#include <SoftwareSerial.h> // นำเข้าไลบรารีแบบอนุกรม
#include <SoftwareSerial.h> // นำเข้าไลบรารีแบบอนุกรม
SoftwareSerial BT (10, 11); // RX, TX
int DIN = 7; // ขา DIN ของ MAX7219 โมดูล
int CLK = 6; // ขา CLK ของโมดูล MAX7219
int CS = 5; // รหัส CS ของ MAX7219 โมดูล
int maxInUse = 1;
int CLK = 6; // ขา CLK ของโมดูล MAX7219
int CS = 5; // รหัส CS ของ MAX7219 โมดูล
int maxInUse = 1;
boolean red = true;
boolean toggle = true;
boolean toggle = true;
MaxMatrix m (DIN, CS, CLK, maxInUse);
การตั้งค่าเป็นโมฆะ ()
{
BT.begin (9600); // เริ่มการสื่อสารด้วย Bluetooth ที่ 9600 baudrate
Serial.begin (9600);
// BT.println ("บลูทู ธ ที่ทำงาน");
{
BT.begin (9600); // เริ่มการสื่อสารด้วย Bluetooth ที่ 9600 baudrate
Serial.begin (9600);
// BT.println ("บลูทู ธ ที่ทำงาน");
m.init (); // MAX7219 initialization
m.setIntensity (8); / / เริ่มต้นนำความเข้มของเมทริกซ์, 0-15
m.clear (); // ล้างหน้าจอ
m.setIntensity (8); / / เริ่มต้นนำความเข้มของเมทริกซ์, 0-15
m.clear (); // ล้างหน้าจอ
}
int เข้ามา;
int Y = 0;
int X = 0;
int Y = 0;
int X = 0;
void loop ()
{
ถ้า (BT.available ())
{
incoming = BT.read ();
Serial.println (ขาเข้า);
{
ถ้า (BT.available ())
{
incoming = BT.read ();
Serial.println (ขาเข้า);
if (incoming == 0)
m.clear (); // ล้างหน้าจอ
อื่นถ้า (เข้ามา == 100) // ตรวจสอบว่าเราควรเปิดหรือปิด LED
{
if (red == true)
red = false;
else if (red == false)
red = true;
m.clear (); // ล้างหน้าจอ
อื่นถ้า (เข้ามา == 100) // ตรวจสอบว่าเราควรเปิดหรือปิด LED
{
if (red == true)
red = false;
else if (red == false)
red = true;
Serial.print ( "RED:"); Serial.println (สีแดง);
}
else if (incoming <= 64)
{// คำนวณตำแหน่ง ON OFF OFF LED
toggle = true;
Y = ขาเข้า / 8;
X = ขาเข้า - (Y * 8);
}
else if (incoming <= 64)
{// คำนวณตำแหน่ง ON OFF OFF LED
toggle = true;
Y = ขาเข้า / 8;
X = ขาเข้า - (Y * 8);
if (incoming% 8 == 0)
{X = 8; Y - = 1;}
{X = 8; Y - = 1;}
Serial.println (X - 1);
Serial.println (Y);
if (red == true)
m.setDot ((X - 1), (Y), true); // LED ON
else if (red == false)
m.setDot ((X - 1), (Y), false); // LED OFF
}
}
Serial.println (Y);
if (red == true)
m.setDot ((X - 1), (Y), true); // LED ON
else if (red == false)
m.setDot ((X - 1), (Y), false); // LED OFF
}
}
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น