- Material som krävs:
- Kretsschema:
- Skapa Android-applikationen med bearbetning:
- Förstå bearbetningskoden:
- Programmering av din Arduino:
- Krets- och kretskortsdesign med EasyEDA:
- Beräkning och beställning av prover online:
- Arbeta med Bluetooth-skyltskärm:
Vare sig det är de långsträckta motorvägarna eller din läkares ytterdörr, vi har skyltplattor placerade överallt för att ge oss information. Men dessa skyltbrädor är ofta tråkiga och kan inte konfigureras enligt vårt intresse då och då. Så i det här projektet ska vi bygga ett Bluetooth-styrt skyltkort med en 8 * 8 matrisskärm. Ett unikt inslag i detta projekt är dess Android-applikation som gör att användaren kan styra alla 64 lysdioder individuellt från mobiltelefonen. Detta gör det möjligt för användaren att skapa anpassade mönster med lätthet och visa den på LED-skärmen, låter intressant, eller hur? !! Så låt oss komma igång…
Material som krävs:
- Arduino Pro mini
- MAX7219
- HC-05 Bluetooth-modul
- 8 * 8 LED-matrisskärm
- 20k motstånd
- DC fat jack
Kretsschema:
Kretsdiagrammet detta Bluetooth-styrda LED-kort byggt med EasyEDA-applikationen. Vi kommer att använda samma scheman för att utveckla ett PCB från det och tillverka det med EasyEDA.
Kretsen är ganska rakt framåt. Hela projektet drivs av en 12V-adapter, som ges direkt till Raw-stiftet på Arduino Board. Denna råspänning regleras sedan till + 5V som matas till Bluetooth-modulen och MAX7219 IC. Tx- och Rx-stiften på Bluetooth-modulen är ansluten till D11 och D10 på Arduino för att möjliggöra seriell anslutning.
De digitala stiften D5 till D7 är anslutna till MAX7219 IC för att skicka och ta emot data via SPI-kommunikation. ISET-stiftet på MAX7219 dras högt genom en 20 k motstånd.
För detta projekt har jag tillverkat ett kretskort, du kan hämta designfilen för kretskortet och använda detsamma eller bygga kretsen på en bräda. På grund av dess komplexitet rekommenderas dock att du antingen köper en 8x8 Display-modul eller använder PCB
8x8 matris är mycket användbar displaymodul och kan användas i många häftiga projekt:
- Styrande 8x8 LED-matris med Raspberry Pi
- Rulla textdisplay på 8x8 LED Matrix med Arduino
- 8x8 LED-matris med Arduino
- 8x8 LED-matrisgränssnitt med AVR-mikrokontroller
Skapa Android-applikationen med bearbetning:
Innan vi kan börja programmera vår Arduino bör vi veta vilken typ av data vi kommer att få från mobiltelefonen för att svara tillbaka på den. Så låt oss ta en titt på hur Android-applikationen skapas och hur du kan använda den på din smartphone för att styra 8x8 LED-matrisen.
Android-applikationen för detta projekt skapades med Processing-programvaran. Det är en utvecklingsapplikation med öppen källkod och kan enkelt laddas ner och användas för att utveckla intressanta projekt med Arduino eller andra mikrokontroller eftersom det kan utveckla Android-applikationer och systemapplikationer. Vi har redan gjort några projekt med bearbetning och du kan kolla in dem genom att klicka på länkarna nedan.
- DIY FM-radio med bearbetning
- Virtuell verklighet / gestkontroll med Arduino
- Privat chattrum med Arduino.
- Arduino Radar System använder Processing APP och Ultrasonic Sensor
- Ansiktsdetektering och spårning i realtid med Arduino
- DIY-hastighetsmätare med Arduino och Processing
- Ping Pong Game med Arduino Accelerometer
- Bipad robot med Arduino
- DIY Arduino värmekamera
Att komma tillbaka till ämnet, det är omöjligt för mig att förklara den fullständiga koden för Android-applikationen så att du måste lära dig bearbetning själv och sedan titta på koden för att förstå hur den fungerar. Därför kan personer som är villiga att hoppa över inlärningsprocessen ladda ner Android-applikationen från länken nedan
- Ladda ner Android-applikationen
Nedan finns gränssnittet för vår Android-applikation:
APK-filen kan installeras direkt på alla Android-applikationer och startas som alla andra applikationer. Men se till att din HC-05 Bluetooth-enhet heter "HC-05", för först då fungerar den.
Förstå bearbetningskoden:
Människor som är intresserade av att veta vad som händer bakom skärmen kan läsa vidare, andra kan hoppa ner till nästa rubrik. I grund och botten ansluter Android-applikationen till en Bluetooth-enhet som heter “HC-05” under start och visar en uppsättning av 64 lysdioder i form av cirklar. Sedan när användaren trycker på cirkeln blir cirkeln röd och cirkelnumret skickas till Arduino via Bluetooth, vid mottagande av cirkelnumret tänds Arduino LED. Låt oss titta på de viktiga raderna i Processing-programmet för att förstå bättre. Den kompletta koden för Android-applikationen kan laddas ner från länken nedan.
- Bearbetningskod för Android-applikation
Vi använder klasser och objekt för att visa 64 lysdioder så att vi enkelt kan adressera var och en. Som du kan se i koden nedan använder vi en for- loop för att iterera från 1 till 64 med hjälp av en array. Detta var att varje LED kommer att ha sitt eget värde av X-position, Y-position och färg och vi kan enkelt ändra dem.
// dipslay alla lysdioder för (int i = 1; i <= 64; i ++) led_array.display (); // Alla lysdioder visas klass Led { float X_Pos; flyta Y_Pos; färg färg; // CONSTRUTOR Led (float tempx, float tempy, color tempc) { X_Pos = tempx; Y_Pos = tempy; färg = tempc; } ogiltig visning () { fyll (färg); ellips (X_Pos, Y_Pos, led_dia, led_dia); } }
Lysdioderna laddas på skärmen i samma ordning som på skärmen. Varje lysdiod är åtskild med ett avstånd som är lika med diametern på lysdioden, på detta sätt kan vi enkelt skilja vilken lysdiod som för närvarande är vald av användaren. Som visas i nedanstående program skapar vi en matris där varje element innehåller information om X, Y-position och färg på LED.
ogiltig load_leds () { led_array = ny Led; int a = 1; för (int j = 0; j <= 7; j ++) { float y = höjd / 6 + j * (led_dia * 1,5); för (int i = 0; i <= 7; i ++) { float x = (bredd / 6) + i * (led_dia * 1,5); // fyll (255); // ellips (x, y, led_dia, led_dia); led_array = ny Led (x, y, färg (255,255,255)); a ++; } } }
Huvudsteget i programmet är att kontrollera om användaren har tryckt på någon LED och om ja, vi måste ändra färg på LED och skicka LED-numret via Bluetooth. Sedan nu kan vi enkelt adressera till platsen och färgen på varje lysdiod, vi kan göra detta genom att bara jämföra X-, Y-värdena där användaren har tryckt med X-, Y-värdet för lysdioderna. Om värdena smälter in i varandra ändrar vi lysdioden och skickar också numret via Bluetooth enligt nedan.
// kontrollera om mus över led // Om ja skicka led-numret för (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_färg); byte data = {byte (i)}; bt. Broadcast (data); } }
Bortsett från detta kan programmet också återställa hela lysdioden genom att stänga av dem alla och du kan antingen göra en lysdiod röd (PÅ) eller vit (AV) så vi har också en växlingsknapp för det. Växlingsknappen visas och väntar på inmatningen. Om du trycker på kommer respektive åtgärd att vidtas. Koden för att göra detsamma visas nedan som funktion som kallas inuti dragslingan.
ogiltiga load_buttons () { rectMode (CENTER); textAlign (CENTER, CENTER); noStroke (); fyll (# 1BF2D4); rekt (bredd / 2-bredd / 4, höjd / 1.3, bredd / 4, höjd / 12); fyll (0); text ("Återställ", bredd / 2-bredd / 4, höjd / 1.3); // knapp 1 om (röd == sann) {fyll (# 080F89); rekt (bredd / 2 + bredd / 4, höjd / 1.3, bredd / 4, höjd / 12); fyllning (255,0,0); text ("RÖD", bredd / 2 + bredd / 4, höjd / 1.3);} // knapp 2 om (röd == falsk) {fill (# 080F89); rekt (bredd / 2 + bredd / 4, höjd / 1.3, bredd / 4, höjd / 12); fyllning (255); text ("VIT", bredd / 2 + bredd / 4, höjd / 1.3);} // knapp 2 } ogiltiga läsknappar () { 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 (); // ladda alla led i position och färg } if (color_val == - 16248951) { byte data = {100}; bt. Broadcast (data); om (röd == sann) röd = falsk; annars om (röd == falsk) röd = sann; println ("TOGGLE"); } color_val = 0; } }
Programmering av din Arduino:
Det fullständiga Arduino-programmet för detta Bluetooth-styrda trådlösa kortprojekt ges längst ner på skärmen. du kan använda den direkt och ladda upp den på ditt bräde. De viktiga raderna i programmet förklaras nedan.
Den Bluetooth-modulen är ansluten till stift 10 och 11, därför måste vi använda programvaran seriell att möjliggöra seriell kommunikation på dessa tappar och sedan vi kan lyssna efter data från dessa stift. Vi får de data som tas emot från Bluetooth-modulen och sparar den i en variabel som heter inkommande . Om värdet på inkommande är “0” stänger vi av alla lysdioder med hjälp av koden nedan
if (BT.available ()) { inkommande = BT.read (); Serial.println (inkommande); if (inkommande == 0) m.clear (); // Rensar skärmen
Med hjälp av värdena för inkommande måste vi bestämma vilken lysdiod användaren har tryckt på mobiltelefonen och vädret för att sätta PÅ eller AV den lampan. Så vi kontrollerar om värdet är lika med 100. Om värdet är 10 betyder det att användaren har bett att växla färg på lysdioden. Så vi växlar variabeln röd för att veta om lysdioden ska slås på eller av.
annars om (inkommande == 100) // Kontrollera om vi ska tända eller släcka lysdioden { om (röd == sann) röd = falsk; annars om (röd == falsk) röd = sann; Serial.print ("RÖD:"); Serial.println (röd); }
Slutligen, om värdet är över 65 betyder det att användaren har tryckt på en LED. Baserat på antalet från 1 till 64 måste vi bestämma vilken lysdiod användaren har tryckt på. För att växla den lysdioden behöver vi värdet på rad och kolumn för den lysdioden som beräknas och lagras på variablerna X respektive Y och visas på koden nedan. Slutligen, baserat på värdet på variabelt rött, slår vi antingen på eller av lysdioden enligt användarens begäran
annars om (inkommande <= 64) {// Beräkna var PÅ ro AV lysdioden växla = sant; Y = inkommande / 8; X = inkommande - (Y * 8); if (inkommande% 8 == 0) {X = 8; Y - = 1;} Serial.println (X - 1); Serial.println (Y); om (röd == true) m.setDot ((X - 1), (Y), true); // LED PÅ annars om (röd == falsk) m.setDot ((X - 1), (Y), falsk); // LED OFF }
Krets- och kretskortsdesign med EasyEDA:
För att utforma denna Bluetooth-styrda matrisskärm har vi valt EDA-verktyget online som heter EasyEDA. Jag har tidigare använt EasyEDA många gånger och tyckte att det var väldigt bekvämt att använda eftersom det har en bra samling fotavtryck och det är öppen källkod. Efter att ha designat kretskortet kan vi beställa kretskortproverna med deras billiga tjänster för tillverkning av kretskort. De erbjuder också komponent sourcingtjänster där de har ett stort lager av elektroniska komponenter och användare kan beställa sina nödvändiga komponenter tillsammans med PCB-beställningen.
När du utformar dina kretsar och kretskort kan du också göra din krets- och kretskortsdesign offentlig så att andra användare kan kopiera eller redigera dem och dra nytta av ditt arbete, vi har också gjort hela krets- och kretskortlayouterna offentliga för denna krets, kontrollera nedanstående länk:
easyeda.com/circuitdigest/8x8-led-matrix-display-control-with-bluetooth
Du kan se vilket lager som helst (Top, Bottom, Topsilk, bottomsilk etc) på kretskortet genom att välja lagret från "Layers" -fönstret.
Du kan också se kretskortet, hur det kommer att se ut efter tillverkning med knappen Photo View i EasyEDA:
Beräkning och beställning av prover online:
Efter att ha slutfört designen av denna Bluetooth-styrda matris-kretskort kan du beställa kretskortet via JLCPCB.com. För att beställa PCB från JLCPCB behöver du Gerber File. För att ladda ner Gerber-filer på din PCB klickar du bara på knappen Fabrication Output på EasyEDA-redigeringssidan och laddar sedan ner från EasyEDA PCB-beställningssidan.
Gå nu till JLCPCB.com och klicka på Citera nu eller knappen, så kan du välja antalet PCB du vill beställa, hur många kopparlager du behöver, PCB-tjockleken, kopparvikt och till och med PCB-färgen, som ögonblicksbild visas nedan:
När du har valt alla alternativ klickar du på "Spara i kundvagn" och sedan kommer du till sidan där du kan ladda upp din Gerber-fil som vi har laddat ner från EasyEDA. Ladda upp din Gerber-fil och klicka på "Spara i kundvagn". Och slutligen klicka på Kassan säkert för att slutföra din beställning, så får du dina PCB några dagar senare. De tillverkar kretskortet till mycket låg hastighet, vilket är $ 2. Deras byggtid är också mycket mindre vilket är 48 timmar med DHL-leverans på 3-5 dagar, i princip får du dina PCB inom en vecka efter beställning.
Efter några dagars beställning av PCB fick jag PCB-proverna i fin förpackning som visas på bilderna nedan.
Och efter att ha fått dessa bitar har jag lödt alla nödvändiga komponenter över kretskortet.
På min PCB gjorde jag ett trubbigt misstag genom att välja fel fotavtryck för 8 * 8 Display-modulen, varför jag var tvungen att använda ett Perf-kort för att montera skärmen som visas på bilden. Men nu uppdateras fotavtrycket i kretskortet och du kan enkelt beställa det korrigerade kretskortet och montera skärmmodulen.
Arbeta med Bluetooth-skyltskärm:
När du är redo med hårdvaran antingen genom att skaffa kretskortet eller göra anslutningen på brädbrädet, använd Arduino-programmet som ges i slutet av sidan och ladda upp det till ditt Arduino-kort. Den android ansökan APK-fil finns också ovan, använda den och installera programmet på din favorit Android-enhet.
Slå på hårdvaran och sök efter HC-05-enhetsnamnet på din telefon för att para ihop den. Pass-nyckeln är som standard 1234. Öppna sedan programmet som vi just installerade. Applikationen ska visa " ansluten till HC-05 " högst upp på skärmen, då kommer du att kunna röra vid lysdioden på skärmen och märka att samma lysdiod tänds också på kortet.
Du kan också stänga av all lysdiod genom att trycka på återställningsknappen och välja att slå på eller av en viss lysdiod genom att trycka på växlingsknappen. Som standard släcks vilken LED som du trycker på. Det fullständiga arbetet med projektet finns i videon nedan. Om du har problem med att få det att fungera använder du kommentarfältet nedan eller skriver på våra forum för mer teknisk hjälp. Hoppas du förstod handledningen och tyckte om att bygga den.