Indholdsfortegnelse:
Video: MQTT stemningslys med ESP32: 4 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:25
Jeg havde været fristet i et stykke tid til at hoppe på LED -vognen, så jeg løb ud og hentede en LED -strimmel til at lege med. Jeg endte med at lave disse stemningslys. De kan styres med MQTT, hvilket gør det muligt at tilføje alle slags smarts.
Dette er et godt weekendprojekt, hvis du ikke har andet at gøre, og ønsker at få dine hænder beskidte ved at lave noget.
Bemærk, at formålet med denne Instructable er at dokumentere mit projekt og dele ideer med andre, og ikke nødvendigvis at give solide instruktioner og metoder. Med det sagt, læs videre!
Forbrugsvarer
Elektronik:
- 1x ESP32 udviklingsplade
- 1x 0,96 "I2C OLED -skærm
- 1x summer
- 1x tønde jack
- 1x 12V strømforsyning (strøm afhænger af længden af din strimmel)
- 1x LM2596 bukkonverter
- 1x Common-anode RGB LED-strip
- 3x IRFZ44N MOSFET'er
- 3x BC547 transistorer
- 3x 10kΩ modstande
- 4x 100Ω modstande
- 1x prototypebord
- 4x skrueterminaler
- Mandlige og kvindelige overskrifter
- Wire (jeg brugte single-strand)
Anden hardware og værktøj:
- Dit ønskede materiale til et kabinet (jeg brugte MDF)
- Fladt, ledende materiale til berøringskontakter (jeg brugte en tynd aluminiumsplade)
- Sav, bor, sandpapir osv.
- Loddejern og venner
- Varm lim
Jeg vil på det kraftigste anbefale ikke at gå til en ESP32 med en indbygget OLED-skærm, fordi det bliver meget svært at lave en veljusteret udskæring i dit kabinet til det.
Trin 1: Elektronik
Den vedlagte skematiske viser alle de nødvendige forbindelser, undtagen berøringsindgange. Der er også et relativt vagt brødbrætdiagram, der viser, hvordan man opretter en MOSFET, hvis skematikken er utilstrækkelig.
Strøm
En LM2596 buck -konverter træder 12V ned fra strømforsyningen til 5V for ESP's VIN. Sørg for, at din strømforsyning er korrekt vurderet til længden af LED -strimmel, du bruger. Min 2 meter lange strimmel trækker lidt mere end 2 ampere.
Stifter og periferiudstyr
Fire touch pins bruges til, vel, touch input. Mit ESP32 -kort kom med et OLED -display påsat, hvis I2C -stifter var hardwired i. Dette bruger fire PWM -ben, en til hver farvekomponent (rød, grøn og blå) og en til summeren.
MOSFET forvirrer
MOSFET'er blev valgt til at håndtere de hurtige skiftetider for PWM og relativt høj strøm. Der er en MOSFET for hver farvekomponent. Jeg brugte separate NPN BJT'er (BC547) sammen med en pull-up-modstand til at drive IRFZ44N'erne, da de 3.3V digitale signaler fra ESP32 muligvis ikke var nok til at MOSFET'erne kunne lede så meget strøm som nødvendigt. Logiske niveau MOSFET'er som IRLZ44N findes, men jeg fandt ud af dem først, efter at jeg var færdig med at lodde alt op. Uanset hvad fungerer min strimmel, der tegner ~ 2A, fint.
Lodning
Skrueterminaler bruges til at forbinde til LED -strimlen og hunhoveder til at tilslutte ESP32 til, hvis jeg ville udskifte en af dem uden at aflodde ting. Lodning tog cirka to timer og var meget ligetil. Jeg gav også min LED -strip nogle længere ledninger.
Hvorfor valgte jeg ESP32
Det har WiFi og Bluetooth om bord (selvom jeg kun har brugt WiFi lige nu), og jeg havde en liggende, som jeg kløede at bruge. Berøringsindgange kom også til nytte for grænsefladen på controlleren, da de kun har brug for en ledning til en kontakt. Hvis du ville, kunne ESP32 dog let erstattes af en mikrokontroller som ESP8266.
Trin 2: Kode
Jeg brugte Arduino -værktøjssættet (faktisk Arduino -udvidelsen til VS Code:)) til at programmere dette. Der er gode selvstudier som denne om, hvordan du kommer i gang med ESP32 og Arduino IDE, hvis du ikke allerede har gjort det.
Der er fire forskellige tilstande at håndtere: statisk farve, tilfældig farve, rød advarsel og blå advarsel. Der er fire berøringsindgange til op, ned, næste og rød alarm. Touch bruger afbrydelser.
Jeg tilføjede også MQTT til værkerne, så jeg kunne styre det over WiFi. Jeg forsøger at få en fornemmelse af webappens store tre (HTML, CSS, JS), så jeg designede en webside med Star Trek-tema (men ret grim), der kommunikerer med en MQTT-mægler for at styre stemningslyset.
Hele min kode kan findes vedhæftet, sammen med et hurtigt referenceark, hvis filnavn du måske vil ændre for at gøre det til en markdown. Flyt alle filerne til en mappe med navnet "ESP32MQTTMoodLighting", før du åbner med Arduino.
Bemærk, at min kode virker, men sandsynligvis ikke er den største. Men det burde ikke være ligegyldigt, for du vil alligevel skrive din egen, ikke?:)
Trin 3: Kapsling og samling
Under lockdown var det eneste materiale, jeg kunne få fingre i, et ark med 5 mm MDF. Jeg lavede de store snit med en almindelig hacksav, og gav alt et godt sand. Et dobbelt lag emaljemaling afsluttede hovedpreparatet.
Bagpanel
Jeg ville have, at min boks let kunne åbnes, så jeg monterede al min elektronik på bagpanelet med fire M2 PCB -standoffs. Mit perfboard havde allerede boret M2 huller i det. Mine standoffs havde små gevindstubbe i bunden, som jeg havde tænkt mig at blive fastgjort i MDF. Men jeg havde ikke en M2 bor. Så ved at markere placeringen af hvert hul brugte jeg en lille flad skruetrækker til manuelt at stikke hullerne ud. Groft, men effektivt. Diameterne på hullerne var bare lidt mindre end dem i gevindets del af standoff. Jeg vred standoffs ind og ud af hullerne et par gange, hvilket udvidede og næsten trådede dem.
Til sidst sad standoffs fast i deres huller og holdt perfboardet på plads. Fordi min MDF var meget tyk, viste intet sig til den anden side.
Jeg borede hullet til strømstikket og lavede en åbning til LED -båndtrådene til at passere igennem, lige nedenfor hvor mine skrueterminaler var placeret.
Frontpanel
OLED Display Cutout
Jeg startede min udskæring til OLED med et par starthuller og lagde dem i størrelse. Det endte med at blive meget vildt og forkert justeret. Ikke dobbeltkontrol af målinger har muligvis spillet en rolle i det, men spar dig selv nogle problemer ved ikke at bruge et udviklingsbræt med en indbygget OLED. Det er meget lettere at bare montere skærmen til dit hul.
Stik
Jeg lavede et stik ud af nogle mandlige og kvindelige overskrifter. Den ene ende blev fastgjort til ledningerne forbundet til berøringskontakterne på frontpanelet, mens den anden side havde ledninger, der kørte til ESP's berøringsindgange. Dette var for at frontpanelet kunne fjernes helt fra bagsiden, hvis det var nødvendigt, uden at forstyrre loddeled. Hvis du monterer noget andet på dit frontpanel, kan du også lave et stik til det.
Tryk på puder
Berøringskontakterne var lavet af en aluminiumsplade. Jeg skar den for at få de fire nødvendige pads, og kontrollerede, at der ikke var nogen hakkede kanter. Jeg borede derefter huller i frontpanelet, lige stort nok til en ledning. For at lade loddemateriale klæbe til puderne ridsede jeg en lille del af den ene side op med sandpapir for at fjerne det oxiderede lag og gav det derefter en hurtig aftørring for at fjerne eventuelle partikler. Kørte hver ledning gennem det tilsvarende hul i frontpanelet, lodde jeg hver enkelt til dens pude. Sørg for, at din lodning ikke skaber for stor en bule på bagsiden, da dette ikke tillader, at puden sidder i plan med panelet.
Til sidst tilføjes lidt varm lim på bagsiden af hver pude og skubbes på frontpanelet. Tilføjelse af for meget får puderne til at sidde hævet fra panelet. Ryd op for overskydende lim, der kan være skubbet ud under puderne.
Resten
Sidepanelerne er ganske ligetil. Et hurtig adgangshul til skrueterminalerne var flere problemer, end det var værd. Jeg varmlimede sidepanelerne til frontpanelet.
Velcro på to kanter holder den forreste del til bagpanelet. Mellemrummene gør det muligt for summerens lyd at undslippe. Hvis du gør et bedre stykke arbejde end mig, skal du ikke ende med noget, der ligner en 5-årig førskolehåndværk:)
Min LED -strip havde en klæbrig ryg (det er jeg sikker på også din). Jeg monterede min sådan, at lyset diffunderer fra væggen.
Trin 4: Tilslut det
Du skal nu have et komplet MQTT-kontrolleret stemningslys. Jeg har monteret mit på mit skrivebord, hvor det tilføjer et stænk af farve til undertiden ensformigt arbejde. Nat er det ideelle tidspunkt at imponere folk med det.
Jeg håber, at du nød at læse denne Instructable, og fik et par ideer til dine egne projekter. Som jeg nævnte før, er jeg en nybegynder, og dette er min første instruerbare. Jeg ville sætte pris på alle tips og kommentarer.
Anbefalede:
Musikreaktive stemningslys: 5 trin (med billeder)
Music Reactive Mood Lights: Intro and Background. Tilbage i førsteårsåret (foråret 2019) ville jeg pifte mit kollegieværelse op. Jeg kom på ideen om at bygge mine egne stemningslys, som ville reagere på den musik, jeg lyttede til på mine hovedtelefoner. Helt ærligt havde jeg ingen særlig inspiration
WIFI -kontrolleret stemningslys: 4 trin (med billeder)
WIFI -kontrolleret stemningslys: Dette er et WIFI -kontrolleret stemningslys, jeg har designet og lavet! Diameteren er 10 cm og højden er 19 cm. Jeg har designet den til "LED STRIP -hastighedsudfordringen". Denne stemning kan kontrolleres via internet på enhver enhed i dit lokale netværk! Jeg
Animeret stemningslys og natlys: 6 trin (med billeder)
Animeret stemningslys og natlys: Med en fascination, der grænser til besættelse af lys, besluttede jeg at oprette et udvalg af små modulære printkort, der kunne bruges til at oprette RGB -lysdisplays af enhver størrelse. Efter at have lavet det modulære printkort faldt jeg over tanken om at arrangere dem til en
Sådan adskilles en computer med nemme trin og billeder: 13 trin (med billeder)
Sådan adskilles en computer med nemme trin og billeder: Dette er en instruktion om, hvordan du adskiller en pc. De fleste af de grundlæggende komponenter er modulopbyggede og nemme at fjerne. Det er dog vigtigt, at du er organiseret omkring det. Dette hjælper med at forhindre dig i at miste dele og også ved at lave genmonteringen til
Interaktivt, open source stemningslys: 9 trin (med billeder)
Interaktivt, open source humørlys: Denne instruktive vil gå igennem hvordan man laver et interaktivt, multifunktionelt stemningslys. Kernen i dette projekt er BlinkM I2C RGB LED. Da jeg surfede på nettet en dag, fangede BlinkM min opmærksomhed, og jeg syntes bare, det var alt for sejt