- Vereiste materialen:
- Schakelschema:
- De Android-applicatie maken met behulp van Processing:
- Inzicht in de verwerkingscode:
- Programmeren van uw Arduino:
- Circuit- en PCB-ontwerp met EasyEDA:
- Monsters online berekenen en bestellen:
- Werking van het Bluetooth-bordbord:
Of het nu de langgerekte snelwegen zijn of de voordeur van uw arts, we hebben overal uithangborden om ons informatie te verstrekken. Maar deze uithangborden zijn vaak saai en kunnen niet van tijd tot tijd worden geconfigureerd volgens ons belang. Dus in dit project gaan we een Bluetooth-gestuurd uithangbord bouwen met behulp van een 8 * 8 Matrix-display. Een uniek kenmerk van dit project is de Android-applicatie waarmee de gebruiker alle 64 LED's individueel vanaf de mobiele telefoon kan bedienen. Dit stelt de gebruiker in staat om eenvoudig aangepaste ontwerpen te maken en deze weer te geven op het LED-display, klinkt interessant toch? !! Dus laten we beginnen…
Vereiste materialen:
- Arduino Pro mini
- MAX7219
- HC-05 Bluetooth-module
- 8 * 8 LED-matrixweergave
- 20k weerstand
- DC Barrel Jack
Schakelschema:
Het schakelschema dit Bluetooth-gestuurde LED-bord is gebouwd met behulp van de EasyEDA-applicatie. We zullen hetzelfde schema gebruiken om er een PCB van te ontwikkelen en deze te fabriceren met EasyEDA.
Het circuit is vrij rechttoe rechtaan. Het hele project wordt gevoed door een 12V-adapter, die rechtstreeks naar de Raw-pin van het Arduino-bord wordt gestuurd. Deze ruwe spanning wordt vervolgens gereguleerd tot + 5V die wordt geleverd aan de Bluetooth-module en de MAX7219 IC. De Tx- en Rx-pinnen van de Bluetooth-module zijn verbonden met D11 en D10 van de Arduino om een seriële verbinding mogelijk te maken.
De digitale pinnen D5 tot D7 zijn verbonden met de MAX7219 IC om gegevens te verzenden en ontvangen via SPI-communicatie. De ISET-pin van MAX7219 wordt hoog door een 20k-weerstand getrokken.
Voor dit project heb ik een PCB gemaakt, je kunt het ontwerpbestand van de PCB krijgen en deze gebruiken of de schakeling op een breadboard bouwen. Vanwege de complexiteit wordt het echter aanbevolen om een 8x8 Display-module te kopen of de printplaat te gebruiken
8x8 matrix is een zeer handige weergavemodule en kan in veel coole projecten worden gebruikt:
- Besturen van 8x8 LED Matrix met Raspberry Pi
- Scrollende tekstweergave op 8x8 LED-matrix met Arduino
- 8x8 LED Matrix met Arduino
- 8x8 LED Matrix-interface met AVR-microcontroller
De Android-applicatie maken met behulp van Processing:
Voordat we kunnen beginnen met het programmeren van onze Arduino, moeten we weten wat voor soort gegevens we van de mobiele telefoon zullen ontvangen om erop te reageren. Laten we dus eens kijken hoe de Android-applicatie is gemaakt en hoe u deze op uw smartphone kunt gebruiken om de 8x8 LED-matrix te bedienen.
De Android-applicatie voor dit project is gemaakt met behulp van de verwerkingssoftware. Het is een open-source ontwikkeltoepassing en kan gemakkelijk worden gedownload en gebruikt voor het ontwikkelen van interessante projecten met Arduino of andere microcontrollers, aangezien het Android-applicaties en systeemtoepassingen kan ontwikkelen. We hebben al een paar projecten gedaan met Processing en u kunt ze bekijken door op de onderstaande links te klikken.
- DIY FM-radio met behulp van verwerking
- Virtual Reality / Gesture control met Arduino
- Privéchatroom met Arduino.
- Arduino-radarsysteem met behulp van verwerkings-APP en ultrasone sensor
- Realtime gezichtsherkenning en tracking met Arduino
- DIY-snelheidsmeter met Arduino en verwerking
- Pingpongspel met Arduino Accelerometer
- Tweevoetige Robot met Arduino
- DIY Arduino warmtebeeldcamera
Om terug te komen op het onderwerp, het is voor mij onmogelijk om de volledige code van de Android-applicatie uit te leggen, dus je zou de verwerking zelf moeten leren en dan naar de code moeten kijken om te begrijpen hoe het werkt. Daarom kunnen mensen die bereid zijn het leerproces over te slaan, de Android-applicatie downloaden via de onderstaande link
- Download Android-applicatie
Hieronder ziet u de interface van onze Android-applicatie:
Het APK-bestand kan rechtstreeks op elke Android-applicatie worden geïnstalleerd en net als elke andere applicatie worden gestart. Maar zorg ervoor dat uw HC-05 Bluetooth-apparaat de naam "HC-05" heeft, want alleen dan werkt het.
Inzicht in de verwerkingscode:
Mensen die willen weten wat er achter het scherm gebeurt, kunnen verder lezen, anderen kunnen naar de volgende kop springen. In principe maakt de Android-applicatie tijdens het opstarten verbinding met een Bluetooth-apparaat genaamd "HC-05" en geeft een set van 64 LED's weer in de vorm van cirkels. Wanneer de gebruiker vervolgens op de cirkel drukt, wordt de cirkel rood en wordt het cirkelnummer via Bluetooth naar Arduino gestuurd, bij ontvangst van het cirkelnummer schakelt de Arduino de LED in. Laten we eens kijken naar de belangrijke regels van het verwerkingsprogramma om het beter te begrijpen. De volledige code van de Android-applicatie kan worden gedownload via de onderstaande link.
- Verwerkingscode voor Android-applicatie
We gebruiken klassen en objecten om 64 LED's weer te geven, zodat we ze allemaal gemakkelijk kunnen aanspreken. Zoals je in de onderstaande code kunt zien, gebruiken we een for- lus om van 1 tot 64 te herhalen met behulp van een array. Dit was elke LED heeft zijn eigen waarde van X-positie, Y-positie en kleur en we kunnen ze gemakkelijk wijzigen.
// dipslay alle leds voor (int i = 1; i <= 64; i ++) led_array.display (); // Alle leds worden weergegeven klasse Led { float X_Pos; zweven Y_Pos; kleur kleur; // CONSTRUTOR Led (float tempx, float tempy, color tempc) { X_Pos = tempx; Y_Pos = tijdelijk; kleur = tempc; } void display () { fill (kleur); ellips (X_Pos, Y_Pos, led_dia, led_dia); } }
De LED's worden op het scherm geladen in dezelfde volgorde als die van het display. Elke LED is gescheiden door een afstand gelijk aan de diameter van de LED, op deze manier kunnen we gemakkelijk onderscheiden welke LED op dat moment door de gebruiker is geselecteerd. Zoals in het onderstaande programma wordt getoond, maken we een array waarin elk element de informatie van de X-, Y-positie en kleur van de LED bevat.
void load_leds () { led_array = nieuwe Led; int a = 1; voor (int j = 0; j <= 7; j ++) { float y = hoogte / 6 + j * (led_dia * 1.5); voor (int i = 0; i <= 7; i ++) { float x = (width / 6) + i * (led_dia * 1.5); // fill (255); // ellips (x, y, led_dia, led_dia); led_array = nieuwe Led (x, y, kleur (255,255,255)); a ++; } } }
De belangrijkste stap in het programma is om te controleren of de gebruiker op een LED heeft gedrukt en zo ja, dan moeten we de kleur van de LED veranderen en het LED-nummer via Bluetooth verzenden. Omdat we nu gemakkelijk de locatie en kleur van elke LED kunnen adresseren, kunnen we dit doen door de X, Y-waarden van waar de gebruiker heeft ingedrukt te vergelijken met de X, Y-waarde van de LED's. Als de waarden in elkaar overvloeien, veranderen we de status van de LED en sturen we het nummer ook via Bluetooth zoals hieronder weergegeven.
// controleer of mouse over led // Indien ja, stuur het led-nummer voor (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); byte gegevens = {byte (i)}; bt.broadcast (gegevens); } }
Afgezien hiervan kan het programma ook de volledige LED resetten door ze allemaal uit te schakelen en je kunt ook een LED rood (AAN) of wit (UIT) laten worden, dus daar hebben we ook een schakelknop voor. De schakelknop wordt weergegeven en wacht op de invoer. Als u hierop drukt, wordt de betreffende actie ondernomen. De code om hetzelfde te doen wordt hieronder weergegeven als functie die wordt aangeroepen in de tekenlus.
leegte load_buttons () { rectMode (CENTER); textAlign (CENTER, CENTER); noStroke (); vullen (# 1BF2D4); rect (breedte / 2-breedte / 4, hoogte / 1.3, breedte / 4, hoogte / 12); vullen (0); tekst ("Reset", breedte / 2-breedte / 4, hoogte / 1,3); // knop 1 if (rood == true) {fill (# 080F89); rect (breedte / 2 + breedte / 4, hoogte / 1.3, breedte / 4, hoogte / 12); vullen (255,0,0); text ("RED", breedte / 2 + breedte / 4, hoogte / 1.3);} // knop 2 if (rood == false) {fill (# 080F89); rect (breedte / 2 + breedte / 4, hoogte / 1.3, breedte / 4, hoogte / 12); vullen (255); text ("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; if (color_val == - 14945580) { byte data = {0}; bt.broadcast (gegevens); println ("RESET"); load_leds (); // laad alle led in positie en kleur } if (color_val == - 16248951) { byte data = {100}; bt.broadcast (gegevens); if (red == true) red = false; else if (red == false) red = true; println ("TOGGLE"); } color_val = 0; } }
Programmeren van uw Arduino:
Het complete Arduino-programma voor dit Bluetooth-gestuurde draadloze bordproject wordt onder aan dit scherm weergegeven; je kunt het direct gebruiken en uploaden naar je bord. De belangrijke regels in het programma worden hieronder toegelicht.
De Bluetooth-module is verbonden met pin 10 en 11, daarom moeten we de software serieel gebruiken om seriële communicatie op deze pinnen mogelijk te maken en dan kunnen we luisteren naar gegevens van deze pinnen. We halen de ontvangen gegevens op van de Bluetooth-module en slaan deze op in een variabele met de naam inkomend . Als de waarde van inkomend "0" is, zullen we alle LED's uitschakelen met behulp van de onderstaande code
if (BT.available ()) { inkomend = BT.read (); Serial.println (inkomend); if (inkomend == 0) m.clear (); // Wist de weergave
Met behulp van de waarden van inkomend moeten we bepalen op welke LED de gebruiker op de mobiele telefoon heeft gedrukt en het weer om die LED AAN of UIT te zetten. Dus kijken we of de waarde gelijk is aan 100. Als de waarde 10 is, dan betekent dit dat de gebruiker gevraagd heeft om de kleur van de LED te wisselen. Dus schakelen we de variabele rood om te weten of de LED moet worden in- of uitgeschakeld.
else if (inkomend == 100) // Controleer of we de LED aan of uit moeten zetten { if (red == true) red = false; else if (red == false) red = true; Serial.print ("ROOD:"); Serial.println (rood); }
Als de waarde tenslotte is dan 65, betekent dit dat de gebruiker op een LED heeft gedrukt. Aan de hand van het aantal van 1 tot 64 moeten we bepalen op welke LED de gebruiker heeft gedrukt. Om die LED aan te zetten, hebben we de waarde van Rij en Kolom van die LED nodig, die wordt berekend en opgeslagen op respectievelijk variabele X en Y en wordt weergegeven in de onderstaande code. Ten slotte, gebaseerd op de waarde van variabel rood, schakelen we de LED in of uit volgens het verzoek van de gebruiker
else if (inkomend <= 64) {// Bereken waar AAN ro UIT de LED toggle = true; Y = inkomend / 8; X = inkomend - (Y * 8); if (inkomend% 8 == 0) {X = 8; Y - = 1;} Serial.println (X - 1); Serial.println (Y); if (red == true) m.setDot ((X - 1), (Y), true); // LED AAN anders if (red == false) m.setDot ((X - 1), (Y), false); // LED UIT }
Circuit- en PCB-ontwerp met EasyEDA:
Om dit Bluetooth Controlled Matrix-display te ontwerpen, hebben we gekozen voor de online EDA-tool genaamd EasyEDA. Ik heb EasyEDA al vaak gebruikt en vond het erg handig om te gebruiken, omdat het een goede verzameling footprints heeft en het open-source is. Na het ontwerpen van de PCB, kunnen we de PCB-monsters bestellen via hun goedkope PCB-fabricagediensten. Ze bieden ook een service voor het sourcen van componenten, waarbij ze een grote voorraad elektronische componenten hebben en gebruikers hun vereiste componenten samen met de PCB-bestelling kunnen bestellen.
Terwijl u uw circuits en PCB's ontwerpt, kunt u ook uw circuit- en PCB-ontwerpen openbaar maken, zodat andere gebruikers ze kunnen kopiëren of bewerken en kunnen profiteren van uw werk.We hebben ook onze hele circuit- en PCB-lay-outs openbaar gemaakt voor dit circuit. de onderstaande link:
easyeda.com/circuitdigest/8x8-led-matrix-display-control-with-bluetooth
U kunt elke laag (bovenzijde, onderzijde, bovenzijde, onderzijde enz.) Van de PCB bekijken door de laag te selecteren in het venster 'Lagen'.
U kunt ook de printplaat bekijken, hoe deze er na de fabricage uitziet, met behulp van de Photo View- knop in EasyEDA:
Monsters online berekenen en bestellen:
Nadat u het ontwerp van deze Bluetooth Controlled Matrix PCB heeft afgerond, kunt u de PCB bestellen via JLCPCB.com. Om de print bij JLCPCB te bestellen heeft u Gerber File nodig. Om Gerber-bestanden van uw PCB te downloaden, klikt u gewoon op de knop Fabrication Output op de EasyEDA-editorpagina en downloadt u deze vervolgens vanaf de EasyEDA PCB-bestelpagina.
Ga nu naar JLCPCB.com en klik op Offerte nu of op de knop, dan kunt u het aantal PCB's selecteren dat u wilt bestellen, hoeveel koperlagen u nodig heeft, de PCB-dikte, het kopergewicht en zelfs de PCB-kleur, zoals de momentopname hieronder weergegeven:
Nadat u alle opties heeft geselecteerd, klikt u op "Opslaan in winkelwagen" en wordt u naar de pagina geleid waar u uw Gerber-bestand kunt uploaden dat we hebben gedownload van EasyEDA. Upload uw Gerber-bestand en klik op "Opslaan in winkelwagen". En klik ten slotte op Veilig afrekenen om uw bestelling af te ronden, dan ontvangt u uw PCB's een paar dagen later. Ze fabriceren de printplaat tegen een zeer lage prijs, namelijk $ 2. Hun bouwtijd is ook erg kort, dat is 48 uur met een DHL-levering van 3-5 dagen, in principe ontvangt u uw PCB's binnen een week na bestelling.
Na een paar dagen PCB's te hebben besteld, kreeg ik de PCB-samples in een mooie verpakking, zoals te zien is op onderstaande foto's.
En na het verkrijgen van deze stukjes heb ik alle benodigde componenten over de print gesoldeerd.
In mijn printplaat maakte ik een botte fout door de verkeerde footprint te selecteren voor de 8 * 8 Display-module, daarom moest ik een Perf-bord gebruiken om het display te monteren, zoals op de afbeelding. Maar nu wordt de footprint bijgewerkt op de printplaat en kunt u de gecorrigeerde printplaat bestellen en de displaymodule eenvoudig monteren.
Werking van het Bluetooth-bordbord:
Als je klaar bent met de hardware, ofwel door de PCB te halen of de verbinding op het breadboard te maken, gebruik je het Arduino-programma aan het einde van de pagina en upload je het naar je Arduino-bord. Het APK-bestand van de Android-applicatie wordt ook hierboven weergegeven, gebruik het en installeer de applicatie op uw favoriete Android-apparaat.
Schakel de hardware in en zoek naar de apparaatnaam HC-05 op uw telefoon om ermee te koppelen. De wachtwoordsleutel is standaard 1234. Open daarna de applicatie die we zojuist hebben geïnstalleerd. De applicatie zou bovenaan het scherm " verbonden met HC-05 " moeten weergeven, dan kun je de LED op het scherm aanraken en zien dat dezelfde LED ook op het bord wordt ingeschakeld.
U kunt ook alle LED's uitschakelen door op de Reset- knop te drukken en besluiten om een bepaalde LED in of uit te schakelen door op de Toggle-knop te drukken. Standaard wordt elke LED die u indrukt ingeschakeld. De volledige werking van het project is te vinden in de onderstaande video. Als je een probleem hebt om het te laten werken, gebruik dan het opmerkingenveld hieronder of schrijf op onze forums voor meer technische hulp. Ik hoop dat je de tutorial hebt begrepen en met plezier hebt gebouwd.