Inhoudsopgave:

IoT-maanlamp: 5 stappen
IoT-maanlamp: 5 stappen

Video: IoT-maanlamp: 5 stappen

Video: IoT-maanlamp: 5 stappen
Video: SMOKEY EYES VOOR BEGINNERS - IN 5 STAPPEN EEN SMOKEY EYE MAKEN 2024, November
Anonim
IoT-maanlamp
IoT-maanlamp

In deze instructable laat ik zien hoe je een eenvoudige LED-lamp op batterijen kunt omzetten in een IoT-apparaat.

Dit project omvat:

  • solderen;
  • programmeren van ESP8266 met Arduino IDE;
  • Android-applicatie maken met MIT App Inventor.

Het object van interesse is deze maanvormige lamp die ik bij gearbest heb gekocht. Maar in werkelijkheid kan deze tutorial worden aangepast aan elk apparaat met een laag gelijkspanning (AC-apparaten hebben extra circuits nodig).

Benodigdheden

  1. Android-smartphone (android-versies 7-9 getest).
  2. Soldeer gereedschappen.
  3. Prototyping PCB (protoboard).
  4. ESP-12E-bord (of ander ontwikkelbord met ESP8266-microcontroller).
  5. USB-serieel converter voor programmeren.
  6. Verschillende waarden van passieve componenten (weerstanden en condensatoren).

(Optioneel. Zie het gedeelte "Blokdiagram")

  1. 3.3V@500mA LDO-IC.
  2. 3.3V-5V logisch niveau-converterbord.
  3. 5V DC-voeding.

Stap 1: Idee

Idee
Idee

Maanlamp wordt aangedreven door één Li-ION 18650-cel en heeft 3 bedrijfsmodi:

  • uit;
  • handmatig;
  • auto.

In handmatige modus wordt de lamp bediend met een drukknop, elke druk verandert de led-lichtstatus (blauw aan, oranje aan, beide aan, uit), de lichtintensiteit verandert terwijl de drukknop ingedrukt wordt gehouden. In de automatische modus verandert de status van het LED-licht door op de lamp zelf te tikken of te schudden.

Ik besloot ESP8266 toe te voegen om te fungeren als een webserver die luistert naar verzoeken en dienovereenkomstig het indrukken van knoppen simuleert. Ik wilde de originele lampfunctionaliteit niet verbreken, ik wilde alleen extra bedieningsfuncties via wifi toevoegen, dus koos ik ESP om het indrukken van knoppen te simuleren in plaats van direct LED's te bedienen. Dit stelde me ook in staat om minimaal te communiceren met originele circuits.

Toen het prototype klaar was, reed het constant ~80mA van de batterij in uitgeschakelde toestand (~400mA op volledige helderheid). Standby-stroom is hoog omdat ESP8266 als server werkt en altijd is verbonden met wifi en luistert naar verzoeken. De batterij was na anderhalve dag alleen leeg in de uit-stand, dus later besloot ik de USB-oplaadpoort voor lampen te gebruiken voor het voeden van alle elektronica van een externe 5V-voeding en de batterij allemaal samen (maar dit is optioneel).

Stap 2: Blokdiagram

Blokdiagram
Blokdiagram

In het blokschema kunt u zien welke schakelingen worden toegevoegd en hoe bestaande schakelingen worden gewijzigd. In mijn geval heb ik de batterij volledig verwijderd en de IC-ingang van de batterijlader kortgesloten met de uitgang (nogmaals, dit is optioneel). Transparante blokken in diagram geven componenten aan die worden omzeild (hoewel de drukknop nog steeds werkt zoals oorspronkelijk bedoeld).

Volgens documentatie verdraagt ESP8266 slechts 3,3V, maar er zijn genoeg voorbeelden waarin ESP8266 prima werkt met 5V, dus logische niveau-omzetter en 3,3V LDO kunnen worden weggelaten, maar ik bleef bij de beste praktijken en voegde die componenten toe.

Ik gebruikte 3 ESP8266 I/O-pinnen en ADC-pin. Een digitale uitgangspin is voor het simuleren van het indrukken van een knop, twee digitale ingangen voor het detecteren van welke kleur-LED's aan zijn (hieruit kunnen we achterhalen in welke staat MCU zich bevindt en welke staat de volgende is na het indrukken van de knop). ADC-pin meet de ingangsspanning (via een spanningsdeler), zo kunnen we het resterende batterijniveau controleren.

Als externe voeding gebruik ik oude telefoonoplader 5V@1A (gebruik geen snelladers).

Stap 3: Programmeren

Programmeren
Programmeren
Programmeren
Programmeren

In een notendop werkt het programma als volgt (voor meer informatie zie code zelf):

