Autor Tema: Esp8266 & LUA  (Leído 14542 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Esp8266 & LUA
« Respuesta #45 en: 22 de Diciembre de 2016, 17:28:09 »
hola.estoy practicando con el ESP8266-12f. y con el modulo gpio.

en este video pongo la practica:



lo que hace este programa es configurar el ESP en modo estacion y crear un servidor.con el puerto 80 y lo configuraremos con la IP 192.168.1.5 . le daremos el nombre de la red de nuestro router y la clave.
de esta forma el ESP conectara automaticamente con nuestro router y el ESP estara atento a cualquier dato que se le envie desde un cliente que este conectado a nuestro router.

en esta practica el cliente lo configuraremos con el programa hercules.en este indicaremos la IP 192.168.1.5 y el puerto 80.una vez que conectemos tendremos 60s para enviar datos.
transcurrido este tiempo sin enviar datos la conexion se cerrara y tendremos que conectar de nuevo.

este es el codigo con el hay que programar al ESP:

Código: [Seleccionar]
pin4=4                          --asignamos valor  para la variable pin

--Numeros de los pin

--gpio 8=D8 de lolin
--gpio 7=D7 de lolin
--gpio 6=D6 de lolin
--gpio 5=D5 de lolin
--gpio 4=D4 de lolin y led azul del esp8266-12F
--gpio 3=D3 de lolin
--gpio 2=D2 de lolin
--gpio 1=D1 de lolin
--gpio 0=D0 de lolin

gpio.mode(pin4, gpio.OUTPUT)     --configuramos el pin 4 como salida.

wifi.setmode(wifi.STATION)        --modo estacion


ssid="nombre_de_la_wi_fi"
clave="clave_de_wifi_del_router"


 
 wifi.sta.setip({ip="192.168.1.5",netmask="255.255.255.0",gateway="192.168.1.1"})   --configura IP fija.donde ipMem es la ip almacenada en un archivo.
 wifi.sta.config(ssid,clave)                --nombre del punto de acceso wi-fi de nuestro router.y la clave

 wifi.sta.connect()                                         --conectar con el cliente



 srv=net.createServer(net.TCP,60)                           --crea el servidor.y si no hay trafico,cierra conexion pasados 60s
 srv:listen (80,function(conn)                               --estar a la escucha en el puerto 80.
    conn:on("receive",function(conn,payload)                --evento de recepcion y carga el valor leido en payload
    print(payload)                                          --envia al puerto serie lo que se recive desde el cliente

       
                 if payload=="ledon\r" then              --secuencia para encender led
         gpio.write(pin4, gpio.HIGH)         --encender led
          conn:send("Led On")               --envia al cliente.mensage
          print("evento on ",pin4)         --envia datos a la usart
         
        elseif payload=="ledoff\r" then     --secuencia para apagar led
         gpio.write(pin4, gpio.LOW)          --apagar led
         conn:send("Led Off")               --envia al cliente.mensage
         print("evento off ",pin4)         --envia datos a la usart
       
                 end
       
    end)
end)

y asi queda el hercules.abajo estan los botones con el codigo hexagesimal que hay que enviar para encender/apagar el led.que en realidad es ledon y lodoff con el caracter de control 0d.(intro)




Como Lua es un lenguage intrepretado.al ESP hay que cargarle un firmware.hasta el dia de hoy.yo me bajaba la version 0.9xxxx. pero desde hace un tiempo el firware hay que descargarlo a la carta.
es decir.antes se cargaban todos los modulos aunque no los fueramos a usar.esto hacia que saturaramos la memoria del ESP.ahora debemos elegir los modulos que queramos incluir en el firmware y noslos envian por e.mail

la pagina es esta: https://github.com/nodemcu/nodemcu-firmware/releases





« Última modificación: 22 de Diciembre de 2016, 17:34:24 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:Esp8266 & LUA
« Respuesta #46 en: 23 de Diciembre de 2016, 10:13:43 »
Muy bueno!

yo recivi uno de estos:
https://www.aliexpress.com/item/V3-4M-bytes-32Mbits-FLASH-NodeMcu-Lua-WIFI-Networking-development-board-Based-ESP8266-with-firmware/32469449989.html

y estoy esperando finalizar la mudanza y armar el tallercito para meterle mano!
-
Leonardo Garberoglio

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Esp8266 & LUA
« Respuesta #47 en: 23 de Diciembre de 2016, 11:19:13 »
si.es igual que el que yo tengo.y con el que estoy haciendo las practicas.en la placa pone lolin.tambien he comprado los ESP8266-12f .
salen mas varatos.incluso comprando el conversor usb-ttl y el regulador de 3.3v sale mas economico que el lolin.

aunque este es mas comodo. ya que tenemos el reset y el boton que hay que pulsar para cargar el firmware.(boton flash) solo hay que dejarlo pulsado antes de programar la flash.
y solarlo en cuanto se este programando.no hace falta tenerlo pulsado todo el rato.

en la flash 0.9xxx se trabajaba a 9600bps. en la ultima version master funciona a 115200.asi que programar la flash es vastante rapido.

Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Esp8266 & LUA
« Respuesta #48 en: 24 de Diciembre de 2016, 12:20:31 »
he encontrado esta tienda en ebay para este modulo:



http://www.ebay.es/itm/381303446767?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

aqui lo venden por 3.18€   respect a lo que vale el modulo ESP-12e a 1.80€. no vale la pena comprarlo suelto.ya que fabricar la placac ya se nos va mas en tiempo y materiales.aunque si viene bien
para soldarlo a algun prototipo que estemos desarroyando.

quiero poner este enlace a la documentacion del nodemcu.que es de mucha utilidad:

https://nodemcu.readthedocs.io/en/master/

yo lo que he hecho es poner dos litios en serie y regulado con un LM7805. a estos litios le he puesto unos modulos para cargarlos independientemente con dos cargadores de movil.
ya que el usb del ordenador no es suficiente para alimentar estos modulos.

« Última modificación: 25 de Diciembre de 2016, 09:12:24 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Esp8266 & LUA
« Respuesta #49 en: 24 de Diciembre de 2016, 13:40:20 »
El ESP-12e integra un led azul que esta conectado al pin4 (D4)

y yo lo que queria es saber en todo momento cuando el modulo esta conectado con mi router.he estado practicando con varias instrucciones pero no encontraba lo que buscaba.
hasta que he dado con esto:

wifi.eventmon.register()
 
esta funcion registra los eventos de la wifi en el modo estacion.y podemos informarnos del estado de esta.asi que he modificado el programa anterior para que el led azul se encienda
cuando tenga conexion.y se apage cuando no la tenga.

aqui esta la descripcion:

hay que tener en cuenta que este led enciende a estado 0 y apaga a estado 1 .

Código: [Seleccionar]

pin4=4                          --asignamos valor  para la variable pin

--Numeros de los pin

--gpio 8=D8 de lolin
--gpio 7=D7 de lolin
--gpio 6=D6 de lolin
--gpio 5=D5 de lolin
--gpio 4=D4 de lolin y led azul del esp8266-12F
--gpio 3=D3 de lolin
--gpio 2=D2 de lolin
--gpio 1=D1 de lolin
--gpio 0=D0 de lolin

gpio.mode(pin4, gpio.OUTPUT)     --configuramos el pin 4 como salida.
gpio.write(4, gpio.HIGH)          --apaga led del ESP8266

wifi.setmode(wifi.STATION)        --modo estacion


ssid="nombre_de_la_wi_fi"
clave="clave_de_wifi_del_router"


 
 wifi.sta.setip({ip="192.168.1.5",netmask="255.255.255.0",gateway="192.168.1.1"})   --configura IP fija.donde ipMem es la ip almacenada en un archivo.
 wifi.sta.config(ssid,clave)                --nombre del punto de acceso wi-fi de nuestro router.y la clave

 wifi.sta.connect()                                         --conectar con el cliente


  wifi.eventmon.register(wifi.eventmon.STA_CONNECTED, function(T)
    print("\n\tSTA - CONNECTED".."\n\tSSID: "..T.SSID.."\n\tBSSID: "..
    T.BSSID.."\n\tChannel: "..T.channel)
     gpio.write(4, gpio.LOW)          --enciende led del ESP8266
    end)
  wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED, function(T)
    print("\n\tSTA - DISCONNECTED".."\n\tSSID: "..T.SSID.."\n\tBSSID: "..
    T.BSSID.."\n\treason: "..T.reason)
    gpio.write(4, gpio.HIGH)          --apaga led del ESP8266
    end)   


 srv=net.createServer(net.TCP,60)                           --crea el servidor.y si no hay trafico,cierra conexion pasados 60s
 srv:listen (80,function(conn)                               --estar a la escucha en el puerto 80.
    conn:on("receive",function(conn,payload)                --evento de recepcion y carga el valor leido en payload
    print(payload)                                          --envia al puerto serie lo que se recive desde el cliente

       
                 if payload=="ledon\r" then              --secuencia para encender led
         gpio.write(pin4, gpio.HIGH)         --encender led
          conn:send("Led On")               --envia al cliente.mensage
          print("evento on ",pin4)         --envia datos a la usart
         
        elseif payload=="ledoff\r" then     --secuencia para apagar led
         gpio.write(pin4, gpio.LOW)          --apagar led
         conn:send("Led Off")               --envia al cliente.mensage
         print("evento off ",pin4)         --envia datos a la usart
       
                 end
       
    end)
end)

una cosa muy importante es que al archivo hay que cargarlo en el modulo con el nombre init.lua


dentro de mi casa ha llegado a desconectarse a los 25mtrs con dos puertas metalicas de por medio.pero con vista directa al router llega bastante mas lejos.
cuando me he alejado la luz se ha apagado bastante lejos.pero para encenderse ha tenido que acercarme algo mas.

no voy a ponerme a medir distancias porque todo depende del enfoque de la señal y las antenas que usemos.ademas hay pruebas en youtube que indican distancias kilometricas.
yo lo voy a usar para la apertura de un cochera.y conque se conecte a 25mtrs tengo mas que de sobra.

Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Esp8266 & LUA
« Respuesta #50 en: 25 de Diciembre de 2016, 10:52:23 »

tambien quiero mostrar el funcionamiento del modulo gpio para el uso de los pin de E/S.

para el uso de las E/S del modulo.hay que configurar el pin como entrada o como salida con esta instruccion.

gpio.mode(pin, mode [, pullup])

en pin hay que poner el numero del pin que vallamos a usar.
en mode. si vamos a usar el pin como entrada,salida,opendrain o como interrupcion.
y en pullup.si lo usamos como entrada.podemos activar las resistencias internas pull-up.por defecto esta en float.float significa que se almacena el valor.es decir que toma el ultimo valor que
le allamos aplicado.por defecto puede tmar el valor 0 o 1 segun como haya quedado cargada la entrada.

hay que configurar las pull-up o usar resistencias para obtener los valores deseados.en el caso de usar pulsadores o dispositivos opendrive.

este modulo trabaja con 3.3v. asi que debemos tener cuidado con el nivel de las señales de entrada.y ponerles las devidas protecciones.como resistencias,diodos u otros componentes.


ejemplo para configurar una entrada con pull-up activada.
gpio.mode(1,gpio.OUTPUT)  --pin 1 como salida.
gpio.mode(2,gpio.INPUT)  --pin 2 como entrada.
gpio.mode(3,gpio.INPUT,gpio.PULLUP)  --pin 3 como entrada.y pullup activada

aqui hay mas funcines que se pueden usar: https://nodemcu.readthedocs.io/en/master/en/modules/gpio/
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Esp8266 & LUA
« Respuesta #51 en: 25 de Diciembre de 2016, 16:43:57 »
con este codigo configuramos un pin para que produzca una interrupcion.en este caso es al ponerlo en estado bajo.pero hay muchas mas configuraciones.
Código: [Seleccionar]
pin=2
gpio.mode(pin,gpio.INT,gpio.PULLUP)         --configuramos el pin  como entrada e interrupcion activada


 do
 
 local function pin1cb(level)
  print( "esto es una interrupcion" )
  gpio.trig(pin, level == gpio.HIGH  and "down" or "up")
  end
    gpio.trig(pin, "down", pin1cb)
    end
« Última modificación: 25 de Diciembre de 2016, 19:58:45 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Esp8266 & LUA
« Respuesta #52 en: 14 de Octubre de 2017, 11:15:06 »
hola.ya estoy aqui de nuevo con la programacion de estos tipos de dispositivos.

ahora que he empezado de nuevo.me esta costando mucho trabajo reiniciar las practicas.ya que se me ha olvidado muchas cosas.
y al olvidarse las cosas.pues se cometen errores.y estos errores bloquean el ESP8266.o mas bien diria que el ESP se queda en un bucle infinito
que imposibilita salir de este.la solucion es poner una instruccion en el codigo que pare la ejecucion del script.

esto se soluciona por ejemplo poniendo estas linea que detiene la ejecucion del programa.

Código: [Seleccionar]
gpio.write(ledAzul, gpio.LOW)          --enciende led del ESP8266
tmr.delay(1000000)
gpio.write(ledAzul, gpio.HIGH)          --apaga led del ESP8266
tmr.delay(1000000)
gpio.write(ledAzul, gpio.LOW)          --enciende led del ESP8266
tmr.delay(1000000)
gpio.write(ledAzul, gpio.HIGH)          --apaga led del ESP8266
tmr.delay(1000000)

-- si durante el reseteo del ESP8266.se mantiene el pin 3(boton Flash) a cero,el archivo init.lua se borrara.esto da la opcion
-- de desbloquear el ESP ante un bucle infinito.
if gpio.read(3)==0 then
print("Init.lua Borrado ")
file.remove("init.lua")
end


al resetear el ESP este enciende dos veces el led azul.antes de que termine esta secuencia hay que mantener pulsado el boton Flash.y de esta forma se borra el archivo de arranque
init.lua   asi pdemos volverlo a grabar sin tener que flasear el modulo.


pero en el caso de que no tubieramos la precaucion de hacer esto.tendriamos que flashear el ESP8266.aunque esto parece muy sencillo.
aveces no lo es tanto.porque si le queda alguna zona de la memoria que no se ha borrado.el flaseo no funciona.

para borrar del todo la flash.antes de grabar el scrip de lua.hay que grabarle unos archivos vacios.hay varios programas
para hacer esto.pero aveces no funcionan como quisieramos.

un programa es el  NODEMCU FIRMWARE PROGRAMMER

aunque si nos da problemas.tambien podemos usar el ficial de aqui: http://espressif.com/en/support/download/other-tools

es el Flash Dounload Tools.



lo unico que hay que hacer para borrar la flash.es indicarle donde estan los archivos,la direccion. y darle a grabar.

en el caso de querer grabar archivos en blanco.se le dara la direccion del archivo blanc.bin
depende de la capacidad de Flash que tenga nuestro ESP.se grabaran un archivo por cada 512K.y se indicaran sus direcciones.
ademas de seleccionar los check.



cuando grabemos el script de lua.por ejempl. el nodemcu-master-8-modues-xxxx
al conectarlo al ESPlorer.lo resetearemos. y aparecera la frase:

Formatting file system. Please wait...


pues esperaremos a que forf¡matee el ESP y ya solo nos queda meterle el archivo init.lua y demas archivos conjuntos si los tenemos.



otra forma de formatear es usar solo el el programa oficial.ESP8266 DOUNLOAD TOOL sin usar los archivos blank.bin

para ello.despues de seleccionar el puerto y la velocidad.que en este caso usaremos la mas alta que nos deje hacer una buena grabacion
sin errores.

pondremos el ESP en modo de Flaseo.manteniendo pulsado el boton Flash,pulsamos brebemente el boton reset sin soltar el boton Flash.
luego soltamos el boton Flash.le damos a ERASE en el programa oficial.y se encendera intermitentemente el led azul durante la operacion de borrado.
luego haremos lo mismo para la programacion.pero hay que pulsar entes el boton STOP para una nueva programacion

aveces incluso habra que desconectar el usb.para que el puerto este abierto.

tambien decir que el boton Flash pertenece al GPIO 0.y el reset al RST.



en el ESPlorer siempre deberemos trabajar a 115200bps.y esperar al formatting despues de un flaseo

despues del flaseo queda conectar el programa ESPlorer y resetear. luego esperar a que termine: Formatting file system. Please wait...
y luego meter el init.lua





« Última modificación: 14 de Octubre de 2017, 11:24:07 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Esp8266 & LUA
« Respuesta #53 en: 22 de Octubre de 2017, 11:37:25 »
bueno.pues ya me he puesto al dia con estos mudulitos que ya se pueden conseguir a 3€ con el lolin incluido.aunque no son circuitos muy potentes
son muy buena opcion para proyectos de control domotico.

en este caso he realizado una aplicacion que utilizo para saber cuanto tiempo me duran unas baterias donde le conecto unas lamparas.
lo unico que le conecto al lolin.es un LDR con una resistencia de 2k2.lo dispongo como un divisor de tension.donde el extremo de la resistencia
lo conecto a masa.el extremo del LDR al 3.3v y la union de los dos componentes a ADC0 del lolin.

la entrada analogica puede contener un valor entre 0 y 1024.donde 0 es oscuridad y 1024 claridad.

yo he fijado el valor de corte en 500.para que el circuito no se vea afectado por la luminosidad del ambiente.

una vez que reseteamos el ESP8266.un contador de horas,minutos y segundos.comienza el contage.y este estara contando hasta que el valor
de luminosidad descienda por debajo de 500.cuando se sobrepase este limite,el contador se parara.y sabremos cuanto tiempo ha estado la luz encendida.

para acceder a estos datos.he creado un serevidor WEB.para entrar en este servidor,usaremos el navegador WEB de nuestro ordenador
o el movil.

entraremos con la direccion 192.168.1.5 pero antes deberemos de conectarnos al punto de acceso llamado Contador5.como la seguridad esta abierta,
no necesitaremos contarseña.

una vez conectados aparecera esto:



nos indica el valor de contage,valor del nivel de luminosidad y el estado.si esta en funcionamiento o a terminado.

tambien tenemos un boton que nos refrescara los datos.


Código: [Seleccionar]
--config.lua

--Variables
sec=0
min=0
hor=0
final=0
adcval=1024
limite=500



-- WiFi
WIFI_SSID = "Contador5"--"HUAWEI-E5186-AACA"--"WLAN_05"--"WiFi-RepeaterCH"
WIFI_PWD  = ""

MI_IP="192.168.1.5"


-- Confirmation message
print("\nGlobal variables loaded...\n")


Código: [Seleccionar]
--exit_prog.lua

ledAzul=4                           --pin 4.led azul del modulo
pinFlash=3                           --pin para el borrado del archivo init.lua(boton Flash)

gpio.mode(ledAzul,gpio.OUTPUT)       --configuramos el pin ledAzul como salida.
gpio.mode(pinFlash,gpio.INPUT,gpio.PULLUP)       --configuramos el pin exit como entrada.


gpio.write(ledAzul, gpio.LOW)          --enciende led del ESP8266
tmr.delay(1000000)
gpio.write(ledAzul, gpio.HIGH)          --apaga led del ESP8266
tmr.delay(1000000)



-- si durante el reseteo del ESP8266.se mantiene el pin 0(boton Flash) a cero,el archivo init.lua se borrara.esto da la opcion
-- de desbloquear el ESP ante un bucle infinito.
if gpio.read(pinFlash)==0 then
print("Init.lua Borrado ")
file.remove("init.lua")
end

Código: [Seleccionar]
--adc.lua

channel=0                               --pin A0 del nodemcu
gpio.mode(channel,gpio.INPUT)


if adc.force_init_mode(adc.INIT_ADC)
then
  node.restart()
  return -- don't bother continuing, the restart is scheduled
end

Código: [Seleccionar]
--init.lua
 
dofile ("exit_prog.lua")                  --opcion para salir del prgrama
dofile ("config.lua")                     --variables del programa
dofile ("adc.lua")                        --carga el archivo que gestiona el adc



AP_cfg={}                                                       --configura nombre del punto de acceso
AP_cfg.ssid="Contador5"--WIFI_SSID
wifi.ap.config(AP_cfg)



setIP_cfg =                                                     --configura IP
 {
    ip=MI_IP,netmask="255.255.255.0",gateway="192.168.1.1"
 }   
wifi.ap.setip(setIP_cfg)


wifi.setmode(wifi.SOFTAP)                                       --modo punto de acceso
wifi.sta.connect()




wifi.eventmon.register(wifi.eventmon.AP_STACONNECTED, function(T)
 print("\n\tAP - STATION CONNECTED".."\n\tMAC: "..T.MAC.."\n\tAID: "..T.AID)
 
     gpio.write(ledAzul, gpio.LOW)          --enciende led del ESP8266
    end)

wifi.eventmon.register(wifi.eventmon.AP_STADISCONNECTED, function(T)
 print("\n\tAP - STATION DISCONNECTED".."\n\tMAC: "..T.MAC.."\n\tAID: "..T.AID)
     gpio.write(ledAzul, gpio.HIGH)          --apaga led del ESP8266
    end)   
 


 srv=net.createServer(net.TCP,60)                           --crea el servidor.y si no hay trafico,cierra conexion pasados 60s
 srv:listen (80,function(conn)                               --estar a la escucha en el puerto 80.
    conn:on("receive",function(conn,payload)                --evento de recepcion y carga el valor leido en payload
    print(payload)                                          --envia al puerto serie lo que se recive desde el cliente
    --print("ssid: ", wifi.sta.getrssi())

   
     conn:send("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n<h1> Circuito Contador </h1>\r\n")
 
        print (time)
       conn:send("<h3> Tiempo luz encendida: </h3>"..time)
        conn:send("<h3> Intensidad de la Luz. valor entre 0 y 1024. limite:500 </h3>")
        conn:send("<h3> Valor Actual </h3>"..adcval.."<pre></pre>")



       
    conn:send('<form method="post">')
    conn:send('<input type="submit"   value="Actualizar"  style="height: 50px; width: 200px"/>')
    conn:send('</form></body></html>')

   
        if (adcval<limite) then
            conn:send("\r\n\r\n<h2> FINALIZADO </h2>")
                else
            conn:send("\r\n\r\n<h2> RUN </h2>")
        end
       
        end)
    tmr.delay(1000000)                                      -- 1 segundo de retardo
   
end)

        mytimer = tmr.create()
        mytimer:register(1000, tmr.ALARM_AUTO,  function() contador() end )
        mytimer:start()
       
       
 function contador ()
        if (adcval<limite) then  mytimer:stop() end            --para el contador si el valor de luminosidad esta por debajo del limite
 
        adcval=adc.read(channel)   
        sec=sec+1
        if (sec==60) then sec =0 min=min+1 end
        if (min==60) then min = 0 hor=hor+1 end

        if (string.len(hor)<2) then hor="0"..hor end                 --ajusta a dos cifras
         if (string.len(min)<2) then min="0"..min end                 --ajusta a dos cifras
          if (string.len(sec)<2) then sec="0"..sec end                 --ajusta a dos cifras
     
        time=(hor)..":"..(min)..":"..(sec)..":"
     
       print (time)
       print (adcval)
       
end   




config.lua   es donde asignamos nuestras variables

exit_prog.lua  es un script que nos borra el archivo principal init.lua en caso de que el modulo se nos quede bloqueado en un bucle sin fin.
      para ejecutarlo solo tenemos que pulsar el boton reset y seguidamente mantener pulsado el boton flash.luego pulsamos reset de nuevo
      y veremos como se ha borrado el archivo.ya solo tendriamos que volver a cargarlo con el ESPlorer.
adc.lua      configura el ADC interno.

init.lua   es el programa principal.


espero que les sea de utilidad.pondre mas proyectos para circuitos simples que pueden complementar a otros de mayor complejidad.

PD: recordar que cuando compileis el firmware de aqui: https://nodemcu-build.com/  seleccionar tambien el ADC. y descargaros el integer.que es el que yo uso.
« Última modificación: 22 de Octubre de 2017, 11:45:11 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado osposto

  • PIC10
  • *
  • Mensajes: 25
Re:Esp8266 & LUA
« Respuesta #54 en: 02 de Abril de 2021, 19:31:34 »
Estimados: Soy un programador en C de microcontroladores, y he comprado un módulo NODE MCU LUA, para conexión wifi con el consabido Esp8266. Lo compré hace 2 días, a un precio razonable, y por la razonabilidad del precio es que creo que hice macanas...
Por supuesto (y es por esto que les consulto), la magnitud de la macana que me mandé va a depender de la respuesta a esta pregunta: Es indefectible aprender LUA para este módulo? Si o si?
No existe forma de cambiar firmware o algo por el estilo, como para que siga teniendo la misma funcionalidad, pero escrito en C, que es algo que manejo de hace muchos años?
Estuve leyendo algo de LUA, y en definitiva es una máscara para C, para hacerlo más entendible y manejable para aquellos que no programan en este.. y es lógico, porque C a veces lleva a romperse la cabeza con facilidad. Pero bueno, burro viejo no agarra el paso.
Gracias por su comprensión, y si saben algo, gracias por su colaboración también.
Saludos.
No sé lo que quiero, pero lo quiero ya. - Sumo

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1528
    • winpic800
Re:Esp8266 & LUA
« Respuesta #55 en: 03 de Abril de 2021, 01:28:41 »
No estoy muy enpapado del tema pero es mi experiencia .
Adquiri el un modulo ESP12E .



Con el firmware que trade por defecto te puedes comunicar con comandos AT .
rs232 con PC,raspberry,microcontrolador etc. y se tiene acceso a todo lo necesario en lo que respecta al wifi .

https://www.espressif.com/sites/default/files/documentation/4a-esp8266_at_instruction_set_en.pdf

Tambien prove vscode con platformio en C , y tienes acceso a sus E/S ADC spi etc .chuta , pero no tengo experiencia con el ademas que segun que modelo tienes poco hardware libre para usar .


Desconectado fuente

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 548
Re:Esp8266 & LUA
« Respuesta #56 en: 03 de Abril de 2021, 04:23:28 »
Hola a todos.
Compré un par de esp12E hace algo más de un año, y con el confinamiento me dio tiempo a hacer algo con ellos.
No es necesario aprender LUA, de hecho he tenido que buscar en Google lo que es. Se pueden programar desde el entorno arduino. Hay un montón de información por internet. Hay librerías que hasta te permiten cargar ficheros con páginas html y scripts de JavaScript para el lado del cliente y programar en c++ el lado del servidor, haciéndolos funcionar como servidores web completamente independientes.

A poco que busques, encontrarás un montón de información y de proyectos que han hecho con estos módulos. Lo que parece es que se están quedando obsoletos, y están siendo reemplazados por los ESP32.