Anuncios

Ya disponible la Raspbery Pi 4


En efecto  ya esta disponible  desde la pagina oficial  de la fundacion Raspberry  , la nueva version de Raspberry Pi   4 ,la cual   repite precio manteniendo el factor de forma , por lo que simplemente puede colocar su nueva Raspberry Pi 4   en sus proyectos anteriores  gracias  a como siempre que  han  mantenido todo el software compatible con versiones anteriores, por lo que lo que se desarrolle para  una Raspberry Pi 4 funcionará en cualquier version  más antigua que tenga .

 

La Fundación Raspberry Pi ha presentado un nuevo modelo de su minipc  : Raspberry Pi 4 (modelo B), con algunas novedades interesantes partiendo del mismo bajo precio de 35 dólares.

Exactamente se comercializa tres diferentes sabores dependiendo de la cantidad de RAM que necesite: 1 GB, 2 GB o 4 GB.;

  • El modelo de 1 GB cuesta los habituales 35 dólares,
  • El de 2 GB cuesta 45 dólares
  • El de 4 GB tiene un precio de 55 dólares, y ya está a la venta.

Estos precios, como en versiones anteriores,  no incluyen el precio de la tarjeta micro-SD o la fuente de alimentación necesarios para ponerla en marcha y tampoco  coinciden exactamente con los ofrecidos por Amazon ( por el momento no disponibles en muchos paises) 

No solamente   tenemos disponible mas memoria (de tipo LPDDR4-2400.)  , ya que con  el avance de la potencia de la arquitectura ARM,  y  el  abaratamiento del coste de los tipos de núcleos de años pasados, la Raspberry Pi 4 aporta hasta tres veces más potencia.   gracias a  su procesador BCM2711 de Broadcom, que es un modelo de cuatro núcleos Cortex-A72 a 1.5 GHz  que la hace  superar tres veces en rendimiento al usado en la Raspbery Pi 3.

Ademas aunque externamente presenta  el mismo factor de forma que la Rasberry Pi 3  la mejora más interesante es la unidad gráfica integrada  ya que ahora  el clásico conector hdmi ha sido  reemplazado por dos conectores micro-hdmi ,para soportar dos monitores simultaneos  que puede mover incluso con resolución  4K simultáneamente 

 También  la nueva Raspberry Pi 4 ha mejorado la capacidad USB: junto con dos puertos USB 2, encontrará dos puertos USB 3, que pueden transferir datos hasta diez veces más rápido. 

Asimismo para alimentar la  placa   cuenta con un conector usb-c 

 

Raspberry Pi 4 Specifications

 

 

La Raspberry Pi, sin ventilador y energéticamente eficiente, se ejecuta de manera silenciosa y consume mucha menos energía que otros ordenadores.

La velocidad y el rendimiento de la nueva Raspberry Pi 4 es un paso más que los modelos anteriores pues por primera vez, se ha construido una experiencia de escritorio completa permitiendo  editar documentos, navegar  por la web con un montón de pestañas abiertas, haciendo malabares con hojas de cálculo o dibujando una presentación, su creadores afirman que encontraremos la experiencia fluida y muy reconocible, pero de una forma más optima  gracias   aun hw   más eficiente en cuanto a consumo de energía y desde luego a un precio mas  asequible y eso contando con conectividad a redes rápidas  ( viene con Gigabit Ethernet, junto con redes inalámbricas a bordo y Bluetooth).

 

 

Por ultimo no debemos olvidar el conector de expansión , pues mantiene los cuarenta pines GPIO para los que deseemos controlar dispositivos  gracias a sus 12 puertos binarios de   E/S 

Para estar creado en una placa impresa de solo 85 mm × 49 mm, es un mini-equipo extremadamente versátil, y cada vez más potente para usarlo como centro multimedia, que en este caso el poder mover una pantalla 4K será muy útil, ya que decodifica por hardware el códec H.265 (4K y 60 f/s), si bien codifica hasta a FHD y 30 f/s en H.264. Además, la unidad gráfica ahora es compatible con OpenGL 3.0.

No debemos olvidar  que  para poner  en funcionamiento  esta placa necesitaremos

  • Una fuente de alimentación USB-C de 15W: recomendamos la fuente de alimentación USB-C Raspberry Pi oficial
  • Una tarjeta microSD cargada con el SO ya instalado  o bien con  NOOBS, el software que instala el sistema operativo (se puede comprar una tarjeta SD precargada junto con la Raspberry Pi o descargar NOOBS para cargar una tarjeta usted mismo)
  • Un teclado y un ratón
  • Cables para conectarse a una o dos pantallas a través de los puertos micro HDMI de Raspberry Pi 4

Este pequeño PC también tiene dos USB 2.0, dos USB 3.0, wifi 802.11ac, Bluetooth 5.0, un RJ-45, un conector de 3.5 mm y lector de tarjetas micro-SD.

 Para proyectos a largo plazo, prometen mantenerla en producción hasta al menos enero de 2026.

 

Mas informacion  en https://www.raspberrypi.org/products/raspberry-pi-4-model-b

Anuncios

Controlando placas de IoT desde javascript


Node.js framework  fue  creado por Bocoup para controlar placas de desarrollo en una configuración de host-cliente   aunque   realmente su uso mayoritario sea como plataforma web   siendo    Johnny-Five la plataforma open  source de Robótica e IoT de JavaScript 

En realidad existen diferentes  plataformas donde se puede ejecutar el programa Johnny-Five :

  • En un entorno Linux a bordo: beagleBone Black,Chip,Intel Galileo gen 1,Intel Galileo Gen 2,Intel Edison Arduino,Intel Edison Mini, SparkFun Edison GPIO Block,SparkFun Arduino Block, Intel Joule 570x (Carrier Board),Linino One,pcDuino3 Dev Board,Raspberry Pi 3 Model B, Raspberry Pi 2 Model B. Raspberry Pi Zero,Raspberry Pi Model A Plus,Raspberry Pi Model B Plus, Raspberry Pi Model B Rev 1, Raspberry Pi Model B Rev 2, Tessel 2
  • En una máquina host conectada (a través de Serial USB o Ethernet) a un cliente.: Arduino Uno,SparkFun RedBoard, On a host machine communicating over Bluetooth to the client. Arduino Uno,Arduino Leonardo, Arduino Mega, Arduino Fio,Arduino Micro,Arduino Mini,arduino Nano,Arduino pro Mini,Boatduino,chipKit uno32,Spider robot Controller,DfRobot Romeo,Teensy 3,
  • En una máquina host que se comunica por wifi al cliente: Electric Imp April, pinoccio Scout, Particle Core ( Spark Core) ,Particle Photon, Sparkfun Photon RedBoard
  • En una máquina host que se comunica a través de Bluetooth al cliente :Blend Micro v1.0,LightBlue bean,

Johnny-Five como vemos hacer un énfasis especial en la robótica, pero tambien puede hacer muchas cosas diferentes con el software.De hecho ha existido durante hacer  más tiempo que la mayoría de los marcos de JavaScript para hardware . Ademas iene una API clara  y “fresca” ,ambas cosas ideales para los principiantes de hardware.

Lanzado porBocoup en 2012, Johnny-Five esta mantenido por una comunidad de desarrolladores de software apasionados e ingenieros de hardware. De hecho más de 75 desarrolladores han hecho contribuciones para construir un ecosistema robusto, extensible y muy versatil.

 

Hola Mundo! 

A los microcontroladores y las plataformas SoC nos gusta decir “Hola mundo” con un simple LED parpadeante, así  que veamos en primer lugar un ejemplo como lo hariamos  usando el Ide clásico  de Arduino

Como vemos en la imagen ,conectaremos un led entre el pin 13  y masa , respetando la polaridad (el ánodo al pin13 y el cátodo o pin corto a masa )

Para  hacer destellear el citado led,  estos son los pasos básicos  que tenemos que seguir en nuestro sketch  programandolo desde el IDE de Arduino:

  1. Configurar el pin 13 (con LED incorporado) como una SALIDA
  2. Establecer el pin 13 ALTO para encender el LED
  3. Esperamos 500 ms (medio segundo)
  4. Establecer el pin 13 BAJO para apagar el LED

Y este es el código completo para ejecutar desde el Ide de Arduino:

void setup() {
pinMode(13, OUTPUT);    
}
void loop() {
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);  
delay(500);
}

Y ahora vamos a ver el mismo ejemplo , pero ejecutandolo en Javascript por medio de node-js,

Desgraciadamente  si usamos un Arduino o alguno de sus variantes (Arduino Uno,SparkFun RedBoard, On a host machine communicating over Bluetooth to the client. Arduino Uno,Arduino Leonardo, Arduino Mega, Arduino Fio,Arduino Micro,Arduino Mini,arduino Nano,Arduino pro Mini,Boatduino,chipKit uno32,Spider robot Controller,DfRobot Romeo,Teensy 3,)   necesitaremos que el programa JavaScript se ejecute en una máquina host que ejecute Node.js. de modo que el programa transmitirá instrucciones básicas de E / S a la placa a través de una interfaz  serie USB , que actuara como un cliente ligero .

El método host-cliente implica la comunicación a través de una API común entre el host y el cliente. El marco Node.js usado con Arduino y placas similares , Johnny-Five, se comunica (de forma predeterminada) con las placas  utilizando un protocolo llamado Firmata, protocolo que permite que los hosts (computadoras) y los clientes (microcontroladores) intercambien mensajes de ida y vuelta en un formato basado en mensajes MIDI. El protocolo Firmata especifica cómo deben ser esos mensajes de comando y datos. La implementación de Firmata de Arduino proporciona el firmware real que puede poner en su tablero para hacer que “hable” Firmata. Toma la forma de un boceto de Arduino que sube al tablero.

Firmata es lo suficientemente popular como para que los bocetos de Firmata que necesita vengan empaquetados con el IDE de Arduino asi que bastara con subir este a Arduino una única vez  ya que  el código javascript  correra en el host usando node.js.

Puede seguir estos pasos para cargar el interfaz correcto de Firmata en su Arduino  para que se pueda utilizar como cliente en una configuración de host-cliente:

Resumidamente estos son los pasos previos para ejecutar el   mismo  ejemplo del led parpadeante  que hemos visto pero   en  javascript en una placa Arduino;

  • En primer lugar  conectar  su Arduino  mediante USB a  su ordenador
  • Lanzar el IDE de Arduino.
  • Asegurarse que esta configurada la version de su placa,  así como el puerto COM  virtual al que esta conectado
  • Acceda al menú Archivo> Ejemplos> Firmata
  • Seleccione StandardFirmataPlus de la lista y despliegue este sw sobre su Arduino

  • Ahora Instale Node.js   en su pc . Funciona  con ultima version 11.3.0  de  64 bit que incluye  npm 6.4 (no olvidar de chequear que se instalen  otros componentes )Este es el link de descarga https://nodejs.org/en/download/ 
  • En la instalación de Node.js, repetimo  no debemos olvidar de chequear que se instalen  otros componentes  pues  con ellos se   instalara automáticamente
    • Python 2.7.3 (http://www.python.org/getit/releases/2.7.3/)
    • Visual Studio Express 2010 de 32 bits (con  las dependencias de C ++)
    • El comando npm
    • Alternativamente si dispusiésemos de npm podríamos instalar ambos entornos  con  npm --add-python-to-path install --global --production windows-build-tools
  • Este pasos anterior ( instalacion de componentes ) es  innecesario  si chequeamos en la instalación  de node.js  pues se instalaran  esos componentes  automáticamente
  • Ahora instalar node-gyp  medianete  el comando  npm install -g node-gyp (esto instalará node-gyp globalmente)                          
  • Ya puede  crear su primer proyecto Johnny-Five, por lo que en primer lugar cree un directorio para él e instale el paquete framework npm, como se muestra en la siguiente lista:
    • < mkdir hello-world
    • < cd hello-world
    • < npm install johnny-five
  • Ejecute  el comando “npm install johnny-five” desde la carpeta del proyecto
  • Ya por fin podemos crear el fichero javascript  con su editor de texto  que contendrá el código en javascript  . 

Realmente estos son los pasos  que tenemos que seguir:

  1. Requerir el paquete johnny-five
  2. Inicializar un nuevo objeto Board que represente a su placa .
  3. Esperar a que el tablero dispare el evento listo
  4. Crear una instancia de un objeto LED en el pin 13 (el pin LED incorporado de Uno)
  5.  Hacer que el LED parpadee cada 500 ms

Este es el código en js :


const five = require(‘johnny-five’);
const board = new five.Board();
board.on(‘ready’, () => {
 const led = new five.Led(13);
   led.blink(500);
});


Guarde el archivo como hello-world.js  y  conecte su Arduino  a un puerto USB en su ordenador  si aún no está conectado.

En una terminal  de windows  vaya al directorio del proyecto y ejecute este comando:

<node hello-world.js


Verá una salida como la siguiente en su terminal ejecutando hello-world.js en una terminal

 

 

Si el LED incorporado parpadea ,!enhorabuena !  !acaba de controlar una placa Arduino con JavaScript!  ¿a que es realmente sencillo?.

Aunque en el caso de la familia Arduino tiene la innegable penalización de necesitar un host para operar , la ventajas de este  modelo son evidentes pues no tenemos que estar constantemente compilando  y  subiendo el sketch con el ide de Arduino ya que el programa corre en host . Ademas  podemos usar un simple editor de texto para cambiar el código en javascript fácilmente

Asimismo el lenguaje javascript ha ido evolucionando hasta un ritmo que no podemos imaginar   incluyendo muchas características que no son soportadas de forma directa desde Arduino

Por ultimo mencionar la autentica potabilidad del código , pues el código que hemos visto en el ejemplo podremos usarlos  en múltiples plataformas  tan diferentes como Raspberry pi, Intel Edison , etc usando siempre el mismo código fuente aun siendo soportado por placas muy diferentes ¿ a que es interesante?

 

 

Placas soportadas

Johnny-Five ha sido probado con una variedad de tableros compatibles con Arduino . 

Para los proyectos que no están basados ​​en Arduino, los complementos de IO específicos de la plataforma están disponibles. Los complementos IO permiten que el código Johnny-Five se comunique con cualquier hardware en cualquier idioma que la plataforma hable.

Como comentábamos   existen diferentes  formas de   ejecutar  el programa Johnny-Five  segun la placa:

  • En un entorno Linux a bordo: beagleBone Black,Chip,Intel Galileo gen 1,Intel Galileo Gen 2,Intel Edison Arduino,Intel Edison Mini, SparkFun Edison GPIO Block,SparkFun Arduino Block, Intel Joule 570x (Carrier Board),Linino One,pcDuino3 Dev Board,Raspberry Pi 3 Model B, Raspberry Pi 2 Model B. Raspberry Pi Zero,Raspberry Pi Model A Plus,Raspberry Pi Model B Plus, Raspberry Pi Model B Rev 1, Raspberry Pi Model B Rev 2, Tessel 2) ,   Es  facil adivinar qeu este es el mabiente ideal   pues dentro de la placa se oprtan tanto el host como el cliente  por lo qeu no ncesitamos conectarnos con otro dispositivo
  • En una máquina host conectada (a través de Serial USB o Ethernet) a un cliente.: Arduino Uno,SparkFun RedBoard, On a host machine communicating over Bluetooth to the client. Arduino Uno,Arduino Leonardo, Arduino Mega, Arduino Fio,Arduino Micro,Arduino Mini,arduino Nano,Arduino pro Mini,Boatduino,chipKit uno32,Spider robot Controller,DfRobot Romeo,Teensy 3,
  • En una máquina host que se comunica por wifi al cliente.: Electric Imp April, pinoccio Scout, Particle Core ( Spark Core) ,Particle Photon, Sparkfun Photon RedBoard
  • En una máquina host que se comunica a través de Bluetooth al cliente :Blend Micro v1.0,LightBlue bean,

Veamos  ahora cada  caso en concreto;

Arduino Uno 

Ambiente 

  • Firmware / Runtime: : StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
Ping

SparkFun RedBoard 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

ping

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
Ping

 

Arduino leonardo 

Ambiente 

  • Firmware / Runtime:  StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
Ping

Arduino Mega 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
ping

Arduino Fio 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
Ping

Arduino Micro 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
One wire no
Paso a paso no
Serial / UART
Dac no
Ping

Arduino Mini 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
One wire no
Paso a paso no
Serial / UART
Dac no
Ping

Arduino Nano 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
Ping

Arduino Pro Mini 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
One wire no
Paso a paso no
Serial / UART
Dac no
ping

BotBoarduino 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere amarre.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
ping

chipkit uno32 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
One wire
Paso a paso
Serial / UART
Dac no
ping

Spider Robot Controller 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere  tetehering.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
ping

DFRobot Romeo 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere amarre.

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
Ping

Teensy 3 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere amarre.
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART no
Dac no
ping

BeagleBone Black 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

CHIP 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo no
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
Ping no

Blend Micro v1.0 

Ambiente 

  • Complemento IO: BlendMicro-IO ( instrucciones adicionales )
  • Firmware / Runtime: BLEFirmata
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a través de Bluetooth a la placa, que actúa como un cliente ligero .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
Ping no

 Electric Imp  April 

Ambiente 

Plataforma específica 

  • Requiere una conexión WiFi conectada a Internet y está sujeto a la limitación de la tasa de solicitud por parte del servidor de Electric Imp API.
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C no
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

Intel Galileo Gen 1 

Ambiente 

Plataforma específica 

  • Las compilaciones que no son IoTKit ya no son compatibles.
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

Intel Galileo Gen 2 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
Silbido no

Intel Edison Arduino 

Ambiente 

Plataforma específica 

  • El hardware es capaz de soportar solo 4 salidas PWM. Como resultado, los enlaces nativos no admiten PWM en los pines 10 y 11.
  • Aunque Galileo-io / Edison-io / Joule-io todavía no admite comunicaciones en serie, puede enlazar a / dev / ttyFMD1 en la placa Edison Arduino usando el módulo serialport .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
Silbido no

Intel Edison Mini 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
Silbido no

SparkFun Edison GPIO Block 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

SparkFun Arduino Block

Ambiente 

Plataforma específica 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART no
Dac no
ping no

Intel Joule 570x (Carrier Board) 

Ambiente 

Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

LightBlue Bean

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

Linino uno 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

pcDuino3 Dev Board 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo no
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

Pinoccio Scout 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C no
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

Raspberry Pi 3 Modelo B 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
ping no

Raspberry Pi 2 Modelo B 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
Silbido no

Raspberry Pi Zero 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
ping no

Raspberry Pi Model A Plus 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
ping no

Frambuesa Pi Modelo B Plus 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
Silbido no

Raspberry Pi Modelo B Rev 1 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
Ping no

Raspberry Pi Modelo B Rev 2 

Ambiente 

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
ping no


Particle Core (Spark Core)

Ambiente 

Plataforma específica 

  • Los temporizadores se comparten en grupos: Temporizador 2: A0 , A1 , Temporizador 3: A4 , A5 , A6 , A7 , Temporizador 4: D0 , D1
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping


Particle Photon

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
ping no
Silbido

Sparkfun Photon RedBoard 

Ambiente 

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping

Tessel 2 

Ambiente 

Plataforma específica 

  • El soporte de servo se proporciona a través de componentes I2C (por ejemplo, PCA9685 )
  • DAC está limitado a Puerto B, Pin 7
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac
ping no

Mas información en  http://johnny-five.io/platform-support/

Envio de correos desde Raspberry


En realidad es bastante sencillo poder enviar correos electrónicos  gracias a Mutt , un cliente de correo electrónico libre basado en texto, para sistemas similares a Unix que fue escrito originalmente por Michael Elkins en 1995 y publicado bajo la Licencia Pública General de GNU. Inicialmente se asemejaba a elm, ahora el programa es muy similar al lector de noticias slrn.

Mutt soporta la mayoría de los formatos de correo electrónico (en particular, tanto mbox y Maildir) y protocolos (POP3, IMAP, etc.)  También incluye soporte MIME, en particular PGP/GPG y S/MIME.

Este programa es  bastante configurable pues: tiene cientos de directivas de configuración y personalización de los comandos. Ademas permite cambiar todas las teclas y hacer macros de teclado para acciones complejas, así como los colores y el diseño de la mayoría de la interfaz. A través de las variantes de un concepto conocido como «ganchos», muchos de sus ajustes se pueden cambiar sobre la base de criterios tales como el actual o buzón de correo saliente los destinatarios del mensaje. Hay muchos parches disponibles y extensiones que añaden funcionalidad, como soporte NNTP o una barra lateral similar a los que a menudo se encuentran en clientes de correo gráfico.

Mutt es totalmente controlado con el teclado, y tiene soporte para hilos de correo, es decir, uno puede fácilmente desplazarse largas discusiones, como en listas de correo. Los mensajes nuevos se componen con un editor de texto externo por defecto, a diferencia de pine que incorpora su propio editor conocido como pico (aunque se puede configurar para depósito de pino a un editor externo).

Mutt. the e-mail client.png

Para  instalar  el cliente de correo mutt  en nuestra Raspberry Pi , la cual por ejemplo nos va  permite enviar correos desde una cuenta de gmail  tenemos que seguir unos sencillos pasos.

En primer lugar debe actualizar el sistema  e instalar la utilidad mutt; 

sudo apt-get update
sudo apt-get install mutt

Ahora con el paquete instalado,  lo vamos a configurar para enviar desde el directorio  root.de nuestra Raspberry Pi ,`para ello ,creamos el  fichero .muttrc   y rellenamos con nuestra  información sobre nuestra cuenta de correo.

Para ello ejecute el siguiente comando:

 sudo nano /root/.muttrc

Ahora en dicho  fichero deberá escribir el siguiente contenido:

set from = “[email protected]
set realname = “usuario gmail”
set imap_user = “[email protected]
set imap_pass = “password”
set folder = “imaps://imap.gmail.com:993”
set spoolfile = “+INBOX”
set postponed =”+[Gmail]/Drafts”
set header_cache =~/.mutt/cache/headers
set message_cachedir =~/.mutt/cache/bodies
set certificate_file =~/.mutt/certificates
set smtp_url = “smtp://[email protected]:587/”
set smtp_pass = “password”

 

Donde pone  [email protected] , lógicamente tendrá que escribir su  usuario de gmail y donde pone password la clave que usemos para acceder a este.  En smtp-url  tampoco olvide que  xxxx representa el usuario de gmail

Lógicamente salvaremos el fichero con nuestra información de nuestra cuenta de gmail  y abandonaremos el editor nano.

Ahora crearemos la siguiente carpeta ( cache) para lo cual ejectaremos, 

sudo mkdir -p /root/.mutt/cache


Ya estamos listos para enviar un correo para lo cual  recuerde que  hemos configurado el correo para enviar desde la carpeta root (si lo queréis desde el usuario pi donde pone root lo puede cambiar por pi).


Vamos a enviar nuestro primer correo para ello hacemos sudo su. Y tecleamos el siguiente código:


echo “Contenido” | mutt -s “Prueba” [email protected]

 

Donde pone  [email protected] , lógicamente es el destinatario  de gmail, y  “Contenido ” es el contenido del mensaje y en Prueba ira el asunto del mensaje. 

Ahora ya  podemos ir  nuestra bandeja de entrada   y si la Raspberry Pi  contaba con conectividad  a Internet   via wifi ( si es una Raspberry pi 3)  o por ethernet ,  allí tendremos el correo.

Asimismo también  podemos enviar un archivo adjunto,  para lo cual  crearemos un archivo con nano adjunto.c y lo relleneraremos con texto.


Para adjuntar este fichero al correo se hace de la siguiente forma:

echo “Este correo incluye un adjunto” |  mutt -s “Archivo Adjunto” [email protected] -a /root/adjunto.c

donde /root/adjunto.c es la ruta del archivo del fichero a enviar  e [email protected] , lógicamente es el destinatario  de gmail, .

 

 

Puede  parecer una vanalidad  pero la  potencia de enviar correos desde la Raspberry Pi , es una idea muy interesante para automatizar  procesos  asociados a dispositivos conectados a  los GPIO  por ejemplo relacionados con el cambio de estado de un pin asociado a un pulsador o   cuando varíe un valor asociado a un determinado sensor

 

 

Como ver la previsión del tiempo desde Raspberry Pi ( parte 2)


En un post anterior de como ver la previsión del tiempo desde una Raspberry Pir veiamos como  podemos ver la previson del tiempo en nuestra  Rasperry Pi ,  usando mediante el comando curl y  la utilidad  de  Wttr.in  , un servicio de previsión del tiempo orientada a la consola que admite varios métodos de representación de información tal como secuencias ANSI de  terminal,  estando orientado tanto para clientes de consola HTTP (Rizo, httpie o wget), como  para navegadores web en HTTP  , o incluso para visualizadores gráficos en formato PNG .

Previamente antes de lanzar el comando ,para que se visualice correctamente la salida de texto de este servicio ,  abriremos la consola de terminal   ajustaremos la ventana   del valor  por defecto (80 x25 ) a  130 x24 ,  por lo que nos iremos a Editar –>Preferencias –>Mostrar y seleccionaremos como  ventana por defecto los valores  al menos de  130 x 24    y cerraremos la ventana  del Terminal

Nuevamente abriremos otra consola de shell  en la Raspberry Pi  y escribiremos : 

curl wttr.in

Como resultado desde la misma consola veremos  un informe en  tiempo real para su ubicación   sin haber tenido  que especificar nada  más ,  ya  que  es   sensible tanto para la fecha actual como para la localización:

 

Sin duda este  servicio es muy interesante , pero  ademas permite una personalizacion muy alta como vamos a ver a continuación 

Unidades de tiempo

Por defecto las unidades USCS se utilizan para las consultas de los Estados Unidos y el sistema métrico para el resto del mundo. Puede reemplazar este comportamiento agregando o a una URL como esta:?u?m


$ curl wttr.in/Almeria?m

 

Formatos de salida

wttr.in actualmente soporta tres formatos de salida:

  • ANSI para el terminal;
  • ANSI para el modo de terminal, una línea;
  • HTML para el navegador;
  • PNG para los espectadores de la gráficos.

Los formatos ANSI y HTML son seleccionados basándose en la cadena User-Agent. El formato PNG se puede forzar mediante la adición al final de la consulta:.png

$ wget wttr.in/Almeria.png

Puede utilizar todas las opciones con el formato PNG como una URL, pero hay que separarlos con en vez de y:_?&

$ wget wttr.in/Paris_0tqp_lang=fr.png

Opciones para el formato PNG:

  • t (transparencia);transparency=150
  • transparencia = 0..255 para un nivel de transparencia personalizada.

La transparencia es una característica útil cuando PNGs de tiempo se utilizan para agregar datos a los cuadros:

$ convert source.jpg <( curl wttr.in/Oymyakon_tqp0.png ) -geometry +50+50 -composite target.jpg

En este ejemplo:

  • source.jpg -archivo de código fuente;
  • target.jpg -archivo de destino;
  • Oymyakon -nombre de la localización;
  • tqp0 -Opciones (recomendados).

Una línea de salida

Para el formato de salida de una línea, especifique los parámetros adicionales:format

$ curl wttr.in/Almeria?format=3
Almeria: 🌦 +11⁰C

Formatos preconfigurados disponibles: 1, 2, 3, 4 y el formato personalizado usando la notación porcentual (véase abajo).

Puede especificar varias ubicaciones separadas (para repetir consultas)::

$ curl wttr.in/Almeria:Granada:Jaen?format=3
Almeria: 🌦 +11⁰C

O para procesar todas las consultas de este a la vez:

$ curl 'wttr.in/{Almeria,Granada,Jaen}?format=3'
Almeria: 🌦 +14⁰C
Granada: 🌦 +14⁰C
Jaen: 🌦 +14⁰C

Para especificar su propio formato personalizado, utilice el especial-notación:%

    c    Weather condition,
    t    Temperature,
    w    Wind,
    l    Location,
    m    Moonphase 🌑🌒🌓🌔🌕🌖🌗🌘,
    M    Moonday,

Por lo tanto, estas dos llamadas son las mismas:

    $ curl wttr.in/Almeria?format=3
    Almeria: ⛅️ +14⁰C
    $ curl wttr.in/Almeria?format="%l:+%c+%t"
    Almeria: ⛅️ +14⁰C

Tenga en cuenta, que cuando se utiliza en, tiene que escapar con %, es decir, escribir allí en vez de.tmux.conf%%%%%

En programas, que están consultando el servicio automáticamente (por ejemplo tmux), es mejor utilizar un intervalo de actualización razonables. En tmux, puede configurarlo con.status-interval

Si varias ubicaciones separadas, se especifican en la consulta, especifique el período de actualización como un parámetro de consulta adicional::period=

set -g status-interval 60
WEATHER='#(curl -s wttr.in/London:Stockholm:Moscow\?format\="%%l:+%%c%%20%%t%%60%%w&period=60")'
set -g status-right "$WEATHER ..."

Fases de la luna

wttr.in puede utilizarse también para comprobar la fase de la luna. Este ejemplo muestra cómo ver la fase lunar actual:

$ curl wttr.in/Moon

Obtener la fase lunar para una fecha determinada mediante la adición de:@YYYY-MM-DD

$ curl wttr.in/[email protected]

La información de la fase de luna utiliza pyphoon como su back-end.

Internacionalización y localización

wttr.in es compatible con nombres de ubicaciones multilingüe que pueden especificarse en cualquier idioma del mundo (puede ser sorprendente, pero muchos lugares en el mundo no tienen un nombre en inglés).

La cadena de consulta debe especificarse en Unicode (hexadecimal codificado o no). Espacios en la cadena de consulta deben ser reemplazados por:+

$ curl wttr.in/станция+Восток
Weather report: станция Восток

               Overcast
      .--.     -65 – -47 °C
   .-(    ).   ↑ 23 km/h
  (___.__)__)  15 km
               0.0 mm

El lenguaje utilizado para la salida (excepto el nombre de la ubicación) no depende del idioma de entrada y es inglés (por defecto) o el idioma preferido del navegador (si la consulta fue emitida desde un navegador) que se especifica en la consulta cabeceras ().Accept-Language

El lenguaje se puede establecer explícitamente al usar a clientes de consola mediante las opciones de línea de comandos como este:

curl -H "Accept-Language: fr" wttr.in
http GET wttr.in Accept-Language:ru

El idioma puede ser forzado mediante la opción:lang

$ curl wttr.in/Almeria?lang=es

La tercera opción es elegir el idioma utilizando el nombre DNS utilizado en la consulta:

$ curl de.wttr.in/Almeria

wttr.in está actualmente traducido a 54 idiomas, y el número de idiomas está en constante crecimiento.

Ver /:translation para aprender más sobre el proceso de traducción, para ver la lista de idiomas soportados y colaboradores, o saber cómo puede ayudar a traducir wttr.in en tu idioma.

 

Instalación en local

Tambien  puede instalar este servicio de previsión de tiempo en su en nuestra  Rasperry Pi , 

Para instalar la aplicación estos son los pasos a seguir:

  1. Instalar dependencias externas
  2. Instalar dependencias de Python utilizadas por el servicio
  3. Obtener una clave de API de WorldWeatherOnline
  4. Configurar wego
  5. Configurar wttr.in
  6. Configurar el servicio de HTTP-frontend

Instalar dependencias externas

wttr.in tiene las siguientes dependencias externas:

  • golang, dependencia de wego
  • wego, cliente tiempo para terminal

Después de instalar golang, instalar:wego

$ go get -u github.com/schachmat/wego
$ go install github.com/schachmat/wego

Instalar dependencias de Python

Requisitos de Python:

  • Flask
  • geoip2
  • geopy
  • requests
  • gevent

Si desea obtener informes meteorológicos como archivos PNG, también debe instalar:

  • PIL
  • Pyte (> = 0,6)
  • fuentes necesarias

Puede instalar la mayoría de ellos utilizando.pip

Si se utiliza:virtualenv

$ virtualenv ve
$ ve/bin/pip install -r requirements.txt
$ ve/bin/pip bin/srv.py

Además, es necesario instalar la base de datos de geoip2. Puede utilizar una base de datos libre GeoLite2 que puede ser descargado (http://dev.maxmind.com/geoip/geoip2/geolite2/).

Obtener una clave de WorldWeatherOnline

Para obtener una clave de API de WorldWeatherOnline, se debe registrar aquí:

https://developer.worldweatheronline.com/auth/register

Configurar wego

Después de tener una clave de WorldWeatherOnline, usted puede configurar:wego

$ cat ~/.wegorc 
{
    "APIKey": "00XXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "City": "London",
    "Numdays": 3,
    "Imperial": false,
    "Lang": "en"
}

El parámetro se omite.City~/.wegorc

Configurar wttr.in

Configurar las siguientes variables de entorno que definen la ruta de acceso a la instalación local, a la base de datos de GeoLite y a la instalación. Por ejemplo:wttr.inwego

export WTTR_MYDIR="/home/igor/wttr.in"
export WTTR_GEOLITE="/home/igor/wttr.in/GeoLite2-City.mmdb"
export WTTR_WEGO="/home/igor/go/bin/wego"
export WTTR_LISTEN_HOST="0.0.0.0"
export WTTR_LISTEN_PORT="8002"

Configurar el servicio de HTTP-frontend

Se recomienda que también configurar el servidor web que se utilizará para acceder al servicio:

server {
    listen [::]:80;
    server_name  wttr.in *.wttr.in;
    access_log  /var/log/nginx/wttr.in-access.log  main;
    error_log  /var/log/nginx/wttr.in-error.log;

    location / {
        proxy_pass         http://127.0.0.1:8002;

        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $remote_addr;

        client_max_body_size       10m;
        client_body_buffer_size    128k;

        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;

        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;

        expires                    off;
    }
}

 

Mas información en  https://github.com/chubin/wttr.in

Como ver la previsión del tiempo desde una Raspberry Pi


Wttr.in es un servicio de previsión del tiempo orientada a la consola que admite varios métodos de representación de información tal como secuencias ANSI de  terminal,  estando orientado tanto para clientes de consola HTTP (Rizo, httpie o wget), como  para navegadores web en HTTP  , o incluso para visualizadores gráficos en formato PNG .

El servicio wttr.in utiliza  visualización de  wego y diferentes fuentes de datos para obtener información de la previsión del tiempo.

Lo puede ver funcionando aquí: wttr.in desde  un navegador,   pero lo mas interesante de esta utilidad ,  es que  se puede lanzar desde una consola  en nuestra Raspberry pi , para  lo que únicamente  necesitaremos:

  • Conectividad  bien vía WIFI o por cable ethernet
  • Tener instalado el curl 
  • No es fundamental usar la ultima versión Rasperry Pi 3, pues esta utilidad funciona  perfectamente con la versión 2 e incluso en versiones anteriores.

 

Instalar curl en un Raspberry Pi

El comando curl es bastante útil y flexible siendo su  objetivo servir como  herramienta de transferencia de  datos, sin interacción del usuario, hacia o desde un servidor, utilizando uno de los muchos protocolos admitidos.

Si tiene PHP 5 instalado en la Rasperry Pi 3,    y no tiene instado curl cuando instaló Raspbian  ,para ejecutar la utilidad de previsión del tiempo se requiere . Para ello puede hacer lo siguiente:

sudo apt-get update

Y entonces:

sudo apt-get install php5-curl

Estos dos comandos únicamente son los que  realmente todo lo que tenemos que lanzar en el peor de los casos  ya  que puede que  tenga instalado curl en la    Rasperry Pi ,.

 

Ejecución de wttr

Para ver la previsión de tiempo de wttr en la Raspberry Pi  lo podemos  hacer accediendo  desde el navegador Web  Chromiun  e ir a la url http://wttr.in  , pero es mucho mas interesante y rápido (y obtendremos el mismo resultado)  si hacemos la llamada  desde un shell.

Previamente antes de lanzar el comando ,para que se visualice correctamente la salida de texto de este servicio , abriremos la consola de terminal desde la propia Rasperry Pi ,  y  ajustaremos la ventana   del valor  por defecto (80 x25 ) a  130 x24 ,  por lo que nos iremos a Editar –>Preferencias –>Mostrar y seleccionaremos como  ventana por defecto los valores  al menos de  130 x 24  en lugar de la marcada por defecto de 80 x25 .

 

Ahora pulsaremos Aceptar  y cerraremos la ventana  del Terminal

Nuevamente abriremos otra consola de shell  en la Raspberry Pi  y escribiremos : 

curl  wttor.in

Como resultado desde la misma consola veremos  un informe en  tiempo real para su ubicación   sin haber tenido  que especificar nada  más ,  ya  que  es   sensible tanto para la fecha actual como para la localización:

Como es de suponer ,la  ubicación real  se obtiene  de su dirección IP real    tomando  no solo la localización sino la zona horaria  y la hora .

 

Si quiere obtener la información meteorológica para un lugar específico  también se puede Agregar la ubicación deseada a la URL en su solicitud como esta:

$ curl wttr.in/London
$ curl wttr.in/Moscow

Recuerde , como hemos hablado  que si se omite el nombre de la ubicación, obtendrá el informe de su ubicación actual, basado en su dirección IP.

También se puede utilizar códigos del aeropuerto de 3 Letras con el fin de obtener la información del tiempo en un determinado aeropuerto:

$ curl wttr.in/muc      # Weather for IATA: muc, Munich International Airport, Germany
$ curl wttr.in/ham      # Weather for IATA: ham, Hamburg Airport, Germany

Digamos que quieres obtener el tiempo en un lugar geográfico que no sea un pueblo o ciudad – tal vez una atracción en una ciudad, un nombre de montaña o en algún lugar especial. Agregar el carácter antes del nombre para ver nombre ubicación especial antes de que el tiempo es entonces obtenido:~

$ curl wttr.in/~Vostok+Station
$ curl wttr.in/~Eiffel+Tower
$ curl wttr.in/~Kilimanjaro

Hay muchos ejemplos, debajo de la salida del tiempo en que se muestra los resultados de geolocalización de buscar la ubicación:

Location: Vostok Station, станция Восток, AAT, Antarctica [-78.4642714,106.8364678]
Location: Tour Eiffel, 5, Avenue Anatole France, Gros-Caillou, 7e, Paris, Île-de-France, 75007, France [48.8582602,2.29449905432]
Location: Kilimanjaro, Northern, Tanzania [-3.4762789,37.3872648] 

También puede utilizar (directa) de direcciones IP o nombres de dominio (con el prefijo) para especificar una ubicación:@

$ curl wttr.in/@github.com
$ curl wttr.in/@msu.ru

Por ultimo también ofrece  información detallada en línea, para lo cual  solo se necesita acceder a la página de /:help :

$ curl wttr.in/:help
Mas información en  su sitio de Github https://github.com/chubin/wttr.in

OpenAuto


Y es que en lugar de tener que gastar una fortuna en una pantalla para el coche que incluya Android Auto de marca como Pioneer o Sony el desarrollador Polaco Michal Szwaj   se decidió a crear este proyecto cuando buscaba incorporar un sistema Android Auto en su viejo coche,  por lo que descartado comprar un costoso equipo ,  la primera alternativa que se le ocurrió  fue  OpenAuto que  se lanzó  en el primer trimestre de 2018 de manera pública ( dado que las primeras versiones de Android Auto oficialmente no admitían autorradios de  terceros baratos ) , Desgraciadamente  como hemos visto,  instalarlo  a pesar  de  que existe un script que  puede hacer  todas las funciones , es algo complejo porque al fin al cabo requiere compilar código ,   así como añadir una serie de configuraciones para hacerla funcionar, motivo por el cual se lanzó a hacerlo todavía más sencillo creando una imagen en unas SD  con todo ya instalado  y pre-configurado .

En efecto se  puede hacer casi  lo mismo que Android Auto  gracias a la  nueva distribución de GNU/Linux llamada Crankshaft para lo cual  solo necesitaremos la Raspberry Pi  3 y una pantalla táctil, la cual desgraciadamente  tiene  una gran peculiaridad :sólo  funciona con la  pantalla táctil de 7″ oficial de la fundación Raspeberry ( unos 100€) . Sólo si se cuenta con ambas condiciones tan  solo habrá que  instalar  la imagen de Crankshaft y por supuesto encontrarle un hueco en el salpicadero de nuestro coche(su creador recomienda que compremos la pantalla oficial y una carcasa)

 

 

Crankshaft  esta en fase alfa y se puede descargar  gratuitamente desde su página web oficial pero sus autores no se responsabilizan de ningún problema que pueda surgir durante su utilización, ya que se distribuye de forma altruista y no una versión estable desarrollada por Google (por tanto, tenga mucho cuidado si lo utiliza  y depende  de esta).

Los  conceptos  sobre los que se centra esta distribución;

  • Amistoso y divertido:Una instalación base que debe “sólo trabajar” sin ninguna configuración extra , es decir sin tener que ejecutar un solo comando desde la consola .

  • Software libre ; respeta su libertad garantizada por la GPLv3, desarrollado por Open. Código fuente.

  • De gran alcance: nos  lo pone fácil para personalizar y desarrollar en él.

Android Auto es más que un concepto,  pues mientras Android Auto puede tomar la forma de software pre-instalado en un a elegante unidad principal de su coche  nuevo , en un contexto de Crankshaft,  Auto Android es, ante todo un reflejo de la aplicación que se ejecuta en tu teléfono Android   y por ende donde reside toda la magia , por lo que no es software que se ejecuta en una unidad principal (en este caso una  Rasbperry Pi 3  ) ya que  a aplicación Android Auto funciona en su teléfono que  sirve como  software de proyección – más simplemente mediante un cable USB – de sí mismo y admitiendo  incluso  aplicaciones como Google Maps, funcionando en su teléfono. Open fue desarrollado originalmente para su uso en el hardware como el Pi de Raspberry pi  con una pantalla táctil,  para usarlo en  combinación con  un teléfono con Android con  la aplicación Android Auto, proyectando la salida de la aplicación Android Auto un Raspberry Pi equipado con una pantalla táctil y funcionamiento Open, se convierte en una unidad principal de coche potencialmente muy bajo costo y eficaz comparable a la funcionalidad ofrecida por unidades principales actuales.

Crankshaft es una distribución Linux ha sido desarrollada para hacer más fácil de usar Open para configurar y ejecutar proporcionando la funcionalidad adicional de ayuda fuera de la caja que no es estrictamente parte de Open.

Una unidad principal de funcionamiento del Crankshaft:

  1. Tiene muy poco control sobre el teléfono y qué aplicaciones se ejecutan en él
  2. Solo maneja entradas relacionadas cuando toca la pantalla táctil   enviando estos datos a la aplicación de Auto Android en su teléfono
  3. Puede negarse a ayudar al audio del teléfono aunque esto puede ser útil si desea utilizar un Bluetooth estéreo ya trabajando en su coche
  4. Podría considerarse vinculada al teléfono Android que es el servidor con  todos los beneficios y límites que conlleva

 

Hardware 

Necesita los siguientes elementos

Getting started materials

  1. Una Raspberry Pi:

    • Los modelos 3B y 3B + son la opción razonable.

    • El Pi 2 sería conveniente pero carece de WiFi y Bluetooth a bordo que podría ser de utilidad.

    • El cero de Pi, A + y B Pi original pueden hacerlas a pesar de la aceleración de GPU de Open.

  2. Por lo menos una tarjeta de microSD de 4GB  :Tarjetas Sandisk y Samsung (la línea EVO) son grandes

  3. Pantalla táctil de frambuesa Pi : de hecho el oficial 7″ modelo funciona muy bien alimentado desde el Pi a través de los pines GPIO, como física pin 2 (5V) y la clavija 6 (GRND)

  4. Un smartphone con Android 5.0 o superior  con la aplicación de Android Auto instalada

  5. Un cable USB para conectar el teléfono a su Raspberry Pi

  6. Una fuente de energía como un enchufe accesorio de 12V al convertidor del USB.

    • Conseguir una adecuada con alto amperaje (Amp 2 o más).

    • No compre los baratos en las tiendas de articulos orientales.

  7. Un cable USB a micro USB para alimentar el Pi.

  8. Una solución de salida de audio como la radio del coche.

    • Un cable de audio 3.5mm Macho a macho le permitirá conectar el Raspberry Pi para Aux zócalo de su coche, si tienes uno.

    • Otra opción es audio Bluetooth.

  9. Un micrófono USB Si desea utilizar al asistente de “Google OK”.

 

Si usted está confundido con la pantalla táctil, consulte a la guía de “construcción de la pantalla” en ThePiHut.

Assembled screen

La pantalla montada debería verse como esto.

Después de conectar el cable de cinta, necesitarás conectar dos cables adicionales más.

Estos son algunos diagramas útiles

Corresponde a:

Usted tendrá que conectar los 2 pines: tierra (GND/negro) y 5V (rojo) a los 2 pines etiquetado GND y 5V de la pantalla táctil. N

Tome  mucha  precaución al conectar lo 5V/GND, ya que podría freír la pantalla / el Pi si lo conecta mal.

Software

Vaya a la sección lanzamientos de Crankshaft y descargue el archivo ZIP de 500 MB o así a su ordenador.

Una vez ,  descargada la imagen correspondiente  en su ordenador  siga los siguientes pasos:

  • Inserte la tarjeta SD en el lector de tarjetas SD  de su ordenador comprobando cual es la letra de unidad asignada. Se puede ver fácilmente la letra de la unidad, tal como G :, mirando en la columna izquierda del Explorador de Windows.
  • Puede utilizar la ranura para tarjetas SD, si usted tiene uno, o un adaptador SD barato en un puerto USB.
  • Descargar la utilidad Win32DiskImager desde la página del proyecto en SourceForge como un archivo zip; puede ejecutar esto desde una unidad USB.
  • Extraer el ejecutable desde el archivo zip y ejecutar la utilidad Win32DiskImager; puede que tenga que ejecutar esto como administrador. Haga clic derecho en el archivo y seleccione Ejecutar como administrador.
  • Seleccione el archivo de imagen que ha extraído anteriormente de la imagen de Raspbian de Crankshaft .
  • Seleccione la letra de la unidad de la tarjeta SD en la caja del dispositivo. Tenga cuidado de seleccionar la unidad correcta; si usted consigue el incorrecto puede destruir los datos en el disco duro de su ordenador! Si está utilizando una ranura para tarjetas SD en su ordenador y no puede ver la unidad en la ventana Win32DiskImager, intente utilizar un adaptador SD externa.
  • Haga clic en Escribir y esperar a que la escritura se complete.
  • Salir del administrador de archivos  y expulsar la tarjeta SD.
  • Ya puede insertar la SD en su Raspberry Pi en el adaptador de micro-sd , conectar un monitor por el hdmi , conectar un teclado y ratón en los  conectores USB, conectar la  con un cable ethernet  al router  conectividad a Internet y finalmente conectar la alimentación  para comprobar que la Raspeberry arranca con la nueva imagen

 

Por último, poner todo en iniciar su coche y conecte el teléfono!

No es un software de nivel alpha, por lo que. No es seguro  que funcione  al 100%   incluso con el hw probado  y sw de Google o Android. T

Si es  un desarrollador que es capaz de compilar software en Linux, puedes seguir las instrucciones de Open incluso cuando el Crankshaft  no funcione en su hardware personalizado.

Puede ver en este hilo una lista de compatibilidad de teléfonos y Hardware.El listado de móviles compatibles incluye prácticamente todos los recientes, y puede comprobar el listado de usuarios que afirma que funciona con su móvil en la página de GitHub   pero como decíamos al principio de este post el problema es la pantalla táctil pues de no ser la oficial  puede que visualize  perfectamente el interfaz  pero que no reaccione a las pulsaciones .

Personalmente lo he probado con la pantalla  kuman de 5”  ( bastante mas económica que la de 7″ oficial ) pero desgraciadamente aunque  la imagen es  perfecta del interfaz  desgraciadamente  no responde a las pulsaciones ante la pantalla 

Al estar todavía en fase experimental, le faltan bastantes funcionalidades. Por ejemplo, no cuenta con implementación para micrófono, por lo que el control por voz mediante Ok Google no funciona. Tampoco tiene Bluetooth, por lo que es necesario conectar el móvil mediante USB para poder usarlo con el sistema

 

Via instructables

Android Auto con una Raspberry Pi


Android Auto, es un sistema que usa un hardware especifico  diseñado para poder utilizar algunas funciones de nuestros móviles mientras conducimos, como ver mensajes, cambiar de canción, recibir instrucciones para el GPS, hacer llamadas, etc. Hasta ahora era necesario que el coche fuera de los más nuevos e incorporara el sistema o incorporar una cara pantalla que lo incluya, pero gracias a Raspberry Pi ya no es necesario ¿le  interesa como lograrlo, pues siga leyendo porque la verdad es que no puede ser mas sencillo .

 

 

En efecto , en 2015, Google presentó Android Auto , un sistema que permite a los usuarios proyectar ciertas aplicaciones desde sus teléfonos inteligentes Android en la pantalla de información y entretenimiento de un automóvil. La interfaz amigable para el conductor de Android, con botones táctiles y comandos de voz más grandes, tiene como objetivo hacer que sea más fácil y seguro para los conductores controlar la navegación, la música, los podcasts, la radio, las llamadas telefónicas y más, mientras mantiene la vista en la carretera. Android Auto también se puede ejecutar como una aplicación en un teléfono inteligente Android, lo que permite a los propietarios de vehículos de modelos más antiguos sin pantallas de unidades principales para aprovechar estas características.

 

Si bien hay muchas aplicaciones disponibles para Android Auto, los desarrolladores están trabajando para ampliar  su catálogo.De hecho una nueva herramienta de código abierto llamada OpenAuto espera facilitarlo al ofrecer a los desarrolladores  como una forma de emular Android Auto en una Raspberry Pi 

 Con OpenAuto, los desarrolladores pueden probar sus aplicaciones en condiciones similares a las de cómo trabajarán en una unidad de cabeza de automóvil real ,  pero ademas ,  como puede imaginarse también sirve para implementar Android Auto en un vehículo convencional  que no contara  con esta facilidad .

Las funciones implementadas a día de hoy en Android Auto son:

  • Vídeo a 480p, 720p y 1080p a 30 o 60 fps
  • Decodificación hardware de vídeo en la Raspberry Pi 3 (hasta [email protected])
  • Reproducción de audio de todos los canales (multimedia, sistema y voz)
  • Entrada de audio para comandos de voz
  • Touchscreen y botones
  • Bluetooth
  • Inicio automático tras conectar el dispositivo
  • User-friendly

Además de la   Raspberry Pi 3 y un dispositivo Android  con la app de Android Auto instalada, se necesita:

  • Microfono USB : la Raspberry Pi 3 no tiene una entrada de micrófono, que se requiere para usar el Asistente de voz de Google ( si no se instala no se podrán dar ordenes vocales)
  • Dispositivo de salida de video: puede usar una pantalla táctil o cualquier otro dispositivo de salida de video conectado a HDMI o salida compuesta (RCA)
  • Dispositivo de entrada: por ejemplo, una pantalla táctil o un teclado USB

 

OpenAuto

OpenAuto es un emulador para la unidad principal de Android Auto.Emula el software de la unidad principal y le permite usar Android Auto en su PC o en cualquier otra plataforma integrada como Raspberry Pi 3.

El software de la unidad principal es una interfaz para la proyección automática de Android. Toda la magia relacionada con Android Auto, como la navegación, el Asistente de voz de Google o la reproducción de música, se realiza en el dispositivo Android.

 La proyección de Android Auto en la unidad principal se realiza utilizando el códec H.264 para video y el códec PCM para la transmisión de audio. Esto es lo que hace principalmente el software de la unidad principal: descodifica la transmisión de video H.264 y las transmisiones de audio PCM y las reproduce de manera conjunta. Otra función de la unidad principal es proporcionar entradas de usuario pues OpenAuto admite eventos táctiles y teclas duras.

Para una implementación exitosa, se necesita implementar el soporte de aceleración de hardware de video usando la GPU Raspberry Pi 3 (VideoCore 4).Gracias a esto, la proyección automática de Android en la  Raspberry Pi 3 puede manejarse incluso con una resolución de 1080p a 60 fps. Se pueden usar las bibliotecas cliente OpenMAX IL e IL entregadas junto con el firmware Raspberry Pi para implementar la aceleración de hardware de video.

Aprovechando el hecho de que el sistema operativo Raspberry Pi es Raspbian basado en Debian Linux, OpenAuto también puede construirse para cualquier otra plataforma basada en Linux que brinde soporte para la decodificación de video por hardware. La mayoría de las plataformas basadas en Linux proporcionan soporte para decodificación de video por hardware directamente en GStreamer. Gracias a las bibliotecas altamente portátiles como Boost y Qt , OpenAuto se puede construir y ejecutar en la plataforma Windows. 

El proyecto se basa en la instalación de una distribución Linux, Raspbian Stretch, a la que luego se le añaden librerías como las célebres Qt para poder ejecutar las aplicaciones orientadas a ser utilizadas en el coche.

A la Raspberry Pi 3 en la que se han basado para iniciar el proyecto se le conecta una pantalla táctil (480p, 720p o 1080p) que es recomendable para la interacción con el sistema. Completar el proceso es relativamente sencillo, y tanto el código fuente (en GitHub) como las instrucciones de instalación están disponibles públicamente.

El proyecto, desarrollado por Michal Szwaj, plantea por ahora un sistema en el que es posible controlar la reproducción multimedia —el soporte Bluetooth es protagonista—, o acceder a los mapas de Google, por ejemplo. De momento no se ofrecen funciones como la navegación GPS, pero la versatilidad de la Raspberry Pi hace que esa opción no parezca difícil de implementar.

El proyecto de hecho no solo está disponible para la Raspberry Pi, sino también para sistemas Linux y Windows, y su licencia GPLv3 invita a cualquiera a investigar y contribuir a una iniciativa que una vez más demuestra la versatilidad de la Raspberry Pi.

Componentes de Open Auto

El núcleo de OpenAuto es la biblioteca aasdk , que proporciona soporte para todas las funciones de Android Auto. La biblioteca aasdk está construida sobre las bibliotecas Boost, libusb y OpenSSL. libusb implementa la comunicación entre la unidad principal y un dispositivo Android (a través del bus USB). Boost proporciona soporte para los mecanismos asíncronos de comunicación. Es necesario para la alta eficiencia y escalabilidad del software de la unidad principal. OpenSSL se utiliza para cifrar la comunicación.

La biblioteca aasdk está diseñada para ser completamente reutilizable para cualquier propósito relacionado con la implementación del software de la unidad principal. Puede usarlo para crear su propio software de unidad principal para su plataforma deseada.

Otra biblioteca muy importante utilizada en OpenAuto es Qt. Proporciona soporte para multimedia, entrada de usuario e interfaz gráfica de OpenAuto. Y el sistema de compilación que está utilizando OpenAuto es CMake .

 El protocolo de Android Auto se toma de otro gran proyecto de unidad principal de Android Auto llamado HeadUnit . Las personas que trabajan en este proyecto hicieron un trabajo increíble en la ingeniería inversa del protocolo AndroidAuto y crearon los buffers de protocolo que estructuran todos los mensajes.

Para instalar Android Auto paso a paso podemos seguir los siguientes pasos :

  1. Construir aasdk 

    1. Instalar el software necesario 

      $ sudo apt-get install -y libboost-all-dev libusb-1.0.0-dev libssl-dev cmake libprotobuf-dev protobuf-c-compiler protobuf-compiler

      1. Repositorio de aasdk clon

      $ cd

      $ git clone -b master https://github.com/f1xpl/aasdk.git

      1. Crear el directorio aasdk_build en el mismo nivel que aasdk dir

      $ mkdir aasdk_build

      $ cd aasdk_build

      1. Generar archivos de cmake

      $ cmake -DCMAKE_BUILD_TYPE=Release ../aasdk

      1. Construir aasdk

      $ make

  2. Instalar el software necesario

$ sudo apt-get instala -y libqt5multimedia5 libqt5multimedia5-plugins libqt5multimediawidgets5 qtmultimedia5-dev libqt5bluetooth5 libqt5bluetooth5-bin qtconnectivity5-dev librtaudio-dev pulseaudio librtaudio5a

  1. Construir ilclient desde el  firmware de la Raspberry

$ cd /opt/vc/src/hello_pi/libs/ilclient

$ make

  1. Clonar repositorio de Open

$ cd

$ git clone -b master https://github.com/f1xpl/openauto.git

  1. Crear el directorio openauto_build en el mismo nivel que Open dir

$ mkdir openauto_build

$ cd openauto_build

  1. Generar archivos de cmake. Si es necesario, ajustar trazados por consiguiente a su localización de directorios aasdk y aasdk_build.

$ cmake-DCMAKE_BUILD_TYPE = liberación-DRPI3_BUILD = TRUE – DAASDK_INCLUDE_DIRS = “/ home/pi/aasdk/include”-DAASDK_LIBRARIES=”/home/pi/aasdk/lib/libaasdk.so”-DAASDK_PROTO_INCLUDE_DIRS = “/ home/pi/aasdk_build”-DAASDK_PROTO_LIBRARIES = “usual PI/AASDK/lib/libaasdk_proto.so”… /openauto

  1. Construir Open

$ make

  1. Ejecutar Open

$ /home/pi/openauto/bin/autoapp

 

Puede seguir todos los pasos anteriores  o bien seguir el instalador  creado por novaspirit , el cual hace todo el proceso automáticamente:

  1.  Descargar el script de instalación desde el  github de novaspirit                                       $ git clone https://github.com/novaspirit/androidauto_rpi_install 
  2. Ahora necesitamos cambiar a ese directorio                                                                         $ cd androidauto_rpi_install 
  3. Para ejecutar el script install.sh necesitamos cambiar los permisos para permitir que se ejecute.                                                                                                                         $ chmod +x install.sh 
  4. Ahora podemos instalar Android Auto                                                                                  $ ./install.sh 

Este proceso puede tardar casi media hora pero ojo porque nos informara en primer lugar que ha instalado las dependencias  y tendremos que pulsar  intro par seguir 

Asimismo al rato nos informara que esta clonando y construyendo el SDK  de Androd Auto

Acto seguido nos informara de que esta construyendo el firmware de ilclient

Seguidamente ya se empezará a clonar y construir la imagen de OpenAuto 

 Si en este punto aborta con  un error es muy posible  que haya ocurrido en el transcurso de la compilación de OpenAuto

Puede realizar los pasos finales del script de modo manual sin la  opción del parametro -j4, es decir:

$make 

Y ahora habilitamos  OpenAuto en el arranque :

$echo “sudo /home/pi/openauto/bin/autoapp” >> /home/pi/.config/lxsession/LXDE-pi/autostart

Y con esto arrancamos OpenAuto

$whiptail –title “OpenAuto RPi” –msgbox “Strating OpenAuto” 8 78

$/home/pi/openauto/bin/autoapp

 

Después de esta larga espera, ya estará  lista la instalación  para conectar su teléfono a su Raspberry Pi.

Si ha  conseguido llegar a este punto  de la pantalla anterior , ya esta en condiciones de probar la funcionalidad de Android Auto para lo cual puede conectar por USB  un smartphone  Android  con la app instalada de Android Auto  a uno de los conectores USB de la Raspberry Pi

En seguida debería reconocer  el terminal que esta intentando conectar con la Raspberry, y en unos segundos ya debería cambiar la pantalla en la Raspberry pi por  el menu de Android Auto desde el cual podra acceder a Google Map, ver las llamadas o los mensajes  y reproducir su musica favorito a traves del interfaz tacil de su Raspberry Pi

 

OpenAuto está licenciado bajo GPLv3.Para obtener más información, visite la página GitHub del proyecto , donde puede encontrar su código fuente y mas información.

Crankshaft

Y es que en lugar de tener que gastar una fortuna  en una pantalla para el coche que incluya Android Auto de marcas como Pioneer o Sony, se  puede hacer lo mismo  gracias a una distribución de GNU/Linux llamada Crankshaft.

Solo necesitaremos la Raspberry Pi con la pantalla tactil instalada e instalar la imagen de Crankshaft y por supuesto encontrarle un hueco en el salpicadero de nuestro coche(su creador recomienda que compremos la pantalla oficial y una carcasa)

Huan Truong   se decidió a crear este proyecto cuando buscaba incorporar un sistema Android Auto en su viejo coche. Vio que había una alternativa llamada OpenAuto que recientemente fue lanzada de manera pública tal y como hemos visto , pero esta opción le parecía  más compleja porque requería compilarla y añadir una serie de configuraciones para hacerla funcionar. Por ello, se lanzó a hacerlo todavía más sencillo.

Crankshaft se puede descargar en la página web oficial. Troung recuerda que el proyecto se encuentra en versión alpha y no se responsabiliza de ningún problema que pueda surgir durante su utilización, ya que es un hobby y no una versión estable desarrollada por Google. Por tanto, tened mucho cuidado si lo utilizáis y dependéis de él.

Al estar todavía en fase experimental, le faltan bastantes funcionalidades. Por ejemplo, no cuenta con implementación para micrófono, por lo que el control por voz mediante Ok Google no funciona. Tampoco tiene Bluetooth, por lo que es necesario conectar el móvil mediante USB para poder usarlo con el sistema (Truong afirma que quiere incluirlo más adelante, aunque no tiene prisa). El listado de móviles compatibles incluye prácticamente todos los recientes, y puede comprobar el listado de usuarios que afirma que funciona con su móvil en la página de GitHub.

 
A %d blogueros les gusta esto: