Indholdsfortegnelse:

Wifi -synkroniserede lamper: 10 trin (med billeder)
Wifi -synkroniserede lamper: 10 trin (med billeder)

Video: Wifi -synkroniserede lamper: 10 trin (med billeder)

Video: Wifi -synkroniserede lamper: 10 trin (med billeder)
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Juli
Anonim
Image
Image

Et projekt for nogen, der lyser op i dit liv …

For 2 år siden, som julegave til en langdistanceven, skabte jeg lamper, der ville synkronisere animationer via internetforbindelse. I år, 2 år senere, oprettede jeg denne opdaterede version med den viden, der blev opnået fra de ekstra år med elektronikdabbling. Denne version er meget enklere, uden at der kræves eksterne skærme eller tastaturer (og kun en simpel chip, ikke to!) Ud over en let telefon -app -grænseflade (takket være Blynk IoT) i stedet for websted og fysisk blødt potentiometer.

Der er knapper i appen, der giver mere fleksibilitet i, hvilke animationer du vil tilføje: Der er 3 skydere til RGB -kontrol, foruden en widget i bunden, der giver dig mulighed for at vælge farver fra et kort (så du ikke har for at finde ud af, hvad RGB -tallene er for den farve, du ønsker). Der er også forudindstillede knapper til glad, vred, trist og "meh", så du nemt kan formidle dine følelser til den anden person i form af lampeanimationer, for de gange du har noget, du vil tale om, men ikke vil at genere personen med masser af tekster.

Ingen elektronikoplevelse? Ingen problemer! Der er kun 3 hovedtrin: tilslutning af hardwaren, upload af koden og oprettelse af Blynk -appen. Husk dog: hvad der kan gå galt, vil gå galt. Tilføj altid masser af tid til fejlfinding.

Hvis du bruger præcis det, jeg gjorde, og uploader præcis det, jeg har, skal du have det godt, selvom du aldrig har arbejdet med elektronik. Selvom du foretager justeringer af projektet, bør gennemlæsning af denne vejledning give dig en fornemmelse af, hvad du skal ændre, hvis du bruger dette som en vejledning. Omkostningerne blev også holdt så lave som muligt: den samlede pris, hvis du absolut ikke har nogen af komponenterne, er ~ $ 40 maks. Pr. Lampe.

Trin 1: Materialer

Dette er de materialer, du har brug for til en lampe (gang med antallet af lamper, du gerne vil lave):

  • 1x NodeMCU ESP8266 chips ($ 7 hver, $ 13 for 2)
  • 1x protoboard eller breadboards (~ $ 1 hver)
  • loddejern og lodde
  • 1x neopixelringe ($ 10 hver, $ 8 hvis du køber fra adafruit.com)
  • 1x 5V strømforsyning (mindst 500mA output, så 1A eller 2A vil være perfekt) med microUSB -forbindelse (eller tøndejack, men køb en tønde jack -konverter til bare ledninger) ($ 8 hver)
  • Ikke strengt nødvendigt, men stærkt anbefalet til kredsløbsbeskyttelse (få cent hver, men du skal muligvis købe i bulk)

    • 1x 300-500Ohm modstand (jeg brugte 200Ohm og kom dog afsted med det)
    • 1x 100-1000uF kondensator
  • elektrisk ledning (eller du får disse båndtyper) (enkelt kerne er bedst) (et par cent for 5 )

    Du behøver ikke så meget ledning; kun 5 "vil være nok

  • Du kan gøre hvad du vil for den udvendige lampe (ovenfor er dele kun til elektronikken). Jeg gik med laserskåret træ og akryl, med skitsebogspapir til lysdiffusion.

