- Nødvendige materialer:
- Kredsløbsdiagram:
- Oprettelse af Android-applikationen ved hjælp af behandling:
- Forståelse af behandlingskoden:
- Programmering af din Arduino:
- Kredsløb og printkortdesign ved hjælp af EasyEDA:
- Beregning og bestilling af prøver online:
- Arbejd af display på Bluetooth-skilt
Det være sig de langstrakte motorveje eller din læge hoveddør, vi har skiltebrætter placeret overalt for at give os information. Men disse skiltebrædder er ofte kedelige og kan ikke konfigureres i henhold til vores interesse fra tid til anden. Så i dette projekt skal vi bygge et Bluetooth-styret skiltkort ved hjælp af en 8 * 8 Matrix-skærm. Et unikt træk ved dette projekt er dets Android-applikation, der giver brugeren mulighed for at styre alle de 64 lysdioder individuelt fra mobiltelefonen. Dette gør det muligt for brugeren at oprette brugerdefinerede designs med lethed og vise det på LED-skærmen, lyder interessant, ikke? !! Så lad os komme i gang…
Nødvendige materialer:
- Arduino Pro mini
- MAX7219
- HC-05 Bluetooth-modul
- 8 * 8 LED Matrix-skærm
- 20k modstand
- DC Barrel Jack
Kredsløbsdiagram:
Kredsløbsdiagrammet dette Bluetooth-styrede LED-kort bygget ved hjælp af EasyEDA-applikationen. Vi bruger de samme skemaer til at udvikle et printkort fra det og fremstille det ved hjælp af EasyEDA.
Kredsløbet er ret ligetil. Hele projektet drives af en 12V adapter, der gives direkte til Raw pin fra Arduino Board. Denne rå spænding reguleres derefter til + 5V, som leveres til Bluetooth-modulet og MAX7219 IC. Tx- og Rx-stifterne på Bluetooth-modulet er tilsluttet D11 og D10 på Arduino for at muliggøre seriel forbindelse.
De digitale stifter D5 til D7 er forbundet til MAX7219 IC for at sende og modtage data via SPI-kommunikation. ISET-stiften på MAX7219 trækkes højt gennem en 20 k modstand.
Til dette projekt har jeg fabrikeret et printkort, du kan hente designfilen til printkortet og bruge det samme eller bygge kredsløbet på et brødbræt. På grund af dets kompleksitet anbefales det dog enten at købe et 8x8 skærmmodul eller bruge printkortet
8x8 matrix er meget nyttigt displaymodul og kan bruges i mange seje projekter:
- Styring af 8x8 LED-matrix med Raspberry Pi
- Rulning af tekstvisning på 8x8 LED-matrix ved hjælp af Arduino
- 8x8 LED Matrix ved hjælp af Arduino
- 8x8 LED Matrix-grænseflade med AVR Microcontroller
Oprettelse af Android-applikationen ved hjælp af behandling:
Før vi kan begynde at programmere vores Arduino, skal vi vide, hvilken type data vi modtager fra mobiltelefonen for at svare tilbage på den. Så lad os se på, hvordan Android-applikationen oprettes, og hvordan du kan bruge den på din smartphone til at styre 8x8 LED-matrixen.
Android-applikationen til dette projekt blev oprettet ved hjælp af Processing-softwaren. Det er en Open Source-udviklingsapplikation og kan let downloades og bruges til at udvikle interessante projekter ved hjælp af Arduino eller andre mikrokontrollere, da den kan udvikle Android-applikations- og systemapplikationer. Vi har allerede udført få projekter ved hjælp af Processing, og du kan tjekke dem ud ved at klikke på nedenstående links.
- DIY FM-radio ved hjælp af behandling
- Virtual Reality / Gesture-kontrol ved hjælp af Arduino
- Privat chatrum ved hjælp af Arduino.
- Arduino Radar System ved hjælp af Processing APP og Ultralydssensor
- Realtids ansigtsregistrering og sporing ved hjælp af Arduino
- DIY Speedometer ved hjælp af Arduino og Processing
- Ping Pong-spil ved hjælp af Arduino Accelerometer
- Bipet robot ved hjælp af Arduino
- DIY Arduino termisk billedkamera
At komme tilbage til emnet er det umuligt for mig at forklare den komplette kode for Android-applikationen, så du bliver nødt til at lære at behandle selv og derefter se på koden for at forstå, hvordan den fungerer. Derfor kan folk, der er villige til at springe over læringsprocessen, downloade android-applikationen fra nedenstående link
- Download Android-applikation
Nedenfor er grænsefladen til vores Android-applikation:
APK-filen kan installeres direkte på enhver Android-applikation og startes som enhver anden applikation. Men sørg for, at din HC-05 Bluetooth-enhed er navngivet som "HC-05", for kun da fungerer den.
Forståelse af behandlingskoden:
Folk, der er interesserede i at vide, hvad der sker bag skærmen, kan læse videre, andre kan springe ned til næste overskrift. Dybest set forbinder Android-applikationen til en Bluetooth-enhed kaldet “HC-05” under opstart og viser et sæt på 64 lysdioder i form af cirkler. Derefter, når brugeren trykker på cirklen, bliver cirklen rød, og cirkelnummeret sendes til Arduino via Bluetooth, når Arduino modtager cirkelnummeret tænder LED'en. Lad os se på de vigtige linjer i Processing-programmet for at forstå det bedre. Den komplette kode for Android-applikationen kan downloades fra nedenstående link.
- Behandlingskode til Android-applikation
Vi bruger klasser og objekter til at vise 64 lysdioder, så vi nemt kan adressere hver enkelt. Som du kan se i nedenstående kode, bruger vi en for- løkke til at gentage fra 1 til 64 ved hjælp af en matrix. Dette var hver LED vil have sin egen værdi af X-position, Y-position og farve, og vi kan nemt ændre dem.
// dipslay alle lysdioder til (int i = 1; i <= 64; i ++) led_array.display (); // Alle lysdioder vises klasse Led { float X_Pos; flyde Y_Pos; farve farve; // CONSTRUTOR Led (float tempx, float tempy, color tempc) { X_Pos = tempx; Y_Pos = tempy; farve = tempc; } ugyldig visning () { udfyld (farve); ellipse (X_Pos, Y_Pos, led_dia, led_dia); } }
LED'erne indlæses på skærmen i samme rækkefølge som på displayet. Hver LED er adskilt med en afstand svarende til diameteren på LED'en, på denne måde kan vi nemt skelne hvilken LED der aktuelt er valgt af brugeren. Som vist i nedenstående program opretter vi en matrix, hvor hvert element indeholder informationen om X, Y position og farve på LED'en.
ugyldige load_leds () { led_array = ny LED; int a = 1; for (int j = 0; j <= 7; j ++) { float y = højde / 6 + j * (led_dia * 1,5); for (int i = 0; i <= 7; i ++) { float x = (bredde / 6) + i * (led_dia * 1,5); // fyld (255); // ellipse (x, y, led_dia, led_dia); led_array = ny Led (x, y, farve (255,255,255)); a ++; } } }
Hovedtrinnet i programmet er at kontrollere, om brugeren har trykket på en LED, og hvis ja, skal vi ændre farven på LED'en og sende LED-nummeret via Bluetooth. Siden nu kan vi henvende os til placeringen og farven på hver LED let, vi kan gøre dette ved blot at sammenligne X-, Y-værdierne for, hvor brugeren har trykket på X-, Y-værdien for LED'erne. Hvis værdierne smelter ind i hinanden, ændrer vi LED-tilstanden og sender nummeret også via Bluetooth som vist nedenfor.
// tjek om mus over led // Hvis ja send led nummer til (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_farve); byte data = {byte (i)}; bt. Broadcast (data); } }
Bortset fra dette, kan programmet også nulstille den komplette LED ved at slukke for dem alle, og du kan også få en LED til at blive rød (ON) eller hvid (OFF), så vi har også en skifteknap til det. Vippeknappen vises og venter på input. Hvis der trykkes på, udføres den respektive handling. Koden til at gøre det samme vises nedenfor som funktion, der kaldes inde i trækløkken.
ugyldige load_buttons () { rectMode (CENTER); textAlign (CENTER, CENTER); noStroke (); fyld (# 1BF2D4); ret (bredde / 2-bredde / 4, højde / 1,3, bredde / 4, højde / 12); fyld (0); tekst ("Nulstil", bredde / 2-bredde / 4, højde / 1,3); // knap 1 hvis (rød == sand) {udfyld (# 080F89); ret (bredde / 2 + bredde / 4, højde / 1,3, bredde / 4, højde / 12); fyld (255,0,0); tekst ("RØD", bredde / 2 + bredde / 4, højde / 1.3);} // knap 2 hvis (rød == falsk) {udfyld (# 080F89); ret (bredde / 2 + bredde / 4, højde / 1,3, bredde / 4, højde / 12); fyld (255); tekst ("HVID", bredde / 2 + bredde / 4, højde / 1.3);} // knap 2 } ugyldige read_buttons () { if (mousePressed && click_flag == true) { color_val = get (mouseX, mouseY); click_flag = false; hvis (color_val == - 14945580) { byte data = {0}; bt. Broadcast (data); println ("RESET"); load_leds (); // indlæse alle led i position og farve } hvis (color_val == - 16248951) { byte data = {100}; bt. Broadcast (data); hvis (rød == sand) rød = falsk; ellers hvis (rød == falsk) rød = sand; println ("TOGGLE"); } color_val = 0; } }
Programmering af din Arduino:
Det komplette Arduino-program til dette Bluetooth-styrede trådløse kortprojekt findes i bunden af denne skærm. du kan bruge det direkte og uploade det på dit tavle. De vigtige linjer i programmet forklares nedenfor.
Den Bluetooth-modul er tilsluttet pin 10 og 11, hvorfor vi er nødt til at bruge softwaren seriel at aktivere seriel kommunikation på disse stifter, og så kan vi lytte efter data fra disse stifter. Vi modtager data modtaget fra Bluetooth-modulet og gemmer det i en variabel kaldet indgående . Hvis værdien for indgående er "0" slukker vi al LED ved hjælp af nedenstående kode
hvis (BT.tilgængelig ()) { indkommende = BT.read (); Serial.println (indgående); hvis (indkommende == 0) m.klar (); // Rydder displayet
Ved hjælp af værdierne for indgående skal vi bestemme, hvilken LED brugeren har trykket på mobiltelefonen og vejret for at tænde eller slukke for denne LED. Så vi kontrollerer, om værdien er lig med 100. Hvis værdien er 10, betyder det, at brugeren har bedt om at skifte farven på lysdioden. Så vi skifter variablen rød for at vide, om LED'en skal tændes eller slukkes.
ellers hvis (indkommende == 100) // Kontroller, om vi skal tænde eller slukke for lysdioden { hvis (rød == sand) rød = falsk; ellers hvis (rød == falsk) rød = sand; Serial.print ("RØD:"); Serial.println (rød); }
Hvis værdien endelig er over 65, betyder det, at brugeren har trykket på en LED. Baseret på antallet fra 1 til 64 skal vi bestemme hvilken LED brugeren har trykket på. For at skifte denne LED har vi brug for værdien af række og kolonne for den LED, som beregnes og lagres på henholdsvis variabel X og Y og vises på nedenstående kode. Endelig, baseret på værdien af variabel rødt, tænder eller slukker vi enten LED'en i henhold til brugeranmodningen
ellers hvis (indkommende <= 64) {// Beregn, hvor du skal TIL ro FRA LED- skiften = sand; Y = indgående / 8; X = indgående - (Y * 8); hvis (indkommende% 8 == 0) {X = 8; Y - = 1;} Serial.println (X - 1); Serial.println (Y); hvis (rød == sand) m.setDot ((X - 1), (Y), sand); // LED TIL andet hvis (rød == falsk) m.setDot ((X - 1), (Y), falsk); // LED slukket }
Kredsløb og printkortdesign ved hjælp af EasyEDA:
For at designe denne Bluetooth-kontrollerede matrix-skærm har vi valgt det online EDA-værktøj kaldet EasyEDA. Jeg har tidligere brugt EasyEDA mange gange og fundet det meget praktisk at bruge, da det har en god samling fodspor, og det er open source. Efter design af PCB kan vi bestille PCB-prøver ved hjælp af deres billige PCB-fabrikationstjenester. De tilbyder også komponentsourcingtjeneste, hvor de har et stort lager af elektroniske komponenter, og brugere kan bestille deres nødvendige komponenter sammen med printkortordren.
Mens du designer dine kredsløb og printkort, kan du også gøre dit kredsløb og printkortdesign offentligt, så andre brugere kan kopiere eller redigere dem og drage fordel af dit arbejde, vi har også gjort vores hele kredsløbs- og printkortlayouts offentlige for dette kredsløb, tjek nedenstående link:
easyeda.com/circuitdigest/8x8-led-matrix-display-control-with-bluetooth
Du kan se ethvert lag (Top, Bottom, Topsilk, bottomsilk osv.) På printkortet ved at vælge laget fra vinduet 'Layers'.
Du kan også se printkortet, hvordan det vil se ud efter fabrikation, ved hjælp af knappen Photo View i EasyEDA:
Beregning og bestilling af prøver online:
Efter at have afsluttet designet af denne Bluetooth-styrede matrix-print, kan du bestille printkortet via JLCPCB.com. For at bestille printkortet fra JLCPCB skal du have Gerber File. For at downloade Gerber-filer på din PCB skal du blot klikke på fabrikationsoutput-knappen på siden EasyEDA-editor og derefter downloade fra EasyEDA-printkortets ordreside.
Gå nu til JLCPCB.com og klik på Citér nu eller knappen, så kan du vælge antallet af printkort, du vil bestille, hvor mange kobberlag du har brug for, printkorttykkelsen, kobbervægt og endda printkortfarven, ligesom øjebliksbillede vist nedenfor:
Når du har valgt alle indstillingerne, skal du klikke på "Gem i kurv" og derefter føres til den side, hvor du kan uploade din Gerber-fil, som vi har downloadet fra EasyEDA. Upload din Gerber-fil og klik på "Gem i kurv". Og endelig klik på Checkout sikkert for at gennemføre din ordre, så får du dine printkort et par dage senere. De fabrikerer printkortet med meget lav hastighed, hvilket er $ 2. Deres byggetid er også meget mindre, hvilket er 48 timer med DHL-levering på 3-5 dage, dybest set får du dine printkort inden for en uge efter bestilling.
Efter få dage med bestilling af printkort fik jeg printkortprøverne i pæn emballage som vist på nedenstående billeder.
Og efter at have fået disse stykker, har jeg loddet alle nødvendige komponenter over printkortet.
På min PCB lavede jeg en stum fejl ved at vælge det forkerte fodaftryk til 8 * 8 Display-modulet, hvorfor jeg måtte bruge et Perf-kort til at montere skærmen som vist på billedet. Men nu opdateres fodaftrykket i printkortet, og du kan nemt bestille det korrigerede printkort og montere skærmmodulet.
Arbejd af display på Bluetooth-skilt
Når du er klar med hardwaren enten ved at få printkortet eller oprette forbindelse på breadboard, skal du bruge Arduino-programmet, der er angivet i slutningen af siden, og uploade det til dit Arduino-kort. Den android ansøgning APK fil er også angivet ovenfor, bruge det og installere programmet på din foretrukne Android-enhed.
Tænd for hardwaren, og søg efter navnet på HC-05-enheden på din telefon for at parre med den. Pass-nøglen er som standard 1234. Derefter skal du åbne det program, vi lige har installeret. Applikationen skal vise " forbundet til HC-05 " øverst på skærmen, så vil du være i stand til at røre ved LED'en på skærmen og bemærke, at den samme LED også tændes på tavlen.
Du kan også slukke for al LED ved at trykke på Reset- knappen og beslutte at tænde eller slukke for en bestemt LED ved at trykke på knappen Skift. Som standard tændes den LED, du altid trykker på. Den komplette bearbejdning af projektet kan findes i videoen nedenfor. Hvis du har problemer med at få det til at arbejde, skal du bruge kommentarfeltet nedenfor eller skrive på vores fora for mere teknisk hjælp. Håber du forstod vejledningen og nød at bygge den.