Johnny-Five es un marco de programación de robótica e IoT de código abierto, basado en el protocolo Firmata, desarrollado por la comunidad Nodebots. Los programas Johnny-Five se pueden escribir para Arduino (todos los modelos), Electric Imp, Beagle Bone, Intel Galileo & Edison, Linino One, Pinoccio, pcDuino3, Raspberry Pi, Particle/Spark Core & Photon, Tessel 2, TI Launchpad y más.
Johnny-Five ha pasado de ser un proyecto apasionante a convertirse en una herramienta para inspirar el aprendizaje y la creatividad de personas de todas las edades, orígenes y de todo el mundo.
¿Solo estás interesado en aprender y construir cosas increíbles? Quizás quieras comenzar con el sitio web oficial de Johnny-Five.
Si desea encontrar la documentación de la API, la encontrará aquí.
¿Necesita determinar qué plataforma utilizar para un proyecto? Ponemos esas cosas aquí.
¿Necesitas inspiración para tu próximo NodeBot? Mira los ejemplos.
¿Quiere mantenerse actualizado con los proyectos de la comunidad? Mira esto.
¿Necesita actualizaciones y anuncios de la comunidad NodeBots o del proyecto Johnny-Five? Esto es lo que estás buscando.
Johnny-Five no intenta proporcionar "todas las cosas", sino que se centra en ofrecer API sólidas, probadas con la realidad y altamente componibles que se comportan de manera consistente en todas las plataformas de hardware compatibles. Johnny-Five quiere ser un kit de control básico para proyectos de hardware, permitiéndole la libertad de crear, crecer y experimentar con diversas bibliotecas de JavaScript de su propia elección. Johnny-Five se empareja cómodamente con:
Bibliotecas de aplicaciones populares como Express.js y Socket.io.
Otros proyectos de hardware como ar-drone, Aerogel y Spheron
Controladores de juegos Bluetooth como XBox Controller y DualShock
Marcos de IoT, como Octoblu
...Y esas son sólo algunas de las muchas posibilidades explorables. Echa un vistazo a estos interesantes proyectos: node-pulsesensor, footballbot-workshop-ui, nodebotui, dublin-disco, node-slot-car-bot, servo-calibrator, node-ardx, nodebot-workshop, phone-home, purple-unicorn, webduino, jumpduino, taller lasercat, sentido simple, cinco redbot, robotnik, la licuadora
¿Por qué JavaScript? NodeBots: el auge de la robótica JavaScript
El omnipresente programa "Hello World" del mundo de los microcontroladores y SoC es "parpadear un LED". El siguiente código demuestra cómo se hace esto utilizando el marco Johnny-Five.
const { Tablero, Led } = require("johnny-cinco");const tablero = nuevo Tablero();board.on("listo", () => { // Crea un Led en el pin 13 LED constante = nuevo LED (13); // Parpadea cada medio segundo led.blink(500);});
Nota: El nodo se bloqueará si intenta ejecutar johnny-five en el REPL del nodo, pero las instancias del tablero crearán su propio REPL contextual. Coloque su script en un archivo.
Johnny-Five ha sido probado en una variedad de placas compatibles con Arduino.
Para proyectos no basados en Arduino, hay disponibles varios complementos IO específicos de la plataforma. ¡Los complementos IO permiten que el código Johnny-Five se comunique con cualquier hardware que no esté basado en Arduino en cualquier idioma que hable la plataforma!
La documentación para la API Johnny-Five se puede encontrar aquí y programas de ejemplo aquí.
¿Necesitar ayuda? Haga una pregunta en el foro de la comunidad NodeBots. Si solo tiene una pregunta rápida o está interesado en discusiones de diseño en curso, únase a nosotros en el chat Johnny-Five Gitter.
Para ver ejemplos paso a paso, incluida una introducción a la electrónica, consulte la Guía del experimentador Arduino para NodeJS de @AnnaGerber.
Aquí hay una lista de requisitos previos para Linux, OSX o Windows.
Consulte la guía de bluetooth si desea controlar su robot de forma remota.
Kit inicial recomendado: kit de inventor Sparkfun
Descargar Arduino IDE
Conecte su microcontrolador Arduino o compatible con Arduino mediante USB
Abra el IDE de Arduino, seleccione: Archivo > Ejemplos > Firmata > StandardFirmataPlus
StandardFirmataPlus está disponible en Firmata v2.5.0 o superior
Haga clic en el botón "Subir".
Si la carga fue exitosa, la placa ahora está preparada y puede cerrar el IDE de Arduino.
Para proyectos que no sean Arduino, el repositorio de cada complemento IO proporcionará sus propias instrucciones de configuración específicas de la plataforma.
git clone git://github.com/rwaldron/johnny-five.git && cd johnny-cinco instalación npm
Instale el módulo con:
npm instala johnny-cinco
Para que pueda comenzar a trabajar rápidamente, le proporcionamos una variedad de ejemplos para usar cada componente de Johnny-Five. Algo que nos entusiasma especialmente es la extensa colección de diagramas de Fritzing que encontrará en todo el sitio. Una gran parte de cualquier proyecto Johnny-Five es manejar el hardware real, y los hemos incluido como parte de la documentación porque nos dimos cuenta de que las instrucciones sobre cómo escribir código para controlar un servo son insuficientes sin instrucciones sobre cómo conectar un servo!
Para navegar interactivamente por los ejemplos, visite la página de ejemplos de Johnny-Five en el sitio web oficial. Si desea vincular directamente a los ejemplos de este repositorio, puede utilizar uno de los siguientes enlaces.
¡Actualmente hay 362 programas de ejemplo con código y diagramas!
Tablero - Inicialización básica
Tablero - Limpieza en evento de 'salida'
Tablero - Múltiples en un programa
Tablero - Especificar intervalo de muestreo
Placa - Especificar puerto
Propiedades de datos personalizados
Alfiler
REPL
CONDUJO
LED - Parpadeo
LED - Secuencia de demostración
LED - Desvanecimiento
LED: devolución de llamada atenuada
LED - Desvanecimiento con animación
LED-PCA9685
LED - Pulso
LED - Pulso con animación
LED - Control deslizante
LED - Módulo Servo Tessel
LED: una variedad de LED
LED: control de una serie de LED
LED - RGB (ánodo común)
LED - RGB (ánodo común) PCA9685
LED - Intensidad RGB
LED - Arco iris
LED - Parpadeo del arco irisM
LED - Reloj digital
LED - Reloj digital, pantallas duales
LED - Reloj digital, HT16K33
LED - Demostración de personajes de Draw Matrix
LED: enumerar caracteres y símbolos de matriz
LED - Matriz
LED - Demostración de matriz
LED - Matriz HT16K33
LED - Matriz HT16K33 16x8
servo
Servo - Continuo
Servo - Accionamiento
Servo - Multivuelta
Servo-PCA9685
Servo - Aviso
Servo - Control deslizante
Servo - Módulo Servo Tessel
Servos: una variedad de servos
GPS - Adafruit Ultimate GPS Breakout
GPS: GPS predeterminado
GPS - Serie de hardware
GPS - Sparkfun GP-20U7
Servo - Animación
Servo - Animación de piernas
Color - EVShield EV3 (Código)
Color: EVShield EV3 (crudo)
Color - EVShield NXT (Código)
Color-ISL29125
Motor
Motor - 3 pines
Motor - Desconexión del controlador del motor de CC Adafruit DRV8871
Motor - Freno
Motor - Corriente
Motor - Direccional
Motor - EVShield EV3
Motor - EVShield NXT
Motor - Habilitar pin
Motor - GROVE_I2C_MOTOR_DRIVER
Motor - Puente H
Motor - LUDUS
Motor-PCA9685
Motor - Desconexión del controlador de motor dual Pololu VNH5019
Motor - Bloque Edison de doble puente H Sparkfun
Motor-Sparkfun TB6612FNG
Motor - ruptura l298
Motores: puente H doble
Paso a paso - Controlador
Paso a paso - Cuatro cables
Paso a paso - barrido
ESC - Bidireccional
ESC: ESC controlados mediante pulsación de tecla
ESC-PCA9685
Botón
Botón - Parachoques
Botón - EVShield EV3
Botón - EVShield NXT
Botón - Opciones
Botón - Pullup
Botones - Colección con AT42QT1070
Cambiar
Interruptor - Puerta Magnética
Interruptor - Inclinación SW-200D
Interruptor de palanca
Teclado - Mochila Nano I2C 3x4
Teclado - Mochila Nano 4x4 I2C
Teclado - VKEY
Teclado - Waveshare AD
Panel táctil - Grove QTouch
Panel táctil - MPR121
Panel táctil - MPR121, Sensibilidad
Panel táctil - MPR121QR2_SHIELD
Panel táctil - MPR121_KEYPAD
Panel táctil - MPR121_SHIELD
Relé
Relevo - Colección
Relé en pin analógico
Registro de turnos
Registro de desplazamiento: controlador de siete segmentos de ánodo común
Registro de desplazamiento: ánodo común, siete segmentos, encadenados
Registro de desplazamiento: controlador de siete segmentos
Registro de turnos: siete segmentos, encadenados
Movimiento infrarrojo
Proximidad IR
Reflectancia IR
Matriz de reflectancia IR
Proximidad
Proximidad - EVShield EV3 (IR)
Proximidad - EVShield EV3 (IR)
Proximidad - EVShield EV3 (Ultrasónico)
Proximidad - EVShield EV3 (Ultrasónico)
Proximidad - GP2Y0A710K0F
Proximidad - HC-SR04
Proximidad - HC-SR04 (Analógico)
Proximidad - Mochila HC-SR04 I2C
Proximidad - LIDAR-Lite
Proximidad - MB1000
Proximidad - MB1003
Proximidad - MB1010
Proximidad - MB1230
Proximidad - SRF10
Movimiento
Movimiento - GP2Y0A60SZLF
Movimiento - GP2Y0D805Z0F
Movimiento - GP2Y0D810Z0F
Movimiento - GP2Y0D810Z0F
Palanca de mando
Joystick - Explora
Palanca de mando: control de giro + inclinación
Palanca de mando - Escudo Sparkfun
Grove - Previsualizador de color LCD RGB
LCD
LCD - Enumerar caracteres
LCD-I2C
Pantalla LCD-I2C PCF8574
LCD-corredor I2C
LCD - Corredor 16x2
LCD - Corredor 20x4
LCD - Tessel 2 16x2
Tessel 2 + Grove - Previsualizador de color LCD RGB
Tessel 2 + Grove - Pantalla LCD RGB
Brújula - Encuentra el norte
Brújula - HMC5883L
Brújula - HMC6352
Brújula - Registrador
Brújula - MAG3110
Brújula - MAG3110 en Tessel 2
Brújula / Magnetómetro
piezoeléctrico
IMU-BNO055
IMU - BNO055 (Orientación)
IMU-LSM303C
IMU-MPU6050
Múltiples - BME280
Múltiples - BMP085
Múltiples - BMP180
Múltiples - DHT11_I2C_NANO_BACKPACK
Múltiples - DHT21_I2C_NANO_BACKPACK
Múltiples - DHT22_I2C_NANO_BACKPACK
Múltiples - HIH6130
Múltiples - HTU21D
Múltiples - MPL115A2
Múltiples - MPL3115A2
Múltiples - MS5611
Múltiples - SHT31D
Múltiples - SI7020
Múltiples - SI7021
Múltiples - TH02
Acelerómetro
Acelerómetro - ADXL335
Acelerómetro - ADXL345
Acelerómetro - LIS3DH
Acelerómetro - MMA7361
Acelerómetro - MMA8452
Acelerómetro - MPU6050
Acelerómetro - Pan + Tilt
Altímetro - BMP085
Altímetro - BMP180
Altímetro - MPL3115A2
Altímetro - MS5611
Barómetro - BMP085
Barómetro - BMP180
Barómetro - MPL115A2
Barómetro - MPL3115A2
Barómetro - MS5611
giroscopio
Giroscopio - Analógico LPR5150AL
Giroscopio - I2C MPU6050
Higrómetro - DHT11_I2C_NANO_BACKPACK
Higrómetro - DHT21_I2C_NANO_BACKPACK
Higrómetro - DHT22_I2C_NANO_BACKPACK
Higrómetro - HIH6130
Higrómetro - HTU21D
Higrómetro - SHT31D
Higrómetro - SI7021
Higrómetro - TH02
Sensor
Sensor - Microondas digital
Sensor - Sensor flexible
Sensor - Resistencia sensible a la fuerza
Sensor - Micrófono
Sensor - Fotorresistor
Sensor - Potenciómetro
Sensor - Potenciómetro deslizante
Termómetro - BMP085
Termómetro - BMP180
Termómetro - DHT11_I2C_NANO_BACKPACK
Termómetro - DHT21_I2C_NANO_BACKPACK
Termómetro - DHT22_I2C_NANO_BACKPACK
Termómetro - DS18B20
Termómetro - Doble DS18B20
Termómetro - HIH6130
Termómetro - HTU21D
Termómetro - LM335
Termómetro - LM35
Termómetro - MAX31850
Termómetro - MCP9808
Termómetro - MPL115A2
Termómetro - MPL3115A2
Termómetro - MPU6050
Termómetro - MS5611
Termómetro - SHT31D
Termómetro - SI7020
Termómetro - SI7021
Termómetro - TH02
Termómetro - TMP102
Termómetro - TMP36
Expansor - 74HC595
Expansor - CD74HC4067, conexión de entrada analógica de 16 canales
Expansor - LIS3DH
Expansor - MCP23008
Expansor - MCP23017
Expansor - MUXSHIELD2, Sensores Analógicos
Expansor - MUXSHIELD2, Entrada y Salida Digital
Expansor - PCA9685
Expansor - PCF8574
Expansor - PCF8575
Expansor - PCF8591
Escudo meteorológico de fotones: humedad
Botón - EVShield EV3
Botón - EVShield NXT
Color - EVShield EV3 (Código)
Color: EVShield EV3 (crudo)
Color - EVShield NXT (Código)
Luz - BH1750
Luz - EVShield EV3 (ambiente)
Luz: EVShield EV3 (reflejada)
Luz - EVShield NXT (Ambiente)
Luz - EVShield NXT (Reflejada)
Luz - TSL2561
Motor - EVShield EV3
Motor - EVShield NXT
Proximidad - EVShield EV3 (IR)
Proximidad - EVShield EV3 (Ultrasónico)
Intel Edison + Grove - Acelerómetro (ADXL345)
Intel Edison + Grove - Acelerómetro (MMA7660)
Intel Edison + Grove - Sensor de calidad del aire
Intel Edison + Grove - Barómetro (BMP180)
Intel Edison + Grove - Botón
Intel Edison + Grove - Brújula (HMC588L)
Intel Edison + Grove - Sensor de llama
Intel Edison + Grove - Gas (MQ2)
Intel Edison + Grove - Humedad y temperatura (TH02)
Intel Edison + Grove - Controlador de motor I2C
Intel Edison + Grove - Palanca de mando
Intel Edison + Grove-LED
Intel Edison + Grove - Sensor de luz (TSL2561)
Intel Edison + Grove - Sensor de humedad
Intel Edison + Grove-Q Touch
Intel Edison + Grove - LCD RGB
Intel Edison + Grove - Vista previa en color LCD RGB
Intel Edison + Grove - Pantalla de temperatura LCD RGB
Intel Edison + Grove - Relé
Intel Edison + Grove - Potenciómetro giratorio
Intel Edison + Grove - Servo
Intel Edison + Grove - Táctil
Arboleda - Botón
Arboleda - Palanca de mando
Arboleda - LED
Grove - Motor (controlador I2C)
Arboleda - LCD RGB
Grove - Pantalla de temperatura LCD RGB
Grove - Potenciómetro rotativo
Arboleda - Servo
Arboleda - Toque
Micro Magician V2 - Acelerómetro
Micro Mago V2 - Motor
Micro Mago V2 - Servo
TinkerKit - Acelerómetro
TinkerKit - Parpadeo
TinkerKit - Botón
Kit de Tinker - Combo
TinkerKit - Servo continuo
TinkerKit - Giroscopio
TinkerKit - Palanca de mando
TinkerKit - Potenciómetro lineal
TinkerKit - Potenciómetro giratorio
TinkerKit - Temperatura
TinkerKit - Inclinación
TinkerKit - Toque
Mando clásico de Wii
Nunchuck Wii
Bicho
Controlador de brazo robótico Kinect
Cable de disparo láser
Seguidor de línea
BRAT Bípedo Lynxmotion
Motobot
Navegador
Nodobot
Hexápodo Fénix
Radar
Garra Robótica
bigote
Complemento de ejemplo
LED parpadeante en diablillo eléctrico
Parpadeo del LED en la placa Intel Edison Arduino
Parpadeo del LED en la mini placa Intel Edison
Parpadeo del LED en Intel Galileo Gen 2
Parpadeo del LED en Raspberry Pi
Parpadeo del LED en Spark Core
Parpadeo del LED en pcDuino3
Todas las contribuciones deben cumplir con la Guía de estilo de Idiomatic.js, manteniendo el estilo de codificación existente. Agregue pruebas unitarias para cualquier funcionalidad nueva o modificada. Lint y prueba tu código usando gruñido.
Copyright (c) 2012, 2013, 2014 Rick Waldron [email protected] Licenciado bajo la licencia MIT. Copyright (c) 2014, 2015 The Johnny-Five Contributors Licenciado bajo la licencia MIT.