Nota: Una lista para ir junta puede comprarse aquí
En parte II voy a entrar en cómo programar el ESP8266 así que un USB para módulo serial y un terminal no es necesario: todos se realizará vía web. También, explicaré cómo conducir un contador binario y relés de control 4 (multi multi en off) usando GPIO0 como control y GPIO2 como reset. De esta manera la ESP8266 realmente se convierte en un potente dispositivo que puede agregarse a cualquier proyecto de automatización y su fácil de programar en el sitio.
Se pueden obtener más detalles sobre mis proyectos en el sitio Web de Horacio Bouzas
El firmware de control
El firmware tiene que ser capaz de permitir al usuario conectar con el módulo y configurar el SSID y contraseña de la red, el módulo conectará al. Los pasos para diseñar el firmware son las siguientes:
1. Ponga el módulo en modo servidor (AP)
2. Coloque un nombre y una contraseña
3. crear un servidor
4. escuchar en el puerto 80
5. módulo dirección es 192.168.4.1
6. presentar una página web pidiendo SSID y contraseña
7. cambiar a modo de estación y configurar el SSID y la contraseña
8. conectar a la red
9. comience a escuchar para eventos que vienen en la dirección ip asignada por la red y el puerto 9999
Aquí está el código para hacerlo:
File.Open("init.lua","w")
File.WriteLine ([[print ("control WIFI")]])
--poner el módulo en modo AP
File.WriteLine ([[wifi.setmode (Wi-Fi. SOFTAP)]])
File.WriteLine ([[imprimir ("ESP8266 modo es:"... WiFi.getMode())]])
File.WriteLine([[cfg={}]])
--Establecer el SSID del módulo de contraseña de acceso y modo de AP
File.WriteLine([[cfg.SSID="ESP_STATION"]])
File.WriteLine([[cfg.pwd="the_ESP8266_WIFI_password"]])
File.WriteLine ([[if ssid y contraseña luego]])
File.WriteLine ([[imprimir ("ESP8266 SSID es:"... cfg.SSID... "y la contraseña es:"... cfg.password)]])
File.WriteLine([[end]])
-Ahora debería ver un router inalámbrico SSID llamado ESP_STATION al análisis de redes WIFI disponibles
-Permite conectar al módulo desde un ordenador del dispositivo móvil. Por lo tanto, encontrar el SSID y conectarse usando la contraseña seleccionada
File.WriteLine([[WiFi.AP.config(cfg)]])
File.WriteLine ([[ap_mac = wifi.ap.getmac()]])
--crear un servidor en el puerto 80 y esperar una conexión, cuando una conexión va en función c se ejecutará
File.WriteLine ([[sv=net.createServer (net. TCP, 30)]])
File.WriteLine([[SV:Listen(80,function(c)]])
File.WriteLine ([[c: a ("recibir", función (c, pl)]])
--imprimir la carga pl recibió de la conexión
File.WriteLine([[Print(PL)]])
File.WriteLine([[Print(String.Len(PL))]])
--Espere hasta que vuelve el SSID y analizar el SSID y la contraseña
File.WriteLine([[Print(String.Match(PL,"Get"))]])
File.WriteLine([[ssid_start,ssid_end=String.Find(PL,"SSID=")]])
File.WriteLine ([[if ssid_start y luego ssid_end]])
File.WriteLine ([[amper1_start, amper1_end =string.find (pl,"", ssid_end + 1)]])
File.WriteLine ([[if amper1_start y luego amper1_end]])
File.WriteLine ([[http_start, http_end =string.find (pl, "HTTP/1.1", ssid_end + 1)]])
File.WriteLine ([[if http_start y luego http_end]])
File.WriteLine ([[ssid=string.sub (pl, ssid_end + 1, amper1_start-1)]])
File.WriteLine ([[password=string.sub (pl, amper1_end + 10, http_start-2)]])
File.WriteLine ([[imprimir ("ESP8266 conectarse SSID:"... SSID... "con la contraseña:"... contraseña)]])
File.WriteLine ([[if ssid y contraseña luego]])
File.WriteLine([[SV:Close()]])
--cerrar el servidor y configurar el módulo a modo de estación
File.WriteLine ([[wifi.setmode (Wi-Fi. STATIONAP)]])
File.WriteLine ([[imprimir ("modo de ESP8266 ahora es:"... WiFi.getMode())]])
-configurar el wso de módulo se puede conectar a la red con el SSID y la contraseña recibida
File.WriteLine([[WiFi.Sta.config(SSID,password)]])
File.WriteLine ([[print ("configurar ESP8266 para el modo de estación... Espere por favor.")]])
File.WriteLine([[TMR.Delay(10000000)]])
File.WriteLine ([[imprimir ("ESP8266 estación IP ahora es:"... WiFi.Sta.getip())]])
File.WriteLine ([[imprimir ("ESP8266 AP IP ahora es:"... WiFi.AP.getip())]])
--ahora el módulo es configurado y conectado a la red que permite empezar a fijar cosas para arriba para la lógica de control
File.WriteLine ([[gpio.mode (8, gpio. SALIDA)]])
File.WriteLine ([[gpio.mode (9, gpio. SALIDA)]])
File.WriteLine([[TMR.Delay(10)]])
File.WriteLine ([[gpio.write (8, gpio. ALTO)]])
File.WriteLine([[TMR.Delay(10)]])
File.WriteLine ([[gpio.write (8, gpio. BAJO)]])
File.WriteLine ([[sv=net.createServer (net. TCP, 30)]])
File.WriteLine([[SV:Listen(9999,function(c)]])
File.WriteLine ([[c: a ("recibir", función (c, pl)]])
File.WriteLine ([[if tonumber(pl) ~ = nil entonces]])
File.WriteLine ([[if tonumber(pl) > = 1 y tonumber(pl) < = 16 entonces]])
File.WriteLine([[Print(tonumber(PL))]])
File.WriteLine([[TMR.Delay(10)]])
File.WriteLine ([[gpio.write (8, gpio. ALTO)]])
File.WriteLine([[TMR.Delay(10)]])
File.WriteLine ([[gpio.write (8, gpio. BAJO)]])
File.WriteLine ([[para cuenta =1,tonumber(pl) do]])
File.WriteLine ([[print(count)]])
File.WriteLine([[TMR.Delay(10)]])
File.WriteLine ([[gpio.write (9, gpio. BAJO)]])
File.WriteLine([[TMR.Delay(10)]])
File.WriteLine ([[gpio.write (9, gpio. ALTO)]])
File.WriteLine ([[c:send("Sequence finished")]])
File.WriteLine([[end]])
File.WriteLine([[end]])
File.WriteLine([[end]])
File.WriteLine ([[imprimir ("ESP8266 estación IP ahora es:"... new_ip)]])
File.WriteLine ([[c:send("ESP8266 STATION IP now is:".. new_ip)]])
File.WriteLine ([[c:send("Action completed")]])
File.WriteLine([[end)]])
File.WriteLine([[end)]])
File.WriteLine([[end]])
File.WriteLine([[end]])
File.WriteLine([[end]])
File.WriteLine([[end]])
--Esta es la página que pide el SSID y la contraseña del usuario
File.WriteLine ([[c:send("")]])
File.WriteLine ([[c:send("")]])
File.WriteLine ([[c:send("")]])
File.WriteLine ([[c:send("ESP8266 Wireless control setup")]])
File.WriteLine ([[mac_mess1 = "el módulo de dirección MAC es:"... ap_mac]])
File.WriteLine ([[mac_mess2 = "Tendrá esta dirección MAC para encontrar la dirección IP del módulo, por favor tome nota de ella".]])
File.WriteLine ([[c:send("".. mac_mess1... "")]])
File.WriteLine ([[c:send("".. mac_mess2... "")]])
File.WriteLine ([[c:send("Enter SSID and Password for your WIFI router")]])
File.WriteLine ([[c:send("
")]])
File.WriteLine ([[c:send("
")]])
File.WriteLine([[c:Send("SSID:")]])
File.WriteLine([[c:Send("")]])
File.WriteLine ([[c:send("
")]])
File.WriteLine([[c:Send("Password:")]])
File.WriteLine([[c:Send("")]])
File.WriteLine([[c:Send("")]])
File.WriteLine([[end)]])
File.WriteLine([[end)]])
File.Close()