Inhoudsopgave:
- Benodigdheden
- Stap 1: Begrijp het systeem
- Stap 2: De WebSocketServer schrijven
- Stap 3: Stel een protocol van seriële opdrachten op
Video: Vrolijk me op! een realtime platformonafhankelijke LED-stripbediening - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
Vrolijk me op! is een systeem dat ik heb uitgevonden om een RGB LED-Strip in realtime aan te sturen, terwijl de kosten laag en de prestaties hoog blijven.
De server is geschreven in Node.js en daardoor platformonafhankelijk.
In mijn voorbeeld gebruik ik een Raspberry Pi 3B voor langdurig gebruik, maar mijn Windows-pc voor demonstratie en debugging.
De 4-pins-strip wordt bestuurd door een Arduino Nano-type-board, dat serieel gegeven commando's uitvoert om PWM-signalen naar drie transistors te sturen die de +12VDC in de corresponderende kleur-pin van de strip schakelen.
De LightMeUp! systeem controleert ook zijn eigen temperatuur, zodra het boven de 60°C (140°F) is, zet het twee 12VDC computerventilatoren aan die in de behuizing zijn ingebouwd, om zichzelf af te koelen om de levensduur van het circuit te verlengen.
Een ander kenmerk van LightMeUp! is om een Bombay-Sapphire Gin-fles te verlichten, maar dat is niet de focus van deze Instructable.
Veel plezier met lezen:)
Benodigdheden
- Arduino Nano (of een andere ATmega328/hogere microcontroller)
- Raspberry Pi 3 Model B met Node.js geïnstalleerd (of een andere computer)
- 12V RGB 4-pins ledstrip
- 12V 3A voeding
- Startkabels (man-man als je een breadboard gebruikt natuurlijk)
- Broodplank (optioneel)
- 2 12V DC computerventilatoren (optioneel)
- 3x TIP120 Darlington Transistor met koellichaam (4 als je koelventilatoren wilt toevoegen)
- 2 status-leds rood en groen (optioneel)
- 6, 7K NTC temperatuurgebaseerde weerstand + 6, 7K weerstand (optioneel)
- USB-Mini naar USB 2.0 datakabel (voor de Raspberry Pi om te communiceren met de Arduino)
- Extern gevoede USB-Hub (optioneel, alleen voor Raspberry Pi)
Stap 1: Begrijp het systeem
Vrolijk me op! is gebaseerd op zeer eenvoudige elektronische schakelingen.
We hebben een soort computer (in dit geval een Raspberry Pi) die serieel communiceert met ons microcontrollerbord. Dit bord voert vervolgens specifieke seriële commando's uit zoals "RGB(255, 255, 255)" die onze LED-Strip wit zouden maken.
Zodra we onze drie waarden voor ROOD, GROEN en BLAUW hebben die nodig zijn voor onze 4-pins LED-strip, voeren we analogWrite (pin, waarde) uit om onze TIP120-transistor te voorzien van een PWM-signaal.
Dit PWM-signaal stelt de transistor in staat om de corresponderende kleurpen waarop de collector is aangesloten, in een bepaalde mate of volledig aan / uit te schakelen. Ja, veel "to"s:)
Door de drie transistoruitgangen te mengen met de kleurpinnen van de LED-strips, kunnen we in principe elke gewenste kleur creëren!
Met dit inzicht kunnen we nu de grootste uitdaging van dit project aanpakken, de websocketserver en de seriële verbinding met onze Arduino.
Stap 2: De WebSocketServer schrijven
Nu moeten we een specifiek soort webserver maken, waarmee we gegevens heen en weer kunnen overbrengen zonder één keer te vernieuwen om een realtime LED-stripbesturing te bereiken.
Houd er rekening mee dat realtime communicatie natuurlijk onmogelijk is, er zal altijd minstens een paar milliseconden vertraging mee gemoeid zijn, maar voor het menselijk oog is het aanzienlijk als realtime.
Dit kan eenvoudig worden bereikt door de socket.io-bibliotheek te gebruiken als u Node.js gebruikt zoals ik deed. Je kunt natuurlijk altijd je favoriete programmeertaal aanhouden.
We hebben te maken met een websocket-verbinding waarmee we invoergegevens, zoals de kleur waarop u de LED-strip wilt instellen, of statusgegevens zoals "LED AAN" bidirectioneel kunnen overbrengen zonder te vernieuwen.
Een andere zeer belangrijke functie die de server zou moeten hebben, maar niet hoeft, is een eenvoudige login. Ik heb mijn login gebaseerd op een eenvoudig veld voor gebruikersnaam en wachtwoord. Deze stukjes informatie worden vervolgens gepost naar de /login-route van de server, die vervolgens de gebruikersnaam vergelijkt met een lijst met gebruikers (.txt-bestand) en het bijbehorende wachtwoord in zijn SHA256-gecodeerde vorm. Je wilt toch niet dat je buren knoeien met je ledstrip terwijl jij geniet van je favoriete drankje op je meest comfortabele stoel?
Nu komt het hart van de server, de seriële communicatie.
Uw server moet serieel kunnen communiceren - in Node.js kan dit worden bereikt door een poort te openen met behulp van de "serialport" -bibliotheek. Maar bepaal eerst de naam van uw arduino-poort op uw computer die de server host. Afhankelijk van uw besturingssysteem zullen de poorten verschillende namen hebben, bijv. op Windows worden deze poorten "COMx"-poorten genoemd, terwijl ze op Linux "/dev/ttyUSBx" heten, waarbij x het nummer van de USB-poort is.
Stap 3: Stel een protocol van seriële opdrachten op
In de bovenstaande afbeelding ziet u de eigenlijke Arduino IDE-code die verantwoordelijk is voor de RGB-besturing. Het doel van deze stap is om je zelfgeschreven server en Arduino-bord succesvol met elkaar te laten praten.
Nadat u uw seriële poort met succes hebt geopend, moet u opdrachten naar het bord kunnen sturen dat voor uw wensen zorgt. Als we bijvoorbeeld een vinger boven de kleurkiezer op de HTML-webpagina trekken, moet de RGB-code naar de server worden gestuurd die deze vervolgens naar uw Arduino stuurt, zodat deze de ingestelde waarden verwerkt.
Ik heb jscolor gebruikt, ze hebben een geweldige implementatie van een kleurselectie-element van hoge kwaliteit, dat eigenaar is van een evenement genaamd "onFineChange", waarmee je procesgegevens van de kleurkiezer kunnen worden gewijzigd zodra de waarden veranderen.
Aanbevolen:
Een e-mailmelding ontvangen wanneer een kanaal op ThingSpeak een tijdje niet is bijgewerkt: 16 stappen
Ontvang een e-mailmelding als een kanaal op ThingSpeak een tijdje niet is bijgewerkt: Achtergrondverhaal Ik heb zes geautomatiseerde kassen verspreid over Dublin, Ierland. Door een op maat gemaakte app voor mobiele telefoons te gebruiken, kan ik op afstand de geautomatiseerde functies in elke kas volgen en ermee communiceren. Ik kan de win handmatig openen / sluiten
Automatisch een programma starten bij het aansluiten van een laptop op een dockingstation: 5 stappen
Een programma automatisch starten wanneer u een laptop op een dockingstation aansluit: deze instructie gaat over het uitvoeren van een programma of een toepassing wanneer u uw laptop op een dockingstation aansluit. In dit voorbeeld gebruik ik Lenovo T480 Windows 10
Een condensator of een inductor meten met een mp3-speler: 9 stappen
Een condensator of een inductor meten met een mp3-speler: Hier is een eenvoudige techniek die kan worden gebruikt om de capaciteit en inductantie van een condensator en inductor nauwkeurig te meten zonder dure apparatuur. De meettechniek is gebaseerd op een gebalanceerde brug en kan eenvoudig worden geconstrueerd uit onde
Een lijn toevoegen aan een Boombox met een cassettespeler: 5 stappen
Een line-in toevoegen aan een boombox met een tapespeler: ** Zoals bij alle instructables, neem je je item / gezondheid / wat dan ook in eigen handen wanneer je het probeert! Houd rekening met hoge spanningen op het hoofdvoedingsbord, de hete soldeerbout, enz. Voorzichtig en geduldig zijn, zal u succes brengen. **NS
SCARA-robot: leren over voorwaartse en inverse kinematica!!! (Plot Twist Leer hoe u een realtime-interface maakt in ARDUINO met PROCESSING !!!!): 5 stappen (met afbeeldingen)
SCARA-robot: leren over voorwaartse en inverse kinematica!!! (Plot Twist Leer hoe u een realtime interface maakt in ARDUINO met PROCESSING !!!!): Een SCARA-robot is een zeer populaire machine in de industriewereld. De naam staat voor zowel Selective Compliant Assembly Robot Arm als Selective Compliant Articulated Robot Arm. Het is in feite een robot met drie vrijheidsgraden, de eerste twee displ