jueves, 10 de septiembre de 2015

Cómo empezar con NodeMCU (II)

Después de ver cómo cargar el firmware (necesario para empezar a funcionar) y cómo hacer nuestro primer "Hello World!", viene el momento de hacer algo más interesante.

En NodeMCU se pueden cargar archivos de scripts LUA y no tener que estar copiándolos y pegándolos en el terminal. Para ello vamos a escribir nuestro primer script que nos mostrará las redes WiFi de nuestro alrededor:
 function listap(t) -- (SSID : Authmode, RSSI, BSSID, Channel)  
    print("\n"..string.format("%32s","SSID").."\tBSSID\t\t\t\t RSSI\t\tAUTHMODE\tCHANNEL")  
    for ssid,v in pairs(t) do  
    local authmode, rssi, bssid, channel = string.match(v, "([^,]+),([^,]+),([^,]+),([^,]+)")  
    print(string.format("%32s",ssid).."\t"..bssid.."\t "..rssi.."\t\t"..authmode.."\t\t\t"..channel)  
    end  
   end  
 wifi.sta.getap(listap)  

Lo guardamos como show_aps.lua y ahora necesitamos un "uploader" para subir los archivos a nuestro cacharrito. Yo utilizo este:
https://github.com/kmpm/nodemcu-uploader

Hacemos un git clone al repositorio
 $ git clone https://github.com/kmpm/nodemcu-uploader.git  

Y lo usamos, compilando y subiendo el archivo previamente creado:
 $ sudo python nodemcu-uploader.py upload show_aps.lua:show_aps.lua --compile  
 Preparing esp for transfer.  
 Remove show_aps.lc  
 file.remove("show_aps.lc")  
 Transfering show_aps.lua as show_aps.lua  
 Compile show_aps.lua  
 node.compile("show_aps.lua")  
 Remove show_aps.lua  
 file.remove("show_aps.lua")  
 All done!  

Ahora nos volvemos a conectar a través de Putty y lo ejecutamos para ver el resultado:
 > dofile("show_aps.lc")  

Y nos mostrará algo como esto:

OJOCUIDAO! Después de compilarlo ya no tiene extensión .lua, ahora tiene extensión .lc

Ahora vamos a conectarnos a nuestra WiFi, una vez hemos visto que la tiene localizada. Abriendo Putty de nuevo (si has sido un prisas y ya lo has cerrado) y escribimos lo siguiente:
 > wifi.setmode(wifi.STATION)  
 > wifi.sta.config("SSID","password")  
 -- Esperamos unos segundos que se conecte  
 > print(wifi.sta.getip())  
 >> 192.168.1.XXX  

Y ya está conectado NodeMCU a nuestra red WiFi!

Podemos comprobarlo con un ping desde nuestra máquina a la IP que nos ha devuelto.

En la próxima entrada un pequeño servidor web con algún dato interesante para probar que todo funciona correctamente.

Un saludo!

martes, 8 de septiembre de 2015

Cómo empezar con NodeMCU (I)

Aprovechando que hoy es fiesta en Málaga, he empezado a preparar un minitutorial de NodeMCU.

NodeMCU es un kit de desarrollo basado en hardware y software libre que como principales cualidades tiene la capacidad de almacenar hasta 4MB y conexión WiFi, además de costar 6,5€.

Antes de nada avisar que este mini tutorial es para Linux, pues es el sistema operativo que utilizo como principal.

Lo primero que vamos a hacer es flashear el cacharrito con el firmware necesario para hacerlo funcionar. La mayoría vienen flasheados, pero así podemos tenerlo actualizalo con la última versión.

Descargamos el firmware oficial desde github:
https://github.com/nodemcu/nodemcu-firmware/releases
Descargamos, en el momento de escribir esta entrada el archivo nodemcu_integer_0.9.6-dev_20150704.bin

Después tenemos que tener la herramienta para flashear nuestro NodeMCU, llamada esptool que es software libre (nuevamente) y podemos descargar desde: https://github.com/themadinventor/esptool

esptool tiene una dependencia que debemos instalar previamente con:
 $ sudo pip install pyserial  

Y después instalamos el propio esptool:
 $ sudo python setup.py install  

Ahora conectamos nuestro cacharrito y para ver qué puerto se le ha asignado hacemos:
 $ dmesg | tail  

Y nos debe salir algo como esto:
 [ 1699.923283] usb 1-1.2: new full-speed USB device number 8 using ehci-pci  
 [ 1700.016382] usb 1-1.2: New USB device found, idVendor=1a86, idProduct=7523  
 [ 1700.016389] usb 1-1.2: New USB device strings: Mfr=0, Product=2, SerialNumber=0  
 [ 1700.016392] usb 1-1.2: Product: USB2.0-Serial  
 [ 1700.016801] ch341 1-1.2:1.0: ch341-uart converter detected  
 [ 1700.018752] usb 1-1.2: ch341-uart converter now attached to ttyUSB0  

Lo que nos indica que ha sido conectado en /dev/ttyUSB0

Procedemos a flashear con esptool y el firmware (.bin) previamente descargado:
 $ sudo esptool.py --port /dev/ttyUSB0 write_flash 0x00000 ~/nodemcu/firmware/nodemcu_integer_0.9.6-dev_20150704.bin   
 Connecting...  
 Erasing flash...  
 Wrote 462848 bytes at 0x00000000 in 45.5 seconds (81.4 kbit/s)...  
   
 Leaving...  

Y con esto ya tenemos el firmware cargado sobre el NodeMCU.

Ahora vamos a conectarnos a través del puerto serie (USB). Lo primero es tener un cliente instalado, yo tengo Putty (sí, el que se usaba para Windows, es software libre y también está para Linux) se instala con:
 $ sudo apt-get install putty  

Lo abrimos (recordad abrirlo con sudo para tener acceso al dispositivo USB)
 $ sudo putty  

y lo configuramos tal que así:


Pulsamos en "Open" y saldrá una pantalla en negro. Si nos dice que hay un problema de conexión posiblemente es que no lo hemos ejecutado con sudo o el dispositivo ha cambiado de posición (/dev/) y debemos mirarlo de nuevo con dmesg. Después de la pantalla en negro, pulsamos el botón de reset de la placa y nos saldrá una pantalla como esta:



¡Enhorabuena!, ya tenemos acceso a nuestro NodeMCU. Ahora sólo tenemos que escribir el programa que queramos hacer funcionar. Para empezar, por supuesto, no puede faltar el "Hello World!":

> print("Hello World!")
Hello World!



En las próximas entradas se profundizará un poco más sobre cómo conectar al WiFi y cargar scripts en él.

Fuentes:

jueves, 15 de enero de 2015

Renfe y sus "útiles" ventanillas

        Hoy vengo a quejarme sobre Renfe, más concretamente de su servicio de cercanías. Les pongo en situación: soy usuario del cercanías desde hace aproximadamente un año de la línea C1 de Málaga.

       Para sacar billetes o abonos hace falta hacerlo desde las taquillas automáticas o bien desde las ventanillas, en las cuáles te atiende un "simpático" empleado de Renfe. Normalmente la gente saca un billete sencillo o de ida y vuelta, cuyos importes rondan desde los 1,10 a los 5 y pico euros, depende del número de zonas. Gente como yo que lo usamos casi a diario tenemos que comprar o bien bonos (un pack de varios viajes) o abonos (mensuales) los cuáles ya suben de precio.

A continuación voy a describir la utilidad de las máquinas autoventa: Sólo aceptan tarjetas de crédito, débito, monedas y billetes de 5 y 10 euros, algo normal.

    Un día de los que tenía que renovar el abono, los tarjeteros de las dos máquinas autoventa que hay en mi estación habitual se estropearon (vaya puntería, además estuvieron así varios meses) y aquí viene mi primer problema: voy a la ventanilla a que el simpático empleado me atienda para comprar el abono y al ir a pagar con tarjeta me dice que no puedo, que en ventanilla no aceptan tarjetas. Finalmente saco un billete sencillo y en la estación de destino (en la que ya sí funcionaban los tarjeteros de las máquinas automáticas) saco mi abono normal, con el consiguiente gasto extra de haber tenido que comprar el billete sencillo anterior.

    Otro caso: hace unos días se me estropeó la tarjeta de crédito y tuve que ir al banco a sacar dinero (mientras me mandaban una nueva), a lo que me dieron un billete de 50 euros. Fui a la taquilla (porque recuerdo que las máquinas autoventa sólo aceptan billetes de hasta 10 euros) y al pagar me dice que no puedo, que sólo aceptan moneda fraccionaria hasta billetes de 10 euros (¡igualito que las máquinas!).

    Para terminar de joder la marrana, otra de las cosas que me sucedió hace unos meses fue que quería obtener una tarjeta "Renfe&tú no personalizada", para la que sólo se necesitan 2 euros y una ventanilla. Mi sorpresa: me enviaron a la estación central porque ellos no sabían emitirla... y más sorpresa aún, me presenté en la estación principal y me sueltan que ¡ellos tampoco pueden!

    Ahora viene aquí mi pregunta: aún sabiendo que mucha gente perdería su puesto de trabajo, ¿de verdad son necesarias estas ventanillas, las cuáles no solucionan ningún problema y además están haciendo que el precio del billete sea más alto? Si lo que quieren es tener un punto de información, deben saber que la tecnología ha avanzado mucho y existen unos "quioscos" que ¡son hasta multilingües!, cosa que dudo mucho de la gente que está en estas ventanillas.

Un saludo.