- Adafruit 5X8 NeoPixel Shield voor Arduino
- Inzicht in het communicatieproces tussen de Blynk-app en Arduino
- Componenten vereist
- Adafruit RGB LED Shield en Arduino - hardwareverbinding
- De Blynk-applicatie configureren
- Arduino-code die Adafruit WS2812B RGB LED-schild bestuurt
- De code uploaden naar het Arduino-bord
In de loop van een paar jaar worden RGB-leds elke dag populair vanwege de prachtige kleur, helderheid en verleidelijke lichteffecten. Daarom wordt het op veel plaatsen als decoratief item gebruikt, een voorbeeld kan de woning of een kantoorruimte zijn. Ook kunnen we de RGB-verlichting gebruiken in de keuken en ook in een gameconsole. Ze zijn ook geweldig in de speelkamer of slaapkamers van een kind als het gaat om sfeerverlichting. Eerder gebruikten we de WS2812B NeoPixel LED's en de ARM Microcontroller om een Music Spectrum Visualizer te bouwen, dus kijk hier eens of dat interessant voor je is.
Daarom gaan we in dit project een op Neopixel gebaseerde RGB LED-matrixschild, Arduino en Blynk-applicatie gebruiken om veel fascinerende animatie-effecten en kleuren te produceren die we kunnen besturen met de Blynk-app. Dus laten we beginnen!!!
Adafruit 5X8 NeoPixel Shield voor Arduino
Het Arduino-compatibele NeoPixel Shield bevat veertig individueel adresseerbare RGB-LED's, elk met de WS2812b-driver ingebouwd, die is gerangschikt in een 5 × 8-matrix om dit NeoPixel-schild te vormen. Meerdere NeoPixel Shields kunnen ook worden aangesloten om een groter Shield te vormen als dat een vereiste is. Om de RGB-leds aan te sturen, is een enkele Arduino-pin vereist, dus in deze tutorial hebben we besloten om pin 6 van de Arduino hiervoor te gebruiken.
In ons geval worden de LED's gevoed door de ingebouwde 5V-pin van de Arduino, wat voldoende is om ongeveer "een derde van de LED's" op volle helderheid van stroom te voorzien. Als u meer LED's van stroom moet voorzien, kunt u de ingebouwde trace afsnijden en een externe 5V-voeding gebruiken om het schild van stroom te voorzien met behulp van de externe 5V-aansluiting.
Inzicht in het communicatieproces tussen de Blynk-app en Arduino
De 8 * 5 RGB LED-matrix die hier wordt gebruikt, heeft veertig individueel adresseerbare RGB-LED's op basis van de WS2812B-driver. Het heeft 24-bits kleurcontrole en 16,8 miljoen kleuren per pixel. Het kan worden aangestuurd met de "One wire control" -methode. Dat betekent dat we de hele LED-pixel kunnen besturen met een enkele controlepin. Tijdens het werken met de LED's heb ik de datasheet van deze LED's doorgenomen waar ik vind dat het bedrijfsspanningsbereik van het schild 4 V tot 6 V is en het stroomverbruik 50 mA per LED bij 5 V met rood, groen, en blauw bij volledige helderheid. Het heeft een omgekeerde spanningsbeveiliging op de externe voedingspennen en een resetknop op het schild om de Arduino te resetten. Het heeft ook een externe voedingsingangspen voor LED's als er niet voldoende stroom beschikbaar is via interne circuits.
Zoals weergegeven in het bovenstaande schematische diagram, moeten we de Blynk-applicatie downloaden en installerenop onze smartphone waar de parameters zoals kleur, helderheid kunnen worden geregeld. Als er na het instellen van de parameters wijzigingen in de app plaatsvinden, gaat het naar de Blynk-cloud waar onze pc ook is verbonden en klaar om de bijgewerkte gegevens te ontvangen. De Arduino Uno is verbonden met onze pc via USB-kabel met een communicatiepoort geopend, met deze communicatiepoort (COM-poort) kunnen gegevens worden uitgewisseld tussen de Blynk-cloud en Arduino UNO. De pc vraagt met constante tijdsintervallen gegevens op van de Blynk-cloud en wanneer bijgewerkte gegevens worden ontvangen, draagt deze deze over naar Arduino en neemt het door de gebruiker gedefinieerde beslissingen, zoals het regelen van de RGB-ledhelderheid en kleuren. Het RGB LED-schild wordt op de Arduino-LED geplaatst en via een enkele datapin verbonden voor communicatie, standaard is deze verbonden via de D6-pin van Arduino.De seriële gegevens die van Arduino UNO worden verzonden, worden naar de Neopixel shied gestuurd, die vervolgens wordt gereflecteerd op de LED-matrix.
Componenten vereist
- Arduino UNO
- 8 * 5 RGB LED Matrix-afscherming
- USB A / B-kabel voor Arduino UNO
- Laptop / pc
Adafruit RGB LED Shield en Arduino - hardwareverbinding
De WS2812B Neopixel LED's hebben drie pinnen, één is voor data en nog twee wordt gebruikt voor stroom, maar dit specifieke Arduino-shield maakt de hardwareaansluiting heel eenvoudig, het enige wat we hoeven te doen is de Neopixel LED-matrix bovenop Arduino UNO te plaatsen. In ons geval wordt de LED gevoed vanuit de standaard Arduino 5V Rail. Na het plaatsen van het Neopixel Shield ziet de opstelling er als volgt uit:
De Blynk-applicatie configureren
Blynk is een applicatie die over Android- en IOS- apparaten kan draaien om alle IoT-apparaten en apparaten met onze smartphones te bedienen. Allereerst moet een grafische gebruikersinterface (GUI) worden gemaakt om de RGB LED-matrix te besturen. De applicatie stuurt alle geselecteerde parameters van de GUI naar de Blynk Cloud. In het ontvangergedeelte hebben we Arduino aangesloten op de pc via een seriële communicatiekabel. Daarom vraagt de pc gegevens op uit de Blynk-cloud en deze gegevens worden naar Arduino gestuurd voor de nodige verwerking. Laten we dus aan de slag gaan met het instellen van de Blynk-applicatie.
Download vóór de installatie de Blynk-applicatie van de Google Play Store (IOS-gebruikers kunnen downloaden van de App Store). Meld u na de installatie aan met uw e-mailadres en wachtwoord.
Een nieuw project aanmaken:
Na een succesvolle installatie, open je de applicatie, en daar krijgen we een scherm met een optie " New Project ". Klik erop en het zal een nieuw scherm openen, waar we de parameters zoals projectnaam, bord en verbindingstype moeten instellen. Selecteer in ons project het apparaat als " Arduino UNO " en het verbindingstype als " USB " en klik op " Maken".
Na de succesvolle creatie van het project, zullen we een authenticatie-ID ontvangen in onze aangetekende post. Bewaar de authenticatie-ID voor toekomstig gebruik.
De grafische gebruikersinterface (GUI) maken:
Open het project in Blynk, klik op het "+" teken waar we de widgets zullen krijgen die we in ons project kunnen gebruiken. In ons geval hebben we een RGB-kleurkiezer nodig die wordt vermeld als "zeRGBa", zoals hieronder wordt weergegeven.
De widgets instellen:
Nadat we de widgets naar ons project hebben gesleept, moeten we nu de parameters instellen die worden gebruikt om de RGB-kleurwaarden naar Arduino UNO te sturen.
Klik op ZeRGBa, dan krijgen we een scherm met de naam ZeRGBa setting. Stel vervolgens de Output-optie in op " Merge " en stel de pin in op "V2", zoals weergegeven in de onderstaande afbeelding.
Arduino-code die Adafruit WS2812B RGB LED-schild bestuurt
Nadat de hardware-verbinding is voltooid, moet de code worden geüpload naar Arduino. De stap voor stap uitleg van de code wordt hieronder weergegeven.
Neem eerst alle vereiste bibliotheken op. Open Arduino IDE, ga dan naar het tabblad Sketch en klik op de optie Inclusief bibliotheek-> Beheer bibliotheken . Zoek vervolgens naar Blynk in het zoekvak en download en installeer vervolgens het Blynk-pakket voor Arduino UNO.
Hier wordt de “ Adafruit_NeoPixel.h ” -bibliotheek gebruikt om de RGB LED Matrix te besturen. Om het op te nemen, kunt u de Adafruit_NeoPixel- bibliotheek downloaden via de gegeven link. Als je dat eenmaal hebt, kun je het opnemen met de optie ZIP-bibliotheek opnemen.
#define BLYNK_PRINT DebugSerial #include #include
Vervolgens definiëren we het aantal LED's dat nodig is voor onze LED-matrix, ook definiëren we het pincode dat wordt gebruikt om de LED-parameters te regelen.
#define PIN 6 #define NUM_PIXELS 40
Vervolgens moeten we onze knipperende authenticatie-ID in een auth- array plaatsen, die we eerder hebben opgeslagen.
char auth = "HoLYSq-SGJAafQUQXXXXXXXX";
Hier worden seriële softwarepinnen gebruikt als debugconsole. Dus de Arduino-pinnen worden hieronder gedefinieerd als foutopsporingsserie.
# omvatten
In de setup wordt seriële communicatie geïnitialiseerd met de functie Serial.begin , wordt blynk verbonden met Blynk.begin en met pixels.begin (), de LED Matrix wordt geïnitialiseerd.
ongeldige setup () { DebugSerial.begin (9600); pixels.begin (); Serial.begin (9600); Blynk.begin (Serial, auth); }
Binnen de loop () hebben we Blynk.run () gebruikt , dat controleert op inkomende commando's van blynk GUI en de bewerkingen dienovereenkomstig uitvoert.
leegte lus () { Blynk.run (); }
In de laatste fase moeten de parameters die vanuit de Blynk-applicatie zijn verzonden, worden ontvangen en verwerkt. In dit geval werden de parameters toegewezen aan een virtuele pin "V2" zoals eerder besproken in de setup-sectie. BLYNK_WRITE- functie is een ingebouwde functie die wordt aangeroepen wanneer de status / waarde van de bijbehorende virtuele pin verandert. we kunnen code binnen deze functie uitvoeren, net als elke andere Arduino-functie.
Hier wordt de BLYNK_WRITE- functie geschreven om te controleren op inkomende gegevens op virtuele pin V2. Zoals te zien is in de sectie Blink-instellingen, zijn de kleurpixelgegevens samengevoegd en toegewezen aan de V2-pin. We moeten dus ook weer de-merge na het decoderen. Om de led-pixelmatrix te besturen, hebben we alle drie de afzonderlijke kleurpixelgegevens nodig, zoals rood, groen en blauw. Zoals weergegeven in de onderstaande code, werden drie indexen van de matrix gelezen als param.asInt () om de waarde van Rode kleur te krijgen. Evenzo werden alle andere twee waarden ontvangen en opgeslagen in 3 individuele variabelen. Vervolgens worden deze waarden toegewezen aan de Pixel-matrix met behulp van de functie pixels.setPixelColor , zoals weergegeven in de onderstaande code.
Hier wordt de functie pixels.setBrightness () gebruikt om de helderheid te regelen en wordt de functie pixels.show () gebruikt om de ingestelde kleur in de matrix weer te geven.
BLYNK_WRITE (V2) { int r = param.asInt (); int g = param.asInt (); int b = param.asInt (); pixels.clear (); pixels.setBrightness (20); voor (int i = 0; i <= NUM_PIXELS; i ++) { pixels.setPixelColor (i, pixels.Color (r, g, b)); } pixels.show (); }
De code uploaden naar het Arduino-bord
Eerst moeten we de POORT van de Arduino in de Arduino IDE selecteren, daarna moeten we de code uploaden naar Arduino UNO. Noteer na een succesvolle upload het poortnummer dat zal worden gebruikt voor het instellen van onze seriële communicatie.
Zoek hierna de scriptmap van de Blynk-bibliotheek op uw pc. Het wordt geïnstalleerd wanneer u de bibliotheek installeert, de mijne was in, "C: \ Users \ PC_Name \ Documents \ Arduino \ libraries \ Blynk \ scripts"
In de scriptmap zou er een bestand met de naam “blynk-ser.bat” moeten staan. Dit is een batchbestand dat wordt gebruikt voor seriële communicatie en dat we moeten bewerken met kladblok. Open het bestand met kladblok en verander het poortnummer in uw Arduino-poortnummer dat u in de laatste stap hebt genoteerd.
Sla het bestand na het bewerken op en voer het batchbestand uit door erop te dubbelklikken. Dan moet u een venster zien zoals hieronder weergegeven:
Opmerking: als u dit hierboven weergegeven venster niet kunt zien en u wordt gevraagd om opnieuw verbinding te maken, kan dit te wijten zijn aan de fout bij het verbinden van de pc met het Arduino-schild. Controleer in dat geval uw Arduino-verbinding met de pc. Controleer daarna of het COM-poortnummer wordt weergegeven in de Arduino IDE of niet. Als het de geldige COM-poort toont, is het klaar om verder te gaan. U moet het batchbestand opnieuw uitvoeren.
Laatste demonstratie:
Nu is het tijd om het circuit en zijn functionaliteit te testen. Open de Blynk-applicatie en open de GUI en klik op de knop Afspelen. Daarna kunt u elk van uw gewenste kleuren selecteren om op de LED Matrix te reflecteren. Zoals hieronder wordt getoond, heb ik in mijn geval de rode en blauwe kleur geselecteerd, deze wordt weergegeven op de matrix.
Evenzo kunt u ook proberen om verschillende animaties te maken met behulp van deze LED-matrices door de codering een beetje aan te passen.