Jeg vedhæftede Amazon -links ovenfor for de billigste muligheder, jeg kunne finde (pr. 20. december 2018), men du kan helt sikkert finde komponenter billigere fra forskellige steder. Jeg er stadig universitetsstuderende, så jeg havde adgang til kondensatorer og modstande: Prøv at spørge til venner, der arbejder med elektronik. Neopixels kan købes billigere fra adafruit.com, hvis du har andre ting, du vil bestille derfra (for at spare forsendelsesomkostninger..). Du kan også få modstande og kondensatorer fra DigiKey eller Mouser til meget billigere, selvom forsendelsen kan være højere. For strømforsyningerne vil en gammel telefonoplader være fin (eller bare microUSB -kablet, hvis du vil tilslutte lampen til en USB -port i stedet for en stikkontakt). Hvis du absolut ikke har nogen af disse komponenter, vil din pris være max ~ $ 40 pr. Lampe (og mindre pr. Lampe, jo mere du laver, da du normalt vil købe disse komponenter i løs vægt: protoboard kan f.eks. Komme i pakker med 5). Jeg havde tingene liggende, så det var bare $ 5 for mig (ja, jeg er en hoarder med venner, der tilfældigvis slap mange ting - plus jeg genbrugte neopixelringe fra sidste gang).

Arduino -kode og Adobe Illustrator -filer (til laserskåret boks) er vedhæftet nedenfor.

Trin 2: Oversigt: Sådan fungerer lamperne

Okay, så når du først har materialerne, undrer du dig måske over, hvordan de alle kommer sammen. Her er en forklaring:

NodeMCU ESP8266 er en mikrokontroller, der fungerer på 3,3V logik (i modsætning til 5V logik som de fleste Arduinos). Den indeholder en indbygget wifi -chip og GPIO -ben til brug af digitale og analoge signaler med komponenter, du tilslutter. Du bruger en af stifterne, der er i stand til at udsende PWM -signaler (se pinout her: enhver pin med ~ ved siden af kan generere de analoge signaler i modsætning til digitale signaler på kun 0 eller 1, LOW eller HIGH) til at styre neopixel ring. For at programmere det kan du nemt gøre dette via Arduino IDE, der kan downloades let her. (bemærk, jeg leverede Adafruit -guiden til deres ESP8266 HUZZAH i stedet for den NodeMCE, vi har. Guiden er stadig gældende for begge bestyrelser, men du skal bare vælge et andet bord til upload i Arduino.)

Det er neopixelringen, der skaber lampens farvede animationer. Den har adresserbare lysdioder i ringformationen, som hver især kan styres individuelt. Det kører normalt ved hjælp af 5V logik, hvilket normalt kræver niveauforskydning (forklaret her), men heldigvis er Adafruit neopixel biblioteket blevet opdateret til at understøtte ESP8266. Selvom 5V -komponenter ikke reagerer lige så pålideligt på 3,3V -signaler, fungerer det rimeligt pålideligt, når neopixel drives af en lavere spænding (altså 3,3V i stedet for 5V). Se detaljer om dette her.

Med hensyn til forbindelsen fra mikrokontrolleren til neopixel er det sikrest at sætte en 300-500 Ohm modstand mellem neopixelens datalinje og den GPIO-pin, du sender signaler fra (for at beskytte lysdioderne mod pludselige overspændinger). Du bør også tilføje en 1000uF kondensator, der er forbundet parallelt med neopixelringens strøm- og jordledninger: dette er for at give beskyttelse mod pludselige strømstød. Læs dette for at få flere bedste fremgangsmåder ved brug af disse LED -ringe (og her for den fulde brugervejledning af Adafruit).

Til grænseflade med Blynk IoT -platformen har Arduino et bibliotek til brug af Blynk. Du kan læse dokumentationen her for at lære mere om brug af Blynk generelt. For at komme i gang var dette en praktisk instruerbar specielt til NodeMCU ESP8266 og Blynk.

Bare rolig, hvis nogle af disse ting ikke giver mening! De fremtidige trin beskriver præcis, hvad du skal uploade, downloade, forbinde osv. Læs alt igennem (ja, det er en lang vejledning, men i det mindste skumme), før du begynder at bygge !!! Det hjælper dig med at finde ud af, hvordan tingene hænger sammen frem for bare blindt at følge instruktionerne.

Trin 3: Hardware

Billede
Billede
Billede
Billede

Til at begynde med skal du tilslutte din hardware som vist på billederne ovenfor. Neopixel skal komme til dig med huller til lodning på ledninger. Du skal først lodde ledninger til hullerne mærket PWR (strøm), GND (jord) og IN (input til analoge signaler), før du slutter ledningerne til ESP8266s 3.3V-, jord- og D2 -ben (se dette for pinout). Som tommelfingerregel er rød ledning til strøm, sorte ledninger angiver jord, og jeg kan godt lide at bruge blå til neopixelens datalinje (forbundet til D2 -stiften, som er i stand til PWM -signaler).

Sørg for at tilslutte kondensatoren i den rigtige retning: kondensatoren har polaritet, hvilket betyder, at det betyder noget, hvilken side du tilslutter parallelt med neopixelens jord og strøm. Hvis du ser på din 1000uF kondensator, er der en grå strimmel ned ad siden, der angiver den negative side af kondensatoren (du kan også se den i fritz -diagrammet ovenfor). Dette er den side, der skal forbindes parallelt med neopixelens jord. Modstanden har ikke polaritet, så du behøver ikke bekymre dig om retningen.

Med hensyn til at skabe en fast forbindelse ville den bedste måde være at bruge protoboard, så du kan lodde komponenterne sammen frem for bare at tilslutte ledningerne til et brødbræt og risikere, at de kommer ud. Jeg brugte et brødbræt, fordi jeg havde kort tid, men igen er protoboard at foretrække. Det fine ved brødbrættet er, at det har en klæbrig bagside, så jeg har lige fjernet klistermærket for at sætte alt fast på min lampefod. Til protoboardet kan du skrue det fast i basen ved hjælp af de 4 huller, de normalt har i hjørnerne, eller bare tape/lime det fast.

Trin 4: Arduino -kode

. Ino Arduino -koden er vedhæftet i bunden af dette trin til reference. Det ser langt og ordentligt ud, men bare rolig: meget af det indebærer kommentarer for at forklare alt. Jeg kan også godt lide at springe linjer over for at tilføje mellemrum til differentierende sektioner, hvilket får koden til at se længere ud.

