SlideShare una empresa de Scribd logo
Node.JS y RaspBerry Pi
     Meetup NodeJS Argentina
RaspBerry Pi
Arquitectura ARMv6 (Broadcom BCM2835, ARM1176JZF-S @700 Mhz)
256 (modelo A o B v1) / 512 Mb de RAM (modelo B v2)
Filesystem en tarjeta SD
Ethernet 10/100 Mbps (solo modelo B, el EC esta conectado via USB 2.0)
2 x USB 2.0 (1x USB 2.0 en el modelo A)
Video HD 1920 x 1080p @ > 30fps (Broadcom VideoCore IV)
Salidas de video HDMI, DSI (no existen displays soportados) y video compuesto
Conector CSI para camaras tipo celular. No existen cámaras soportadas por CSI. La
fundación está desarrollando una de 14 megapixels con lente fijo.
Salidas de audio digital via HDMI y analogica via PWM en conector jack stereo
Soporta protocolo CEC via HDMI
8 GPIO (4 GPIO extras en el Bv2), SPI (2 x multiplexado), I2C, UART (3V3)
Node.js en RaspBerry Pi
Los binarios de la última versión se pueden bajar de http:
//nodejs.org/dist/latest/ en formato .tar.gz
La recomendación es localizarlos en /usr/local/
En el caso de necesitar compilar Node.js se recomienda seguir la guia de Nathan Rajlich para cross
compiling http://n8.io/cross-compiling-nodejs-v0.8/

Algunos módulos necesitan tener instalado node-gyp.
Por lo cual es recomendable instalarlo con "sudo npm install node-gyp -g"


Existen módulos para acceder al GPIO.
Interface entre señales 3V3 y 5V
Acceso al GPIO via SYSFS
1. Exportar el pin 27 via IO via SYSFS
   sudo echo "27" > /sys/class/gpio/export
   al hacer esto aparece el directorio /sys/class/gpio/gpio27
2. Para definir el pin como entrada
   sudo echo "in" > /sys/class/gpio/gpio27/direction
   Para definir el pin como salida
   sudo echo "out" > /sys/class/gpio/gpio27/direction
3. Para invertir la señal en el pin
   sudo echo "1" > /sys/class/gpio/gpio27/active_low
4. Para establecer un estado en el pin
   sudo echo "1" > /sys/class/gpio/gpio27/value
5. Para leer un estado del pin
   sudo cat /sys/class/gpio/gpio27/value
6. Las interrupciones se manejan via poll() de value
WiringPi
WiringPi es similar al lenguaje Wiring de Arduino
Soporta los modulos GertBoard y PiFace.
Tiene mapeo de pins (BCM name, wiring like, pinout)
Tiene librerías para manejo de:
●   I2C
●   SPI
●   SoftPWM
●   Shift()
●   Serial Port
●   Interrupciones
●   LCD

Soporta multi-threading y mutex (mutual exclusions)
Utiliza /dev/mem (que es mas rapido) en lugar de SYSFS.
        Dado que el código tiene que correr como root es potencialmente más inseguro
Modulos para acceder al GPIO via Node.js
GpiO
     https://github.com/EnotionZ/GpiO
pi-gpio
     https://github.com/rakeshpai/pi-gpio
rpi-gpio
     https://github.com/JamesBarwell/rpi-gpio.js
node-wiringpi (wrapper de wiringPi incompleto)
     https://github.com/OhMeadhbh/node-wiringpi
rpi-gpiod (gpio via unix socket)
     https://blog.mayflower.de/2073-Using-GPIO-on-Raspberry-Pi.html
No se recomienda ejecutar como root si la RPi puede ser accedida desde internet. No se
recomienda node-wiringpi ya que debe ser corrido como root dado que wiringPi utiliza /dev/mem
para acceder al GPIO. Utilizar rpi-gpiod en su lugar.
Acceso al modulo 1wire via SYSFS
Cargar los modulos 1wire del kernel
   sudo modprobe w1-gpio
   sudo modprobe w1-therm

El sensor aparece en ls /sys/bus/w1/devices/
   ls -l /sys/bus/w1/devices
   28-000003b0d431 -> ../../../devices/w1_bus_master1/28-000003b0d431
   w1_bus_master1 -> ../../../devices/w1_bus_master1

El archivo w1_slave dentro del directorio del dispositivo
1wire contiene la información de la medición
   cat w1_slave
   87 01 4b 46 7f ff 09 10 48 : crc=48 YES
   87 01 4b 46 7f ff 09 10 48 t=24437

Si el CRC = YES la medición es correcta t = a la
temperatura en °C / 1000
Acceso al modulo 1wire desde Node.js
// Tom Holderness 03/01/2013
// Ref: www.cl.cam.ac.uk/freshers/raspberrypi/tutorials/temperature
var fs = requiere('fs');

function readTemp(id,callback){
  fs.readFile(''/sys/bus/w1/devices/' + id + '/w1_slave'', function(err, buffer)
          {
     if (err){
        console.error(err);
        process.exit(1);
     }

    // Read data from file (using fast node ASCII encoding).
    var data = buffer.toString('ascii').split(" "); // Split by space

    // Extract temperature from string and divide by 1000 to give celsius
    var temp = parseFloat(data[data.length-1].split("=")[1])/1000.0;

    // Round to one decimal place
    temp = Math.round(temp * 10) / 10;

    // Add date/time to temperature
        var data = {
        temperature_record:[{
        unix_time: Date.now(),
        celsius: temp
        }]};

    // Execute call back with data
    callback(data);
  });
};

Más contenido relacionado

PPT
Reporte practica 8
PPTX
Corrección del examen 2do trimestre
PPTX
Utilerías
PDF
6. RS232 interfaces ARDUINO - 2020
PDF
3. RS232 Arduino - 2016
PDF
Config ciscos
Reporte practica 8
Corrección del examen 2do trimestre
Utilerías
6. RS232 interfaces ARDUINO - 2020
3. RS232 Arduino - 2016
Config ciscos

La actualidad más candente (20)

DOCX
Comandos básicos para utilizar squid o squid3
PDF
Comandos configuracion de redes
PPTX
Voice OVER IP
PPT
Asterix: simplemente...
PDF
Vlsm rip
PPTX
Corrección del examen de sistemas informáticos
PDF
Practica nas andrei
PPT
Monica Gabriela Oliva Garcia
PDF
Comandos básicos
DOCX
PDF
Comandos dispositivos
PDF
T fase1 103380_a_grupo224
PDF
Asegúr@IT II - Seguridad en VoiP
PDF
Recovery ios
PPT
Reporte practica 7
PDF
Las Variaciones de la Replicación de PostgreSQL
 
PPT
How To Install software on Ubuntu
ODP
Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]
PDF
Ejercicios de Subredes IP
PPTX
Tema 2 dns
Comandos básicos para utilizar squid o squid3
Comandos configuracion de redes
Voice OVER IP
Asterix: simplemente...
Vlsm rip
Corrección del examen de sistemas informáticos
Practica nas andrei
Monica Gabriela Oliva Garcia
Comandos básicos
Comandos dispositivos
T fase1 103380_a_grupo224
Asegúr@IT II - Seguridad en VoiP
Recovery ios
Reporte practica 7
Las Variaciones de la Replicación de PostgreSQL
 
How To Install software on Ubuntu
Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]
Ejercicios de Subredes IP
Tema 2 dns
Publicidad

Destacado (19)

PDF
Presentacion minecraft-pi SciPyLa2015
PPT
Raspberry pi & Python. UAC
PDF
Jupyter e IPython para manipulación de datos
PDF
Programación con Pygame VI
PDF
Programación con Pygame (II)
PDF
Intro Pygame Capitulo 2
PDF
Programación con Pygame IX
PPT
Intro pygamev2
PDF
PDF
Programación con Pygame V
PDF
Programación con Pygame IV
PDF
Programación con Pygame VII
PDF
Programación con Pygame VIII
PDF
Intro PyGame Capitulo 1
PDF
Intro PyGame Capitulo 5
PPTX
Transmisión de datos de temperatura por medio de red lan
PDF
Programación con Pygame III
PDF
Programación con Pygame I
PDF
Intro PygameCapitulo 3
Presentacion minecraft-pi SciPyLa2015
Raspberry pi & Python. UAC
Jupyter e IPython para manipulación de datos
Programación con Pygame VI
Programación con Pygame (II)
Intro Pygame Capitulo 2
Programación con Pygame IX
Intro pygamev2
Programación con Pygame V
Programación con Pygame IV
Programación con Pygame VII
Programación con Pygame VIII
Intro PyGame Capitulo 1
Intro PyGame Capitulo 5
Transmisión de datos de temperatura por medio de red lan
Programación con Pygame III
Programación con Pygame I
Intro PygameCapitulo 3
Publicidad

Similar a Node.js on Raspberry PI (20)

PDF
Solid Day - Cloudino
PPTX
Taller basico de Introduccion a Raspberry Pi.pptx
PDF
Integración de ROS (Robot Operating System) con las plataformas Arduino y Ras...
PDF
Hardware Hacking Rad
PDF
Hardware Hacking con Arduino y RAD
PDF
Raspberry Pi Planet Linux Caffe
PDF
Usemos un raspberry pi para analizar el funcionamiento
PDF
Librería blynk arduino iot
ODP
David Meléndez Cano - Trash Robotic Router Platform (TRRP) [Rooted CON 2013]
PDF
Node Js & 3D Printer
PDF
Diapositiva de Estudio: ppt - IoT Fácil con ESP8266.pdf
PDF
raspeberry para domotica.pdf
PDF
Taller Arduino e Internet de las cosas
PDF
Conexion wi fi_con_un_modulo_esp8266
PDF
Meetup Arduino Madrid - Plataforma IoT casera
PDF
Tfguex 2014 alvarez_rodrigo
PPTX
Simplificando la domotica con el IoT
PDF
IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780
PDF
Perspectivas IoT con arduino
PDF
Ethernet Shield
Solid Day - Cloudino
Taller basico de Introduccion a Raspberry Pi.pptx
Integración de ROS (Robot Operating System) con las plataformas Arduino y Ras...
Hardware Hacking Rad
Hardware Hacking con Arduino y RAD
Raspberry Pi Planet Linux Caffe
Usemos un raspberry pi para analizar el funcionamiento
Librería blynk arduino iot
David Meléndez Cano - Trash Robotic Router Platform (TRRP) [Rooted CON 2013]
Node Js & 3D Printer
Diapositiva de Estudio: ppt - IoT Fácil con ESP8266.pdf
raspeberry para domotica.pdf
Taller Arduino e Internet de las cosas
Conexion wi fi_con_un_modulo_esp8266
Meetup Arduino Madrid - Plataforma IoT casera
Tfguex 2014 alvarez_rodrigo
Simplificando la domotica con el IoT
IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780
Perspectivas IoT con arduino
Ethernet Shield

Node.js on Raspberry PI

  • 1. Node.JS y RaspBerry Pi Meetup NodeJS Argentina
  • 2. RaspBerry Pi Arquitectura ARMv6 (Broadcom BCM2835, ARM1176JZF-S @700 Mhz) 256 (modelo A o B v1) / 512 Mb de RAM (modelo B v2) Filesystem en tarjeta SD Ethernet 10/100 Mbps (solo modelo B, el EC esta conectado via USB 2.0) 2 x USB 2.0 (1x USB 2.0 en el modelo A) Video HD 1920 x 1080p @ > 30fps (Broadcom VideoCore IV) Salidas de video HDMI, DSI (no existen displays soportados) y video compuesto Conector CSI para camaras tipo celular. No existen cámaras soportadas por CSI. La fundación está desarrollando una de 14 megapixels con lente fijo. Salidas de audio digital via HDMI y analogica via PWM en conector jack stereo Soporta protocolo CEC via HDMI 8 GPIO (4 GPIO extras en el Bv2), SPI (2 x multiplexado), I2C, UART (3V3)
  • 3. Node.js en RaspBerry Pi Los binarios de la última versión se pueden bajar de http: //nodejs.org/dist/latest/ en formato .tar.gz La recomendación es localizarlos en /usr/local/ En el caso de necesitar compilar Node.js se recomienda seguir la guia de Nathan Rajlich para cross compiling http://n8.io/cross-compiling-nodejs-v0.8/ Algunos módulos necesitan tener instalado node-gyp. Por lo cual es recomendable instalarlo con "sudo npm install node-gyp -g" Existen módulos para acceder al GPIO.
  • 5. Acceso al GPIO via SYSFS 1. Exportar el pin 27 via IO via SYSFS sudo echo "27" > /sys/class/gpio/export al hacer esto aparece el directorio /sys/class/gpio/gpio27 2. Para definir el pin como entrada sudo echo "in" > /sys/class/gpio/gpio27/direction Para definir el pin como salida sudo echo "out" > /sys/class/gpio/gpio27/direction 3. Para invertir la señal en el pin sudo echo "1" > /sys/class/gpio/gpio27/active_low 4. Para establecer un estado en el pin sudo echo "1" > /sys/class/gpio/gpio27/value 5. Para leer un estado del pin sudo cat /sys/class/gpio/gpio27/value 6. Las interrupciones se manejan via poll() de value
  • 6. WiringPi WiringPi es similar al lenguaje Wiring de Arduino Soporta los modulos GertBoard y PiFace. Tiene mapeo de pins (BCM name, wiring like, pinout) Tiene librerías para manejo de: ● I2C ● SPI ● SoftPWM ● Shift() ● Serial Port ● Interrupciones ● LCD Soporta multi-threading y mutex (mutual exclusions) Utiliza /dev/mem (que es mas rapido) en lugar de SYSFS. Dado que el código tiene que correr como root es potencialmente más inseguro
  • 7. Modulos para acceder al GPIO via Node.js GpiO https://github.com/EnotionZ/GpiO pi-gpio https://github.com/rakeshpai/pi-gpio rpi-gpio https://github.com/JamesBarwell/rpi-gpio.js node-wiringpi (wrapper de wiringPi incompleto) https://github.com/OhMeadhbh/node-wiringpi rpi-gpiod (gpio via unix socket) https://blog.mayflower.de/2073-Using-GPIO-on-Raspberry-Pi.html No se recomienda ejecutar como root si la RPi puede ser accedida desde internet. No se recomienda node-wiringpi ya que debe ser corrido como root dado que wiringPi utiliza /dev/mem para acceder al GPIO. Utilizar rpi-gpiod en su lugar.
  • 8. Acceso al modulo 1wire via SYSFS Cargar los modulos 1wire del kernel sudo modprobe w1-gpio sudo modprobe w1-therm El sensor aparece en ls /sys/bus/w1/devices/ ls -l /sys/bus/w1/devices 28-000003b0d431 -> ../../../devices/w1_bus_master1/28-000003b0d431 w1_bus_master1 -> ../../../devices/w1_bus_master1 El archivo w1_slave dentro del directorio del dispositivo 1wire contiene la información de la medición cat w1_slave 87 01 4b 46 7f ff 09 10 48 : crc=48 YES 87 01 4b 46 7f ff 09 10 48 t=24437 Si el CRC = YES la medición es correcta t = a la temperatura en °C / 1000
  • 9. Acceso al modulo 1wire desde Node.js // Tom Holderness 03/01/2013 // Ref: www.cl.cam.ac.uk/freshers/raspberrypi/tutorials/temperature var fs = requiere('fs'); function readTemp(id,callback){ fs.readFile(''/sys/bus/w1/devices/' + id + '/w1_slave'', function(err, buffer) { if (err){ console.error(err); process.exit(1); } // Read data from file (using fast node ASCII encoding). var data = buffer.toString('ascii').split(" "); // Split by space // Extract temperature from string and divide by 1000 to give celsius var temp = parseFloat(data[data.length-1].split("=")[1])/1000.0; // Round to one decimal place temp = Math.round(temp * 10) / 10; // Add date/time to temperature var data = { temperature_record:[{ unix_time: Date.now(), celsius: temp }]}; // Execute call back with data callback(data); }); };