ESP8266 maakt verbinding met uw WiFi-toegangspunt, welke inloggegevens u moet invoeren aan het begin van de code voorafgaand aan het programmeren, het krijgt een IP-adres van de DHCP-server van uw router, om erachter te komen welk IP-adres u later nodig hebt, kunt u de webinterface van de router controleren DHCP-instellingen of instellen foutopsporingsvlag in code naar 1 en u zult zien wat IP ESP in seriële monitor heeft gekregen (u moet dat IP reserveren in uw routerinstellingen zodat ESP altijd hetzelfde IP-adres krijgt bij het opstarten).

Wanneer geïnitialiseerd MCU voert altijd dezelfde routine voor altijd uit:

  1. Controleer of er nog steeds verbinding is met AP, zo niet, probeer opnieuw verbinding te maken tot het gelukt is.
  2. Wacht tot de client een HTTP-verzoek doet. Wanneer het verzoek plaatsvindt:

    1. Controleer de ingangsspanning.
    2. Controleer in welke staat LED's zijn.
    3. Match HTTP-verzoek met bekende LED-statussen (blauw aan, oranje aan, beide aan, uit).
    4. Simuleer zo veel druk op de knop als nodig is om de gevraagde status te bereiken.

Ik zal de programmeerinstructies kort beschrijven, als het je eerste keer is dat je ESP8266 MCU programmeert, zoek dan naar meer diepgaande instructies.

Je hebt Arduino IDE en USB-seriële interface-converter nodig (bijvoorbeeld FT232RL). Volg deze instructies om IDE voor te bereiden.

Volg het schakelschema om de ESP-12E-module aan te sluiten voor programmering. Wat tips:

  • gebruik een externe 3.3V@500mA voeding (in de meeste gevallen is een USB-seriële voeding niet voldoende);
  • controleer of uw USB-seriële converter compatibel is met 3,3 V logisch niveau;
  • controleer of de stuurprogramma's voor de USB-serieel converter met succes zijn geïnstalleerd (vanuit Windows Device Manager) ook kunt u controleren of het correct werkt vanuit IDE, gewoon korte RX- en TX-pinnen, dan vanuit IDE de COM-poort selecteren, seriële monitor openen en iets schrijven, als alles werkt je zou de tekst die je verzendt in de console moeten zien verschijnen;
  • om de een of andere reden kon ik ESP alleen programmeren toen ik voor het eerst een USB-seriële converter op de pc aansloot en vervolgens ESP inschakelde vanaf een externe 3.3V-bron;
  • vergeet na het succesvol programmeren niet om GPIO0 hoog te trekken bij de volgende keer opstarten.

Stap 4: Schematisch en solderen

Schema en Solderen
Schema en Solderen
Schema en Solderen
Schema en Solderen
Schema en Solderen
Schema en Solderen

Volg het schema om alle componenten op het protoboard te solderen. Zoals eerder vermeld, zijn sommige componenten optioneel. Ik gebruikte KA78M33 3.3V LDO IC en dit logische niveau-converterbord van sparkfun, als alternatief kun je zelf een converter maken zoals weergegeven in het schema (je kunt elke N-kanaals mosfet gebruiken in plaats van BSS138). Als u vasthoudt aan het gebruik van een Li-ION-batterij, is het +5V-voedingsnetwerk de positieve pool van de batterij. ESP8266 ADC-referentiespanning is 1V, mijn gekozen weerstandsdelerwaarden maken het mogelijk om de ingangsspanning tot 5,7V te meten.

Er moeten 5 aansluitingen zijn op de originele lampprint: +5V (of +Batterij), GND, drukknop, PWM-signalen van lampen MCU voor het aansturen van blauwe en oranje LED's. Als je de lamp van een 5V-bron voedt, zoals ik deed, wil je de IC VCC-pin van de batterijlader kortsluiten met de OUTPUT-pin, op die manier wordt alle elektronica rechtstreeks gevoed door +5V en niet door de OUTPUT van de batterijlader.

Volg de tweede afbeelding voor alle soldeerpunten die u op de PCB van de lamp moet maken.

OPMERKINGEN:

  1. Als u hebt besloten om +5V kort te sluiten met de IC-uitgang van de batterijlader, verwijder dan de batterij volledig voordat u dit doet, u wilt +5V niet rechtstreeks op een batterij aansluiten.
  2. Let op op welke drukknoppin je ESP-uitgang soldeert, want 2 pinnen van een drukknop zijn verbonden met massa en je wilt geen kortsluiting als de ESP-uitgang HOOG wordt, beter dubbelchecken met multimeter.

Stap 5: Android-app

Android-app
Android-app
Android-app
Android-app
Android-app
Android-app

Android-app is gemaakt met de uitvinder van de MIT-app, om een app en/of kloonproject voor jezelf te downloaden, ga naar deze link (je hebt een Google-account nodig om toegang te krijgen).

Bij de eerste keer opstarten moet u de instellingen openen en uw ESP8266 IP-adres invoeren. Dit IP-adres wordt opgeslagen, dus u hoeft het niet opnieuw in te voeren nadat het programma opnieuw is opgestart.

App getest met verschillende Android 9- en Android 7-apparaten.

Aanbevolen: