Arduino Yún Performance
Unknown
¿Arduino Yun es una Solución Robusca como Web Server?
Hace tiempo encontré en github unos ejemplos con la Arduino Yún. Se ven bien bonitos, pero la performance se va al suelo, sobre todo con el ejemplo Analog Inputs.Incluso levante un servidor en Node.js, para capturar los datos en Json y solo pude visualizar dinamicamente la pag. web con dos ventanas, a la tercera se pego y quedo estática.
La Arquitectura Cliente-Servidor no va con Arduino, le falta mucho para que funcione como un Web Server concurrente, estable y escalable. La mejor solución hasta ahora es la comunicación M2M con MQTT que he probado.
Arduino puede solucionar muchas cosas fácil y agilmente, pero aun le queda mucho por desarrollar.
20:30
Arduino Yun + Node.js + MQTT
Unknown
¿Que es MQTT?
MQTT (Message Queue Telemetry Transport) es un protocolo de conectividad enfocado a M2M (machine-to-machine) y al IOT (Internet of Things) ya que se ha diseñado para ser un protocolo de mensajería extremadamente ligero basado en TCP.
Usare como Broker/Server MQTT el Servidor público http://test.mosquitto.org/
Pre-requisitos
Mosquitto se basa en varios paquetes de terceros para instalar correctamente. Lo siguiente debe ser instalado antes de Mosquitto según su documentación para Windows:- Microsoft Visual C++ 2010 Redistributables
- Link: http://www.microsoft.com/en-us/download/details.aspx?id=5555
- Instalar vcredist_x86.exe
- OpenSSL
- Link: http://slproweb.com/products/Win32OpenSSL.html
- Instalar "Win32 OpenSSL <version>"
- Utilice todos los ajustes predeterminados en el instalador
- Require de los DLLs: libeay32.dll ssleay32.dll
- pthreads
- Link: ftp://sourceware.org/pub/pthreads-win32
- No se requiere instalación para pthreads-w32-<version>-release.zip
- Require del DLLs: pthreadVC2.dll
- DLLs
Instalación:
- Instalación de Mosquitto
- Enlace http://mosquitto.org/download/
- Instalar Windows binario mosquitto- <versión> -install-win32.exe (versión nativa, Windows Vista o superior)
- Copie los siguientes archivos de la instalación de OpenSSL, C: \ OpenSSL-Win32, a la carpeta raíz de Mosquitto, C: \ Archivos de programa (x86) \ mosquitto:
- ssleay32.dll libeay32.dll
- Copie el siguiente archivo desde el archivo comprimido pthreads a la carpeta raíz Mosquitto, C: \ Archivos de programa (x86) \ mosquitto:
- pthreads-w32-<version>-release.zip\Pre-built.2\dll\x86\pthreadVC2.dll
- Instalar el npm mqtt, con el comando npm install mqtt --save.
![](https://3.bp.blogspot.com/-XgOH-T4z5Y8/WBp5wGx1JwI/AAAAAAAABNI/JJKXZwZ5QzwZ6DYFqpTeOF0PPTJP7ewjACLcB/s640/img1.jpg)
- Instalar la librería pubsubclient para el código de Arduino.
Códigos
- Código de Node.js
var mqtt = require('mqtt') var client = mqtt.connect('mqtt://localhost:1883') client.on('connect', function () { client.subscribe('outTopic') client.publish('inTopic', 'Hello Arduino') }) client.on('message', function (topic, message,packet) { console.log(`Mensaje ${message.toString()}`) client.end() })
- Código de Arduino Yun
#include <Bridge.h> #include <BridgeClient.h> #include <PubSubClient.h> IPAddress server(192, 168, 1, 88); //Ip de Servidor donde se levanto Mosquitto BridgeClient briClient; PubSubClient client(briClient); void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Mensaje recivido ["); Serial.print(topic); Serial.print("] "); for (int i=0;i<length;i++) { Serial.print((char)payload[i]); } Serial.println(); client.publish("outTopic","Hello Node.js"); } void reconnect() { while (!client.connected()) { Serial.print("MQTT conectando..."); if (client.connect("")) { Serial.println("conectado !"); client.publish("outTopic","Hello Node.js"); client.subscribe("inTopic"); } else { Serial.print("fallo, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); delay(5000); } } } void setup(){ Serial.begin(57600); client.setServer(server, 1883); client.setCallback(callback); Bridge.begin(); delay(1500); } void loop(){ if (!client.connected()) { reconnect(); } client.loop(); }
- Ejecutar Mosquitto
- Ir a la carpeta raíz de Mosquitto, como C: \ Archivos de programa (x86)\ mosquitto. Y ejecutar mosquitto.
- Cargar el Código a la Arduino Yun
Arduino Yun + Nmap
Unknown
¿Que es Nmap?
Nmap es un programa de código abierto que sirve para efectuar rastreo de puertosInstalar Nmap
Nos conectamos por ssh, y actualizamos los repositorios con el comando opkg update
Ahora escaneamos las conexiones locales. Debes basarte segun tu ip base, en mi caso es la 192.168.1.0
Ingreso el comando nmap -sP 192.168.1.0/24
Tengan paciencia ya que aveces se demora un poco.
Ahora realizamos un escaneo a una conexión local localizada en el mapeo anterior.
Con el comando nmap -sT 192.168.1.83
Acá nos muestra los puertos abiertos que posee el dispositivo y los servicios.
8:45
arduino
,
arduino yun
,
nmap
,
openwrt
Arduino Yun + Aircrack-ng
Unknown
¿Que es Aircrack-ng?
Es una suite de software de seguridad inalámbrica. Consiste en un analizador de paquetes de redes, un crackeador de redes WEP y WPA/WPA2-PSK y otro conjunto de herramientas de auditoría inalámbrica.Instalar Aircrack-ng
Ingresamos por ssh a nuestra Arduino Yun.
Luego actualizamos los repositorios con el comando opkg update
Con el comando opkg install aircrack-ng instalamos Aircrack-ng
Iniciamos Aircrack-ng con el comando airmon-ng start wlan0 1
Obtener BSSID y Canal con el comando airodump-ng mon0 con ctrl+c salimos de esta opción.
Obtendrán algo así:
BSSID PWR Beacons
#Data, #/s CH MB ENC CIPHER AUTH ESSID
40:70:09:E4:87:90 0 12 0 0 6 54e. WPA2 CCMP PSK TG167
F4:6D:04:5D:1B:BC 0 37 0 0 8 54e. WPA2 TKIP PSK
dd
-wr
D8:50:E6:D7:EA:1E 0 43 161 29 8 54e WPA2 CCMP PSK ASUS
Para la captura con el comando airodump-ng -c 8 --bssid D8:50:E6:D7:EA:1E -w capture mon0
8:16
aircrack
,
arduino
,
arduino yun
,
openwrt
Arduino + Node.js + Johnny-Five
Unknown
Programar Arduino con JavaScript. Utilizando Node.js y Johnny-Five
¿Que es Node.js?
Node.js es un entorno Javascript del lado del servidor, basado en eventos. Node ejecuta javascript utilizando el motor V8, desarrollado por Google para uso de su navegador Chrome. Aprovechando el motor V8 permite a Node proporciona un entorno de ejecución del lado del servidor que compila y ejecuta javascript a velocidades increíbles. El aumento de velocidad es importante debido a que V8 compila Javascript en código de máquina nativo, en lugar de interpretarlo o ejecutarlo como bytecode. Node es de código abierto, y se ejecuta en Mac OS X, Windows y Linux.
Ventajas:
El objetivo de firmata es permitir controlar completamente Arduino desde software instalado en un ordenador, sin escribir una sola línea de código de Arduino.
Ventajas:
Una vez tienes esto listo en el IDE de Arduino selecciona Archivo > Ejemplos > Firmata > StandardFirmata y luego haces clic en el botón Upload para transferir el código al microcontrolador.
- El desarrollo es más rápido.
- La ejecución de tests de unidad se puede hacer más rápido.
- Las aplicaciones son más rápidas y por tanto la experiencia de usuario es mejor.
- Menor coste de infraestructura (Linkedin pasó de tener 15 servidores a 4).
- Está basado en eventos, así que toda la filosofia asíncrona que ya utilizamos con AJAX en el cliente la podemos pasar al servidor.
- Te permite utilizar el mismo lenguaje (javascript) tanto en el cliente como en el servidor
- Muy buena gestión de paquetes gracias a NPM (si quieres hacer algo, probablemente exista una librería/paquete que ya lo hace).
- Nos permite hacer en el servidor todo lo que necesitamos (acceso a ficheros, a bases de datos, conexiones de clientes).
Instalar Node.js
Desde la pagina oficial se puede descargar el instalador, soporta plataformas como Mac OS X, Windows y Linux. Hasta arquitecturas ARM.
Johnny-Five
Es un framework muy sencillo y práctico que nos ayudará en la tarea. Johnny-Five es compatible con otras plataformas de desarrollo como Raspberry Pi, Beagle Bone e Intel Galileo entre otras. También es el encargado de proporcionarnos controladores para poder trabajar con componentes como LEDs, servos, botones, pantallas, etc.Instalar Johnny-Five
Procedemos a la instalación. En mi caso tengo Node.js instalado en Windows.
Abrimos la terminal y ejecutamos el comando
npm install johnny-five
Arduino Firmadata
Firmata es un protocolo genérico para la comunicación con microcontroladores desde software instalado en un ordenador. Este protocolo se puede implementar en cualquier arquitectura de microcontroladores, así como en cualquier paquete de software.El objetivo de firmata es permitir controlar completamente Arduino desde software instalado en un ordenador, sin escribir una sola línea de código de Arduino.
Ventajas:
- Nuestro programa no está limitado por la memoria RAM y Flash de Arduino
- El software de control se puede programar en cualquier lenguaje, no solo C++, siempre que tenga soporte para firmata. Por ejemplo: Firmata: Processing, Visual Basic, Perl, C#, PHP, Java, JavaScript, Ruby y por su puesto Python.
- Programas más restringidos, es posible que algunas operaciones complejas no sea posible hacerlas. Por ejemplo el uso de interrupciones.
- Al arduino siempre debe estar conectado al ordenador. Debe tener comunicación para poder ejecutar acciones.
Instalación Firmata
Para instalar Firmata necesitas tener conectado tu la Arduino a la computadora a través de un puerto USB. Asegúrate de tener seleccionado en el IDE de Arduino el modelo adecuado y que haya reconocido el puerto que se utilizará para la comunicación.Una vez tienes esto listo en el IDE de Arduino selecciona Archivo > Ejemplos > Firmata > StandardFirmata y luego haces clic en el botón Upload para transferir el código al microcontrolador.
Hardware
Conectamos un LED al pin 13 (o usaremos el LED que viene integrado en la placa)Hello World!
Utilizare notepad++ y escribiremos el siguiente código, el cual lo guardare como led.js
//Incluimos la libreria var five = require("johnny-five"); //Inicializamos el framework var board = new five.Board(); //Cuando Arduino haya recibido el codigo board.on("ready", function() { // Instanciamos el pin 13 con la libreria led var led = new five.Led(13); // Realizamos el tipico "blink" // on-off cada 500 ms led.blink(500); });
Ahora ejecutamos el comando node led.js. En mi caso guarde el archivo en el escritorio
Esto abre un mundo de nuevas posibilidades a la IoT (Internet Of Things), ya que podremos juntar la programación de hardware con, por ejemplo, una API desde la que encenderemos y apagaremos leds con tan sólo pulsar checkboxes html.
Para mayor documentación visiten https://github.com/rwaldron/johnny-five
15:18
arduino
,
firmata
,
iot
,
johnny-five
,
node
Arduino Yun Web Panel Language
Unknown
Como modificar el lenguaje del web panel
Actualizamos el repositorioopkg update
opkg list | grep luci-i18n-base*
En mi caso instalo el paquete en español
opkg install luci-i18n-base-es
Comprobamos la instalación
9:48
arduino yun
,
web panel
Arduino Yun & Sqlite3 & PHP for Process Class
Unknown
Instalación Sqlite3
Dejare solamente el codigo, ya que en este post explico como realizarlo.
opkg updateopkg install sqlite3-cli
sqlite3 /mnt/sda1/sensor.db
id INTEGER PRIMARY KEY,
temperatura VARCHAR(64),
sqlitetimestamp DATETIME DEFAULT CURRENT_TIMESTAMP
);
Instalación PHP
Actualizamos el repositorio con el código.
opkg update
Instalamos php5 con el modulo de sqlite
opkg install php5-cli php5-mod-sqlite3
Código PHP
Escribimos el siguiente codigo, en donde se conectara a la base de datos creada e insertara un dato ingresado por consola.
#!/usr/bin/php-cli
<?php
$db = new SQLite3('/mnt/sda1/sensor.db');
$query = "INSERT INTO sensor_dato (temperatura) VALUES( ".$argv[1]." )";
$db->exec($query);
$db->close();
?>
Le damos los permisos necesarios al archivo PHP e ingresamos un valor para comprobar si funciona bien, y visualizamos los valores ingresados a la base de datos.
chmod 755 /mnt/sda1/sensor.php
/mnt/sda1/sensor.php 50
sqlite>.quit
opkg install php5-cli php5-mod-sqlite3
Código PHP
A traves del editor nano, escribimos el codigo en PHP. Les recuerco que con ctrl+o guardar y con ctrl+x salen del editor.
nano /mnt/sda1/sensor.phpEscribimos el siguiente codigo, en donde se conectara a la base de datos creada e insertara un dato ingresado por consola.
#!/usr/bin/php-cli
<?php
$db = new SQLite3('/mnt/sda1/sensor.db');
$query = "INSERT INTO sensor_dato (temperatura) VALUES( ".$argv[1]." )";
$db->exec($query);
$db->close();
?>
Le damos los permisos necesarios al archivo PHP e ingresamos un valor para comprobar si funciona bien, y visualizamos los valores ingresados a la base de datos.
/mnt/sda1/sensor.php 50
sqlite3 /mnt/sda1/sensor.db
sqlite>select * from sensor_dato;sqlite>.quit
Creamos un proceso, donde ejecuta el código creado en PHP e ingresa un numero al azar de 0 a 100.
#include <Process.h> void setup() { Bridge.begin(); } void loop() { int temperatura = random(0, 100); Process p; p.begin("/mnt/sda1/sensor.php"); p.addParameter(String(temperatura)); p.run(); delay(1000); }
21:20
arduino
,
arduino yun
,
iot
,
php
,
process class
,
sqlite
Suscribirse a:
Entradas
(
Atom
)