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

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

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Esp8266 & LUA
« en: 31 de Diciembre de 2015, 19:26:04 »
hola a todos.en algun tema del foro. ya comente que no me iba a meter a aprender LUA.ya que mi tiempo es limitado.pero la posibilidad
de controlar dispositivos sin añadir gastos como integrar un miscrocontrolador,me ha vencido.ya que es algo muy tentador.

por eso abrire este tema para poner mis experiencias con el ESP8266 y su programacion con LUA.

para empezar voy a poner unos enlaces muy importantes para trabajar con este.

la API:
https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en#fileread
http://www.nodemcu.com/docs/index/

y el manual de referencia:
http://www.lua.org/manual/5.1/es/manual.html

el ESP8266Flasher para programar la flash.para win32/64

https://github.com/nodemcu/nodemcu-flasher

la flash con la que programaremos el ESP8266.en mi caso he usado la nodemcu_float_0.9.6-dev_20150704.bin

https://github.com/nodemcu/nodemcu-firmware/releases


el programa Esplorer.que es una herramienta para programar nuestro ESP8266.

http://www.akirasan.net/esplorer-ide-de-programacion-para-esp8266/


y el programa hercules para hacer conexiones por la red.

http://www.hw-group.com/products/hercules/index_en.html






no voy a explicar como se usan estos programas porque hay informacion en internet y en youtube.asi que pondre diferentes configuraciones
para el uso de las diferentes funciones de la API del ESP8266.

tambien explicare diferentes cosas muy importantes y sencillas que si no las realizamos,nos va a doler bastante la cabeza.

una de ellas es que cada vez que programemos el ESP con el Esplorer.es que cerraremos la conexion y resetearemos el ESP.yo lo que
hago es sacar el conversor USB-TTL del ordenador y luego lo conecto de nuevo.

otra cosa es que el archivo que carguemos en el Esp.sera nombrado como    init.lua



bueno.lo primero que voy a hcer es implentar un servidor en nuestro ESP8266. y este es el codigo:

Código: [Seleccionar]
wifi.setmode(wifi.STATION)        --modo estacion
 wifi.sta.config("SSID","clave")    --nombre del punto de acceso wi-fi de nuestro router.y la clave
 wifi.sta.setip({ip="192.168.1.5",netmask="255.255.255.0",gateway="192.168.1.1"})   --configura IP fija
 wifi.sta.connect()         --conectar
 
 print("ESP8266 mode is: " .. wifi.getmode())           --indica el modo wi-fi.(estacion en este caso)
 print("The module MAC address is: " .. wifi.ap.getmac())   --indica la mac de nuestro dispositivo
 print("Config done, IP is "..wifi.sta.getip())         --indica la IP que nos ha asignado el router.

 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
    conn:send("HOLA MUNDO")                      --envia al cliente. HOLA MUNDO.
   
   
    end)
end)


como veis las lineas estan comentadas para indicar su funcion.

las lineas que empiezan con el comando wifi son las que configuran el servidor.la primera selecciona el modo STA.la segunda ingresa
el nombre de la wi-fi del punto de acceso de nuestro router.y la clave
la siguiente asigna una IP fija para nuestro servidor.si no pusieramos esta linea. se nos asignaria automaticamente.pero como es aleatoria,
no sabriamos cual es si no la consultamos.
y posteriormente conectamos.

las lineas print es para consultar diferentes comandos.y son enviados por el puerto serie.

las lineas srv son para la creacion de la comunicacion del servidor con el cliente.
la primera crea el servidor con un limite maximo de conexion sin tarfico de 60segundos.
la siguiente configura al servidor para escuchar por el puerto 80
siguiente para cargar en la variable payload lo que se reciva por el puerto 80.
print es para sacar el dato por la usart.
y send es para responder al cliente con los datos que queramos.en este caso HOLA MUNDO.


para comunicarnos con este programa usaremos el Hercules.con este formato:



si quisieramos acceder desde un navegador como el crome,opera,firefox,iexplorer etc...

pondriamos 192.168.1.5 en la barra de busqueda y el servidor nos responderia con HOLA MUNDO.pero la linea conn:send("HOLA MUNDO")
hay que cambiarla por: conn:send("<h1> HOLA MUNDO.</h1>")   ya que el navegador funciona con codigo HTML.
« Última modificación: 06 de Enero de 2016, 16:25:09 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2888
Re:Esp8266 & LUA
« Respuesta #1 en: 31 de Diciembre de 2015, 20:10:06 »
Impresionante y detallada explicación groudman ((:-)) ((:-))

Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:Esp8266 & LUA
« Respuesta #2 en: 31 de Diciembre de 2015, 20:26:22 »
 Excelente explicación! Hace meses que quiero hacer lo que estas haciendo y no he tenido tiempo. Así que quedo atento a los avances y a ver si me pudo poner a probar lo que vas compartiendo.

Saludos!
-
Leonardo Garberoglio

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Esp8266 & LUA
« Respuesta #3 en: 31 de Diciembre de 2015, 20:44:24 »
encantado de ser de ayuda.a pocos minutos pasados del año 2016. :-/

espero que sigamos avanzando en la tecnologia del futuro.y que este año nos entren mas jugueticos de estos y mas
a nuestro alcance.economicamente hablando.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Esp8266 & LUA
« Respuesta #4 en: 31 de Diciembre de 2015, 20:45:59 »

En este ejemplo encenderemos un led conectado al pin GPIO2 del Esp8266-1 que en el codigo esta asignado con el valor 4.
pin que segun la segunda linea es configurado como salida.

tal y como veis en el codigo.hay un par de condicionales que activan/desactivan el led segun se reciva ledon/r  o ledoff/r
desde el cliente del Hercules.podemos usar otra combinacion de caracteres para los condicionales.yo he usado /r porque
es un return que usaremos en la siguiente practica.que trabajaremos con la usart del modulo.

Código: [Seleccionar]

pin=4                           --asignamos valor 4 para la variable pin
gpio.mode(pin, gpio.OUTPUT)     --configuramos el pin 4 como salida.



wifi.setmode(wifi.STATION)        --modo estacion
 wifi.sta.config("SSID","clave")    --nombre del punto de acceso wi-fi de nuestro router.y la clave
 wifi.sta.setip({ip="192.168.1.5",netmask="255.255.255.0",gateway="192.168.1.1"})   --configura IP fija
 wifi.sta.connect()         --conectar
 print("ESP8266 mode is: " .. wifi.getmode())           --indica el modo wi-fi.(estacion en este caso)
 print("The module MAC address is: " .. wifi.ap.getmac())   --indica la mac de nuestro dispositivo
 print("Config done, IP is "..wifi.sta.getip())         --indica la IP que nos ha asignado el router.

 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

    --activacion de la salida D1 del ESP8266-1
    if payload=="ledon\r" then              --secuencia para encender led
         gpio.write(pin, gpio.HIGH)         --encender led
          conn:send("Led On")               --envia al cliente.mensage
          print("evento on")
         
        elseif payload=="ledoff\r" then     --secuencia para apagar led
         gpio.write(pin, gpio.LOW)          --apagar led
         conn:send("Led Off")               --envia al cliente.mensage
         print("evento off")
       
         end
   
       
    end)
end)

aqui un video de su funcionamiento:

« Última modificación: 03 de Enero de 2016, 11:51:42 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:Esp8266 & LUA
« Respuesta #5 en: 31 de Diciembre de 2015, 20:57:18 »
Una consulta, sabes si hay driver para manejar una uSD en lua?

Saludos!
-
Leonardo Garberoglio

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Esp8266 & LUA
« Respuesta #6 en: 31 de Diciembre de 2015, 21:19:01 »
si te refieres a controlar una sd con el Esp8266.en el SDK viene como se usa el SPI.asi que una targeta SD se deberia poder
leer/escribir.

una libreria no se si abra.aunque me extraña que no hayan ya practicado con eso.


ahh.aqui un enlace:



y aqui la libreria:

https://github.com/MetalPhreak/ESP8266_SPI_Driver
« Última modificación: 31 de Diciembre de 2015, 21:30:42 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:Esp8266 & LUA
« Respuesta #7 en: 31 de Diciembre de 2015, 21:38:54 »
Jajaj, estas en el futuro! Acá en argentina faltan unas horas para año nuevo!

Bueno, eso de la micro sd era lo que estaba esperando! Si ya hay soporte voy a arrancar con este modulo.

Pusiste algo del conexionado del modulo con la pc? Lo hace con un USB a ttl, no? Hay que tener cuidado con niveles de tensión o funciona a 5v?

Saludos y buen año!
-
Leonardo Garberoglio

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Esp8266 & LUA
« Respuesta #8 en: 31 de Diciembre de 2015, 21:51:37 »
bueno te comentare algo desde el año 2016.ya que es verdad que tu estas en el 2015.y a lo mejor tengo los datos un poco
mas actualizados. :D

te dire que yo uso un conversor USB-TTL de esos baratos.y tiene un puente que conmuta a 5 o 3.3v
lo conecto directamente al modulo.a 3.3v y no me hace falta alimentarlo externamente.

pero eso es con este modulo ESP8266-1
para usar una microSD te recomiendo el ESP8266-12E o superior.ya que no varia mucho el precio.ademas que el ESP8266-1
no sirve por no tener suficientes pins.

el que lo puedas alimentar directamente desde el puerto USB depende de tu PC.todos los puertos USB tienen su propia
intensidad.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Esp8266 & LUA
« Respuesta #9 en: 02 de Enero de 2016, 20:04:58 »

ahora practicaremos con la uart:

Código: [Seleccionar]
recepcion="null"

wifi.setmode(wifi.STATION)        --modo estacion
 wifi.sta.config("SSID","clave")    --nombre del punto de acceso wi-fi de nuestro router.y la clave
 wifi.sta.setip({ip="192.168.1.5",netmask="255.255.255.0",gateway="192.168.1.1"})   --configura IP fija
 wifi.sta.connect()         --conectar
 print("ESP8266 mode is: " .. wifi.getmode())           --indica el modo wi-fi.(estacion en este caso)
 print("The module MAC address is: " .. wifi.ap.getmac())   --indica la mac de nuestro dispositivo
 print("Config done, IP is "..wifi.sta.getip())         --indica la IP que nos ha asignado el router.

 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

   
   
    end)
end)

   
--configura uart
    uart.setup(0,9600,8,0,1)
    print ("uart.setup(0,9600,8,0,1) finished")
    print ("waiting for serial data....")



--recepcion de la usart
 uart.on("data","\r",function(data)
     
        print(data)    --imprime el dato recivido por la usart
        recepcion=data
       
        if data=="quit\r" then              --palabra para salir del modo usart
          uart.on("data")
        end       
       
    end, 1)-- valor 0 no entra en modo interprete.pero acepta binarios
           -- valor 1 pude entrar en modo interprete


la uart es un poco liosa de manejar.ya que el interprete tambien la usa para mandarnos mensages.aunque el modo interprete puede
dasactivarse tal como se indica en las dos ultimas lineas del codigo.lo malo es que una vez desactivado no podremos mandar comandos
como por ejemplo "Format" para poder borra la eeprom.pero con una condicional que configuremos,como por ejemplo quit\r
cuando se reciba esta trama.saldremos del modo usart y podremos mandar el comando format.

si no pudieramos entrar en el modo interprete.siempre nos queda la opcion de flashear el Esp8266.para eso hay que poner GPIO0 a cero.
y siempre que tengamos algun tipo de problema resetear el modulo.tambien antes y despues del flasheo.





si seleccionamos el valor 0 de la ultima linea.ya no podremos enviar comandos.pero podremos recivir datos desde el cliente
y mandarlos a la uart.y tambien podremos enviar datos al cliente mediante la uart.solo que los datos recibidos de la uart
se almacenan en una variable.que seran enviados en la proxima recepcion de datos del cliente.ademas no recibiremos datos que
nos podrian interferir desde el interprete.

como dije antes.tendremos que enviar quit\r para salir del modo uart y entrar en el modo interprete.asi que mandaremos desde
el terminal serie de Hercules quit\r en formato hexagesimal este valor:71 75 69 74 0d

mas que nada por el ultimo caracter que no podemos enviarlo en formato ascii porque es un caracter especial.

esto lo enviaremos un par de veces para asegurarnos que se deshabilita la uart.para saber si se ha entrado en el modo interprete.
le daremos al boton FS info del ESplorer.y reciviremos algo asi como:

Total : 504761 bytes
Used  : 2259 bytes
Remain: 502502 bytes

si seleccionamos el valor 1 de la ultima linea.tambien funcionara la uart.pero nos entrara memsajes del interprete que podria molestarnos.





Tambien hay otro punto a describir respecto a la uart.se trata de la norma de recepcion de datos.
nosotros hemos usado el caracter \r para determinar el final de la trama a recibir desde la uart.pero tambien hay otra forma.
y es indicar la cantidad de datos a recivir.

seria cambiar la linea esta:  uart.on("data","\r",function(data)  por esta:  uart.on("data",10,function(data)

esto nos viene bien a la hora de recibir tramas con un tamaño determinado.pero si no tenemos un orden sobre la cantidad de bytes a recibir.
los datos no llegarian ordenados.

ya que los datos recividos por la uart se almacenan en un buffer.si ha este buffer le mandamos mas bytes de los que les hemos indicado
los que sobran se quedaran a la espera para ser sumados a los que se reciban la siguiente vez.y si son menos,se restan.

este seria el codigo:

Código: [Seleccionar]
recepcion="null"

wifi.setmode(wifi.STATION)        --modo estacion
 wifi.sta.config("SSID","clave")    --nombre del punto de acceso wi-fi de nuestro router.y la clave
 wifi.sta.setip({ip="192.168.1.5",netmask="255.255.255.0",gateway="192.168.1.1"})   --configura IP fija
 wifi.sta.connect()         --conectar
 print("ESP8266 mode is: " .. wifi.getmode())           --indica el modo wi-fi.(estacion en este caso)
 print("The module MAC address is: " .. wifi.ap.getmac())   --indica la mac de nuestro dispositivo
 print("Config done, IP is "..wifi.sta.getip())         --indica la IP que nos ha asignado el router.

 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

    tmr.delay(1000000) -- 1 segundos de retardo
    conn:send(recepcion)               --envia al cliente.datos recibidos de la uart
   
    end)
end)

   
--configura uart
    uart.setup(0,9600,8,0,1)
    print ("uart.setup(0,9600,8,0,1) finished")
    print ("waiting for serial data....")



--recepcion de la usart
 uart.on("data",10,
      function(data)
     
        print(data)    --imprime el dato recivido por la usart
        recepcion=data
       
        if data=="quit123456" then              --palabra para salir del modo usart
          uart.on("data")
        end       
       
    end, 0)-- valor 0 no entra en modo interprete.pero acepta binarios
           -- valor 1 pude entrar en modo interprete

aqui se espera que se recivan 10 bytes.y para salir del modo usart habria que mandar quit123456 = 71 75 69 74 31 32 33 34 35 36 en hexagesimal
pero solo funcionara si anteriormente no nos hemos equivocado con el envio de los 10 bytes.



« Última modificación: 03 de Enero de 2016, 11:48:40 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:Esp8266 & LUA
« Respuesta #10 en: 02 de Enero de 2016, 22:03:05 »
Interesante. Ahora en un rato si mis niños me dejan me voy a poner con un modulito a probar...

Te puedo pedir un favor, groundman, podrías poner pegar el código entre estas etiquetas:

["code=c"]
["/code"]

sin las comillas. De ese modo tu código quedará así:

Código: C
  1. recepcion="null"
  2.  
  3. wifi.setmode(wifi.STATION)        --modo estacion
  4.  wifi.sta.config("SSID","clave")    --nombre del punto de acceso wi-fi de nuestro router.y la clave
  5.  wifi.sta.setip({ip="192.168.1.5",netmask="255.255.255.0",gateway="192.168.1.1"})   --configura IP fija
  6.  wifi.sta.connect()         --conectar
  7.  print("ESP8266 mode is: " .. wifi.getmode())           --indica el modo wi-fi.(estacion en este caso)
  8.  print("The module MAC address is: " .. wifi.ap.getmac())   --indica la mac de nuestro dispositivo
  9.  print("Config done, IP is "..wifi.sta.getip())         --indica la IP que nos ha asignado el router.
  10.  
  11.  srv=net.createServer(net.TCP,60)                  --crea el servidor.y si no hay trafico,cierra conexion pasados 60s
  12.  srv:listen(80,function(conn)                   --estar a la escucha en el puerto 80.
  13.     conn:on("receive",function(conn,payload)            --evento de recepcion y carga el valor leido en payload
  14.     print(payload)                      --envia al puerto serie lo que se recive desde el cliente
  15.  
  16.    
  17.    
  18.     end)
  19. end)
  20.  
  21.    
  22. --configura uart
  23.     uart.setup(0,9600,8,0,1)
  24.     print ("uart.setup(0,9600,8,0,1) finished")
  25.     print ("waiting for serial data....")
  26.  
  27.  
  28.  
  29. --recepcion de la usart
  30.  uart.on("data","\r",function(data)
  31.      
  32.         print(data)                     --imprime el dato recivido por la usart
  33.         recepcion=data
  34.        
  35.         if data=="quit\r" then              --palabra para salir del modo usart
  36.           uart.on("data")
  37.         end        
  38.        
  39.     end, 1)-- valor 0 no entra en modo interprete.pero acepta binarios
  40.            -- valor 1 pude entrar en modo interprete
  41.  

como ves es mucho más legible y seguramente si has hecho tabulaciones para los comentarios te los respetará.

Saludos!
-
Leonardo Garberoglio

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:Esp8266 & LUA
« Respuesta #11 en: 03 de Enero de 2016, 00:56:55 »
Bueno, me puse a probar.

Primero rengué un poquito para conseguir un USB-TTL que funcione con 3.3V y pueda entregar la corriente adecuada. Por lo que leí el CP2102 no tiene suficiente corriente. Entonces agarre un conversor en base al FT232BL, armé un regulador de 3.3V con un LM317 y le mandé esa tencion al VCIO del FTDI para que funcione a 3.3V la interfaz.

Luego arranqué con las pruebas de este post de planeta99999:
http://www.todopic.com.ar/foros/index.php?topic=43690.msg361977#msg361977

decir que anduvo casi de una. Mi módulo está configurado a 9600... aquí una pantalla de los comandos:


* Captura de pantalla 2016-01-02 23.56.47.png
(23.69 kB, 450x535 - visto 2161 veces)


Hay algunas diferencias en los resultados que devuelve el ESP, pero seguro se debe al firmware que trae.

Bien, ahora a flashear.
Conecto GPIO0 a GND, desenchufo y enchufo el USB y sigo las instrucciones de acá:
http://www.xess.com/blog/esp8266-reflash/

luego de un minuto mas o menos tengo:

* Captura de pantalla 2016-01-03 00.39.16.png
(30.91 kB, 656x358 - visto 2158 veces)


voy al terminal y reinicio el módulo y obtengo:

* Captura de pantalla 2016-01-03 00.41.12.png
(20.12 kB, 450x535 - visto 2110 veces)


como ven ahora arranca con el nuevo firmware y ya no reconoce los comandos AT.

Ahora quedaría probar los scripts de groundman.

Copio el primero, lo guardo en el ESP y lo reseteo. Me voy al mozilla yyyyyyy:


* Captura de pantalla 2016-01-03 00.54.52.png
(45.02 kB, 1366x768 - visto 2146 veces)


 :-/ :-/ :-/ :-/

El modulito ya recive scripts de LUA!!!!

mañana sigo jugando con los ejemplos de groundman.

saludos!
-
Leonardo Garberoglio

Desconectado Carl47D

  • PIC16
  • ***
  • Mensajes: 160
Re:Esp8266 & LUA
« Respuesta #12 en: 03 de Enero de 2016, 02:32:44 »
Gracias por la ayuda groundman, tengo ganas de usar los modulos desde hace tiempo, recien lei que estan trabajando para soportar Micropython en este modulo, pero se ve que LUA esta muy avanzado.

Creen que actualizar el firmware de otro micro (con bootloader por UART o cualquier otro periferico conectado a estos modulos ESP) via internet sea seguro?
Que implicaciones o tecnicas deberia tomar en cuenta para asegurarme que no se 'roben' mi binario?
Es un tema nuevo para mi y no se por donde tendría que iniciar, he leido en internet que lo han logrado hacer con Arduinos haha

Saludos

Desconectado Snaut

  • PIC12
  • **
  • Mensajes: 57
Re:Esp8266 & LUA
« Respuesta #13 en: 03 de Enero de 2016, 08:30:44 »
Gracias por esta información tan buena que nos estás dando groundman, sin duda también probaré la programación del esp con LUA.


Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:Esp8266 & LUA
« Respuesta #14 en: 03 de Enero de 2016, 12:05:32 »
Me gustaría agregar un ejemplo intermedio para probar el GPIO, sin configurar el web server. Simplemente un toggle del LED en un GPIO.
El ejemplo fue tomado desde aquí:
http://esp8266.co.uk/recipes/blink-demo/

y el código es este:

Código: C
  1. -- Config
  2. local pin = 4            --> GPIO2
  3. local value = gpio.LOW
  4. local duration = 1000    --> 1 second
  5.  
  6.  
  7. -- Function toggles LED state
  8. function toggleLED ()
  9.     if value == gpio.LOW then
  10.         value = gpio.HIGH
  11.     else
  12.         value = gpio.LOW
  13.     end
  14.  
  15.     gpio.write(pin, value)
  16. end
  17.  
  18. -- Initialise the pin
  19. gpio.mode(pin, gpio.OUTPUT)
  20. gpio.write(pin, value)
  21.  
  22. -- Create an interval
  23. tmr.alarm(0, duration, 1, toggleLED)
  24.  

con este código podemos probar que el led que queremos encender funcione correctamente y descartar problemas de software si algo no funciona.

Saludos!
-
Leonardo Garberoglio