Hoveddele, der skal redigeres, så de passer til din kode:

  • Blynk -autorisationstoken/-kode (e -mailet til dig fra Blynk, når du opretter en enhed i appen: se næste side for mere information)

    Du skal bruge en separat autorisationskode for hver lampe

  • wifi -domænenavn (mellem de to apostrofer ")
  • wifi -adgangskode (mellem de to apostrofer ")

Bortset fra det, så længe du bruger min nøjagtige Blynk -app og samlede hardware (så brug min nøjagtige Blynk -appkonfiguration i det næste trin, har 12 lysdioder i din neopixelring, brug ESP8266s D2 -pin til neopixel datalinje osv.), du skal bare uploade koden nøjagtigt til din ESP8266. Bemærk, at du skal bruge forskellige autorisationskoder til hver af dine lamper! Se næste side for at tilføje separate enheder og få disse koder. Glem ikke også at matche wifi -domænet og adgangskoden til lampen, hvis de er forskellige steder. Du vil sandsynligvis redigere andre ting afhængigt af hvilke animationer og farver du vil have, eller måske endda hvilke pins du bruger. Jeg har kommenteret koden for at hjælpe dig med at ændre ting efter behov. (læs også Adafruit Neopixel bibliotekets prøveeksempel kode for ideer igennem).

Før du kan bruge koden, skal du downloade de biblioteker, som koden bruger (dem øverst i koden). Læs igennem og følg denne vejledning fra Adafruit (start ved "Brug af Arduino IDE") for hvad du skal gøre for at konfigurere ESP8266. Ja: du skal installere CP2104 -driveren, tilføje til de ekstra Board Manager -webadresser i Arduino -præferencer, installere ESP8266 -pakken (gå til Skitse> Inkluder bibliotek> Administrer Libaries … og søg efter det, du har brug for - se billedet herunder), og installer også de andre biblioteker øverst i koden til neopixel, Blynk osv.

Billede
Billede

For at uploade kode til ESP8266-chippen fra Arduino IDE skal du vælge det korrekte kort (NodeMCU ESP8266 ESP-12E), flashstørrelse, port osv. (Se billede herunder). Den korrekte port SLAB_USBtoUART vises ikke, medmindre du tilslutter ESP8266 til din computer. Men når den er tilsluttet, og du er sikker på, at du har tilsluttet dit kredsløb korrekt i det foregående trin, kan du gå videre og trykke på pilen i øverste venstre hjørne for at uploade din kode til tavlen. Ja, det tager længere tid end din normale upload-til-Arduino-proces. Du vil se det kompilere koden langsomt, derefter en række orange perioder ……………… som den uploades (vises i Arduino -vindues nederste sorte del).

Billede
Billede

Nu er her en opdeling af koden. Det første afsnit indeholder biblioteker, som funktionerne vil bruge og initialiserer globale variabler (variabler, der kan tilgås af enhver funktion i koden). BLYNK_WRITE (virtualPin) -delene styrer, hvad der gøres, når widgetsne i Blynk -appen (som er forbundet til virtuelle pins) skiftes (dvs. tændes/slukkes, skyderpositioner ændres). Der er 7 af disse til de 7 virtuelle pins, jeg bruger i min Blynk -app. Det næste afsnit af void colorWipe (), regnbue () osv. Er at definere funktioner, som resten af koden bruger. Disse funktioner er for det meste lånt fra Adafruit's eksempelkode på neopixelbiblioteket (specifikt strandtest). De sidste dele er din standard void setup () og void loop (), der går i alle Arduino -koder: void setup () definerer operationer, der kun sker én gang, når kortet er tændt, og void loop () definerer operationer, som kortet konstant sløjfer igennem, når den er tændt. void loop () definerer for det meste, hvilken animation lampen vil gå igennem baseret på variablen "animation", som jeg har oprettet.

Trin 5: Blynk IoT

Blynk IoT
Blynk IoT
Blynk IoT
Blynk IoT
Blynk IoT
Blynk IoT

Jeg valgte Blynk frem for Adafruit IO til denne version 2.0 lampe. Adafruit IO er fantastisk, men der var to ting, som Blynk havde i modsætning til Adafruit IO: en app -grænseflade og muligheden for at acceptere "blank" som et wifi -kodeord (så hvis du opretter forbindelse til en offentlig wifi, der ikke har en adgangskode, kan du lade password -sektionen være tom, dvs. bare ""). Min ven går ofte på hospitaler for behandling, så jeg ville have denne mulighed i tilfælde af, at hun har overnatninger, men vil have et virtuelt selskab: hun ville stadig kunne oprette forbindelse til wifi på hospitalet.

Start med at gå til Google Play -butikken eller iPhone's App Store for at downloade Blynk -appen til din telefon. Opret en konto gratis, og lav et nyt projekt. I øverste højre hjørne ser du en QR -kodescannerknap: Brug den til at scanne QR -koden på billedet herunder for at kopiere alle mine knapper og sådan til det nye projekt. Se denne side for mere om, hvordan dette fungerer ("del dit projekts konfiguration"). Denne side indeholder også nyttige oplysninger til senere deling af projektet med din lampes modtager.

Billede
Billede

Selvfølgelig kan du tilpasse knapperne, som du vil! Stryg til højre for at afsløre, hvilke widgets du kan tilføje. Du bør dog forstå, hvilke muligheder du har for widgets: Jeg har vedhæftet billeder (med noter på hvert billede) af knappernes indstillinger og forslag til brug af dem øverst i dette trin.

I øvrigt koster tilføjelse af widgets point i appen, og alle starter med et bestemt beløb gratis. Tilføjelse af ekstra point koster penge ($ 2 for 1000 ekstra point). Jeg endte med at tilføje 1000 point for at få min konfiguration til at fungere, men du kan simpelthen fjerne en knap eller to for at få det til at fungere med det gratis beløb.

I projektet skal du trykke på møtrikknappen øverst til venstre (ved siden af den "afspil" trekantede knap) for at få adgang til projektindstillinger.

Billede
Billede

Du skal tilføje enheder til projektet for at få autorisationstokener/koder for hver lampe, som du ændrer i Arduino -koden som tidligere nævnt. Tryk på højre pil på Enheder for at oprette nye enheder. Når du opretter en enhed, ser du dens token som på billedet herunder (sløret i rødt).

Billede
Billede

Når du har koden, skal du huske at indtaste det korrekte token, wifi -domæne og adgangskode i Arduino -koden for hver lampe. Du skal sandsynligvis indtaste dine egne wifi -legitimationsoplysninger først for at sikre, at hver lampe fungerer korrekt og fejlsøge efter behov, men derefter opdatere med din modtagers wifi -domæne og adgangskode, før du sender den ud.

Sørg for at tænde appen for faktisk at bruge dine knapper! Når appen er "tændt" (tryk på afspilningsknappen i øverste højre hjørne, ved siden af møtrikknappen for indstillinger), bliver baggrunden ensfarvet i stedet for det stiplede gitter, du ser, når du er i redigeringstilstand. Hvis du har uploadet Arduino -koden til din ESP8266 og tilsluttet den, skal chippen automatisk oprette forbindelse til wifi. Tjek dette ved at trykke på det lille mikrocontrollerikon i øverste højre hjørne (kan kun ses, når appen er tændt): du skal se en liste over enheder, du har oprettet til projektet, og hvilke der er online.

Billede
Billede

Trin 6: Lampedæksel

Til den egentlige lampe gik jeg med laserskåret træ (1/8 "birkekrydsfiner) og akryl (gennemsigtig, 1/4", til bundfladen, så lyset skinner igennem). Træet havde udskæringer, der var unikke for min ven og mig, men jeg vedhæftede Adobe Illustrator -filer til puslespilets ansigtsdesign (laver en 4 "terning), som du kan skære ud, hvis du kan lide formen (filer er vedhæftet dette trin, Advarsel: bundfladen skal være 1/4 "tyk for at stykkerne kan passe sammen i disse filer. Hvis du vil lave en anden størrelse eller have alt med en tykkelse, skal du bruge makercase.com til at generere filer til laserskæring af en kasse.

Billede
Billede
Billede
Billede

Glem ikke at efterlade et hul, hvor strømkablet kan komme ud af lampen. Jeg glemte at inkludere det, men kunne bruge trådskærere til at skære et lille trekantet hul gennem 1/8 træet.

Trin 7: Deling af lamper med modtagere

Når du sender lampen til din modtager, skal de også downloade Blynk -appen til deres telefon fra Google Play Store eller Apples App Store for at styre lampen. Du kan enten få dem til at oprette en separat konto eller bruge dit samme login. Hvis de opretter en separat konto, kan du dele en særlig QR -kode, som andre kan bruge til 1000 point (IKKE den, jeg delte i det forrige Blynk -trin; denne QR -kode giver tilladelse til at bruge den samme app som dig, men de kan ' t ændre nogen af knapindstillingerne eller konfigurationen - læs igennem denne side, specifikt "del adgang til din hardware"). Du skal sørge for at tænde appen (tryk på afspilningsknappen i øverste højre hjørne, så du kan se mikrokontroller -knappen i stedet for knappen med møtrikindstillinger) for at andre kan bruge appen.

Jeg kom omkring de 1000 point ved at give min ven mine loginoplysninger, så hun kunne logge ind på appen via min konto. Hvis du sender disse lamper til folk, der ikke er så gode til elektronik (ældre mennesker generelt), vil jeg anbefale at bruge $ 2 dollars på at oprette et delt link, så de ikke har adgang til din konto og kan ' t ødelægge dine appindstillinger. Med denne QR -mulighed (1000 point omkostninger) har de stadig en klon af din app, men kan ikke ændre noget.

Trin 8: Brug af appen

Nu, hvordan kan du bruge appen til at styre lamperne?

Tænd og sluk lampen med den store tænd / sluk -knap (rød når den er slukket, grøn når den er tændt). Hvis lampen er slukket, slukker den automatisk alle andre knapper i appen og sætter RGB til 0, 0, 0. Når du trykker på for at tænde lampen igen, starter lampen med pulserende hvid.

Der er de tre RGB -skydere øverst til højre for at styre RGB -farveoutput i lampernes blink. De opdaterer farven i realtid, mens du justerer skyderne. Du kan også justere farven med det zebraformede farvekort nederst i appen. Dette er forbundet til RGB -skyderne, så skyderne opdaterer baseret på hvilken farve du vælger på kortet og omvendt. Dette kort er nyttigt, hvis du især har en nuance, men ikke kender de relevante RGB -talværdier.

Der er knapper i venstre side af appen med forudindstillede animationer til glad, vred, trist og meh. "Glad" får lampen til at blinke gennem regnbuens farver, "vred" får lampen til at blinke mellem rødt og gult, "trist" får lampen til at blinke gennem blå og himmelblå, og "meh" får lampen til at skabe en roterende regnbue hjul. Jeg valgte regnbuens dem til glade og meh, da de mere sandsynligt er standard, dagligdags animationer. Hver gang du trykker på en af de forudindstillede knapper, vil alle andre knapper blive slukket (dvs. hvis du var på "glad", men trykker på "vred", ville den lykkelige knap automatisk slukke efter et par sekunder). Bemærk, at det vil tage længere tid at skifte fra de glade og meh -animationer, fordi lampen skal igennem den fulde regnbue -animation, før den kan ændre animation. Hvis du slukker en af de forudindstillede knapper, blinker lampen som standard tilbage til at blinke, uanset hvilken farve RGB -skyderne svarer til. Hvis du har en af de forudindstillede animationer slået til, men ændrer RGB -skyderne, sker der ikke noget: den forudindstillede animation dominerer.

Inden du tager lampen ud, skal du trykke på tænd / sluk -knappen i appen som en god tommelfingerregel. Tryk derefter på strømmen i appen, når du sætter lampen i igen. Juster IKKE appknapperne, når nogen af lamperne ikke er tændt eller forbundet til wifi (ikke verdens ende, men det vil ødelægge lampen operation). Se næste trin for hvorfor …

Trin 9: ** ADVARSEL FOR RIGTIG BETJENING **

Der er et smuthul i driften af lamperne. Blynk -grænsefladen giver mig ikke mulighed for selektivt at styre, hvad der kan skiftes, når noget andet er tændt eller slukket, men jeg sætter betingelser i koden, så hvis du skifter noget, der ikke skal skiftes, når lampen er slukket eller en anden animation er tændt, vil skiftet fortryde sig selv: det tog meget fejlfinding, men det fungerer temmelig godt (demonstreret i videoen ovenfor: appen afviser ændringer, der opstår, når lampen er slukket, og hvis de forudindstillede animationer er tændt, er der ændringer til skyderne påvirker ikke animationen, før den forudindstillede knap er slukket)!

Den ene tilbageværende faldgrube er, at hvis du skifter ting i appen, når chippen ikke er forbundet til internettet, fungerer denne automatiske "fortrydelses" -funktion ikke, og lampen følger ikke, hvad appen kommandoer. Når du tænder lampen, afspejler den ikke det, du laver nøjagtigt (uanset hvad, starter lampen med hvidt blink, når du tænder). For at løse dette skal du bare trykke på den store tænd/sluk -knap: en strømcyklus nulstiller alt i appen, så lampen fungerer som forventet.

Lang historie kort: Når du starter lampen, skal du bare lave en strømcyklus for tænd / sluk -knappen i appen for at nulstille alt. Bare gør dette, hvis du nogensinde tager stikket ud af lampen eller bruger appen, når lampen ikke er tilsluttet (eller hvis lampen pludselig ikke reagerer ordentligt, selvom du giver den tid til at reagere, måske hvis din wifi tilfældigt afbrydes)

Trin 10: Færdig

Og det er en wrap! Det er en dejlig gave til alle, du deler et langdistanceforhold med: lav en til dine forældre, inden du tager på college eller flytter til en anden stat for dit nye job, lav en til dine bedsteforældre, når du har mindre tid til at besøge dem, lav en til at holde dit SO -selskab på arbejde osv.

Her er nogle ekstra variationer, du kan gøre:

  • Du kan blinke gennem flere farver (rød orange gul) i stedet for den falmede pulserende jeg har

    • Har farvekontrol til de flere blink (første rød, anden orange, tredje gul) i stedet for bare at blinke lyse og svage versioner af samme nuance
    • Til det ville du tilføje et separat farvekort eller et sæt skyder til styring af de farver, som hver animation cykler igennem (så i stedet for altid rødorangul, kan du styre den individuelt, så du kan få blågrøn hvid, grøn lilla blå osv.)
  • Der er andre animationstyper, du kan prøve i Adafruit Neopixel strandtest -eksempelkoden, f.eks. TheaterChase -indstillingen.
  • Hvis du vil tilføje et højttalerkort, kan du også have en musikindstilling til dine lamper. Måske få dem til at spille forskellig musik til forskellige lejligheder. Eller i stedet for musik, stemmeoptagede beskeder.

God fornøjelse med at tilpasse lamperne! Send mig en besked med spørgsmål eller kommentarer.

Anbefalede: