- Materiale necesare:
- Diagrama circuitului:
- Crearea aplicației Android utilizând Procesarea:
- Înțelegerea codului de procesare:
- Programarea Arduino:
- Proiectarea circuitelor și PCB-urilor folosind EasyEDA:
- Calcularea și comandarea eșantioanelor online:
- Funcționarea afișajului plăcii Bluetooth Sign:
Fie că este vorba de autostrăzile lungi întinse sau de ușa din față a medicilor, avem panouri afișate peste tot pentru a ne oferi informații. Dar aceste panouri de afișare sunt adesea plictisitoare și nu pot fi configurate din când în când după interesul nostru. Deci, în acest proiect vom construi o placă de semn controlată prin Bluetooth utilizând un afișaj Matrix 8 * 8. O caracteristică unică a acestui proiect este aplicația sa Android, care permite utilizatorului să controleze toate cele 64 de LED-uri individual de pe telefonul mobil. Acest lucru permite utilizatorului să creeze cu ușurință modele personalizate și să îl afișeze pe afișajul LED, sună interesant nu? !! Deci sa începem…
Materiale necesare:
- Arduino Pro mini
- MAX7219
- Modul Bluetooth HC-05
- 8 * 8 LED Matrix Display
- Rezistor de 20k
- DC Barrel Jack
Diagrama circuitului:
Diagrama circuitului această placă LED controlată prin Bluetooth construită folosind aplicația EasyEDA. Vom folosi aceleași scheme pentru a dezvolta un PCB din acesta și pentru a-l fabrica folosind EasyEDA.
Circuitul este destul de simplu. Întregul proiect este alimentat de un adaptor de 12V, care este dat direct pinului Raw al plăcii Arduino. Această tensiune brută este apoi reglată la + 5V care este furnizată modulului Bluetooth și MAX7219 IC. Pinii Tx și Rx ai modulului Bluetooth sunt conectați la D11 și D10 din Arduino pentru a permite conexiunea serială.
Pinii digitali D5 până la D7 sunt conectați la MAX7219 IC pentru a trimite și primi date prin comunicare SPI. Știftul ISET al MAX7219 este tras în sus printr-un rezistor de 20 k.
Pentru acest proiect, am fabricat un PCB, puteți obține fișierul de proiectare al PCB-ului și îl puteți utiliza sau construi circuitul pe o placă de calcul. Cu toate acestea, datorită complexității sale, este recomandat să cumpărați un modul de afișare 8x8 sau să utilizați PCB
Matricea 8x8 este un modul de afișare foarte util și poate fi utilizat în multe proiecte interesante:
- Controlarea matricei LED 8x8 cu Raspberry Pi
- Afișare text defilare pe matrice LED 8x8 folosind Arduino
- 8x8 LED Matrix folosind Arduino
- 8x8 LED Matrix Interfacing cu microcontroler AVR
Crearea aplicației Android utilizând Procesarea:
Înainte de a începe programarea Arduino-ului nostru, ar trebui să știm ce tip de date vom primi de pe telefonul mobil pentru a răspunde la acesta. Deci, să aruncăm o privire asupra modului în care este creată aplicația Android și a modului în care o puteți folosi pe smartphone-ul dvs. pentru a controla matricea LED 8x8.
Aplicația Android pentru acest proiect a fost creată folosind software-ul Processing. Este o aplicație de dezvoltare Open-Source și poate fi descărcată și folosită cu ușurință pentru dezvoltarea de proiecte interesante folosind Arduino sau alte microcontrolere, deoarece poate dezvolta aplicații Android și aplicații de sistem. Am făcut deja câteva proiecte folosind Procesare și le puteți verifica dând clic pe linkurile de mai jos.
- DIY FM Radio folosind procesarea
- Controlul realității virtuale / gesturilor folosind Arduino
- Cameră de chat privată folosind Arduino.
- Sistem de radar Arduino folosind APP de procesare și senzor cu ultrasunete
- Detectarea și urmărirea feței în timp real folosind Arduino
- Vitezometru DIY folosind Arduino și Procesare
- Joc de Ping Pong folosind accelerometrul Arduino
- Robot biped folosind Arduino
- Camera de imagini termice DIY Arduino
Revenind la subiect, este imposibil pentru mine să explic codul complet al aplicației Android, astfel încât va trebui să învățați singuri procesarea și apoi să vă uitați la cod pentru a înțelege cum funcționează. Prin urmare, persoanele care sunt dispuse să treacă peste procesul de învățare Prelucrare pot descărca aplicația Android de pe linkul de mai jos
- Descărcați aplicația Android
Mai jos este interfața aplicației noastre Android:
Fișierul APK poate fi instalat direct pe orice aplicație Android și lansat ca orice altă aplicație. Dar asigurați-vă că dispozitivul dvs. Bluetooth HC-05 este denumit „HC-05”, deoarece numai atunci acesta va funcționa.
Înțelegerea codului de procesare:
Persoanele care sunt interesate să știe ce se întâmplă în spatele ecranului pot citi mai departe, altele pot sări la titlul următor. Practic, aplicația Android se conectează la un dispozitiv Bluetooth numit „HC-05” în timpul pornirii și afișează un set de 64 de LED-uri sub formă de cercuri. Apoi, când utilizatorul apasă cercul, cercul devine roșu și numărul cercului este trimis către Arduino prin Bluetooth, la primirea numărului cercului, Arduino aprinde LED-ul. Să analizăm liniile importante ale programului de procesare pentru a înțelege mai bine. Codul complet al aplicației Android poate fi descărcat de pe linkul de mai jos.
- Cod de procesare pentru aplicația Android
Folosim clase și obiecte pentru a afișa 64 de LED-uri, astfel încât să le putem adresa cu ușurință fiecăruia. După cum puteți vedea în codul de mai jos, folosim o buclă for pentru a itera de la 1 la 64 folosind o matrice. Acesta a fost fiecare LED va avea propria sa valoare de poziție X, poziție Y și culoare și le putem schimba cu ușurință.
// dipslay toate ledurile pentru (int i = 1; i <= 64; i ++) led_array.display (); // Toate ledurile au afișat Led de clasă { float X_Pos; plutitor Y_Pos; culoare culoare; // Led CONSTRUTOR (float tempx, float tempy, color tempc) { X_Pos = tempx; Y_Pos = încurajator; culoare = tempc; } void display () { umplere (culoare); elipsă (X_Pos, Y_Pos, led_dia, led_dia); } }
LED-urile sunt încărcate pe ecran în aceeași ordine cu cea a afișajului. Fiecare LED este separat de o distanță egală cu diametrul LED-ului, astfel putem distinge cu ușurință ce LED este selectat în prezent de utilizator. Așa cum se arată în programul de mai jos, creăm o matrice în care fiecare element deține informațiile despre poziția X, Y și culoarea LED-ului.
void load_leds () { led_array = led nou; int a = 1; for (int j = 0; j <= 7; j ++) { float y = înălțime / 6 + j * (led_dia * 1.5); for (int i = 0; i <= 7; i ++) { float x = (width / 6) + i * (led_dia * 1.5); // umple (255); // elipsă (x, y, led_dia, led_dia); led_array = Led nou (x, y, culoare (255,255,255)); a ++; } } }
Pasul principal al programului este să verificăm dacă utilizatorul a apăsat vreun LED și dacă da, trebuie să schimbăm culoarea LED-ului și să trimitem numărul LED-ului prin Bluetooth. Deoarece acum ne putem adresa ușor locației și culorii fiecărui LED, putem face acest lucru doar comparând valorile X, Y ale locului în care a apăsat utilizatorul cu valoarea X, Y a LED-urilor. Dacă valorile se îmbină între ele, atunci schimbăm starea LED-ului și, de asemenea, trimitem numărul prin Bluetooth așa cum se arată mai jos.
// verificați dacă mouse-ul peste led // Dacă da trimiteți numărul led-ului pentru (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 = new Led (led_array.X_Pos, led_array. Y_Pos, led_color); octet date = {octet (i)}; bt.difuzare (date); } }
În afară de aceasta, programul poate, de asemenea, să resetați LED-ul complet oprindu-le pe toate și, de asemenea, puteți face ca un LED să devină roșu (ON) sau alb (OFF), deci avem și un buton de comutare pentru asta. Butonul de comutare este afișat și așteaptă introducerea. Dacă este apăsat, se va efectua acțiunea respectivă. Codul pentru a face același lucru este prezentat mai jos ca funcție care este numită în interiorul buclei de extragere.
void load_buttons () { rectMode (CENTER); textAlign (CENTER, CENTER); noStroke (); umplere (# 1BF2D4); rect (lățime / 2-lățime / 4, înălțime / 1,3, lățime / 4, înălțime / 12); umplere (0); text („Resetare”, lățime / 2-lățime / 4, înălțime / 1,3); // butonul 1 if (roșu == adevărat) {fill (# 080F89); rect (lățime / 2 + lățime / 4, înălțime / 1,3, lățime / 4, înălțime / 12); umplere (255,0,0); text („ROȘU”, lățime / 2 + lățime / 4, înălțime / 1.3);} // butonul 2 dacă (roșu == fals) {fill (# 080F89); rect (lățime / 2 + lățime / 4, înălțime / 1,3, lățime / 4, înălțime / 12); umplere (255); text („ALB”, lățime / 2 + lățime / 4, înălțime / 1.3);} // butonul 2 } void read_buttons () { if (mousePressed && click_flag == true) { color_val = get (mouseX, mouseY); click_flag = false; if (color_val == - 14945580) { octet date = {0}; bt.difuzare (date); println ("RESET"); load_leds (); // încărcați toate ledurile în poziție și culoare } if (color_val == - 16248951) { octet date = {100}; bt.difuzare (date); if (roșu == adevărat) roșu = fals; else if (red == false) red = true; println ("TOGGLE"); } culoare_val = 0; } }
Programarea Arduino:
Programul complet Arduino pentru acest proiect de placă fără fir controlat prin Bluetooth este dat în partea de jos a acestui ecran; îl puteți folosi direct și încărca pe tablă. Liniile importante din program sunt explicate mai jos.
Modulul Bluetooth este conectat la pinul 10 și 11, prin urmare, trebuie să folosim serial software - ul pentru a permite comunicarea de serie de pe aceste pini și apoi putem asculta datele din aceste pini. Primim datele primite de la modulul Bluetooth și le salvăm într-o variabilă numită intrare . Dacă valoarea de intrare este „0” vom opri toate LED-urile folosind codul de mai jos
if (BT.available ()) { incoming = BT.read (); Serial.println (de intrare); if (incoming == 0) m.clear (); // Șterge afișajul
Folosind valorile de intrare trebuie să stabilim ce LED a apăsat utilizatorul pe telefonul mobil și vremea pentru a porni sau opri LED-ul respectiv. Deci, verificăm dacă valoarea este egală cu 100. Dacă valoarea este 10, atunci înseamnă că utilizatorul a cerut să comute culoarea LED-ului. Deci comutăm variabila roșie pentru a ști dacă LED-ul ar trebui să fie pornit sau oprit.
else if (incoming == 100) // Verifică dacă ar trebui să aprindem sau să stingem LED-ul { if (roșu == adevărat) roșu = fals; else if (red == false) red = true; Serial.print ("RED:"); Serial.println (roșu); }
În cele din urmă, dacă valoarea este mai mare de 65, înseamnă că utilizatorul a apăsat pe un LED. Pe baza numărului de la 1 la 64 trebuie să stabilim ce LED a apăsat utilizatorul. Pentru a comuta acel LED, vom avea nevoie de valoarea Row și Coloană a LED-ului respectiv, care este calculată și stocată în variabilele X și respectiv Y și afișate în codul de mai jos. În cele din urmă, pe baza valorii roșu variabil, fie aprindem, fie oprim LED-ul conform cererii utilizatorului
else if (incoming <= 64) {// Se calculează unde ON ro OFF LED comutare = true; Y = intrare / 8; X = intrare - (Y * 8); if (intrare% 8 == 0) {X = 8; Y - = 1;} Serial.println (X - 1); Serial.println (Y); if (roșu == adevărat) m.setDot ((X - 1), (Y), adevărat); // LED ON else if (roșu == false) m.setDot ((X - 1), (Y), false); // LED OPRIT }
Proiectarea circuitelor și PCB-urilor folosind EasyEDA:
Pentru a proiecta acest afișaj cu matrice controlată Bluetooth, am ales instrumentul EDA online numit EasyEDA. Am folosit anterior EasyEDA de multe ori și mi s-a părut foarte convenabil de utilizat, deoarece are o colecție bună de amprente și este open-source. După proiectarea PCB-ului, putem comanda probele de PCB după serviciile lor de fabricare a PCB-urilor cu costuri reduse. De asemenea, oferă servicii de aprovizionare a componentelor, unde au un stoc mare de componente electronice, iar utilizatorii pot comanda componentele necesare împreună cu comanda PCB.
În timp ce vă proiectați circuitele și PCB-urile, puteți, de asemenea, să vă faceți publice circuitele și PCB-urile, astfel încât ceilalți utilizatori să le poată copia sau edita și să poată profita de munca dvs. linkul de mai jos:
easyeda.com/circuitdigest/8x8-led-matrix-display-control-with-bluetooth
Puteți vizualiza orice strat (de sus, de jos, de top, de fund etc.) al PCB-ului selectând stratul din fereastra „Straturi”.
De asemenea, puteți vizualiza PCB-ul, cum va arăta după fabricare folosind butonul Photo View din EasyEDA:
Calcularea și comandarea eșantioanelor online:
După finalizarea proiectării acestui PCB controlat cu matrice Bluetooth, puteți comanda PCB prin JLCPCB.com. Pentru a comanda PCB-ul de la JLCPCB, aveți nevoie de Gerber File. Pentru a descărca fișiere Gerber ale PCB-ului dvs., faceți clic pe butonul Fabrication Output din pagina editorului EasyEDA, apoi descărcați-l din pagina de comandă EasyEDA PCB.
Acum accesați JLCPCB.com și faceți clic pe Citat acum sau pe buton, apoi puteți selecta numărul de PCB-uri pe care doriți să le comandați, de câte straturi de cupru aveți nevoie, grosimea PCB-ului, greutatea cuprului și chiar culoarea PCB-ului, cum ar fi instantaneul prezentat mai jos:
După ce ați selectat toate opțiunile, faceți clic pe „Salvați în coș” și apoi veți fi direcționat la pagina de unde puteți încărca fișierul Gerber pe care l-am descărcat din EasyEDA. Încărcați fișierul Gerber și faceți clic pe „Salvați în coș”. Și, în cele din urmă, faceți clic pe Checkout Securely pentru a finaliza comanda, apoi veți primi PCB-urile câteva zile mai târziu. Ei fabrică PCB la o rată foarte mică, care este de 2 USD. Timpul lor de construcție este, de asemenea, foarte redus, adică 48 de ore cu livrare DHL de 3-5 zile, practic veți primi PCB-urile dvs. într-o săptămână de la comandă.
După câteva zile de a comanda PCB-uri, am obținut probele de PCB într-un ambalaj frumos, așa cum se arată în imaginile de mai jos.
Și după ce am primit aceste piese, am lipit toate componentele necesare peste PCB.
În PCB-ul meu, am făcut o greșeală directă prin selectarea amprentei greșite pentru modulul de afișare 8 * 8, prin urmare a trebuit să folosesc o placă Perf pentru a monta afișajul așa cum se arată în imagine. Dar acum amprenta este actualizări în PCB și puteți comanda PCB corectat și puteți monta modulul de afișare cu ușurință.
Funcționarea afișajului plăcii Bluetooth Sign:
Odată ce sunteți gata cu hardware-ul, fie prin obținerea PCB-ului, fie prin conectarea pe panou, utilizați programul Arduino dat la sfârșitul paginii și încărcați-l pe placa Arduino. Fișierul APK al aplicației Android este de asemenea furnizat mai sus, utilizați-l și instalați aplicația pe dispozitivul dvs. Android preferat.
Alimentați hardware-ul și căutați numele dispozitivului HC-05 pe telefonul dvs. pentru a-l asocia. Cheia de trecere va fi implicit 1234. După aceea, deschideți aplicația pe care tocmai am instalat-o. Aplicația ar trebui să afișeze „ conectat la HC-05 ” în partea de sus a ecranului, apoi veți putea atinge LED-ul de pe ecran și veți observa că același LED este pornit și în placă.
Puteți, de asemenea, să opriți toate LED-urile apăsând butonul Reset și să decideți să porniți sau să dezactivați un anumit LED apăsând pe butonul Toggle. În mod implicit, LED-ul pe care îl apăsați vreodată va fi pornit. Funcționarea completă a proiectului poate fi găsită în videoclipul de mai jos. Dacă aveți vreo problemă în a-l face să funcționeze, folosiți caseta de comentarii de mai jos sau scrieți pe forumurile noastre pentru mai mult ajutor tehnic. Sper că ați înțeles tutorialul și v-a plăcut să îl construiți.