Hardware con

Node.js

Ulises Gascón

Desarrollador Full Stack y co-organizor de la comunidad Open Source Weekends

 

Colaborador activo en la Comunidad Open Source

 

Trabaja como freelance, además de ser profesor en Fictizia.

  • Conceptos clave
  • Dispositivos de HW
  • Desarrollo con HW
  • ¡Hacking time!
  • Galería de Prototipos
  • Lecciones aprendidas
  • ¡Preguntas!

Conceptos clave

Multi Thread

Single Thread

  • Motores  Corriente Continua
  • Motor Paso a paso
  • Servomotores
  • Relés
  • Indicadores luminosos
  • Zumbadores
  • Displays
  • LCDs
  • Pulsadores/Interruptores
  • Distancia
  • Aceleración
  • Inclinación
  • Rotación
  • Fuerza
  • Ambiente
  • Navegación
  • Movimiento

y muchos más...

Actuadores

Sensores

Se llama hardware librehardware de código abiertoelectrónica libre o máquinas libres a aquellos dispositivos de hardware cuyas especificaciones y diagramas esquemáticos son de acceso público, ya sea bajo algún tipo de pago, o de forma gratuita. 

- Wikipedia

Hardware Libre

Arduino y su ecosistema

Dispositivos

Arduino UNO

  • Microcontrolador ATmega328.
  • Voltaje de entrada 7-12V.
  • Voltaje Operación 5v
  • 14 pines digitales de I/O (6 salidas PWM).
  • 6 entradas análogas.
  • 32k de memoria Flash.
  • Reloj de 16MHz de velocidad.
  • Versión DIP (intercambiable)
  • Versión SMD (integrado)
  • Microcontrolador ATmega2560.
  • Voltaje de entrada 7-12V.
  • Voltaje Operación 5v
  • 54 pines digitales de I/O (14 salidas PWM).
  • 16 entradas análogas.
  • 4 UARTs (hardware serial ports)
  • 128kb de memoria Flash.
  • Reloj de 16MHz de velocidad.

Arduino MEGA

  • Microcontrolador Atmel ATmega168 or ATmega328.
  • Voltaje Operación 5v
  • 14 pines digitales de I/O (6 salidas PWM).
  • 8 entradas análogas.
  • 16 KB (ATmega168) o 32 KB (ATmega328) de memoria Flash.
  • Reloj de 16MHz de velocidad.

Arduino NANO

  • Basado en Arduino Leonardo
  • Compatible con placas de UNO R3
  • 5 Pulsadores
  • Zócalos para Xbee, APC220 RF module y DF-Bluetooth Module
  • 3 I2C/TWI .
  • Driver Motor (2A Max)

DFRobot ROMEO

Raspberry Pi

  • Procesador Broadcom BCM2387 (1,2 GHz, 4 núcleos ARM Cortex-A53)
  • 1GB de RAM.
  • Ethernet, WiFi 802.11, Bluetooth 4.1 (LE) integrados
  • Salida HDMI, 
  • jack Audio (3,5mm)
  • 4 x USB 2.0
  • 40 x GPIOs
  • MicroSD
  • Precio entorno a 45€

Raspberry Pi 3

  • Procesador Broadcom BCM2835 (1 GHz, ARM11)
  • 512Mb de RAM.
  • miniHDMI, 
  • 2 x microUSB (PWR y Datos)
  • 6,5 x 3 x 0.5 cm
  • MicroSD
  • Precio en 5$ (Fuera de Stock)

RasPi Zero

Desarrollo

Código y Diseños: Github | Licencia: GNU GPL v3
Código y Diseños: Github | Introducción: Fictizia | Licencia: GNU GPL v3
Código y Diseños: Github | Licencia: GNU GPL v3

Hack Time!

Resultado

Arquitectura

RGB y Resistencias

RGB en LEDs

Disponible en GitHub

Código

/*
  Proyecto: RGB Fader to Firebase
  Autor Original: Adafruit
  Referencia: https://learn.adafruit.com/adafruit-arduino-lesson-7-make-an-rgb-led-fader
  Adaptado por Ulises Gascón
*/

int pinLedRojo = 11;
int pinLedVerde = 10;
int pinLedAzul = 9;
 
int pinInterruptorRojo = 7;
int pinInterruptorVerde = 6;
int pinInterruptorAzul = 5;
 
int valorRojo = 0;
int valorAzul = 0;
int valorVerde = 0;
 
void setup()
{
  // Serial
  Serial.begin(9600);
  
  pinMode(pinLedRojo, OUTPUT);
  pinMode(pinLedVerde, OUTPUT);
  pinMode(pinLedAzul, OUTPUT);  
  pinMode(pinInterruptorRojo, INPUT_PULLUP);
  pinMode(pinInterruptorVerde, INPUT_PULLUP);
  pinMode(pinInterruptorAzul, INPUT_PULLUP);
}
 
void loop()
{
  if (digitalRead(pinInterruptorRojo) == LOW)
  {
    valorRojo ++;
    if (valorRojo > 255) valorRojo = 0;
  }
  if (digitalRead(pinInterruptorVerde) == LOW)
  {
    valorVerde ++;
    if (valorVerde > 255) valorVerde = 0;
  }
  if (digitalRead(pinInterruptorAzul) == LOW)
  {
    valorAzul ++;
    if (valorAzul > 255) valorAzul = 0;
  }
  analogWrite(pinLedRojo, valorRojo);
  analogWrite(pinLedVerde, valorVerde);
  analogWrite(pinLedAzul, valorAzul);  

  // JSON
  String jsonSerial = "{";
  jsonSerial += "\"azul\":";
  jsonSerial += valorAzul;
  jsonSerial += ", \"rojo\":";
  jsonSerial += valorRojo;  
  jsonSerial += ", \"verde\":";
  jsonSerial += valorVerde;
  jsonSerial += "}";
  // Impresión
  Serial.println(jsonSerial);
  
  delay(100);
}

Lecciones Aprendidas

Código y Diseños: Github | Introducción: Fictizia | Licencia: GPL v3

Batería Reactiva (2015)

Código y Documentación: Github | Licencia: GNU GPL v3
Código y Diseños: Github | Licencia: GNU GPL v3

Charlie (2016-?)

Código y Diseños: En desarrollo | Licencia: GNU GPL v3

Preguntas

Los sueños son sumamente importantes. Nada se hace sin que antes se imagine.  
- George Lucas

¡Gracias!