Arduino y JavaScript

una historia de amor...

Ulises Gascón

Desarrollador Full Stack y orgulloso co-organizor de la comunidad Open Source Weekends (OSW)

 

Colaborador activo en la Comunidad Open Source

 

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

  • Sin live coding ni ejecución de demos

  • Sin teoría pesada

  • Se adapta el nivel para tod@s (mayoría)

DISCLAIMER

  • Lo básico

  • Dispositivos

  • Movimiento Maker

  • Fabricación digital

  • Áreas de aplicación

  • Hack Time

  • Siguiente Nivel

  • Lecciones Aprendidas

  • ¡Preguntas!

Lo básico

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

Comunicación

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

RasPi Supercomputer (2012, Simon Cox)

Otra forma de ver las cosas...

  • 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

Movimiento MAKER

En...

Madrid

Bilbao

Barcelona

León

y más...

foto del Makespace

Fabricación Digital

Otra manera de hacer las cosas

NYC Resistor’s main hacking table. Photo by Signe Brewster

Nuestro espacio

NYC Resistor’s back room. Photo by Signe Brewster
Photo by Signe Brewster

Corte Laser

Fresadora CNC

Photo by Ani Liu
Photo by Signe Brewster

Impresora 3D

Crowdsourcing

Goteo

Opciones clasicas

Financiación

Fabricación

Placas

Tiradas grandes

Equipo Humano

Distribución (E-commerce)

Co-Working

Ampliación

Gestión

Incidencias

Retornos

Caducidad

Stock

Innovar

Nuevos productos

Mejoras

Photo by Signe Brewster

Escalando

Areas de aplicación

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

Ciudades y entornos Inteligentes

  • Aparcamiento Urbano
  • Iluminación inteligente
  • Gestión de residuos
  • Casas Domoticas
  • Oficinas inteligentes
  • Calidad del Aire

Sebastián Alegría (2011, Chile)

Fuente: The Next Web

Comercio y Logística

  • Cadena de Suministro
  • Almacén
  • Gestión de Flotas 
  • Pago NFC
  • Contenedores inteligentes

Claves:

  • Autoamtización
  • Optimización de los recursos
  • Mejora de la toma de decisiones
  • Información en tiempo real

 

 

 

Hasta el 25% del valor generado por el IoT estará relacionado con la logística. - CISCO

Wereables

  • eSalud
  • Textiles Inteligentes
  • Interfaces Humano-Ordenador
  • Experiencia Inmersiva
  • Protesis inteligentes
  • Inteligencia Artificial

Agricultura y

Granjas

  • Invernaderos Inteligentes
  • Agricultura de precisión
  • Hidroponía
  • Acuaponia
  • Islas autosuficientes
  • Huertos Urbanos
  • Gestión y monitorización del ganado

Acuduino (2016, Ulises Gascón)

Código y Diseños: Github (próximamente) | Licencia: GNU GPL v3
Código y Diseños: Github | Licencia: GNU GPL v3

Hack time

Prevención

de Riesgos

Herramientas

Foto de Hatch Hackerspace

¡Cacharreo!

Photo by FIXME Hackerspace

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);
}

El siguiente nivel

Enriquecimiento

  • APIs externas de inteligencia Artificial (api.ai, GCloud, AWS, Watson, etc...)

  • IA in the house (Tensorflow, OpenCV, etc...)

  • Análisis de textos (semántica, expresiones regulares)

  • Mezclando datos con Datos abiertos

  • Mezclando datos con APIs específicas (Fullcontact, OWM, etc...)

  • Scraping (Puppeteer, Beautiful Soup, etc...)

Almacenar y distribuir

  • Montar una API Rest

  • Utilizar un sistema de WebSockets

  • Facilitar acceso por Base de datos

  • Sistema de queries de pago en bases de datos analíticas

  • Venta de información puntual o cíclica

  • Servicios Freemium (newsletters, etc..)

 

 

Lecciones Aprendidas

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

Batería Reactiva (2015)

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

El concepto

Modo Serpiente

Modo Diurno

Como músico

Comportamientos extraños

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

Charlie (2016-?)

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

PREGUNTAS

OSWeekends

LA HISTORIA DE UNA COMUNIDAD LIBRE

¿Qué es OSW?

Nos reunirnos un sábado al mes para crear y contribuir al código abierto.

No buscamos un formato de charlas, si no juntarnos todos en un mismo espacio para que las ideas fluyan.

Todo el mundo es bienvenido. La única condición es que lo que hagamos en este espacio sea código abierto y sin ánimo de lucro

+2.200

en Meetup

+620

en Slack

+45

Proyectos

25

Guilds

¡Gracias!

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

- George Lucas