ESP8266 Wo soll ich anfangen oder erste Erfahrungen machen?

In diesem Artikel möchte ich meine Erfahrungen darüber mitteilen, was zu tun ist, wenn die ESP8266-Schals zum ersten Mal in meine Hände fallen. Machen Sie sofort eine Reservierung, dass das Pflücken solcher Eisenstücke sowie das Programmieren mein Hobby für mein Geld und in meiner Freizeit von meiner Haupttätigkeit ist. Bitte behandeln Sie den Grad der Kritik an diesem Material mit einem gewissen Rabatt.

Warum habe ich beschlossen, dies zu schreiben? Es ist ganz einfach: Ich habe 3 Wochen getötet, um herauszufinden, wo ich anfangen soll und wie es funktioniert. Außerdem werde ich versuchen, einen kleinen Katalog mit Links für die Arbeit mit ESP8266 zu sammeln. Ich hoffe, dass Sie mit diesen Informationen mindestens einen Bruchteil der Zeit sparen.

Bild

Also fangen wir an!

Ich habe 3 Board-Optionen für mich auf einer berühmten chinesischen Website bestellt:

  1. ESP8266 WIFI Serial Wireless Dev Test Board basierend auf ESP-12 (im Folgenden „Yellow Board“) (3,12 USD)
  2. ESP8266 ESP-07 zusammen mit Adapterplatte für ESP8266 (im Folgenden ESP-07) (2,30 USD)
  3. LoLin V3 NodeMcu Lua basierend auf ESP-12 (im Folgenden als "Lolin" bezeichnet) ($ 3,12)

Die Gründe, warum ich so einen Zoo genommen habe:

  1. Das gelbe Board verfügt bereits über eingebaute LEDs, die Sie sofort blinken können. Für die Stromversorgung können Sie nicht fabelhafte 3,3 V verwenden, die Sie irgendwie benötigen, sondern 3 AA-Batterien oder durch Anschließen von 4,5 V (was ich getan habe).
  2. LoLing bestach mich durch die Tatsache, dass es über ein Micro-USB-Kabel angeschlossen ist und sie keine UART-Konverter benötigt - es ist sofort in das chinesische CH340-Chip integriert, für das Sie problemlos Treiber sowohl für win7x64 als auch für win10x64 (meine Fälle) finden können. wieder mit einem normalen Adapter mit USB-Ausgang und nicht mit einem hoch entwickelten 3,3-V-Strom versorgt.
  3. ESP-07 . - , , . Adapter Plate — 20 , .

Zunächst - Überprüfung der Module.

In allen Startanweisungen steht, dass das Gerät funktioniert, wenn Sie die Stromversorgung angeschlossen haben und das AI-THINKER xxxxxxx WiFi-Netzwerk angezeigt wurde. Es passierte mit meinen Geräten - sie alle haben ein WiFi-Netzwerk erstellt, mit dem Sie eine Verbindung herstellen können. Hurra! Verdient! Ich war begeistert, aber früh.

Zunächst habe ich mich entschlossen, mit dem Gelben Brett zu experimentieren. Der Verkäufer mit dem besten Preisindikator in der Produktbeschreibung hatte nur Bilder. Und kein Wort der Beschreibung. In russischsprachigen Quellen gab es Verweise auf diese Boards, aber ich fand keine Einzelheiten dazu. Bei einigen Verkäufern habe ich diese Anweisung gesehen:

Yellow Board Anweisung
1. Android phone installation IOT.APK, IOS client be released later
2. shorting cap connected to the power to enter the programming mode, enter the normal operating state removed
3. Replace the battery, mobile search network «AI-THINKER» router
4. join the router (the router module form) password is: ai-thinker
5. after the success can be added directly to the control module of the mobile phone.
6. Enter the home router «SSID» and «Password» in the «Configure Device», then click on the icon at the top of the router, wait a few moments after the jump to join the router, connect the phone router WiFi, again «discovered device» to achieve control in the LAN.

:

1. Wi-Fi ( 5.0 !) IOT.APK, IOS
2. , .
3. ( ) Wi-Fi «AI-THINKER»
4. «ai-thinker»
5. IOT . . , .

Die Inkonsistenz bestand darin, dass mein AI-THINKER xxxxxxxxxx-Netzwerk nicht nach einem Passwort fragte, sondern sofort das daran angeschlossene Telefon. Und der Anwendungspunkt leer hat das ESP nach dem Herstellen der Verbindung nicht "gesehen". Die RGB-LED leuchtete blau mit installiertem Jumper oder grün ohne.

Bild

Ich vermutete, dass die Chinesen vielleicht löten - sie löten, aber sie vergaßen zu blinken (oder krumm zu blinken). Deshalb habe ich beschlossen, mich zu nähen. Für die Firmware habe ich ESP8266 Flasher verwendet. Und dann kam eine zweite Überraschung heraus: Kein Programm erkannte das Board, reagierte nicht auf Befehle, die Firmware flutete nicht. Verbunden über Arduino und über den UART-Konverter - nichts. Die beiden anderen Platinen wurden bereits neu geflasht und mit einer LED geblinkt, aber hier ist es langweilig. Bis ich vermutete, die Kontakte anzurufen.

Auf dieser Karte werden drei Kontakte für die Firmware separat angezeigt: TX, RX, GND. Es stellte sich also heraus, dass TX auf dem RX des ESP-12 selbst gezüchtet wurde, RX - auf dem TX. Das heißt, Es mussten nur zwei Drähte ausgetauscht werden: Wir schließen einen UART-Konverter gemäß dem Schema an:

TX-TX
RX-RX
GND-GND
oder Arduino:
TX-RX
RX-TX
GND-GND

Nach dem Öffnen wurde das Modul zum Leben erweckt, das ursprüngliche wurde gefunden Firmware zum Blinken von LEDs (AI-THINKER-IOT-2014-10-17 165528.bin) und wird weiterhin mit demselben ESP8266 Flasher geflasht. Das Passwort für den Zugangspunkt wurde angezeigt, und die Anwendung sah sofort die Gelbe Karte. Die einzige Einschränkung: Zum Blinken muss ein Jumper installiert werden, in allen anderen Fällen muss er entfernt werden. Vergessen Sie nicht, das Gerät nach dem Flashen neu zu starten.

ESP8266 ESP-07 mit Adapterplatte


Anleitung zum Anschließen von ESP-07 (ESP-12) über einen UART-Konverter:

Bild

  • Rot - Leistung 3,3 V;
  • Schwarz - GND;
  • Gelb - auf der ESP8266-Seite - RX, auf der USB-TTL-Seite - TX;
  • Grün - auf der ESP8266-Seite - TX, auf der USB-TTL-Seite - RX;
  • Orange - CH_PD (CHIP ENABLE) - sollte immer an die Stromversorgung gezogen werden.
  • Blau - GPIO0 - ist über den Schalter mit Masse verbunden, um den Blinkmodus des Moduls zu aktivieren. Für den üblichen Start des GPIO0-Moduls können Sie die Verbindung nicht herstellen.
  • Grau - GPIO15 (MTDO, HSPICS) Dieser Stift muss zu Boden gezogen werden.
  • Wenn Sie eine Verbindung zu Arduino herstellen, dann RX-RX und TX-TX.

Unter Verwendung eines Lötkolbens wurden ESP-07 und Adapter kombiniert. Ich empfehle den Adapter, da er die Verbindung durch ein lötfreies Verfahren mit einem Steckbrett und Drähten weiter erleichtert. In diesem Fall habe ich einen Abwärts-DC / DC-Wandler aus China für die Stromversorgung verwendet. DS18B20-Sensoren waren verfügbar, und es wurde beschlossen, sie anzuschließen.

Ich wollte HomesSmart nicht sofort installieren, und die Wahl fiel auf ein solches Beispiel . Ich werde die Schaltung und den Code nicht erneut eingeben - sie sind fast gleich. Es hat nicht sofort funktioniert, aber mit Google und einem Tamburin wurden die Daten zur Personenüberwachung gestartet und flogen.

Ich habe das Skript über ESplorer heruntergeladen .

Es war auf Arduino
image

Wurde auf ESP8266
image

Ich warte auf das kompakte 220AC - 3.3DC Netzteilmodul, um die Anzahl der Drähte zu optimieren.

LoLin V3 NodeMcu (Lolin)


Diesem Board wurde empfohlen, die NodeMcu-Firmware sofort zu flashen, was über das NodeMcu-Flasher-Programm erfolgt. Die Firmware selbst wird vom Designer zusammengestellt, sodass Sie nur das Notwendigste einbinden können.

Außerdem sollte es ein 2-Kanal-Relais anschließen und steuern und zwei Wandlampen im Schlafzimmer steuern. Hier möchte ich auf eine Sache eingehen. Die chinesische Version eines solchen Relais hat einen Jumper JD-VCC - VCC - GND. Standardmäßig ist es auf den JD-VCC - VCC - Pins installiert.

Bild

Der Jumper kann also niemals auf VCC - GND installiert werden - einen Kurzschluss verursachen! Diese drei Kontakte werden verwendet, um das Relais zusätzlich mit Strom zu versorgen, wenn die Steuerung möglicherweise nicht ausreicht, um das Relais zu betreiben. Das Vorhandensein eines Jumpers zeigt an, dass die Stromversorgung über die "Steuer" -Kontakte erfolgt.

Das Skript wurde wie folgt verwendet:

Skripttext
#================= init.lua =================
--      
ssid,pass = "SSID","PASSWORD";

if (file.open('wificonf') == true)then
   ssid = string.gsub(file.readline(), "\n", "");
   pass = string.gsub(file.readline(), "\n", "");
   file.close();
end

wifi.setmode(wifi.STATION)
wifi.sta.config(ssid,pass)
wifi.sta.autoconnect(1);
print('IP:',wifi.sta.getip());
--print('MAC:',wifi.sta.getmac());

led1 = 3
led2 = 4
gpio.mode(led1, gpio.OUTPUT)
gpio.mode(led2, gpio.OUTPUT)
restart=0;

gpio.write(led1, gpio.HIGH);
gpio.write(led2, gpio.HIGH);


t=0
tmr.alarm(0,1000, 1, function() t=t+1 if t>999 then t=0 end end)

srv=net.createServer(net.TCP, 1000)
srv:listen(80,function(conn)
    conn:on("receive",function(client,request)
    --      _GET
            local buf = "";
        local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
        if(method == nil)then
            _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
        end
        local _GET = {}
        if (vars ~= nil)then
            for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
                _GET[k] = v
            end
        end
    --    
       --    <html><body>,      \
   --        \,  </body></html>
    conn:send('HTTP/1.1 200 OK\r\nConnection: keep-alive\r\nCache-Control: private, no-store\r\n\r\n\
   <!DOCTYPE HTML>\
<html>\
 <head>\
        <meta charset="UTF-8" />\
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> \
        <meta name="viewport" content="width=device-width, initial-scale=1.0"> \
        <title>My control</title>\
   </head><body>\
        <div class="container">\
            <section class="color-1">\
                <p>\
                    <a href=\"?pin=ON1\"><button class="btn btn-4 btn-4a">Back ON</button></a>\
                    <a href=\"?pin=ON2\"><button class="btn btn-4 btn-4a">Bra ON</button></a>\
                </p>\
                <p>\
                    <a href=\"?pin=OFF1\"><button class="btn btn-5 btn-5a">Back OFF</button></a>\
                    <a href=\"?pin=OFF2\"><button class="btn btn-5 btn-5a">Bra OFF</button></a>\
                </p>\
            </section>\
        </div>\
</body></html>')
    --  
    --    
        local _on,_off = "",""
        if(_GET.pin == "ON1")then
              gpio.write(led1, gpio.LOW);
        elseif(_GET.pin == "OFF1")then
              gpio.write(led1, gpio.HIGH);
        elseif(_GET.pin == "ON2")then
              gpio.write(led2, gpio.LOW);
        elseif(_GET.pin == "OFF2")then
              gpio.write(led2, gpio.HIGH);
        end
        
  
              
    conn:on("sent",function(conn) conn:close() end)
    collectgarbage();

    
    end)
    
end)

#========================================


Ich konnte den Link zur Quelle nicht wiederfinden. Das Schema ist jedoch einfach: An Lolin schließen wir Relais 1 und Relais 2 an die Ausgänge D3 und D4 an ( LED1 = 3 LED2 = 4 ). Dann gehen wir zu der von unserem Router ausgegebenen IP-Adresse und sehen uns die Seite an:

Bild

Zu meinem großen Bedauern habe ich noch nicht herausgefunden, wie man Schönheit bringt, um beispielsweise eine Datei im CSS-Stil zu verbinden. Die Frage betrifft die Verwendung einzelner Dateien beim Anzeigen der Seite und nicht das Festlegen des Stils.

Ich hoffe wirklich, dass diese Informationen für mindestens eine Person nützlich sind. Und urteilen Sie nicht streng nach dem ersten Artikel.

Referenzen


Source: https://habr.com/ru/post/de394535/


All Articles