Inhoudsopgave:

Bluetooth-gestuurde Arduino LED-salontafel - Ajarnpa
Bluetooth-gestuurde Arduino LED-salontafel - Ajarnpa

Video: Bluetooth-gestuurde Arduino LED-salontafel - Ajarnpa

Video: Bluetooth-gestuurde Arduino LED-salontafel - Ajarnpa
Video: LED Light Coffee Table Bluetooth Speaker -- From Apollo, original manufacturer for bluetooth speaker 2024, Juli-
Anonim
Bluetooth-gestuurde Arduino LED-salontafel
Bluetooth-gestuurde Arduino LED-salontafel
Bluetooth-gestuurde Arduino LED-salontafel
Bluetooth-gestuurde Arduino LED-salontafel
Bluetooth-gestuurde Arduino LED-salontafel
Bluetooth-gestuurde Arduino LED-salontafel
Bluetooth-gestuurde Arduino LED-salontafel
Bluetooth-gestuurde Arduino LED-salontafel

Dit was mijn eerste echte Arduino-project en het is ook mijn eerste instructable, dus wees aardig in de opmerkingen:) Ik wilde proberen de vragen te beantwoorden die me wat tijd kostte om erachter te komen en gedetailleerde instructies te geven, dus als je erg bekend bent met hobbyist elektronica, dan kun je waarschijnlijk elke stap doornemen, maar als dit nieuw voor je is, zou het je alles moeten bieden wat je nodig hebt.

Het doel van het project was om een scherm van 12 x 12 pixels in een salontafel te creëren dat via bluetooth kan worden bediend en kan worden gebruikt als een koele kamerverlichting/spelletjes erop.

Voor deze build heb je deze onderdelen nodig:

  1. Arudino Mega (of kloon) -
  2. Arduino micro SD Card Shield (ik heb deze gebruikt en de headers erop gesoldeerd) -
  3. Micro SD-kaart - Elk formaat is voldoende, maar het moet worden geformatteerd in FAT32
  4. 5m WS2812B adresseerbare ledstrip -
  5. HC05 Bluetooth-module -
  6. 5 V 6 Amp voeding - (ik heb deze gebruikt, maar er zijn honderd andere op ebay)
  7. Ikea LACK tafel (de klassieker voor hobbyisten) -
  8. Toegang tot een lasersnijder voor 3 mm multiplex (of een zeer vaste hand). Lasergesneden onderdelen kunt u op verschillende plaatsen online bestellen (bijvoorbeeld
  9. Witte spuitverf
  10. 2 m aluminium T-profiel (1 1/2 x 1 1/2 x 1/8) -
  11. 450 mm x 450 mm x 6 mm glazen blad (de meeste lokale glaszetters kunnen aangepaste stukken voor je snijden, maar ik heb deze jongens gebruikt
  12. 1 x 100 micro Farad-condensator
  13. 2 x 1k weerstand
  14. 1 x 2k weerstand
  15. 1 x lineaire draaipotentiometer
  16. Verschillende jumpers (waarschijnlijk een dozijn tijdens de prototyping)
  17. Ten minste drie kleuren relatief dikke kabels om te solderen (dit kan een aantal grote stromen trekken, dus ik zou geen jumperdraden aanbevelen voor de stroomvoorziening)
  18. Stripboard voor het interne circuit (maak je geen zorgen, het is heel eenvoudig)

Benodigde gereedschappen:

  1. Een soldeerbout + soldeer
  2. Een paar knipsels
  3. Draadstrippers
  4. Een Dremel of een soort decoupeerzaag om de tafel uit elkaar te hakken. Ik gebruikte dit https://www.amazon.co.uk/gp/product/B0078LENZC/ref… met spiraalvormige snijbits

Stap 1: Eerste test en lay-out

Eerste test en lay-out
Eerste test en lay-out
Eerste test en lay-out
Eerste test en lay-out
Eerste test en lay-out
Eerste test en lay-out

De eerste aanloophaven is om de LED-strip op de gewenste lengte te knippen. Deze LED-strip is heel gemakkelijk te gebruiken omdat hij slechts 3 pinnen heeft en de Arduino het echte werk laat doen. Ik sneed de spoel in 12 secties van elk 12 LED's, zoals weergegeven in de afbeelding en legde ze op de achterkant van de tafel om me te helpen visualiseren waar ik hiermee naartoe ging.

Ik had toen nog een paar LED's over, dus ik verbond ze met een Arduino UNO. Ik moest testen of ze werkten (je kunt ook de Mega gebruiken die in het projectoverzicht wordt genoemd). Om dit te doen heb ik enkele mannelijke naar mannelijke headers geknipt en gestript en gesoldeerd aan de pads aan het uiteinde van de LED-strip. Op de WS2812-strip die ik heb gebruikt, is de 5V-draad rood, aarde is wit en gegevens zijn groen. Let op de richtingspijl die op de WS2812B-strip is afgedrukt, zodat u niet probeert gegevens in de verkeerde richting te verzenden. Ik verbond de 5V-lijn met 5V op de Arduino, Ground naar GND en Data naar pin 6 met een 1k-weerstand in serie. Onthoud dat het Fritzing-schema van de WS2812B-LED's iets anders is dan degene die ik had geleverd - het volstaat om te zeggen dat de gegevens zijn aangesloten op pin 6, Gnd is aangesloten op aarde en 5 is aangesloten op 5V.

Met zo weinig LED's (5 of zo) zou de Arduino in orde moeten zijn om de stroom te leveren; je kunt er echter niet veel van stroom voorzien, want wanneer ze volledig wit zijn, trekken de LED's elk tot 60 mA en kunnen ze de Arduino snel overweldigen.

Ervan uitgaande dat je de Arduino IDE hebt (als je deze niet downloadt en installeert), stel dan het chipsettype in op de Arduino die je hebt en stel de COM-poort in op degene die een Arduino laat zien in de opties. Download nu de FastLED-bibliotheek en installeer deze (https://fastled.io/). Open het voorbeeld van striptest.h en stel het aantal LED's in de schets in op het aantal dat je hebt (ik had er nog 5 over). Druk op verifiëren en (ervan uitgaande dat alles goed gaat) upload het naar de Arduino en je zou de lampjes op de kleine strip moeten zien aangaan en van kleur veranderen.

Stap 2: De matrix en stripboard solderen

De matrix en stripboard solderen
De matrix en stripboard solderen
De matrix en stripboard solderen
De matrix en stripboard solderen
De matrix en stripboard solderen
De matrix en stripboard solderen

Nu is het tijd om te beginnen met het maken van de LED-matrix.

Knip 11 korte stukken van elk van de drie kleuren draad die je hebt. Zorg ervoor dat ze lang genoeg zijn om van het einde van de ene strip naar het begin van de volgende te gaan. Bij het uitleggen van de LED-strips moet je ervoor zorgen dat de datastroompijl een slang volgt. Zodra dit is aangelegd, soldeert u elke led-rij voorzichtig aan de volgende, zoals weergegeven in de afbeelding. Dit gaat aanzienlijk makkelijker als je voor elk type aansluiting dezelfde kleur gebruikt.

Nu, meer solderen, we moeten het stripboard maken dat de stroom van de netvoeding aankan. Ik heb twee kolommen op het stripboard aan elkaar gesoldeerd voor zowel de 5V als de GND, zodat het de stroom beter aankan. Zie het bijgevoegde schema voor het circuit dat u moet maken. Zorg er bij het solderen van de condensator voor dat het negatieve uiteinde is bevestigd aan de GND-rail, niet aan de 5V-rail. Zodra het stripboard klaar is, moeten we de +VE en GND op de LED-strip aansluiten en ook de andere helft van de eerder doorgesneden jumpers gebruiken om de Arduino op de voeding en het stripboard aan te sluiten. Dit zou een goed moment zijn om het SD-breakout-bord aan de Arduino toe te voegen, zodat we er bestanden op kunnen opslaan en er later van kunnen lezen. Zodra het SD-breakoutboard op zijn plaats zit, kunnen we de 5V-rail verbinden met de Vin-pin en de GND met elke GND-pin op de Arduino.

Ten slotte kunnen we een potentiometer aansluiten op analoge ingang A0, zoals weergegeven, zodat we een manier hebben om de helderheid van de LED's te regelen.

Zodra dit allemaal is gedaan, kunnen we de striptest-schets opnieuw uploaden en het aantal LED's wijzigen in 144. Zorg ervoor dat de voeding actief is voordat u deze schets uploadt. Hopelijk moeten alle LED's oplichten in de patronen van de striptest-schets, zodat we weten dat alles werkt.

Stap 3: Integratie van Bluetooth-module

Bluetooth-module integratie
Bluetooth-module integratie

Laatste stukje bedrading nu, de HC05-eenheid wordt aangesloten op de Arduino Mega zoals weergegeven in het schema. Zorg ervoor dat de HC05-eenheid wordt aangesloten op de Rx1- en Tx1-poorten op de mega - dit maakt het veel gemakkelijker om te programmeren en vermijdt het gebruik van de "softwareserial" -bibliotheek.

NB. De HC05-eenheid neemt 5V in of 3,3V in en werkt over het algemeen op 3,3V-logica, dus ik heb hem aangesloten op de 3,3V-rail. Sommige andere instructables hebben de Tx (op Arduino) tot Rx (op HC05-eenheid) getoond met een potentieel scheidingscircuit om de 5 V-logica van de Arduino naar het oorspronkelijke niveau voor de HC05-module te kloppen. Dit is de reden dat ik de 1k en 2k weerstanden in de onderdelenlijst had staan; ik heb echter niet de moeite genomen en het lijkt perfect gelukkig op mijn tafel:)

Stap 4: Tabel hacken

Tabel hacken
Tabel hacken
Tabel hacken
Tabel hacken
Tabel hacken
Tabel hacken

Nu moeten we beginnen met het uit elkaar halen van de tafel om onze LED's en elektronica een nieuw thuis te geven.

Teken eerst een vierkant van 450 mm x 450 mm af in het midden van de bovenkant van het LACK-tafelblad. Gebruik de Dremel (of een decoupeerzaag) om het vierkant zo goed mogelijk uit te snijden om het recht te houden. Nu kunnen we de bovenkant en de kartonnen binnenstukken verwijderen, zodat u een uitgehold tafelblad overhoudt, zoals op de afbeelding. Als we de Dremel opnieuw gebruiken, kunnen we een gat boren in de hoek van de onderkant van de tafel, zodat we ergens de stroomkabel kunnen doorvoeren.

Zodra de tafel is voorbereid, kunnen we de LED's in ongeveer de juiste posities vastplakken voordat we verder gaan met de volgende stappen. Ik vond het handig om ervoor te zorgen dat de elektronica na elke stap goed was, dus probeer de striptest-schets opnieuw.

Als je eenmaal vertrouwd bent, zit alles op de goede plek, dan kun je een paar kleine gaatjes boren om de voeding met kleine bouten in de tafelrand te monteren. Ik heb ervoor gekozen om de Arduino buiten de tafel te monteren, zodat ik gemakkelijk kan herprogrammeren als ik dat wil, maar hij is ondersteboven op de onderkant van de tafel gemonteerd en is niet gemakkelijk zichtbaar. Ook heb ik de potmeter door de onderkant van de tafel gemonteerd zodat de helderheidsregeling er mooi en professioneel uitziet.

Stap 5: Lasergesneden onderdelen

Lasergesneden onderdelen
Lasergesneden onderdelen
Lasergesneden onderdelen
Lasergesneden onderdelen
Lasergesneden onderdelen
Lasergesneden onderdelen

Nu moeten we de lasergesneden delen introduceren die de matrix van vierkanten vormen, zodat we pixels hebben gedefinieerd. Ik heb de dxf-bestanden bijgevoegd voor de lasergesneden delen die de houten matrix vormen en ook afbeeldingen ervan, zodat u weet hoe ze eruit moeten zien. Ze zijn gemaakt van twee afzonderlijke stukken, één gaat langs elke rij LED's en de andere kruist ze. De delen die elkaar kruisen, hebben een opening van 10 mm hoog aan de onderkant om de bedrading door te laten. Deze opening kan worden verkleind tot 5 mm omdat ik een klein beetje lichtlek van de ene pixel naar de andere lijk te hebben.

11 exemplaren van beide onderdelen moeten met een laser uit 3 mm multiplex worden gesneden en vervolgens in elkaar worden gezet om er zeker van te zijn dat ze goed passen. Als je tevreden bent, haal je de matrix weer uit elkaar en spuit je hem wit om de reflecterende eigenschappen van de tafel te verbeteren. Als ze droog zijn, zet je ze weer in elkaar en plaats je ze over de LED's. Het kan wat moeilijker zijn om ze na het spuiten in elkaar te passen, omdat ze nu een beetje dikker zijn, maar maak je geen zorgen, tik ze gewoon voorzichtig op hun plaats voordat je de matrix in de tafel legt.

Stap 6: Glediator

Glediator
Glediator
Glediator
Glediator

Nu we alle hardware hebben geïmplementeerd, kunnen we naar software gaan kijken. Ik heb de software Glediator gedownload en geïnstalleerd om animaties voor de LED's te maken (https://www.solderlab.de/index.php/software/glediat…). De installatie-instructies kunnen een beetje onhandig zijn, maar volg de website op de voet en het zou goed moeten komen. We moeten ook de schets downloaden van de Glediator-website om te uploaden naar de Arduino (https://www.solderlab.de/index.php/downloads/catego…). We gebruiken WS2812B-LED's, dus zorg ervoor dat u de juiste downloadt (WS2812 Glediator-interface). Zodra je deze schets hebt geopend, verander je de NUMBER_OF_PIXELS in 144 en upload je deze naar de Arduino.

Zodra Glediator is geïnstalleerd, kunnen we beginnen met het spelen van animaties op de tafel. Ten eerste moeten we de matrixgrootte instellen op 12 x 12 in de Glediator-software en ook het uitvoertype instellen op HSBL - Horizontal Snake (beginnend) Linksonder, omdat dit de manier is waarop we de LED's hebben aangesloten en de kleurvolgorde wijzigen in GRB (hiervoor nemen de LED's gegevens op). Open op het tabblad output de COM-poort en de LED-matrix zou het LED-patroon op het middelste scherm van de Glediator-software moeten weergeven.

U kunt animaties maken en deze opnemen in een.dat-bestand dat we kunnen uploaden naar de SD-kaart, zodat uw favoriete animaties op tafel kunnen worden weergegeven zonder dat er een pc hoeft te worden aangesloten. Er zijn een paar tutorials online hierover (https://hackaday.io/project/5714-glediator-from-sd… bijvoorbeeld). Ik heb een paar verschillende codebronnen aangepast om hiervoor te werken, dus mijn code zou in orde moeten zijn.

Zorg er bij het opslaan van uw animaties voor dat u ze opslaat als "animX.dat", waarbij X een willekeurig getal is van 1-15. Je zou meer kunnen implementeren door een paar regels in mijn code te veranderen.

NB- Bij het opnemen van Glediator-bestanden bevat de software een bug waardoor deze niet meer weet hoe u de LED-strip hebt aangesloten. In mijn code heb ik een eenvoudige functie geïmplementeerd om de volgorde van even genummerde rijen om te keren, wat betekent dat alles correct wordt weergegeven

Stap 7: Bluetooth seriële bediening

Bluetooth seriële bediening
Bluetooth seriële bediening
Bluetooth seriële bediening
Bluetooth seriële bediening

Het opzetten van bluetooth-communicatie tussen een smartphone en de Arduino bleek verrassend lastig, maar er zijn een paar eenvoudige stappen die dit veel gemakkelijker zullen maken. Allereerst moet je een app voor je smartphone downloaden. Ik gebruikte https://play.google.com/store/apps/details?id=com…. maar er is waarschijnlijk een iPhone-equivalent (waarvoor je moet betalen;p)

Het is je misschien opgevallen dat de HC05-module een kleine schakelaar heeft. Als je het opstart met deze schakelaar ingedrukt, gaat het naar de AT-modus, wat betekent dat je parameters erop kunt opvragen en ze desgewenst kunt wijzigen.

Upload de bijgevoegde schets naar de Mega en stel de seriële snelheid op uw pc in op 9600. Koppel de stroom naar de HC05-eenheid los en druk vervolgens op de knop erop wanneer u deze opnieuw aansluit. Het knipperen moet nu ongeveer eens per twee seconden zijn - nu staat de HC05 in AT-modus.

Nu kunnen we in de seriële monitor opdrachten naar de HC05 sturen en zijn reactie zien. Typ "AT" en druk op verzenden en je zou "OK" moeten zien terugkomen op de seriële monitor - nu weten we dat hij luistert. De bluetooth-naam van het apparaat kan worden gewijzigd door "AT+NAME=XYZPQR" in te typen, waarbij XYZPQR is hoe u de module wilt laten heten. Ik noemde de mijne LightWave. De standaard toegangscode voor de Bluetooth-module is 1234 (of 0000), maar dit kan ook worden gewijzigd door bijvoorbeeld "AT+PSWD=9876" te verzenden. Ten slotte kunnen we de communicatiesnelheid van de HC05 wijzigen door "AT+UART=38400" te sturen. Dit is de standaardwaarde voor de meeste HC05-modules, maar de mijne was anders ingesteld, dus het is een goede gewoonte om dit voor de zekerheid in te stellen. Er zijn hier veel meer details over deze opdrachten: https://www.itead.cc/wiki/Serial_Port_Bluetooth_M… en er zijn ook instructies over deze stap die veel meer details bevatten https://www.instructables.com/id/Modify -De-HC-05-…

Nu kunnen we proberen om via een bluetooth-apparaat opdrachten naar de module te sturen. Koppel eerst de stroom naar de HC05-module los en sluit deze vervolgens weer aan. Je zou moeten zien dat de knippersnelheid van de LED veel sneller is - dit betekent dat hij nu wacht om te koppelen. Open op uw smartphone de Arduino Bluetooth Controller-app en zoek de HC05-module. Als u de naam niet hebt gewijzigd, wordt deze waarschijnlijk HC05 of iets dergelijks genoemd. Wanneer u de opties krijgt over hoe u verbinding wilt maken, selecteert u Terminal-modus. Probeer nu wat nummers en tekst te verzenden en kijk of de seriële monitor op de pc meldt dat ze zijn ontvangen. Hopelijk hebben ze dat, zodat we verder kunnen gaan, zo niet, dan zijn er genoeg instructables die je een paar hints kunnen geven (https://www.instructables.com/id/Bluetooth-Hc-05-W… bijvoorbeeld).

Het laatste wat je hier moet doen, is de controller-ingangen toewijzen aan nummers waarmee de Arduino iets kan doen. Ik heb de volgende waarden gebruikt:

Omhoog = 1, Omlaag = 2, Links = 3, rechts = 4, Begin = 5, Selecteer = 6.

Stap 8: Spelletjes

Spellen
Spellen

Ik neem geen krediet voor de spelcode. Ik heb de broncode gebruikt die hier te vinden is https://github.com/davidhrbaty/IKEA-LED-Table geschreven door davidhrbaty. Ik heb het echter op een paar verschillende manieren aangepast:

  1. Ik heb een functie voor helderheidsbeperking toegevoegd op basis van de waarde van de potentiometer, zodat we de helderheid kunnen wijzigen
  2. Ik heb het stenenspel verwijderd omdat ik het niet kon compileren
  3. Ik heb de kleurcodering van de tetris-blokken veranderd, zodat ze allemaal verschillende kleuren hadden
  4. Ik heb het menu opnieuw besteld
  5. Ik heb een optie geïmplementeerd om animaties van de SD-kaart af te spelen
  6. Ik heb highscore-tracking en een highscore-weergave-optie toegevoegd in het menu

De bijgevoegde code zou gewoon meteen moeten werken, maar als dat niet het geval is, zou mijn suggestie zijn om games te verwijderen die foutmeldingen lijken te veroorzaken en de code opnieuw te verifiëren totdat je weet waar het probleem zit. Voeg vervolgens geleidelijk meer complexiteit toe.

De oorspronkelijke auteur van deze code heeft fantastisch werk geleverd door iets te bouwen dat echt modulair is en gemakkelijk kan worden toegevoegd. Het is niet zo moeilijk om extra gevallen toe te voegen om meer functies aan de tabel toe te voegen.

De opties in het menu zijn:

  1. SD-kaart - Speelt animaties af die op de SD-kaart zijn opgeslagen
  2. Tetris
  3. Slang
  4. Pong
  5. Dobbelstenen - Willekeurige getalgenerator tussen 1 en 6
  6. Animatie - Een verzameling animaties uit de FastLED-bibliotheek
  7. Sterrenanimatie - BEWERKEN - Ik heb nu Conway's Game of Life geïmplementeerd in plaats van deze animatie
  8. Regenboog animatie
  9. Hoge scores - Toont hoge scores voor tetris en slang

Voordat je begint met spelen, moet je twee txt-bestanden op de SD-kaart maken, een met de naam "teths.txt" en de andere met de naam "snkhs.txt". Zet in beide bestanden het nummer 0 en sla ze vervolgens op in de hoofdmap van de SD-kaart. Dit zijn de trackingbestanden met de hoogste score en worden bijgewerkt telkens wanneer de hoogste score wordt verslagen. Als u het wilt resetten, wijzigt u de waarden gewoon terug naar 0 op een pc.

Zodra je het LED_table-programma naar de Arduino hebt geüpload, kun je de seriële monitor openen en zou je de bluetooth-commando's moeten kunnen zien terwijl je ze verzendt - op deze manier weet je dat alles goed werkt.

Stap 9: Geniet ervan

Genieten van
Genieten van
Genieten van
Genieten van
Genieten van
Genieten van

Het enige wat je hoeft te doen is de hoofd-LED-tafelcode uploaden naar de Mega en daarna genieten van het spelen en me je hoogste scores laten weten!

Ik wacht nog steeds op de onderdelen voor het tafelblad (Aluminium T-sectie en glas) maar de tafel functioneert nu prima en ik kan er games op spelen.

Laat het me weten als je opmerkingen, bewerkingen hebt of fouten ontdekt die ik heb gemaakt.

Stap 10: bijwerken

Image
Image
Update
Update
Update
Update

Nu is het helemaal klaar!:)

Ik heb eindelijk de aluminium T-sectie voor de randen in ontvangst genomen en heb mijn best gedaan om de verbinding in verstek te maken (het blijkt dat 45 graden een van de moeilijkere hoeken is), maar het is bijna volledig vierkant. Voor de bovenkant besloot ik een dikkere glasplaat te nemen (425 x 425 x 8 mm) en ik mat de onderkant met Rustoleum glass frosting spray. Ik heb gewone kit (siliconenafdichtmiddel) gebruikt om de bovenkant en de hoekstukken te verbinden, zodat er indien nodig een beetje flex in de verbindingen zit.

Bijgewerkte update. Nu heb ik in Conway's Game of Life optie 7 in het menu toegevoegd in plaats van de sterrenanimatie zoals ik die nooit heb gebruikt. Als je niet weet wat dit spel is, Google het dan, maar eigenlijk is het een spel voor nul spelers dat evolutie laat zien op basis van drie eenvoudige regels. Conway's levensspel

Bijwerken^3. Ik heb enkele wijzigingen aangebracht in de code zodat deze nu een bugfix bevat met betrekking tot het dimmen van rode LED's en ook een kerstboomanimatie bevat als optie 11 in het menu. Genieten van.

Aanbevolen: