Innholdsfortegnelse:

IoT Moon Lamp: 5 trinn
IoT Moon Lamp: 5 trinn

Video: IoT Moon Lamp: 5 trinn

Video: IoT Moon Lamp: 5 trinn
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, November
Anonim
IoT Moon Lamp
IoT Moon Lamp

I denne instruksen viser jeg hvordan du konverterer en enkel batteridrevet LED -lampe til en IoT -enhet.

Dette prosjektet inkluderer:

  • lodding;
  • programmering av ESP8266 med Arduino IDE;
  • lage Android -applikasjoner med MIT App Inventor.

Objektet av interesse er denne måneformede lampen jeg kjøpte fra gearbest. Men egentlig kan denne opplæringen tilpasses alle lavspenningsenheter (AC -drevne enheter krever ekstra kretser).

Rekvisita

  1. Android-smarttelefon (Android-versjoner 7-9 testet).
  2. Loddeverktøy.
  3. Prototyping PCB (protoboard).
  4. ESP-12E-kort (eller annet devboard med ESP8266 mikrokontroller).
  5. USB-seriell omformer for programmering.
  6. Flere forskjellige verdier av passive komponenter (motstander og kondensatorer).

(Valgfritt. Se delen "Blokkdiagram")

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

Trinn 1: Idé

Idé
Idé

Månelampen drives av en Li-ION 18650-celle og har 3 driftsmoduser:

  • av;
  • Håndbok;
  • auto.

I manuell modus kontrolleres lampen med trykknapp, hvert trykk endrer LED -lysstatus (blå på, oransje på, både på, av), lysintensiteten endres mens du holder inne knappen. I auto -modus endres LED -lyset ved å trykke på eller riste lampen selv.

Jeg bestemte meg for å legge til ESP8266 for å fungere som en webserver som lytter etter forespørsler og følgelig simulerer knappetrykk. Jeg ville ikke bryte den opprinnelige lampefunksjonaliteten, bare ville legge til flere kontrollfunksjoner over WiFi, så jeg valgte ESP for å simulere knappetrykk i stedet for direkte å kontrollere LED. Også dette tillot meg å samhandle minimalt med originale kretser.

Når prototypen var ferdig kjørte den ~ 80mA konstant fra batteriet i av -tilstand (~ 400mA på full lysstyrke). Standby -strøm er høy fordi ESP8266 fungerer som en server og alltid er koblet til WiFi og lytter etter forespørsler. Batteriet ble oppbrukt etter halvannen dag bare i av -tilstand, så senere bestemte jeg meg for å bruke lamper USB -ladeport for å drive all elektronikk fra ekstern 5V strømforsyning og droppet batteri sammen (men dette er valgfritt).

Trinn 2: Blokkdiagram

Blokkdiagram
Blokkdiagram

I blokkdiagram kan du se hvilke kretser som skal legges til og hvordan eksisterende kretser vil bli endret. I mitt tilfelle fjernet jeg batteriet helt og kortsluttet batteriladernes IC -inngang med utgang (igjen, dette er valgfritt). Transparente blokker i diagrammet indikerer komponenter som er omgått (selv om trykknappen fortsatt fungerer som opprinnelig tenkt).

I følge dokumentasjon tolererer ESP8266 bare 3,3V, men det er mange eksempler på at ESP8266 fungerer helt fint med 5V, så logisk nivåomformer og 3,3V LDO kan utelates, men jeg holdt meg til beste praksis og la til komponentene.

Jeg brukte 3 ESP8266 I/O -pinner og ADC -pinne. En digital utgangspinne er for simulering av knappetrykk, to digitale innganger er for å oppdage hvilken farge lysdioder er på (ut fra dette kan vi finne ut i hvilken tilstand MCU er og hvilken tilstand som er neste etter knappetrykk). ADC -pinnen måler inngangsspenningen (gjennom en spenningsdeler), slik kan vi overvåke gjenværende batterinivå.

Som ekstern strømforsyning bruker jeg gammel telefonlader 5V@1A (ikke bruk hurtigladere).

Trinn 3: Programmering

Programmering
Programmering
Programmering
Programmering

I et nøtteskall fungerer programmet slik (for mer informasjon, se koden selv):

ESP8266 kobles til WiFi -tilgangspunktet, hvilke legitimasjon du må angi i begynnelsen av koden før programmering, den får IP -adresse fra ruterenes DHCP -server, for å finne ut hvilken IP du trenger senere, kan du sjekke ruterenes webgrensesnitt DHCP -innstillinger eller angi feilsøkingsflagg i kode til 1, og du vil se hva IP ESP fikk i seriell skjerm (du bør reservere den IP -en i ruterinnstillingene for at ESP alltid vil få samme IP ved oppstart).

Når initialisert MCU alltid utfører samme rutine for alltid:

  1. Sjekk om du fortsatt er koblet til AP, hvis ikke, prøv å koble til igjen før du lykkes.
  2. Vent til klienten sender HTTP -forespørsel. Når forespørsel skjer:

    1. Kontroller inngangsspenningen.
    2. Sjekk i hvilken tilstand LED -er er.
    3. Match HTTP -forespørsel med kjente LED -tilstander (blått på, oransje på, både på, av).
    4. Simuler så mange trykknapper som trengs for å oppnå ønsket tilstand.

Jeg vil kort beskrive programmeringsinstruksjoner, hvis det er første gang du programmerer ESP8266 MCU, se etter mer grundige instruksjoner.

Du trenger Arduino IDE og USB-seriell grensesnittomformer (for eksempel FT232RL). Følg disse instruksjonene for å forberede IDE.

Følg kretsdiagrammet for å koble til ESP-12E-modulen for programmering. Noen tips:

  • bruk ekstern 3.3V@500mA strømforsyning (i de fleste tilfeller er ikke USB-seriell strømforsyning nok);
  • sjekk om din USB-serielle omformer er kompatibel med 3.3V logikknivå;
  • sjekk om USB-serielle omformer-drivere er installert (fra Windows enhetsbehandling). Du kan også sjekke om den fungerer riktig fra IDE, bare korte RX- og TX-pinner, enn fra IDE velg COM-port, åpne seriell skjerm og skrive noe, hvis alt fungerer du bør se teksten du sender vises i konsollen;
  • av en eller annen grunn kunne jeg bare programmere ESP da jeg først koblet USB-seriell omformer til PC og deretter slått på ESP fra ekstern 3.3V kilde;
  • etter vellykket programmering, ikke glem å trekke GPIO0 høyt ved neste oppstart.

Trinn 4: Skjematisk og lodding

Skjematisk og lodding
Skjematisk og lodding
Skjematisk og lodding
Skjematisk og lodding
Skjematisk og lodding
Skjematisk og lodding

Følg skjematisk for å lodde alle komponentene til protoboard. Som nevnt før er noen komponenter valgfrie. Jeg brukte KA78M33 3.3V LDO IC og dette logiske nivåomformerkortet fra sparkfun, alternativt kan du lage omformeren selv som vist i skjemaet (du kan bruke hvilken som helst N-kanal mosfet i stedet for BSS138). Hvis du fortsetter å bruke Li-ION-batteri, vil +5V strømnett være en batteripositiv terminal. ESP8266 ADC referansespenning er 1V, mine valgte motstandsdelerverdier gjør det mulig å måle inngangsspenningen så høy som 5,7V.

Det bør være 5 tilkoblinger til den originale PCB -lampen: +5V (eller +batteri), GND, trykknapp, PWM -signaler fra lamper MCU for styring av blå og oransje lysdioder. Hvis du driver lampen fra 5V -kilde, som jeg gjorde, vil du kortslutte batteriladere IC VCC -pinne med OUTPUT -pinne, på den måten vil all elektronikk bli drevet direkte fra +5V og ikke fra batteriladerens OUTPUT.

Følg det andre bildet for alle loddepunktene du må lage på PCB -lamper.

MERKNADER:

  1. Hvis du bestemte deg for å korte +5V med batteriladerens IC -utgang, fjern batteriet helt før du gjør det, du vil ikke koble +5V direkte til et batteri.
  2. Vær oppmerksom på hvilken trykknappstift du lodder ESP -utgang, fordi 2 pinner på en trykknapp er koblet til bakken, og du ikke vil kortslutte når ESP -utgangen går HØY, bedre dobbeltsjekk med multimeter.

Trinn 5: Android -app

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

Android -appen ble laget med MIT app -oppfinner, for å laste ned en app og/eller klone prosjekt for deg selv, gå til denne lenken (du trenger en Google -konto for å få tilgang til den).

Ved første lansering må du åpne innstillinger og skrive inn ESP8266 IP -adressen din. Denne IP -adressen blir lagret, så du trenger ikke å skrive den inn igjen etter at programmet har startet på nytt.

App testet med flere Android 9 og Android 7 enheter.

Anbefalt: