- Nødvendige materialer:
- Kretsdiagram:
- Opprette Android-applikasjonen ved hjelp av prosessering:
- Forstå behandlingskoden:
- Programmering av Arduino:
- Krets- og kretskortdesign ved bruk av EasyEDA:
- Beregning og bestilling av prøver online:
- Arbeid med skjerm med Bluetooth-skilt:
Det være seg de langstrakte motorveiene eller legenes inngangsdør, vi har skiltebrett plassert overalt for å gi oss informasjon. Men disse skiltebrettene er ofte kjedelige og kan ikke konfigureres i henhold til vår interesse fra tid til annen. Så i dette prosjektet skal vi bygge et Bluetooth-kontrollert skiltkort ved hjelp av en 8 * 8 Matrix-skjerm. Et unikt trekk ved dette prosjektet er Android-applikasjonen som lar brukeren kontrollere alle de 64 lysdiodene individuelt fra mobiltelefonen. Dette gjør det mulig for brukeren å lage tilpassede design med letthet og vise det på LED-skjermen, høres interessant ut, ikke sant !! Så la oss komme i gang…
Nødvendige materialer:
- Arduino Pro mini
- MAX7219
- HC-05 Bluetooth-modul
- 8 * 8 LED-matriseskjerm
- 20k motstand
- DC fat jack
Kretsdiagram:
Kretsdiagrammet dette Bluetooth-kontrollerte LED-kortet er bygget ved hjelp av EasyEDA-applikasjonen. Vi vil bruke de samme skjemaene for å utvikle et PCB fra det og lage det ved hjelp av EasyEDA.
Kretsen er ganske rett frem. Hele prosjektet er drevet av en 12V adapter, som blir gitt direkte til Raw pin fra Arduino Board. Denne råspenningen reguleres deretter til + 5V som tilføres Bluetooth-modulen og MAX7219 IC. Tx- og Rx-pinnene til Bluetooth-modulen er koblet til D11 og D10 på Arduino for å muliggjøre seriell tilkobling.
De digitale pinnene D5 til D7 er koblet til MAX7219 IC for å sende og motta data gjennom SPI-kommunikasjon. ISET-pinnen på MAX7219 trekkes høyt gjennom en 20k motstand.
For dette prosjektet har jeg produsert en PCB, du kan få designfilen til PCB og bruke den samme eller bygge kretsen på et brødbrett. På grunn av kompleksiteten anbefales det imidlertid å enten kjøpe en 8x8 skjermmodul eller bruke PCB
8x8 matrise er veldig nyttig displaymodul og kan brukes i mange kule prosjekter:
- Kontrollerer 8x8 LED-matrise med Raspberry Pi
- Rullende tekstvisning på 8x8 LED-matrise ved hjelp av Arduino
- 8x8 LED-matrise ved bruk av Arduino
- 8x8 LED-matrisegrensesnitt med AVR-mikrokontroller
Opprette Android-applikasjonen ved hjelp av prosessering:
Før vi kan begynne å programmere Arduino, bør vi vite hvilken type data vi vil motta fra mobiltelefonen for å svare på den. Så la oss ta en titt på hvordan Android-applikasjonen er opprettet, og hvordan du kan bruke den på smarttelefonen din til å kontrollere 8x8 LED-matrisen.
Android-applikasjonen for dette prosjektet ble opprettet ved hjelp av behandlingsprogramvaren. Det er en åpen kildekode-utviklingsapplikasjon og kan enkelt lastes ned og brukes til å utvikle interessante prosjekter ved hjelp av Arduino eller andre mikrokontrollere, siden den kan utvikle android applikasjons- og systemapplikasjoner. Vi har allerede gjort få prosjekter ved hjelp av prosessering, og du kan sjekke dem ut ved å klikke på lenkene nedenfor.
- DIY FM-radio ved bruk av behandling
- Virtuell virkelighet / gestkontroll ved hjelp av Arduino
- Privat chatterom med Arduino.
- Arduino Radar System bruker Processing APP og Ultrasonic Sensor
- Sanntids ansiktsgjenkjenning og sporing ved hjelp av Arduino
- DIY Speedometer ved hjelp av Arduino og Processing
- Ping Pong Game ved hjelp av Arduino Accelerometer
- Biped Robot ved hjelp av Arduino
- DIY Arduino termisk bildekamera
Å komme tilbake til emnet, det er umulig for meg å forklare den komplette koden til Android-applikasjonen, så du må lære deg å behandle selv og deretter se på koden for å forstå hvordan den fungerer. Derfor kan folk som er villige til å hoppe over læringsprosessen, laste ned android-applikasjonen fra lenken nedenfor
- Last ned Android-applikasjonen
Nedenfor er grensesnittet til Android-applikasjonen vår:
APK-filen kan installeres direkte på alle Android-applikasjoner og startes som alle andre applikasjoner. Men sørg for at HC-05 Bluetooth-enheten din blir kalt "HC-05", for bare da vil den fungere.
Forstå behandlingskoden:
Folk som er interessert i å vite hva som skjer bak skjermen, kan lese videre, andre kan hoppe ned til neste overskrift. I utgangspunktet kobles Android-applikasjonen til en Bluetooth-enhet kalt “HC-05” under oppstart og viser et sett med 64 lysdioder i form av sirkler. Så når brukeren trykker på sirkelen blir sirkelen rød og sirkelnummeret sendes til Arduino via Bluetooth, når du mottar sirkelnummeret, slår Arduino på LED. La oss se på de viktige linjene i behandlingsprogrammet for å forstå bedre. Den komplette koden til Android-applikasjonen kan lastes ned fra lenken nedenfor.
- Behandlingskode for Android-applikasjon
Vi bruker klasser og objekter til å vise 64 lysdioder slik at vi enkelt kan adressere hver enkelt. Som du kan se i koden nedenfor, bruker vi en for- løkke til å iterere fra 1 til 64 ved hjelp av en matrise. Dette var hver LED vil ha sin egen verdi av X-posisjon, Y-posisjon og farge, og vi kan enkelt endre dem.
// dipslay alle lysdioder for (int i = 1; i <= 64; i ++) led_array.display (); // Alle lysdioder vises i klasse Led { float X_Pos; flyte Y_Pos; farge farge; // CONSTRUTOR Led (float tempx, float tempy, color tempc) { X_Pos = tempx; Y_Pos = tempy; farge = tempc; } ugyldig visning () { fyll (farge); ellips (X_Pos, Y_Pos, led_dia, led_dia); } }
LED-lampene lastes på skjermen i samme rekkefølge som skjermen. Hver LED er atskilt med en avstand som er lik diameteren på LED, slik at vi enkelt kan skille hvilken LED som for øyeblikket er valgt av brukeren. Som vist i programmet nedenfor, lager vi en matrise der hvert element inneholder informasjonen om X, Y-posisjon og farge på LED-en.
ugyldig load_leds () { led_array = ny Led; int a = 1; for (int j = 0; j <= 7; j ++) { float y = høyde / 6 + j * (led_dia * 1,5); for (int i = 0; i <= 7; i ++) { float x = (bredde / 6) + i * (led_dia * 1,5); // fyll (255); // ellips (x, y, led_dia, led_dia); led_array = ny Led (x, y, farge (255,255,255)); a ++; } } }
Hovedtrinnet i programmet er å sjekke om brukeren har trykket på en LED, og hvis ja, må vi endre fargen på LED-en og sende LED-nummeret via Bluetooth. Siden nå kan vi henvende oss til plasseringen og fargen på hver LED lett, vi kan gjøre dette ved å bare sammenligne X-, Y-verdiene der brukeren har trykket på X-, Y-verdien til LEDene. Hvis verdiene smelter sammen, endrer vi tilstanden til LED-en og sender nummeret via Bluetooth som vist nedenfor.
// sjekk om mus over led // Hvis ja send led nummer for (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_farge); byte data = {byte (i)}; bt. Broadcast (data); } }
Bortsett fra dette, kan programmet også tilbakestille den komplette LED-en ved å slå av dem alle, og du kan også få en LED til å bli rød (PÅ) eller hvit (AV), så vi har også en vippeknapp for det. Veksleknappen vises og venter på inngangen. Hvis du trykker på, vil den aktuelle handlingen bli utført. Koden for å gjøre det samme vises nedenfor som funksjon som kalles inne i trekkløkken.
ugyldige load_buttons () { rectMode (SENTER); textAlign (SENTER, SENTER); noStroke (); fyll (# 1BF2D4); rett (bredde / 2-bredde / 4, høyde / 1,3, bredde / 4, høyde / 12); fyll (0); tekst ("Tilbakestill", bredde / 2-bredde / 4, høyde / 1,3); // knapp 1 hvis (rød == sann) {fyll (# 080F89); rett (bredde / 2 + bredde / 4, høyde / 1,3, bredde / 4, høyde / 12); fyll (255,0,0); tekst ("RØD", bredde / 2 + bredde / 4, høyde / 1.3);} // knapp 2 hvis (rød == usann) {fyll (# 080F89); rett (bredde / 2 + bredde / 4, høyde / 1,3, bredde / 4, høyde / 12); fyll (255); tekst ("HVIT", bredde / 2 + bredde / 4, høyde / 1.3);} // knapp 2 } ugyldige leseknapper () { if (mousePressed && click_flag == true) { color_val = get (mouseX, mouseY); click_flag = false; if (color_val == - 14945580) { byte data = {0}; bt. Broadcast (data); println ("RESET"); load_leds (); // last alle led i posisjon og farge } if (color_val == - 16248951) { byte data = {100}; bt. Broadcast (data); hvis (rød == sann) rød = usann; annet hvis (rød == usann) rød = sann; println ("TOGGLE"); } color_val = 0; } }
Programmering av Arduino:
Det komplette Arduino-programmet for dette Bluetooth-kontrollerte trådløse kortprosjektet er gitt nederst på denne skjermen. du kan bruke den direkte og laste den opp på tavlen. De viktige linjene i programmet er forklart nedenfor.
Den Bluetooth-modulen er koblet til tappen 10 og 11, derfor må vi bruke programvaren serie for å muliggjøre seriell kommunikasjon på disse pinnene og så vi kan lytte til data fra disse pinner. Vi får dataene mottatt fra Bluetooth-modulen og lagrer den i en variabel som heter innkommende . Hvis verdien for innkommende er "0", slår vi av alle LED-lampene ved hjelp av koden nedenfor
hvis (BT.tilgjengelig ()) { innkommende = BT.les (); Serial.println (innkommende); hvis (innkommende == 0) m.clear (); // Tømmer skjermen
Ved å bruke verdiene for innkommende må vi bestemme hvilken LED brukeren har trykket på mobiltelefonen og været for å slå LED på PÅ eller AV. Så vi sjekker om verdien er lik 100. Hvis verdien er 10, betyr det at brukeren har bedt om å bytte fargen på LED-en. Så vi bytter variabelen rød for å vite om LED-en skal slås på eller av.
annet hvis (innkommende == 100) // Sjekk om vi skulle slå på eller av LED-lampen { hvis (rød == sann) rød = falsk; annet hvis (rød == usann) rød = sann; Serial.print ("RED:"); Serial.println (rød); }
Til slutt, hvis verdien er over 65, betyr det at brukeren har trykket på en LED. Basert på tallet fra 1 til 64 må vi bestemme hvilken LED brukeren har trykket på. For å bytte den LEDen trenger vi verdien av Rad og Kolonne for den LED som beregnes og lagres på henholdsvis variabel X og Y og vises på koden nedenfor. Til slutt, basert på verdien av variabelt rødt, slår vi enten på eller av lysdioden i henhold til brukerens forespørsel
annet hvis (innkommende <= 64) {// Beregn hvor du skal PÅ ro AV LED- vekselen = sann; Y = innkommende / 8; X = innkommende - (Y * 8); hvis (innkommende% 8 == 0) {X = 8; Y - = 1;} Serial.println (X - 1); Serial.println (Y); hvis (rød == sann) m.setDot ((X - 1), (Y), sann); // LED PÅ ellers hvis (rød == usann) m.setDot ((X - 1), (Y), usann); // LED AV }
Krets- og kretskortdesign ved bruk av EasyEDA:
For å designe denne Bluetooth-kontrollerte matrise-skjermen har vi valgt det elektroniske EDA-verktøyet kalt EasyEDA. Jeg har tidligere brukt EasyEDA mange ganger, og syntes det er veldig praktisk å bruke, siden det har en god samling fotavtrykk og det er åpen kildekode. Etter å ha designet PCB, kan vi bestille PCB-prøvene etter deres lave kostnader PCB-fabrikasjonstjenester. De tilbyr også komponent sourcing-tjenester der de har et stort lager av elektroniske komponenter og brukere kan bestille de nødvendige komponentene sammen med PCB-bestillingen.
Mens du designer kretsene og kretskortene dine, kan du også gjøre krets- og kretskortdesignene dine offentlige slik at andre brukere kan kopiere eller redigere dem og kan dra nytte av arbeidet ditt, vi har også gjort hele krets- og kretskortoppsett offentlig for denne kretsen, sjekk lenken nedenfor:
easyeda.com/circuitdigest/8x8-led-matrix-display-control-with-bluetooth
Du kan se hvilket som helst lag (topp, bunn, overflatemelk, bunnmelk osv.) På PCB ved å velge laget fra vinduet "Lag".
Du kan også se PCB, hvordan den vil se ut etter fabrikasjon, ved hjelp av Photo View- knappen i EasyEDA:
Beregning og bestilling av prøver online:
Etter å ha fullført utformingen av denne Bluetooth-kontrollerte matrise-PCB-en, kan du bestille PCB-en via JLCPCB.com. For å bestille PCB fra JLCPCB, trenger du Gerber File. For å laste ned Gerber-filer på PCB-en, klikker du bare på Fabrication Output-knappen på EasyEDA-redigeringssiden, og laster deretter ned fra EasyEDA PCB-ordresiden.
Gå nå til JLCPCB.com og klikk på Sitat nå eller knappen, så kan du velge antall PCB du vil bestille, hvor mange kobberlag du trenger, PCB tykkelse, kobbervekt og til og med PCB-fargen, som øyeblikksbildet Vist under:
Når du har valgt alle alternativene, klikker du på "Lagre i handlekurven" og deretter blir du ført til siden der du kan laste opp Gerber-filen som vi har lastet ned fra EasyEDA. Last opp Gerber-filen og klikk “Lagre i handlekurven”. Og til slutt klikker du på Kassen sikkert for å fullføre bestillingen din, så får du PCB-ene noen dager senere. De fabrikerer kretskortet til veldig lav pris, som er $ 2. Byggetiden deres er også veldig mindre, som er 48 timer med DHL-levering på 3-5 dager, i utgangspunktet får du PCB-ene dine innen en uke etter bestilling.
Etter noen dager med bestilling av PCB fikk jeg PCB-prøvene i fin emballasje som vist på bildene nedenfor.
Og etter å ha fått disse delene har jeg loddet alle nødvendige komponenter over PCB.
På PCB-en min gjorde jeg en rett feil ved å velge feil fotavtrykk for 8 * 8-skjermmodulen, og derfor måtte jeg bruke et Perf-kort for å montere skjermen som vist på bildet. Men nå oppdateres fotavtrykket i kretskortet, og du kan enkelt bestille det korrigerte kretskortet og montere skjermmodulen.
Arbeid med skjerm med Bluetooth-skilt:
Når du er klar med maskinvaren, enten ved å få PCB eller opprette forbindelse på breadboard, bruker du Arduino-programmet gitt på slutten av siden og laster det opp til Arduino Board. Den android søknad APK-fil er også gitt ovenfor, bruk den og installere programmet på din foretrukne Android-enhet.
Strøm maskinvaren og søk etter HC-05-enhetsnavnet på telefonen for å koble til den. Pass-nøkkelen vil være 1234 som standard. Deretter åpner du programmet vi nettopp installerte. Applikasjonen skal vise " koblet til HC-05 " øverst på skjermen, så vil du kunne berøre LED-lampen på skjermen og legge merke til at den samme LED-en også blir slått på på tavlen.
Du kan også slå av all LED ved å trykke på Tilbakestill- knappen og bestemme å slå på eller av en bestemt LED ved å trykke på veksleknappen. Som standard lyser hvilken LED du trykker på. Fullstendig bearbeiding av prosjektet finner du i videoen nedenfor. Hvis du har problemer med å få det til å fungere, bruk kommentarfeltet nedenfor eller skriv på forumene våre for mer teknisk hjelp. Håper du forsto opplæringen og likte å bygge den.