Inhaltsverzeichnis:

IoT-Mondlampe - Gunook
IoT-Mondlampe - Gunook

Video: IoT-Mondlampe - Gunook

Video: IoT-Mondlampe - Gunook
Video: IoT-Lampe 3D-Druck - Gyverlamp Honeycomb Edition 2024, November
Anonim
IoT-Mondlampe
IoT-Mondlampe

In diesem anweisbaren zeige ich, wie man eine einfache batteriebetriebene LED-Lampe in ein IoT-Gerät umwandelt.

Dieses Projekt beinhaltet:

  • Löten;
  • Programmierung von ESP8266 mit Arduino IDE;
  • Android-Anwendung mit MIT App Inventor erstellen.

Das interessante Objekt ist diese mondförmige Lampe, die ich bei Gearbest gekauft habe. Aber dieses Tutorial kann wirklich an jedes Gerät mit niedriger Gleichspannung angepasst werden (wechselstrombetriebene Geräte erfordern zusätzliche Schaltungen).

Lieferungen

  1. Android-Smartphone (Android-Versionen 7-9 getestet).
  2. Lötwerkzeuge.
  3. Prototyping PCB (Protoboard).
  4. ESP-12E-Board (oder anderes Devboard mit ESP8266-Mikrocontroller).
  5. USB-Seriell-Konverter zum Programmieren.
  6. Mehrere verschiedene Werte von passiven Komponenten (Widerstände und Kondensatoren).

(Optional. Siehe Abschnitt "Blockdiagramm")

  1. 3.3V@500mA LDO-IC.
  2. 3.3V-5V Logikpegelwandlerplatine.
  3. 5V DC-Netzteil.

Schritt 1: Idee

Idee
Idee

Die Mondlampe wird von einer Li-ION 18650-Zelle gespeist und verfügt über 3 Betriebsmodi:

  • aus;
  • Handbuch;
  • Auto.

Im manuellen Modus wird die Lampe mit einem Druckknopf gesteuert, jeder Druck ändert den LED-Lichtzustand (blau an, orange an, beide an, aus), die Lichtintensität ändert sich, während der Druckknopf gedrückt gehalten wird. Im Auto-Modus ändert sich der LED-Lichtstatus durch Antippen oder Schütteln der Lampe selbst.

Ich beschloss, ESP8266 hinzuzufügen, um als Webserver zu fungieren, der auf Anfragen lauscht und dementsprechend Tastendrücke simuliert. Ich wollte die ursprüngliche Lampenfunktion nicht unterbrechen, sondern nur zusätzliche Steuerfunktionen über WLAN hinzufügen, also habe ich ESP gewählt, um Tastendrücke zu simulieren, anstatt LEDs direkt zu steuern. Dies ermöglichte mir auch, minimal mit der Originalschaltung zu interagieren.

Als der Prototyp fertig war, trieb er ständig ~80mA von der Batterie im ausgeschalteten Zustand (~400mA bei voller Helligkeit). Der Standby-Strom ist hoch, da ESP8266 als Server arbeitet und immer mit WiFi verbunden ist und auf Anfragen lauscht. Die Batterie war nach eineinhalb Tagen nur im ausgeschalteten Zustand leer, daher entschied ich mich später, den USB-Ladeanschluss der Lampen zu verwenden, um die gesamte Elektronik über ein externes 5V-Netzteil mit Strom zu versorgen und die Batterie alle zusammen wegzulassen (dies ist jedoch optional).

Schritt 2: Blockdiagramm

Blockschaltbild
Blockschaltbild

Im Blockschaltbild können Sie sehen, welche Schaltungen hinzugefügt werden und wie bestehende Schaltungen modifiziert werden. In meinem Fall habe ich die Batterie vollständig entfernt und den IC-Eingang des Batterieladegeräts mit dem Ausgang kurzgeschlossen (auch dies ist optional). Transparente Blöcke im Diagramm weisen auf Komponenten hin, die umgangen werden (obwohl der Druckknopf immer noch wie ursprünglich vorgesehen funktioniert).

Laut Dokumentation toleriert ESP8266 nur 3,3V, es gibt jedoch viele Beispiele, in denen ESP8266 mit 5V völlig gut funktioniert, so dass Logikpegelwandler und 3,3V LDO weggelassen werden können, aber ich bin bei der Best Practice geblieben und habe diese Komponenten hinzugefügt.

Ich habe 3 ESP8266 I / O-Pins und ADC-Pins verwendet. Ein digitaler Ausgangspin dient zum Simulieren von Tastendrücken, zwei digitale Eingänge dienen zum Erkennen, welche Farb-LEDs leuchten (daraus können wir herausfinden, in welchem Zustand sich die MCU befindet und welcher Zustand als nächstes nach dem Drücken der Taste vorliegt). Der ADC-Pin misst die Eingangsspannung (über einen Spannungsteiler), so können wir den verbleibenden Batterieladestand überwachen.

Als externe Stromversorgung verwende ich altes Telefonladegerät 5V@1A (keine Schnellladegeräte verwenden).

Schritt 3: Programmierung

Programmierung
Programmierung
Programmierung
Programmierung

Kurz gesagt funktioniert das Programm so (weitere Informationen finden Sie im Code selbst):

ESP8266 verbindet sich mit Ihrem WLAN-Zugangspunkt, dessen Zugangsdaten Sie vor der Programmierung am Anfang des Codes eingeben müssen, er erhält die IP-Adresse vom DHCP-Server Ihres Routers, um die IP herauszufinden, die Sie später benötigen, können Sie die DHCP-Einstellungen der Router-Webschnittstelle überprüfen oder einstellen Debug-Flag im Code auf 1 und Sie werden sehen, welche IP ESP im seriellen Monitor erhalten hat (Sie sollten diese IP in Ihren Router-Einstellungen reservieren, damit ESP beim Booten immer dieselbe IP erhält).

Wenn die MCU initialisiert wird, führt sie immer dieselbe Routine aus:

  1. Überprüfen Sie, ob noch eine Verbindung zum AP besteht, wenn nicht, versuchen Sie, die Verbindung bis zum Erfolg erneut herzustellen.
  2. Warten Sie, bis der Client eine HTTP-Anfrage stellt. Wenn die Anfrage erfolgt:

    1. Eingangsspannung prüfen.
    2. Prüfen Sie, in welchem Zustand sich LEDs befinden.
    3. HTTP-Anfrage mit bekannten LED-Zuständen abgleichen (blau an, orange an, beide an, aus).
    4. Simulieren Sie so viele Tastendrücke wie nötig, um den angeforderten Zustand zu erreichen.

Ich werde die Programmieranweisungen kurz beschreiben, wenn Sie zum ersten Mal ESP8266 MCU programmieren, suchen Sie nach detaillierteren Anweisungen.

Sie benötigen eine Arduino IDE und einen USB-Seriell-Schnittstellenkonverter (zum Beispiel FT232RL). Befolgen Sie diese Anweisungen, um die IDE vorzubereiten.

Folgen Sie dem Schaltplan, um das ESP-12E-Modul für die Programmierung anzuschließen. Einige Hinweise:

  • Verwenden Sie ein externes 3.3V@500mA-Netzteil (in den meisten Fällen reicht eine USB-serielle Stromversorgung nicht aus);
  • Überprüfen Sie, ob Ihr USB-Seriell-Wandler mit 3,3 V Logikpegel kompatibel ist;
  • Überprüfen Sie, ob die Treiber für den USB-Seriell-Konverter erfolgreich installiert wurden (vom Windows-Gerätemanager). Sie können auch überprüfen, ob es von der IDE aus richtig funktioniert, nur kurze RX- und TX-Pins, dann von der IDE den COM-Port auswählen, den seriellen Monitor öffnen und etwas schreiben, wenn alles funktioniert Sie sollten Text, den Sie senden, in der Konsole sehen;
  • aus irgendeinem Grund konnte ich ESP nur programmieren, wenn ich zuerst den USB-Seriell-Konverter an den PC anschloss und dann ESP von einer externen 3,3-V-Quelle anschaltete;
  • Nach erfolgreicher Programmierung nicht vergessen, GPIO0 beim nächsten Booten hoch zu ziehen.

Schritt 4: Schaltplan und Löten

Schaltplan und Löten
Schaltplan und Löten
Schaltplan und Löten
Schaltplan und Löten
Schaltplan und Löten
Schaltplan und Löten

Folgen Sie dem Schema, um alle Komponenten an das Protoboard zu löten. Wie bereits erwähnt, sind einige Komponenten optional. Ich habe KA78M33 3.3V LDO IC und diese Logikpegelwandlerplatine von Sparkfun verwendet, alternativ können Sie den Wandler wie im Schaltplan gezeigt selbst herstellen (Sie können jeden N-Kanal-Mosfet anstelle von BSS138 verwenden). Falls Sie bei der Verwendung von Li-ION-Batterien bleiben, ist das +5V-Stromnetz der Pluspol der Batterie. Die ESP8266 ADC-Referenzspannung beträgt 1 V, meine gewählten Widerstandsteilerwerte ermöglichen die Messung einer Eingangsspannung von bis zu 5,7 V.

Es sollten 5 Verbindungen zur Original-Lampenplatine vorhanden sein: +5V (oder +Batterie), GND, Taster, PWM-Signale von der Lampen-MCU zur Steuerung von blauen und orangefarbenen LEDs. Wenn Sie die Lampe wie ich von einer 5-V-Quelle mit Strom versorgen, möchten Sie den IC-VCC-Pin des Batterieladegeräts mit dem OUTPUT-Pin kurzschließen.

Folgen Sie dem zweiten Bild für alle Lötpunkte, die Sie auf der Lampenplatine herstellen müssen.

ANMERKUNGEN:

  1. Wenn Sie sich entschieden haben, +5V mit dem Batterieladegerät-IC-Ausgang kurzzuschließen, entfernen Sie die Batterie vorher vollständig, da Sie +5V nicht direkt an eine Batterie anschließen möchten.
  2. Achten Sie darauf, an welchem Taster-Pin Sie den ESP-Ausgang verlöten, da 2 Pins eines Tasters mit Masse verbunden sind und Sie nicht kurzschließen möchten, wenn der ESP-Ausgang HIGH geht, besser mit Multimeter überprüfen.

Schritt 5: Android-App

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

Die Android-App wurde mit dem Erfinder der MIT-App erstellt. Um eine App und/oder ein Klonprojekt für sich selbst herunterzuladen, gehen Sie zu diesem Link (Sie benötigen ein Google-Konto, um darauf zuzugreifen).

Beim ersten Start müssen Sie die Einstellungen öffnen und Ihre ESP8266-IP-Adresse eingeben. Diese IP wird gespeichert, sodass Sie sie nach dem Neustart des Programms nicht erneut eingeben müssen.

App mit mehreren Android 9- und Android 7-Geräten getestet.

Empfohlen: