Indholdsfortegnelse:

IoT Moon Lamp: 5 trin
IoT Moon Lamp: 5 trin

Video: IoT Moon Lamp: 5 trin

Video: IoT Moon Lamp: 5 trin
Video: ECOLOR RGB Smart Moon shape 🌙 Table Lamp | App control | Music Mode | Unboxing & review 2024, November
Anonim
IoT Moon Lamp
IoT Moon Lamp

I denne instrukser viser jeg, hvordan man konverterer en simpel batteridrevet LED -lampe til en IoT -enhed.

Dette projekt omfatter:

  • lodning;
  • programmering af ESP8266 med Arduino IDE;
  • laver Android -applikation med MIT App Inventor.

Formålet med interessen er denne måneformede lampe, jeg købte fra gearbest. Men virkelig denne vejledning kan tilpasses enhver lav DC spændingsenhed (vekselstrømforsynede enheder kræver ekstra kredsløb).

Forbrugsvarer

  1. Android smartphone (android versioner 7-9 testet).
  2. Loddeværktøjer.
  3. Prototyping PCB (protoboard).
  4. ESP-12E-kort (eller andet devboard med ESP8266 mikrokontroller).
  5. USB-seriel konverter til programmering.
  6. Flere forskellige værdier af passive komponenter (modstande og kondensatorer).

(Valgfrit. Se afsnittet "Blokdiagram")

  1. 3.3V@500mA LDO IC.
  2. 3.3V-5V logisk niveauomformerkort.
  3. 5V DC strømforsyning.

Trin 1: Idé

Ide
Ide

Månelampen drives af en Li-ION 18650-celle, og den har 3 driftstilstande:

  • af;
  • brugervejledning;
  • auto.

I manuel tilstand styres lampen med trykknap, hvert tryk ændrer LED -lysets tilstand (blå tændt, orange tændt, både tændt, slukket), lysintensiteten ændres, mens der trykkes på knappen. I autotilstand ændres LED -lyset ved at trykke på eller ryste selve lampen.

Jeg besluttede mig for at tilføje ESP8266 til at fungere som en webserver, der lytter efter anmodninger og følgelig simulerer knappetryk. Jeg ville ikke bryde den originale lampefunktionalitet, ville bare tilføje yderligere kontrolfunktioner over WiFi, så jeg valgte ESP for at simulere knaptryk i stedet for direkte at styre lysdioder. Også dette tillod mig at minimalt interagere med originale kredsløb.

Da prototypen var udført kørte den ~ 80mA konstant fra batteriet i slukket tilstand (~ 400mA ved fuld lysstyrke). Standby -strøm er høj, fordi ESP8266 fungerer som en server og altid er forbundet til WiFi og lytter efter anmodninger. Batteriet var opbrugt efter halvanden dag kun i slukket tilstand, så senere besluttede jeg at bruge lamper USB -opladningsport til at forsyne al elektronik fra ekstern 5V strømforsyning og droppede batteri sammen (men dette er valgfrit).

Trin 2: Blokdiagram

Blokdiagram
Blokdiagram

I blokdiagram kan du se, hvilke kredsløb der vil blive tilføjet, og hvordan eksisterende kredsløb vil blive ændret. I mit tilfælde fjernede jeg batteriet fuldstændigt og kortsluttede batteriopladernes IC -input med output (igen, dette er valgfrit). Gennemsigtige blokke i diagrammet angiver komponenter, der er omgået (selvom trykknappen stadig fungerer som oprindeligt tiltænkt).

Ifølge dokumentation tolererer ESP8266 kun 3,3V, men der er masser af eksempler på, at ESP8266 fungerer helt fint med 5V, så logisk niveauomformer og 3,3V LDO kan udelades, men jeg blev ved best practice og tilføjede disse komponenter.

Jeg brugte 3 ESP8266 I/O -ben og ADC -pin. En digital udgangsstift er til simulering af knaptryk, to digitale indgange er til at detektere, hvilken farve lysdioder der er tændt (ud fra dette kan vi finde ud af, i hvilken tilstand MCU er, og hvilken tilstand der er næste efter tryk på knappen). ADC -pin måler indgangsspænding (gennem en spændingsdeler), sådan kan vi overvåge det resterende batteriniveau.

Som ekstern strømforsyning bruger jeg gammel telefonoplader 5V@1A (brug ikke hurtigopladere).

Trin 3: Programmering

Programmering
Programmering
Programmering
Programmering

I en nøddeskal fungerer programmet sådan (for mere information se selve koden):

ESP8266 opretter forbindelse til dit WiFi -adgangspunkt, hvilke legitimationsoplysninger du skal indtaste i begyndelsen af koden forud for programmering, den får IP -adresse fra din routers DHCP -server, for at finde ud af IP, som du skal bruge senere, kan du kontrollere routers webgrænseflade DHCP -indstillinger eller indstille debugging flag i kode til 1, og du vil se, hvad IP ESP fik i seriel skærm (du bør reservere denne IP i dine routerindstillinger, for at ESP altid vil få samme IP ved opstart).

Når initialiseret MCU altid udfører den samme rutine for altid:

  1. Kontroller, om der stadig er forbindelse til AP, hvis ikke prøv at genoprette forbindelse, indtil det lykkes.
  2. Vent på, at klienten sender HTTP -anmodning. Når anmodning sker:

    1. Kontroller indgangsspændingen.
    2. Kontroller i hvilken tilstand lysdioder er.
    3. Match HTTP -anmodning med kendte LED -tilstande (blå tændt, orange tændt, både tændt, slukket).
    4. Simuler så mange trykknapper efter behov for at opnå den ønskede tilstand.

Jeg vil kort beskrive programmeringsinstruktioner, hvis det er første gang, du programmerer ESP8266 MCU, efter mere detaljerede instruktioner.

Du skal bruge Arduino IDE og USB-seriel interface-konverter (f.eks. FT232RL). Følg disse instruktioner for at forberede IDE.

Følg kredsløbsdiagrammet for at forbinde ESP-12E-modulet til programmering. Nogle tips:

  • brug ekstern 3.3V@500mA strømforsyning (i de fleste tilfælde er USB-seriel strømforsyning ikke nok);
  • kontrollere, om din USB-serielle konverter er 3.3V logisk niveau kompatibel;
  • Kontroller, om USB-serielle konverterdrivere er installeret korrekt (fra Windows enhedshåndtering), du kan også kontrollere, om det fungerer korrekt fra IDE, bare korte RX- og TX-ben, end fra IDE, vælg COM-port, åbn seriel skærm og skriv noget, hvis alt virker du skal se tekst, som du sender, vises i konsollen;
  • af en eller anden grund kunne jeg kun programmere ESP, da jeg først sluttede USB-seriel konverter til pc og derefter tændte ESP fra ekstern 3.3V kilde;
  • efter vellykket programmering glem ikke at trække GPIO0 højt ved næste opstart.

Trin 4: Skematisk og lodning

Skematisk og lodning
Skematisk og lodning
Skematisk og lodning
Skematisk og lodning
Skematisk og lodning
Skematisk og lodning

Følg skematisk for at lodde alle komponenter til protoboard. Som nævnt før er nogle komponenter valgfri. Jeg brugte KA78M33 3.3V LDO IC og dette logiske niveauomformerkort fra sparkfun, alternativt kan du selv lave omformer som vist i skematisk (du kan bruge enhver N-kanal mosfet i stedet for BSS138). Hvis du bliver ved med at bruge Li-ION-batteri, vil +5V strømnet være batteriets positive terminal. ESP8266 ADC referencespænding er 1V, mine valgte modstandsdelerværdier gør det muligt at måle indgangsspænding så højt som 5,7V.

Der skal være 5 tilslutninger til den originale lampe -print: +5V (eller +batteri), GND, trykknap, PWM -signaler fra lamper MCU til styring af blå og orange lysdioder. Hvis du tænder lampen fra en 5V -kilde, som jeg gjorde, vil du gerne kortslutte batteriopladere IC VCC -pin med OUTPUT -pin, på den måde vil al elektronik blive drevet direkte fra +5V og ikke fra batteriopladerens OUTPUT.

Følg det andet billede for alle loddepunkter, du skal lave på PCB -lamper.

BEMÆRKNINGER:

  1. Hvis du besluttede at kortslutte +5V med batteriopladerens IC -udgang, skal du fjerne batteriet helt, før du gør det, du vil ikke slutte +5V direkte til et batteri.
  2. Vær opmærksom på, hvilken trykknapstift du lodder ESP -udgang, fordi 2 ben på en trykknap er forbundet til jorden, og du ikke vil kortslutte, når ESP -udgangen går HØJ, bedre dobbelttjek med multimeter.

Trin 5: Android App

Android App
Android App
Android App
Android App
Android App
Android App

Android app blev lavet med MIT app opfinder, for at downloade en app og/eller klone projekt for dig selv, gå til dette link (du skal bruge en Google konto for at få adgang til den).

Ved første lancering skal du åbne indstillinger og indtaste din ESP8266 IP -adresse. Denne IP gemmes, så det er ikke nødvendigt at indtaste den igen, efter at programmet genstartes.

App testet med flere Android 9 og Android 7 enheder.

Anbefalede: