Primeros pasos con ESP8266


Node MCU es una plataforma para el desarrollo de proyectos IoT que integra el famoso chip ESP8266, el cual se ha extendido enormemente debido a su facilidad para desarrollar proyectos open source  que pueden ademas  pueden   involucrar el IoT  .

Esta placa  destaca  porque integra capacidades de comunicación via WiFi , conteniendo en su interior  un microprocesador que puede ser programado fácilmente usando el  conocido lenguaje de programación Lua o bien vía Arduino IDE.

Obviamente ante todo no podemos perder de vista su bajisimo precio ( menos de 10€  ) comparados con otras opciones , pues no debemos olvidar  que incluye  el modulo wifi integrado  y un bus GPIO para conectar dispositivos de E/S.
Node MCU es una plataforma de desarrollo permite un prototipado rápido, para una vez satisfechos con el resultado, portar el desarrollo a un sistema final con un chip ESP8266 como pieza central.

A la hora de programar nuevas funciones, si optamos por utilizar Lua, dispondremos de un sistema simple con buena comunidad de usuarios. En cambio programar con el sistema Arduino nos aporta un fantástico IDE y un sinfin de manuales y ejemplos de desarrollo.

Este modulo es Ideal como una solución independiente en lugar de Arduino además de Wi-Fi  integrado siendo fácil de programar a través del IDE de Arduino (como vamos a ver ) , al igual que un Arduino.
Todos los periféricos con bus I2C puede unirse,por ejemplo Pantallas OLED, pantallas LCD, temperatura, presión, sensores de humedad pueden ser conectados en paralelo. También se puede conectar múltiples DS18B20

Sin embargo, sólo hay una entrada analógica y salida y las pantallas táctiles no se pueden conectar con ella.

 

¿Se pregunta cómo empezar a  desarrollar código  con  su económico ESP8266 ?

Los pasos  a seguir   para conectar un ESP8266     son los siguientes:

  •  Instalación del IDE de Arduino .Si aun no lo tiene instalado ,se puede hacer  desde aqui
  • Instalación  del paquete de la placa ESP8266 en Arduino IDE  siguiendo las instrucciones del sitio : https://github.com/esp8266/Arduino

esp

  • Instalación de los controladores USB

Es necesario instalar el controlador USB requerido en su ordenador  para que pueda programar el ESP8266.  Independientemente de la opción de firmware que elijamos, primero necesitamos comunicarnos con la placa de desarrollo ESP-12E utilizando la interfaz USB de la computadora.

El módulo USB a Serial UART incluido en la placa es Silicon Labs ‘CP2012, para lo cual generalmente necesitamos instalar los controladores de puerto COM virtual (VCP) fácilmente disponibles para su sistema operativo específico.Una vez instalado, debemos verificar que el CP2102 sea reconocido por su ordenador

Una vez que el controlador está instalado, podemos conectar el cable USB al puerto USB de la computadora y la placa. Después de hacerlo, deberíamos ver el mensaje: software del controlador del dispositivo instalado correctamente.

Además, podemos verificar manualmente que todo funcione correctamente siguiendo estos pasos:

Abra el Administrador de dispositivos (disponible a través del Panel de control → Sistema y seguridad → Administrador de dispositivos en la sección Sistema)
Debajo de la entrada Puertos (COM & LPT), debe haber un puerto abierto llamado USB-SERIAL CP2102 (COM) donde hay un número típicamente mayor o igual a 3.

Ahora que estamos listos para comunicarnos con nuestro ESP8266 a través del CP2102, podemos explorar algunas de las diferentes opciones de firmware disponibles.

node.png

  • En el IDE de Arduino, vaya al menú de herramientas, seleccionada su placa y elija el  puerto al que está conectado su ESP8266.En el ejemplo  es el COM11

 

puerto.png

  • Ahora  copie el siguiente código  para probar que puede subir y ejecutar código código  en la placa :

 

/*
ESP8266 Led Parapadeante
*/

void setup(){

pinMode(LED_BUILTIN, OUTPUT);// Initializa el  pin de  LED_BUILTIN como salida

}

void loop() {       // la función de bucle se repite una y otra vez para siempre

digitalWrite(LED_BUILTIN, LOW);// encienda el LED 

delay(1000); //Espera de 1 segundo

digitalWrite(LED_BUILTIN, HIGH);//  Apague el LED haciendo que el voltaje sea ALTO

delay(2000); // Espere dos segundos  para dejar apagado  LED 

}

 

El LED azul en el módulo ESP – 01 está conectado a GPIO 1, (que también es el pin TXD, por lo que no podemos usar Serial.print () al mismo tiempo)

Tenga en cuenta que el nivel de voltaje es BAJO  pero en realidad el LED está encendido, porque es bajo en el ESP – 01

En este código se usa  LED_BUILTIN para encontrar el pin con el LED interno  de modo

Como puede apreciar , el código ejecuta un bucle infinito en el que pone el estado bajo  un segundo (encendiendo el led)    para posteriormente forzar a nivel alto  dos segundos(apagando el led  )  y así   indefinidamente gracias al bucle  que se repite indefinidamente

 

Envio de datos a la nube de Cayenne

  • Agregue la biblioteca de Cayenne MQTT a Arduino IDE  desde aqui como un fuchero zip
  • Instale la biblioteca zip descargada en el paso anterior desde Programa -> Incluir biblioteca -> Añadir libreria ZIP. y seleccionar ahora el fichero descargado con anterioridad  Cayenne-MQTT-ESP-master.zip
  • Ya puede crear una cuenta Starter en cayenne ( si aun no la tiene  ya creada)
  • Una vez ya validado vaya a la esquina  superior  izquierda  y pulse sobre el botón verde  add new
addnew.png
  • Ahora seleccione Generic ESP8266  como la placa y  tome nota  ahora  de los siguintes paraetros ofrecidos por la  pagina:
    •  MQTT USERNAME:
    • MQTT PASSWORD:
    • CLIENT ID:
    • MQTT SERVER:
    • MQTT PORT:
    • NAME YOUR DEVICE (optional):
  • Abra el boceto de ejemplo incluido desde Archivo -> Ejemplos -> Cayenne-MQTT-ESP. Modifique el boceto incluido con su información de red y la información de autenticación de Cayenne que recibió al agregar su dispositivo.
Anuncio publicitario

Cómo puede mejorar la impresión 3D la vida de muchas personas


La impresión en 3d promete cambiar en un futuro los métodos clásicos de fabricación tal y como lo conocemos actualmente hasta tal punto que ya hay personas que piensan que muchas artículos que usamos a diario se podrán imprimir de forma personalizada  y mas económica incluso en nuestro hogar usando esta tecnología .

Hay  pues una revolución silenciosa   que esta ocurriendo básicamente por tres motivos:

  • Permite dar  rienda suelta a  la innovación como nunca hasta ahora se podía  hacer con ninguna otra tecnología   pues  permite crear  y auto-constuir  productos únicos  in-situ,  con un coste ridículo  que van desde juguetes para niños hasta joyas, aviones no tripulados e incluso  tejidos,  que estiran la imaginación del diseñador.
  • Se  puede llegar ha crear artículos  y objetos  verdaderamente personalizados, como pueden ser desde objetos  de uso común como carcasas para dispositivos electrónicos ,camisetas , pequeños  prototipos ,etc  hasta   dispositivos relacionados con la salud como por ejemplo prótesis , coronas dentales y aparatos ortopédicos . Lo singular  es que la producción incluye no solo artículos únicos y personalización masiva, sino también tiradas cortas de productos idénticos.
  •  En definitiva ,   gracias  a la  democratización de  esta  tecnologia   se está cuestionando los modelos comerciales tradicionales que implican que solo las empresas pueden innovar y traer nuevos productos al mercado pues  ahora  cualquier persona o grupo de personas , incluso  geográficamente dispersos  pueden  colaborar utilizando herramientas colaborativas e impresoras 3D  para crear  nuevos productos.

 

Algunos  ejemplos de objetos destacables  impresos en 3d  actualmente son los  implantes dentales, prototipos, modelos arquitectónicos, plantillas de montaje,tazones de diseño, zapatos deportivos hechos a medida,joyería, instrumentos musicales diseñados por estudiantes y un largo etcétera.

Para todos los que nos entusiasma  explorar la tecnologia, todavía las impresoras 3d no son dispositivos económicos y tampoco definitivos , así que quizás auto-construirse una sea una buena opción pues el coste un kit de impresora 3d  suele ser una fracción de lo que cuesta una impresora 3d ya montada ,aunque  esto requiere una cierta cantidad de destreza física, sentido común y una comprensión profunda de lo que está haciendo , pero con paciencia se consigue.

Una vez la impresora 3d en nuestro poder  (auto construida o comprada ) puede que  surjan problemas  debidos a las altas temperaturas involucradas con la impresión 3D, ya que la boquilla de extrusión del extremo caliente puede funcionar alrededor de 230 ° C, la cama calentada corre a 110 ° C y el material ( que puede ser de diferentes tipos ) saldrá inicialmente alrededor de 200 ° C, por lo que debe prestarse especial cuidado y atención cuando se manejan estas partes de la impresora durante el funcionamiento.

Después de imprimir utensilios  para el hogar  casa, regalos para amigos o proyectos académicos , ¿qué puede ser más satisfactorio que imprimir algo para alguien que lo necesita? . Pues en efecto, como ya hemos mencionado ,esta tecnología permite aplicarse o a la fabricación de prótesis haciendo accesible estos dispositivos a toda la población y con ello cambiando la vida de muchas personas

Veamos algunos ejemplos muy hermosos , hoy que en  día de Navidad, de como  un objeto impreso en 3D puede realmente cambiar la vida  de muchas personas.

barzos.png
Brazo protesico descargable desde thinginverse

 

Hailey Dawson

Personalmente   pienso  que uno de los dispositivos  más emocionantes que se pueden construir mediante  impresión 3D son los dispositivos médicos como pueden ser  prótesis e implantes pues estos realmente pueden cambiar literalmente  la vida de las personas.

Precisamente lo singular  de esta tecnología es que actualmente  una mano mecánica como la prótesis de Hailey de 7 años puede costar unos  25€ en materiales,  en gran contraste  con las prótesis tradicionales para jóvenes que, ademas de ser  demasiado costosas ,  sobre todo  no permiten ademas evolucionar a la medida  que el niño va creciendo. En contraste a esto  , una prótesis impresa en 3d  puede ayudar a una persona joven a desarrollarse a un ritmo cercano al desarrollo de sus compañeros y ademas por un coste ínfimo.

Hailey nació con el Síndrome de Polonia, lo que le dejó sin tres dedos  en su mano derecha,  pero gracias  a equipo de la Universidad de Nevada en Las Vegas, fue posible   crear  una  prótesis impresa en 3D  para e Hailey .

Tal  fue su éxito de su funcionalidad  que Young Hailey lanzó el primer lanzamiento ceremonial del Juego 4 entre los Astros de Houston y los Dodgers de Los Ángeles con su mano mecánica, pero  no termina el caso allí pues ella ha hecho  una gira por  30 estadios, realizando el primer lanzamiento para cada equipo de Grandes Ligas.

niña.PNG

Nick

Podemos encontrar numerosas e impresionantes historias de personas jóvenes que imprimen en 3D un brazo ,o una mano protésica, para un compañero de clase, pero  lo singular  de esta  historia es que en este caso es el  un joven quien  imprimió en 3D una mano mecánica para un adulto ( un maestro) .

Alramon siempre había estado interesado en la impresión 3D, interés que le despertó al ver la película de Disney «Big Hero 6». Cuando conoció a Nick en una biblioteca, decidió aceptar el desafío y, ayudado por su padre y su hermano, desarrollaron una mano protésica para el hombre, impresa en su propia impresora 3D.

Un grupo de amigos de Nick había estado buscando una manera de ayudarlo desarrollando una prótesis impresa en 3D para él y de hecho  habían comenzado a trabajar en la plataforma «Enabling the Future«,  que permite a los usuarios utilizar su propia impresora 3D casera con  planos de código abierto para imprimir toda serie de protesis, asi que precisamente  Calramon  imprimió la prótesis con la impresora 3D de metal con la impresora  Makerbot de su familia en su casa.

La prótesis consiste en un guante para sostener las cuerdas que se enroscan a través de las partes de los dedos cuya creación costó solo 160€ asi que  Nick esta extremadamente agradecido e impresionado por las habilidades de los chicos.

 

hermanos.png

Calramon y su hermano también tienen un sitio web propio, que tiene como objetivo distribuir partes para un quadcopter y tienen un canal de YouTube.

 Not Impossible Labs

Existe una brecha profunda en la atención médica en   todo  el  mundo, un vacío que se está cerrando a través del uso de impresoras 3D.

En otoño, Mick Ebeling, el fundador de Not Impossible Labs, fue a África, a las montañas Nuba de Sudán. El objetivo de Mick era devolver esperanza e independencia a un niño, Daniel Omar pues dos años antes, Daniel perdió un brazo en el hombro y el otro en el antebrazo durante la guerra civil sudanesa mientras estaba cuidando la manada de vacas de su familia . Él se escondió detrás de un árbol abrazando este( que le salvó  salvó la vida),  pero desgraciadamente,  la bomba le arrancó las extremidades. Daniel pasó de ser un joven de 14 años que apoyaba a su familia, a llevar una total dependencia de los demás.

Mick llevó una impresora 3D de  2.100€  a la aldea de Daniel, donde, con un valor de 42€, imprimió los componentes de plástico del brazo y la mano protésicos de Daniel. Mick también formó  al personal medico local sobre cómo usar la impresora y el software 3D de modo que después de irse, los lugareños ya usaban esa impresora 3D para fabricar una prótesis por semana.

El milagro  pues es  el coste ( unas 1000 veces menor , ya que una prótesis tradicional de valor de  42100€  se puede hacer por  un coste de 42€!) ,  pero  hay otras ventajas : ,versatilidad , personalización , peso, etc   !   Realmente es sorprendente  poder crear una extremidad impresa en 3D  muy por debajo de lo que costaría una convencional de bajo costo que funcionará aun cuando la tradicional cara ya no esté disponible. !

Vemos pues como la impresión 3D tiene un increíble potencial para alterar la vida.

Enabling the Future y el «3D Mechanical Hand-Maker Movement

El ultimo ejemplo del que vamos  a hablar ,surge de la union  Enabling the Future y l «3D Mechanical Hand-Maker Movement» que se inspiraron en dos extraños, un fabricante de utilería de los EE. UU y un carpintero de Sudáfrica que estaban separados por mas  16.000 km. Se reunieron en línea para crear un dispositivo de mano protésico para un niño pequeño en Sudáfrica, y luego regalaron los planos de forma gratuita, para que las personas que necesitasen la prótesis puedan hacerlo por sí mismos

Lo que originalmente comenzó como un par de tipos que crearon algo para ayudar a un niño necesitado se ha convertido en un movimiento mundial de fabricantes de herramientas, ingenieros y terapeutas ocupacionales, artistas, diseñadores, estudiantes y profesores, entusiastas de la impresión en 3D: de padres, familias y personas como usted y yo, que solo queremos hacer una diferencia.

 

 

El poder de autoconstruir lo tenemos todos

Hemos visto con estos ejemplos   que la capacidad de imprimir en 3D una mano protésica u otro dispositivo adaptativo en casa -o tiendas especializadas – puede ser la aplicación clave que impulse el uso de impresoras 3D por parte de los consumidores.

Si conoce a una persona joven, o un adulto, que podría beneficiarse de una prótesis impresa en 3D económica y funcional, he  aquí  algunos recursos gratuitos:

Atomic Lab
e-Nable
Limbitless Solutions
NIH 3D Print Exchange (curated by e-Nable)
Open Bionics
Thingiverse
yeggi (search engine devoted to 3D print models)

 

Como transcribir voz a texto


Express Scribe es un software profesional de reproductor de audio para PC o Mac diseñado para ayudar a transcribir grabaciones de audio.

Un mecanógrafo puede instalarlo en su ordenador y controlar la reproducción de audio usando un pedal  usb especial  de transcripción o un teclado (con teclas «calientes»). Este software de transcripción también ofrece funciones valiosas para los mecanógrafos, que incluyen reproducción de velocidad variable, control multicanal, reproducción de video, administración de archivos y más.

La versión gratuita es compatible con formatos de audio comunes, incluidos wav, mp3, wma y dct (  aunque siempre puede actualizar a la versión profesional para soporte de formato propietario).

Algunas características del software de transcripción:

  • Reproducción de velocidad variable (no constante)
  • Admite reproducción de audio y video
  • Reproduce la mayoría de los formatos, incluidos los archivos de dictado encriptados. Ver formatos de archivo admitidos
  • Admite pedales USB profesionales para controlar la reproducción. Ver controladores de pedal de pie profesionales compatibles
  • Utiliza ‘teclas rápidas‘ para controlar la reproducción cuando se transcribe a otro software (por ejemplo, Word)
  • Acople grabadores de voz portátiles analógicos y digitales para cargar grabaciones
    Funciona con Microsoft Word y todos los principales procesadores de texto
  • Recibe y carga automáticamente archivos por Internet (FTP), correo electrónico o en una red informática local
  • Automáticamente envía tipeo a quienes dictaron el trabajo
  • Funciona con software de reconocimiento de voz como Dragon Naturally Speaking para convertir automáticamente la voz en texto
  • Permite cargar audio de CD directamente y comenzar a trabajar a medida que se carga el audio
  • Funciona con el expansor de texto FastFox para ingresar frases médicas y legales y frases comunes con atajos de teclado

 

Pasos a seguir  para   probar este software

instalador.PNG

  • Express Scribe puede usar cualquier procesador para el reconocimiento de voz compatible con SAPI (4,0 o 5,0) para ayudarle en la transcripción de grabaciones. Por ejemplo: Dragon Systems NaturallySpeaking, Microsoft Voice o IBM Via Voice (y muchos más)

 

 

.enter image description here

 

  • En caso  de no poder seleccionar el perfil de audio , existe un paquete de audio en español  que puede descargar e  instalar siguiendo el link a continuación RealSpeak TTS engine Spanish (21.7 MB) . Despues de inslarlo  tenemos que configurar el  perfil de audio

reconocimiento de voz.PNG

 

 

  • Una vez se haya configurado Express Scribe para la conversión de voz a texto y cuando cargue un archivo éste será procesado en segundo plano y luego incluirá el texto completo en el cuadro de notas. Aunque el equipo sea rápido, esto proceso puede tomar algún tiempo (incluso más tiempo que la propia grabación), por lo que esta función es ideal cuando tiene una lista de trabajos de transcripción pendientes. Sin embargo, debido a que el reconocimiento de voz se ejecuta en segundo plano, puede empezar la transcripción de inmediato.

 

 

No debe entusiasmarse demasiado con la conversión de voz a texto. Probablemente  pasarán a  tiempos antes que las máquinas sean capaces de transcribir con precisión. Por el momento, un procesador muy bien entrenado le ofrecerá alrededor de un 90% de precisión. Creemos que utilizará esta función como una herramienta que le proporcionará un borrador del texto que puede utilizar a una velocidad más rápida y corregir o volver a formatearlo.

El entrenamiento es esencial para obtener una conversión de voz a texto razonable. Debe «entrenar» el procesador para reconocer las voces que van a ser usadas. La función de entrenamiento es administrada por el software para el reconocimiento de voz y no por Express Scribe. Consulte el manual del reconocedor de voz para más información.

Express Scribe coincide automáticamente cada archivo del dictado con un reconocedor de voz entrenado que usa el ID del remitente en Express Dictate (o DialDictate). Este ID se obtiene cuando se registra el software (todos los usuarios no registrados, archivos WAV y grabaciones acopladas se consideran un ID 0). Después que el reconocedor de voz está entrenado para reconocer la voz del usuario, Express Scribe puede configurar que éste se ejecute cada vez que este usuario envíe un archivo. Hágalo desde el menú Opciones -> pestaña ‘conversión de voz’ a texto, en la sección «perfiles específicos de usuario».

Configuración para conversión de voz en texto

  • Abra el cuadro de diálogo de las Opciones y seleccione la pestaña ‘convertir voz en texto’.
  • Oprimir «habilitar reconocimiento de voz».
  • .Seleccione el procesador para el reconocimiento de voz desde la lista desplegable. Si no ve ningún procesador en la lista desplegable, entonces no ha instalado el software para el reconocimiento de voz o no es compatible con SAPI.
  • Seleccione un perfil de voz desde la lista desplegable de perfiles predeterminados. Este es el perfil que será usado para cualquier dictado que se reciba de usuarios que no están en la lista de «perfiles específicos de usuario».
  • Haga que cada usuario entrene el procesador para que puedan ser reconocidos. Lo pueden hacer usando el software para el reconocimiento de voz. Consulte el manual proporcionado con el software de reconocimiento de voz. Con la mayoría de procesadores, los usuarios pueden entrenar el reconocimiento de voz usando otra PC y luego exportar el archivo de entrenamiento al sistema.
  • Por cada usuario que haya completado el entrenamiento, añada el ID de usuario y el perfil de voz a la lista de «perfiles específicos de usuario». Si son usuarios registrados con Express Dictate o DialDictate, entonces use el ID que obtuvieron al registrar el software. ID 0 de usuario para todos aquellos usuarios no registrados, archivos WAV y grabaciones acopladas.

Nota: Al abrir la pestaña ‘convertir voz en texto’ en las Opciones, o al cambiar el procesador seleccionado, el cuadro de diálogo «recuperando perfiles» puede ser visualizado por algún tiempo.

Cuando se cargue el próximo dictado, Express Scribe ejecutará el procesador de voz en segundo plano. Al finalizar, «pegará» el texto en el cuadro de notas.

Tenga paciencia. El proceso puede tardar algún tiempo (aun más que la propia grabación). Por lo tanto, la función es ideal cuando se tiene una lista de trabajos pendientes. Pero recuerde que puede empezar a transcribir inmediatamente.

Tenga en cuenta que el proceso de conversión de voz a texto sólo se produce cuando se carga primero un dictado. Si ejecuta Express Scribe con un dictado ya cargado el proceso de reconocimiento no se ejecutará.

Primeros pasos con ESP8266 y Cayenne


Node MCU es una plataforma para el desarrollo de proyectos IoT que integra el famoso chip ESP8266, el cual se ha extendido enormemente debido a su facilidad para desarrollar proyectos open source  a los que indudablemente se une su bajisimo precio comparado con otras opciones.
De este componente destaca  integra capacidades de comunicación via WiFi , conteniendo en su interior  microprocesador que puede ser programado fácilmente usando en conocido lenguaje de programación Lua o vía Arduino IDE.

¿Se pregunta cómo controlar  su económico ESP8266 de forma remota desde cualquier lugar del mundo?

En este post repasaremos precisamente el proceso, paso a paso, de cómo escribir código en el IDE de Arduino y programar su ESP8266 permitiendo  que el código  escrito para  el ESP8266 se comunique con la plataforma myDevices Cayenne (https://cayenne.mydevices.com) la cual nos va  permitir monitorear y controlar el ESP8266 a través de un tablero muy intuitivo.

 

De  Cayenne hemos hablado  en este humilde blog, en muchisimas  ocasiones pero resumidamente es una solución innovadora   para la construcción de aplicaciones IoT  basada en la mayoría de las  plataformas conocidas como son ArduinoRaspberry piESP8266 y dispositivos  SerialesWifi y dispositivos Lora

Ademas   también  incluye una API Mqtt para conectar cualquier cliente MQTT la cual utilizaremos en este caso

Después de configurar una cuenta en Cayenne, utilizamos el Tablero para configurar un cualquier puerto del GPIO al que conectemos una entrada o una salida  . La comunicación entre el ESP8266 y Cayenne se realiza utilizando un protocolo muy ligero llamado MQTT (http://mqtt.org/).

Una vez que todo esté hecho, podemos monitorear y controlar el ESP8266 desde cualquier parte del mundo simplemente accediendo a Cayenne.

Los pasos  a seguir   para conectar un ESP8266   a  la nube de Cayenne  son los siguientes:

  •  Instalación del IDE de Arduino .Si aun no lo tiene instalado ,se puede hacer  desde aqui
  • Instalación  del paquete de la placa ESP8266 en Arduino IDE  siguiendo las instrucciones del sitio : https://github.com/esp8266/Arduino

esp

  • Instalación de los controladores USB

Es necesario instalar el controlador USB requerido en su ordenador  para que pueda programar el ESP8266.  Independientemente de la opción de firmware que elijamos, primero necesitamos comunicarnos con la placa de desarrollo ESP-12E utilizando la interfaz USB de la computadora.

El módulo USB a Serial UART incluido en la placa es Silicon Labs ‘CP2012, para lo cual generalmente necesitamos instalar los controladores de puerto COM virtual (VCP) fácilmente disponibles para su sistema operativo específico.Una vez instalado, debemos verificar que el CP2102 sea reconocido por su ordenador

Una vez que el controlador está instalado, podemos conectar el cable USB al puerto USB de la computadora y la placa. Después de hacerlo, deberíamos ver el mensaje: software del controlador del dispositivo instalado correctamente.

Además, podemos verificar manualmente que todo funcione correctamente siguiendo estos pasos:

Abra el Administrador de dispositivos (disponible a través del Panel de control → Sistema y seguridad → Administrador de dispositivos en la sección Sistema)
Debajo de la entrada Puertos (COM & LPT), debe haber un puerto abierto llamado USB-SERIAL CP2102 (COM) donde hay un número típicamente mayor o igual a 3.

Ahora que estamos listos para comunicarnos con nuestro ESP8266 a través del CP2102, podemos explorar algunas de las diferentes opciones de firmware disponibles.

  • Agregue la biblioteca de Cayenne MQTT a Arduino IDE  desde aqui como un fuchero zip
  • Instale la biblioteca zip descargada en el paso anterior desde Programa -> Incluir biblioteca -> Añadi libreria ZIP. y selecionar ahorael fichero descargado con anterioridad  Cayenne-MQTT-ESP-master.zip
  • Conecte el ESP8266 a su PC / Mac a través de un cable USB con capacidad de datos.
  • En el IDE de Arduino, vaya al menú de herramientas, seleccione su placa y el puerto al que está conectado su ESP8266.
  • Ya puede crear una cuenta Starter en cayenne ( si aun no la tiene  ya creada)
  • Una vez ya validado vaya a la esquina  superior  izquierda  y pulse sobre el botón verde  add new
addnew.png
  • Ahora seleccione Generic ESP8266  como la placa y  tome nota  ahora  de los siguintes paraetros ofrecidos por la  pagina:
    •  MQTT USERNAME:
    • MQTT PASSWORD:
    • CLIENT ID:
    • MQTT SERVER:
    • MQTT PORT:
    • NAME YOUR DEVICE (optional):
  • Abra el boceto de ejemplo incluido desde Archivo -> Ejemplos -> Cayenne-MQTT-ESP. Modifique el boceto incluido con su información de red y la información de autenticación de Cayenne que recibió al agregar su dispositivo.
.// This example shows how to connect to Cayenne using an ESP8266 and send/receive sample data
.// Make sure you install the ESP8266 Board Package via the Arduino IDE Board Manager and select the correct ESP8266 board before compiling.
//#define CAYENNE_DEBUG
#define CAYENNE_PRINT Serial
#include <CayenneMQTTESP8266.h>
// WiFi network info.
char ssid[] = «ssid»;
char wifiPassword[] = «wifiPassword»;
// Cayenne authentication info. This should be obtained from the Cayenne Dashboard
char username[] = «MQTT_USERNAME»;
char password[] = «MQTT_PASSWORD»;
char clientID[] = «CLIENT_ID»;
unsigned long lastMillis = 0;
void setup()
{ serial.begin(9600);
Cayenne.begin(username, password, clientID, ssid, wifiPassword);
}
void loop()
{
Cayenne.loop();
//Publish data every 10 seconds (10000 milliseconds). Change this value to publish at a different interval.
if (millis() – lastMillis > 10000)
{ lastMillis = millis();
//Write data to Cayenne here. This example just sends the current uptime in milliseconds.
Cayenne.virtualWrite(0, lastMillis);
//Some examples of other functions you can use to send data.
//Cayenne.celsiusWrite(1, 22.0);
//Cayenne.luxWrite(2, 700);
//Cayenne.virtualWrite(3, 50, TYPE_PROXIMITY, UNIT_CENTIMETER);
}
}
//Default function for processing actuator commands from the Cayenne Dashboard.
//You can also use functions for specific channels, e.g CAYENNE_IN(1) for channel 1 commands.
CAYENNE_IN_DEFAULT()
{ CAYENNE_LOG(«CAYENNE_IN_DEFAULT(%u) – %s, %s», request.channel, getValue.getId(), getValue.asString());
//Process message here. If there is an error set an error message using getValue.setError(), e.g getValue.setError(«Error message»);
}
  • Compile y sube el programa  a su dispositivo. La carga puede requerir configurar el dispositivo en modo de carga de arranque. Para el módulo Adafruit HUZZAH ESP8266, esto se hace siguiendo los siguientes pasos:
    • Mantenga presionado el botón GPIO0.
    • Haga clic en el botón Restablecer.
    • Suelta el botón GPIO0.
    • El LED rojo debería encenderse, lo que indica que el dispositivo está listo para cargar.
    • Cargue su boceto.
    • Compruebe el tablero de Cayenne para asegurarse de que está recibiendo datos de muestra de su dispositivo.

 

Hay mas ejemplos desde el  interfaz de Arduino   en  File → Examples → Cayenne-MQTT-ESP8266 → ESP8266

 

Automatización con Alexa y Raspberry Pi


Usando una  Raspberry Pi   y un placa de relés  se puede realizar  un dispositivo de automatización del hogar  gracias a Alexa , !eso si  , si domina el ingles!.
En este breve post   vamos a ver  cómo poder controlar múltiples dispositivos conectados a la Raspberry Pi vía comandos de voz  en ingles, de tal modo que como veremos, podamos ontrolar todos  los pines GPIO para controlar los dispositivos conectados al GPIO  mediante relés u otros circuitos de control  y con ello encender o apagar cualquier dispositivo eléctrico conectado a estos,  simplemente dando las ordenes vocales  a Alexa.

Como vemos, pues  solo se necesita una Raspberry Pi 3 con una SD, una placa de Reles y  por  supuesto un altavoz inteligente  con Alexa para  automatizar cualquier función que deseemos gracias al reconocimiento automático de voz  de Alexa.

En el esquema   siguiente podemos ver como solo se usa  un solo pin de e/s  digital :  el GPIO 4   para controlar un   relé , pero este esquema ,si se requiere,  se puede ampliar hasta el máximo de los 24  terminales de e/s de los que dispone  una Raspberry Pi.

Es de destacar  que ademas el cable de datos,  incluso la alimentación del relé se obtiene de los 5V DC de la propia Raspbery Pi, por lo que para la  conexión de un circuito de un rele  sólo se necesitan 3 cables para  comandar la placa (un  cable para el control y los dos de la alimentación DC 5v).

 

esquema.PNG

Los pasos para instalar el  software  que permitirá  interactuar con  Alexa  en la Raspberry Pi 3 son los siguientes :

  1. Descargue «RASPBIAN STRETCH WITH DESKTOP» y descomprima  el fichero «2017-04-10-raspbian-jessie.zip» https://www.raspberrypi.org/downloads/raspbian/
  2. Descargue el programa «win32diskimager-1.0.0-install.exe» de la siguiente URL https://sourceforge.net/projects/win32diskimager/files/latest/download
  3. Instalar «win32diskimager-1.0.0-install.exe»
  4. Conecte la tarjeta mini-sd a su ordenador. Desde el explorador de windows, haga clic derecho en la letra de su unidad de tarjeta SD y haga clic en el menú de formato. En la ventana de formato, seleccione «FAT» en la lista «Sistema de archivos» y haga clic en iniciar. Espere a que la tarea se complete.                                                             texto alternativo
  5. Inicie el programa «win32diskimager». Seleccione el archivo de imagen «2017-04-10-raspbian-jessie.img» y la letra de su unidad de tarjeta SD y haga clic en «Escribir» (Espere a que el programa termine de escribir la imagen RASPBIAN en la tarjeta SD)                                                                                                texto alternativo
  6. Una vez que se completa la escritura de la imagen, copie «ssh» (el archivo ssh está vacío) y «wpa_supplicant.conf» a la raíz de la tarjeta sd. Abra «wpa_supplicant.conf» en el editor de texto y actualice ssid (wi-fi name) y contraseña a los valores de su red Wifi.
  7. Inserte la tarjeta SD en Raspberry Pi 3 ,conecte la alimentación  y espere  a que arranque   durante unos 10 segundos
  8. En Windows vaya a ejecutar y escriba «cmd» y escriba arp -a en el símbolo del sistema. Busque la «Dirección física» que comienza con b8-27 * y tome nota de la dirección de Internet. Esta es su dirección IP Raspberry Pi3 Wi-Fi en su red. Este resultado también se puede obtener con otras herramientas como  WireShark (pc)  o Fing (android), siempre que ambos equipos este  conectados a la misma red. La dirección MAC generalmente comienza desde b- así que una vez que encuentre la dirección MAC, puede buscar la dirección IP en la columna  Internet Address y esta es su dirección IP. Tenga en cuenta esta dirección IP porque necesitará esto para conectar su sesión  SSH y  también para conectarse por el VNC                   texto alternativo
  9. Descargue «Putty.exe» de la siguiente URL https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
  10. Ejecute «Putty.exe» y escriba la dirección IP en el campo de nombre de host y haga clic en el botón de inicio y haga clic en Sí para abrir una ventana emergente. En la línea de comando del putty, escriba como Login «pi»  y para la contraseña ingrese «raspberry» y presione enter. Debería ver el  prompt  «pi @ raspberrypi: ~ $».                             texto alternativo
  11. Escriba «sudo raspi-config» y vaya a «Opciones de interfaz» y habilite VNC. Reinicie pi3 escribiendo este comando «sudo reboot«. Perderá la conexión ssh.
  12. (Opcional) Puede descargar e instalar el cliente de VNC en su pc https://www.realvnc.com/download/vnc/windows/ . Conecte VNC a Respberry Pi3 usando la dirección IP. Inicie sesión con el nombre de usuario «pi» y la contraseña «raspberry«.Debería ver el escritorio de la Raspberry Pi 3.           texto alternativo
  13. Inicie la sesión de Pi ssh con putty a o localmente a través de VNC y escriba los dos comandos a continuación desde  el  símbolo del sistema de Pi para actualizarlo: «sudo apt-get update» y «sudo apt-get upgrade» (Esto llevará un tiempo)
  14. Descargue este proyecto github como archivo zip con el siguiente comando «wget https://github.com/nassiramalik/IOT-Pi3-Alexa-Automation/archive/master.zip «
  15. Descomprima el archivo zip descargado con el comando «unzip master.zip» y escriba el comando «cd IOT-Pi3-Alexa-Automation-master» una vez que haya terminado de descomprimir
  16. (Opcional) Ejecute el comando  «sudo pip install virtualenv»  para instalar virtualenv en Pi
  17. (Opcional) Ejecute  el comando «virtualenv ipaa-env» para crear un entorno virtual para su proyecto
  18. (Opcional) Ejecute  el comando «. Ipaa-env / bin / activate» para activar el entorno virtual de su proyecto
  19. Ahora ejecute el comando «sudo python3 RPi_name_port_gpio.py» para ejecutar el programa Pi IOT  que controla un relé asociado al GPIO4 .   También puede usar el comando  » «sudo  python 3RPi_name_port_gpio_8_Relays.py» para controlar hasta 8 dispositivos o invertir la polaridad  en caso de que necesite algunas de esas   funcionalidades. Como puede adivinar  este es el archivo que ejecutará para iniciar el programa en su Raspberry Pi  iniciando un servidor  así que presiona enter  el programa se inicia en  Raspberry Pi y se  quedara esperando a Alexa para darle comandos al código Python.
  20. En el código se ha escrito el nombre del dispositivo como «office» (oficina)  , pero puede cambiarlo por  lo que quiera, simplemente puede entrar  y cambiar este texto de la oficina al  nombre que desea dar a este dispositivo y Alexa
  21. Ya  puede empezar  a probar  ALexa  de  modo  que puede darle  un comando de voz a Alexa para descubrir dispositivos «Alexa discover devices» (Alexa descubre dispositivos), por lo que buscará en su red y descubrirá su Raspberry Pi 3 como un dispositivo IOT.
  22. Dele un comando de voz a Alexa «Turn on the office» (Enciende la oficina), deberá escuchar un sonido de clic de rele y encenderá cualquier carga que tenga coenctada a este
  23. Dele un comando de voz a Alexa «Turn on the office»  (Apagar la oficina), debería escuchar un sonido de clic de relevo y la carga conectada al rele dejara de estar alimentada

Alexa  siempre necesitara   descubrir los  nuevos dispositivos de  la red , por lo que para que empiece  el  descubrimiento  de dispositivos IOT que  hay en su red interna   para ello debe  presionar el botón para  su descubrimiento  en la botonera del altavoz o  también dele un comando de voz a Alexa para descubrir dispositivos «Alexa discover devices» (Alexa descubre dispositivos) lo cual enviara una difusión para descubrir dispositivos en nuestra red y en la Raspberry pi debería estar respondiendo.

Es obvio que  cualquier entrada analógica ( como por ejemplo temperatura ,detección de humedad,luminosidad, ect) también seria interesante poder ser soportada    pero eso  lo dejaremos  para  futuras actualizaciones   de este interesante proyecto

En el vídeo siguiente nos explican nuevamente los pasos ya comentados:

 

GitHub Project: https://github.com/nassir-malik/IOT-P…

 

Monitorizacion de liquidos via wifi desde su smartphone


Utilizando la placa WiFi NodeMCU-12E v3 ESP8266  y 2 sondas ultrasónicas de tipo HC-SR04 a prueba de agua , se  puede  medir el volumen de agua en 2 tanques de agua y ofrecer esa información  de un modo gráfico  y en tiempo real.

El  sonar suena por la parte superior del agua, obteniendo la distancia en cm,calculando la profundidad del agua en cm y luego extrapolando  el volumen de agua a litros.   Toda la información se pasa por WiFi en la WLAN al servidor local (RPi3) que ejecuta el servidor local Blynk. Finalmente la información está disponible en un teléfono usando la aplicación Blynk registrada en el servidor local.

Es importante destacar que el el mapeo de los pines es diferente en estas placa frente a lo s pines de un Arduino ( los números de pin son generalmente números de GPIO)

Es  este proyecto se usaran los típicos sensores ultrasónicos HC-SR04 estándar  sensores que transmiten   y reciben  señales  ultrasónicas ,  que en este caso deberán o bien  impermeabilizarse para ser resistentes al agua e impermeables ( el aspecto es muy similar a las mismas unidades que se usan en los vehículos para detectar colisiones al aparcar ) o bien comprarlos  ya  estancos espaciales  para ambientes húmedos, ( como en la foto).

sesnor

Concretamente este sensor se alimenta de  DC 5 V( consumo  30mA) usando  e emisión de frecuencia: 40 khz  con  una detección  máxima distancia de 4.5 m y resolución  cerca de 0.5 cm

Sus conexiones son 4:

  • VCC+ 5 V (fuente de alimentación positiva)
  • Trig (lado de control) RX
  • eco (lado receptor) TX
  • GND (negativo)

El uso de la ubicación disparador del IO TRIG puerto, pone el alto nivel de la señal de al menos 10us; el módulo automáticamente envía 8 trens de  40 KHz  con detección automática si  hay vuelta de señal.Una señal de vuelta se marca como  un alto nivel de salida a través del puerto IO de ECO. El tiempo de duración de alto nivel   ultrasónica es el del lanzamiento de volver.

La formula  para calcular la  distancia es la siguiente:

D(m) = tiempo de alto nivel * velocidad del sonido (los 340 M/S)) /2 

Como vemos este módulo utiliza el método sencillo, un puerto de control con un 10US por encima de alto nivel,  esperando un alto nivel de salida en el puerto de recepción. Una salida puede conducir el temporizador, de modo que cuando este puerto se pone la señal  bajo puede leer el valor del temporizador, y  esta vez para la ubicación del tiempo, se puede calcular la distancia de modo que así  constantemente hay un ciclo de  medicino

Estos sensores HCSR04 los conectamos  a una placa WiFi ESP8266 NodeMCU y yna pequeña placa para la alimenticio  de 3.3v  del ESP8200

El esquema es bastante sencillo como podemos ver en  la siguiente imagen:

Imagen de Primeros pasos con el banco para las pruebas iniciales

El  total de compontes    en resumen son los siguintes :

Para fines de prueba se puede  usar  un  PC para alimentar el circuito ,pero con la idea de que cuando este ya programado  funcione independiente , lo mejor es   utilizar un pequeño conversor  DC-DC de 3 v3  y asi usar cualquier fuente de alimentación de  220v/ 12v para alimentar el circuito (usando el coneversor como adptador de tension) 

 Tenga en cuenta que estas placas ESP12E funcionan con 3,3 voltios pero tienen un pin de suministro de entrada de 5v (VIN) y también funcionan con el suministro de USB cuando están conectados a su PC. No suministre más de 5 voltios al pin VIN si lo usa.

La conexiones  a usar son las siguientes :

  • Sensoring a Arduino GPIO5 (D1)
  • Sensor1 echo a Arduino GPIO4 (D2)
  • Sensor2 ping a Arduino GPIO14 (D5)
  • Sensor2 echo a Arduino GPIO12 (D6)

Estos sensores funcionan también a 3.3 voltios   y dan un  buen nivel de salida asi que no es necesario  convertidores de salida .Conecte ambos VCC a los sensores Arduino 3v3 y conecte ambos sensores GND a Arduino GND.

Puede usar un  LED  pero como se encenderá   solo de 50mS cada 2 segundos,  no merece la pena conectar una resistencia limitadora de corriente, (pero se puede agregar una resistencia 1 / 4W 470R si lo desea.). ElÁnodo del led  (pata larga) ira al Arduino GPIO13 (D7) y el Cátodo a Arduino GND

Tenga en cuenta   que los cables de los sensores  tienen cables coaxiales de 2 m de longitud., si necesita extender estoso pues usar un viejo cable coaxial que tenga , asegúrandose  de cubrir todas las uniones soldadas con termofluente.

 

 Instalando el Software

Este monitor de nivel de agua usa su tarjeta ESP8266 en su teléfono a través de sus servidores.

El servidor de Blynk en la nube sirve su aplicación con la información en los widgets en el teléfono. Al registrarte con Blynk, recibe 2000 puntos de energía de modo que con estos puntos se usan para ‘comprar’ widgets para su programa ( 2000 puntos son suficientes para construir esta aplicación de monitor de agua).

Otra opción es usar un servidor local ejecutándose en una Raspberry Pi, lo cual  permite puntos ilimitados y una mejor seguridad y no usando el servidor Blynk en absoluto,(es completamente independiente). La instalación y configuración de un servidor local está más allá del alcance de este post  sobre todo porque hay muchas instrucciones y tutoriales en la red para hacer esto comenzando con el sitio web de Blynk.

La versión final  utiliza  OTA para recibir actualizacion en el aire desde el wifi sin necesidad de  sacar todo para actualizar el software ( veremos  los cambios y métodos del software OTA más adelante).

 

Lo primero que necesitará es el Arduino IDE si aún no lo tiene.

Descargue la biblioteca Blynk aquí Biblioteca Blynk , la descarga se encuentra en la parte inferior de la página. Siga las instrucciones en esa página para instalar la biblioteca.Obtenga  tambien  la aplicación del teléfono aquí Blynk App .Se puede crear una cuenta para Blynk si desea usar la aplicación. Recuerde la dirección de correo electrónico de inicio de sesión que utiliza, la necesitará más adelante. Probablemente sea mejor usar su cuenta de correo electrónico todos los días.

También necesitará esta biblioteca:NewPing Esta es una excelente biblioteca para usar sus dispositivos. No hay necesidad de perder el tiempo con milisegundos, etc.

Estas instrucciones son para el software ESP8266:

  • Comenzando con 1.6.4, Arduino permite la instalación de paquetes de plataforma de terceros usando Boards Manager. Tenemos paquetes disponibles para Windows, Mac OS y Linux (32 y 64 bits).
  • Inicie Arduino y abra la ventana Archivo> Preferencias.
  • Ingrese « `http: // arduino.esp8266.com / stable / package_esp8266com_index.json«` en el campo * Additional Board Manager URLs *. Puede agregar varias URL, separándolas con comas.
  • Abra el Administrador de tableros desde Herramientas> Menú de la placa e instale la plataforma * esp8266 * (y no olvide seleccionar su placa ‘NodeMCU 1.0 (Módulo ESP-12E)’ desde Herramientas> Menú de la placa después de la instalación).
  • En el menú, seleccione Boceto> Incluir biblioteca> Administrar bibliotecas.Permitir que termine la descarga. Debería ver las bibliotecas de Blynk instaladas.
  • Para que su PC se comunique con el software USB to Serial de las placas Arduino debe instalar el controlador USB-UART CH341SER_win. Esto es necesario para todas las comunicaciones Arduino a través de USB. Obtengalo aqui

 

 Código de prueba para la placa ESP8266

Comenzaremos con dos sensores que informan la información al monitor serie integrado en el IDE de Arduino. Aún no se informa al servidor Blynk, OTA o WiFi.

Haga doble clic en el archivo ‘water_code_1.in’ a continuación, después de que Arduino IDE comience vaya a Archivo> ‘guardar como’ y guárdelo en su carpeta de bocetos.Se creará una carpeta con el archivo dentro.Confirme que tiene la placa correcta seleccionada, haga clic en el botón ‘verificar’ (botón muy a la izquierda en el IDE). Debe compilar sin error. Conecte su placa al cable USB, desde el menú IDE Herramientas> Puerto> COM n.

El puerto de comunicación correcto se puede encontrar simplemente desenchufando la placa y viendo qué puerto desaparece.Haga clic en el botón ‘Subir’ en IDE Arduino y permita que termine de compilar y cargar.En el IDE seleccione Herramientas> Monitor en serie

El LED debe parpadear cada 2 segundos y el monitor debe informar la distancia, la profundidad y los litros de agua de cada tanque durante 2 segundos, de forma similar a la imagen mostrada.

Imagen del código de prueba para el tablero ESP8266e Estos sensores tienen un rango d aproximadamente 3 mtrs. de modo que están configurados a 3 mtrs en el software de todos modos.

Pruebe cada sensor moviéndolo dentro y fuera de un objeto sólido como la pared, debería ver las figuras cambiar en la ventana del monitor. A medida que la distancia aumenta, simula un nivel de agua más bajo.

Este es  el codigo  final :

#include
#include

#define SONAR_NUM 2 // Number of sensors. Change to suit your requirements.
#define PI 3.1415926535897932384626433832795

//** CHANGE TO SUIT TANK DIMENSIONS
const int MAX_DISTANCE = 300; //max distance to measure
const int Diameter1 = 276; //internal Diameter of tank 1 cm
const int Diameter2 = 276; //internal Diameter of tank 2 cm
const int Depth1 = 265; //total depth of tank 1 cm , from sensor to base inside
const int Depth2 = 265; //total depth of tank 2 cm, from sensor to base inside

const unsigned int Period = 2000; //period between pings, in milliseconds. i.e 1 munute = 60,000. max 65535. Want longer? use unsigned long

//** SENSOR PINS

const int PingPin1 = 5; // GPIO5, D1
const int EchoPin1 = 4; // GPIO4, D2
const int PingPin2 = 14; // GPIO14, D5
const int EchoPin2 = 12; // GPIO12, D6

const int Area1 = PI * ((Diameter1 / 2) * (Diameter1 / 2)); //area of base of tank 1
const int Area2 = PI * ((Diameter2 / 2) * (Diameter2 / 2)); //area of base of tank 2

// Global variables
int Litres1, Litres2, Distance1, Distance2, WaterDepth1, WaterDepth2;

BlynkTimer timer; //config timer

NewPing sonar[SONAR_NUM] = { // Sensor object array.
NewPing(PingPin1, EchoPin1, MAX_DISTANCE), // Each sensor’s trigger pin, echo pin, and max distance to ping.
NewPing(PingPin2, EchoPin2, MAX_DISTANCE)
};

void sendSensorReadings()
{
//***********Readings Tank 1
Distance1 = sonar[0].ping_cm(); //get distance to the top of the water tank 1
if (Distance1 >= Depth1 || Distance1 == 0 ) Distance1 = Depth1; //check it does not go negative
WaterDepth1 = Depth1 – Distance1; //calculate the depth of the water
Litres1 = (Area1 * WaterDepth1) / 1000; //calculate the volume of the water as litres
delay(50);

//************Readings Tank 2
Distance2 = sonar[1].ping_cm(); //get distance to the top of the water tank 2
if (Distance2 >= Depth2 || Distance2 == 0) Distance2 = Depth2; //check it does not go negative
WaterDepth2 = Depth2 – Distance2; //calculate the depth of the water
Litres2 = (Area2 * WaterDepth2) / 1000; //calculate the volume of the water as liters

digitalWrite(13, HIGH); //flash the LED on D7, just to let us know it’s running
delay(50);
digitalWrite(13, LOW);

//************************* can be commented out, test use only
Serial.println();
Serial.println();
Serial.println(«Tank 1 water distance: » + String(Distance1)); //print depth
Serial.println(«Tank 1 water depth: » + String(WaterDepth1)); //print depth
Serial.println(«Tank 1 Litres: » + String(Litres1)); //print litres

Serial.println();
Serial.println(«Tank 2 water distance: » + String(Distance2)); //print depth
Serial.println(«Tank 2 water depth: » + String(WaterDepth2)); //print depth
Serial.println(«Tank 2 Litres: » + String(Litres2)); //print litres
//***********************************************

}

void setup() {

pinMode(13, OUTPUT); //LED GPIO13 D7

timer.setInterval(Period, sendSensorReadings); // Setup a function to be called every ‘n’ seconds
delay(10);

//** can be commented out, test only
Serial.begin(115200); // Open serial console.
Serial.println();
//*******************************

delay(20);
}

void loop() {

Blynk.run();
timer.run();

}

 

Código  Final con WiFi y Blynk

Ahora vamos a conectarnos al servidor de Blynk. Descargue y abre el water_code_2.ino

En el IDE de Arduino, seleccione Archivo> «guardar como» en su carpeta de bocetos.

Abra la aplicación Blynk, inicie sesión. Cree un nuevo proyecto,  dispositivo = ESP8266, tipo de conexión = WiFi, configure el tema que prefiera.presione el botón Crear.Se enviará un token de autoridad a su cuenta de correo electrónico designada.Presione OK  y vaya a su correo electrónico , copie el token de autoridad, péguelo en su programa arduino donde dice ‘char auth [] = «YourAuthToken«

También ingrese su SSID y su contraseña.Ahora cárgalo en su ESP.

Ahora  terminaremos el proyecto Blynk viendo como configurar la aplicación.

Configuración del programa de aplicación Blynk

Imagen de la configuración del programa de la aplicación Blynk

 

Entre en su app movil  Blync e introduzca sus credenciales de acceso. Siga los siguientes pasos para configurar la aplicación para la medición de los niveles de dos tanques

  • Presione + en la parte superior de la pantalla en la aplicación, desplázese hacia abajo y presiona Value Display. Haga esto 4 veces
  • Presione + en la parte superior de la pantalla en la aplicación, desplázese hacia abajo y presiona NivelV. Haga esto dos veces
  • Presione + en la parte superior de la pantalla en la aplicación, desplázesee hacia abajo y presiona SuperChart.
  • Diseñe los widgets como en la imagen. Una pulsación larga en el widget le da identificadores para redimensionarlos.
  • Colócalos como mejor le parezca.
  • Presione la primera Pantalla de valor (arriba a la izquierda), asígnele el nombre Profundidad 1, seleccione V1, 0 a 300 y PULSE
  • Presione la segunda pantalla de valores, nombre Profundidad 2, seleccione V4, 0 a 300 y PUSH
  • Presione la tercera pantalla de valores (2 abajo a la izquierda), nombre Liters 1, seleccione V2, 0 a 9999 y PUSH
  • Presione la cuarta pantalla de valores, nombre Liters 2, seleccione V5, 0 a 9999 y PUSH
  • Presione el nivel vertical izquierdo, nómbrelo Nivel 1, seleccione V3, 0 a 1600, APAGADO y EMPUJE
  • Presione el nivel Vertical derecho, nómbrelo Nivel 2, seleccione V6, 0 a 1600, APAGADO y PULSE
  • Presione SuperChart, Litros 1 y Litros 2.
  • Presione el ícono (flujo de datos) al lado de Nombre, PIN = V3, interruptor deslizante = VALORES, minn = 0, máximo = 1600
  • Presione el ícono (secuencia de datos) al lado del segundo nombre, PIN = V6, interruptor deslizante = VALORES, min = 0, máximo = 1600

Puede jugar con las otras configuraciones para adaptarlas a sus preferencias. Para eliminar un widget, arrástrelo a la derecha de la pantalla.

Si todo se ve bien, presione la esquina superior derecha de la pantalla. Si su Arduino se está ejecutando, debería ver los mismos números (excepto la distancia) que en el monitor de serie.

Como se puede ver en la imagen anterior de la app movil  de Blync   debe tener en cuenta que debe ajustar el valor real de  Profundidad1 y Profundidad2  en la app  , pero también deberá reflejar los  valores correspondientes en el codigo de Arduino  para calcular el volumen par lo cual es importante  no olvidar este detalle.

En el ejemplo los depósitos son circulares de modo que hay especificar tanto el diámetro como la profundidad:

 

Imagen de Mount the Sensors en los tanques

También  debe señalar que estos sensores tienen un rango mínimo de 20 cm, lo cual se debe a que el transmisor y el receptor comparten la misma distancia.

 

Configurar la  actualización por  OTA

Imagen de la configuración de la actualización de OTA

OTA o ‘Over The Air‘ es una característica realmente útil, especialmente en este caso donde ESP está dentro de una caja y afuera.

Este es un proceso bastante simple:

  1.  El cargador de arranque OTA se carga primero en la placa.
  2.  La placa se reinicia presionando el botón de reinicio en la placa.
  3.  Su nuevo código para el proyecto de tanque de agua que contiene las adiciones de OTA a su placa por USB.

Las cargas futuras se logran seleccionando el puerto WiFi en Herramientas> Puerto.

Vaya a Archivo> Ejemplos> ArduinoOTA> BasicOTA

El programa se cargará, ingrese su nombre de red y contraseña en el código.Suba esto a su placa. Ahora presione el botón de reinicio en el tablero.

Regrese a su programa de tanque de agua y vea los 3 lugares que se muestran en las imágenes, estos son necesarios para la carga de OTA.

Suba esto a su placa , usando  USB serial.

Si mira en Herramientas> Puerto en IDE Arduino, verá un nuevo puerto.Tendrá ‘esp8266’, la ID de la placa y la dirección IP de la placa.

Para una carga futura, use este puerto, sin necesidad de una conexión serial USB.

La placa ahora puede ser cargada por otros medios , es decir por wifi  sin tener que llevar el pc  y conectarlo por USB.

Montaje  final

Imagen de Monte las tablas en la caja

Puede montar  el ESP8266, tanto las placas ultrasónicas como el convertidor DC-DC en la caja con clasificación IP66, ya que estará   expuesto a los elementos. Si usa conectores de cable hembra-hembra, mucho mejor. Es interesante montar el convertidor CC-CC en una posición donde el conector de alimentación pueda enchufarse desde el exterior. 

También se deben tome todas las conexiones de alimentación y tierra a esta placa para evitar los bucles de tierra usando se 3.3 voltios para todo.

Es interesante hacer un agujero para el LED, e intentar ajustarlo para que no se necesite adhesivo.

Conecte todo y asegúrese de que todo sea resistente a la intemperie

Verifique todo, especialmente el cableado de alimentación.Enchufe la alimentación y conéctelo a la caja, conecte los sensores y enciéndalo.No verá nada en el monitor de serie, pero consulte la aplicación de su teléfono mediante la aplicación Blynk 

Mueva los sensores alrededor, las figuras deberían cambiar en la aplicación. Recuerde que una transmisión de ping e información solo se realiza cada 2 segundos.

Si sus tanques están a una distancia mayor, deberá  usar un extensor WiFi.

.

 

Fuente  Instructables.com

 

Concurso Casa inteligente con Arduino y Alexa


Alexa es el servicio de voz de Amazon y el «cerebro» que hay detrás de millones de dispositivos como el Amazon Echo. La gente usa Alexa para controlar dispositivos domésticos inteligentes millones de veces al día.

De Arduino , hemos hablado muchas veces  es este blog , es una plataforma de electrónica de código abierto basada en hardware y software fácil de usar destinada a cualquier persona que realice proyectos interactivos.

La comunidad de fabricantes de Arduino (estudiantes, aficionados, artistas, programadores y profesionales) se ha reunido en torno a esta plataforma de código abierto, sus contribuciones se han añadido a una cantidad increíble de conocimiento accesible que puede ser de gran ayuda para principiantes y expertos por igual.

En este concurso  invitan a cualquier aficionado o profesional  a trabajar  con estos líderes de la industria para visualizar y construir el futuro de los hogares inteligentes.

 

En el vídeo nos explican en que consiste el reto

En este concurso, Hackster ha reunido a Alexa y Arduino, un líder en hardware de código abierto.

Invitan  a crear un proyecto que visualice el futuro de los hogares inteligentes. Aquí hay algunas ideas potenciales para comenzar:

  • Automatización de la temperatura ambiente
  • Control de iluminación personalizado
  • Sistemas de seguridad y timbre
  • Entretenimiento y comida para mascotas
  • Control y gestión de jardines
  • Transmisión multimedia en dispositivos
  • Monitoreando casi todo

Si no tiene un dispositivo Amazon Alexa, puede usar Echosim.io para probar virtualmente sus habilidades de Alexa. Use la API Alexa Smart Home para crear fácilmente capacidades, toque las API de autoservicio, la documentación, las plantillas y las muestras de códigos que lo guiarán rápidamente hacia la publicación de Habilidades. Use el Servicio de voz de Alexa para integrar Alexa en su producto usando el SDK y las API.

Aquí tiene los premios que puede ganar:

  • Mejor ganador general de habilidades de Smart Home en Alexa: $ 14,000 en efectivo, paquete de Kickstarter: Fondo promocional de videos y marketing, certificación Dragon Innovation, una sesión de entrenamiento en Kickstarter de 60 minutos (lleve su proyecto al producto)
  • La mejor habilidad y artefacto para interiores Smart Home de Alexa: $ 8,000 en efectivo + 60 minutos de entrenamiento en Kickstarter
  • Mejor habilidad al aire libre de Alexa Smart Home Skad & Gadget: $ 8,000 en efectivo + 60 minutos de entrenamiento en Kickstarter
  • Comodines y aditamentos caseros de Smartcard de Alexa: $ 6,000 en efectivo + 60 minutos de entrenamiento en Kickstarter
  • Mejor integración y gadget de servicio de voz de Alexa: $ 8,000 + 60 minutos de entrenamiento de Kickstarter
  • NOTA: Hackster solo realiza premios en efectivo a través de PayPal.

Calendario del concurso :

  • La presentación del proyecto se abrió  el 21 de noviembre de 2017 a las 8:01 a.m. PT
  • Fecha límite para envío de proyectos 24 de febrero de 2018 a las 11:59 p.m. PT
  • Los ganadores se anunciaran el 12 de marzo de 2018 a las 11:59 p.m. PT

 

Incripcion en  el concurso 

  1.  Registro para el concurso en https://www.hackster.io/contests/alexasmarthome 
  2. Comience por crear una cuenta gratuita en Hackster.io (o inicie sesión si ya es miembro)
  3. Regístrese para el concurso haciendo clic en «Registrarse como participante»
  4. Ingrese para ganar los premios mayores al crear y enviar su proyecto
  5. Cree su proyecto usando la API de Amazon Smart Home, y / o Amazon Voice Service y cualquier producto Arduino
  6. Envíe su proyecto antes del 24 de febrero de 2018 a las 11:59 p.m. PT

 

 

Algunos recursos:

  • Foros de Desarrolladores de Alexa Alexa Developer Forums

 

 

 

 

 

 

Los ganadores serán anunciados en esta página antes del 12 de marzo de 2018 a las 11:59 p.m. PT. ¡Buena suerte!

Muy pronto las casas impresas y autosostenibles serán una realidad


Construir una casa del modo tradicional puede llevar mucho tiempo y ademas es un proceso bastante costoso  de  modo que algunos constructores de casas desde hace ya algún tiempo han optado por automatizar parte de la construcción.

Una nueva empresa ucraniana de construcción de viviendas llamada PassivDom utiliza un robot de impresión 3D que puede imprimir partes para casas pequeñas,  pudiendo la máquina imprimir las paredes, el techo y el piso del modelo PassivDom de 38 metros cuadrados en aproximadamente ocho horas. Las ventanas, puertas,fontanería y sistemas eléctricos son agregados por un trabajador humano.

Cuando se completa, las casas son autónomas y móviles, lo que significa que no necesitan conectarse a sistemas eléctricos o incluso de  saneamiento externos:la energía solar se almacena en una batería conectada a las casas, y el agua se recoge y filtra de la humedad del aire (o puede verter agua en el sistema). Además las casas también cuentan con sistemas de alcantarillado independientes.

Desde su lanzamiento en la primavera de 2017, ha recibido más de 8,000 pedidos anticipados en los Estados Unidos para sus hogares, que comienzan en $ 64,000(unos 57.000€)  . Los primeros 100 serán entregados en enero de 2018.

 

El modelo más pequeño de PassivDom mide 38  metros cuadrados y oscila entre unos 57.000€ y unos 87.000€,

 

 

casa1.PNG

Esta casa  tiene sala de estar estudio, cocina, un baño siendo aconsejable para 2 personas  . Sus  dimensiones son :  H x A x L: 3.81mx 3.98 mx 9.63 m  y un peso de hasta 9,000 kg.

La capacidad de salida de 3.3kW y una capacidad de almacenamiento de 22kWh .Los  tanques de agua dulce son de hasta  1120L y el tanque de aguas grises / 450L

El modelo de 72  metros cuadrados  tiene un mayor coste  desde unos 87.000€ hasta unos s 130000€ siendo ideal  para una familia

 

casa2.PNG

Sus  medidas son H x A x L: 3.81mx 7.96 mx 9.63 m con un peso de hasta 35,270 lbs / 16,000 kg.  La capacidad de salida de 5.0kW y una capacidad de almacenamiento de 33kWh. Los  tanques de agua dulce son de hasta  1120L y el tanque de aguas grises 450L ( como el en el modelo anterior) 

Esta  casa cuando entras por la puerta principal e un gran espacio abierto con una pequeña cocina y ventanas de piso a techo.  Este modelo no incluye un dormitorio separado, lo que significa que los residentes necesitan un sofá cama. Un baño pequeño se encuentra cerca de la cocina.

Ambas modelos cuenta  con

  • cocina: microondas, nevera, lavavajillas, cafetera
  • baño: inodoro, ducha, lavadora / secadora, lavabo.
  • habitación: sofá cama, mesa, sillas, armario de cocina, almacenamiento, armario

PassivDom también puede crear modelos personalizados. Los modelos premium vienen con muebles, una cocina, un baño, sistemas de ingeniería, un suministro de energía, un tanque de agua y un sistema de alcantarillado.

Algo muy destacado es que las casas también ofrecen la posibilidad de vivir fuera de la red  dando las  oportunidades de vivir en la naturaleza lejos de la civilización, pero tener condiciones cómodas de una casa tradicional

Esta tecnología nos permite vivir en el bosque, en las montañas o en la costa, lejos de las personas y la infraestructura.

Estos son los sistemas de ingeniería  de los que se nutren;

  • Control del clima: bomba de calor, calefacción por suelo radiante, aire acondicionado, ventanas de baja emisión que absorben los rayos infrarrojos (pendiente de patente)

  • Sistema de calidad del aire: filtración HEPA, sistema antibacteriano, sensores de CO2 y humedad y control, recuperación.

  • Energía: sistema solar híbrido fuera de la red con almacenamiento de batería. opcional se puede conectar a redes eléctricas regulares.

  • El agua: opcional puede equiparse con un sistema aire-agua fuera de la red (condensación de agua a partir de la humedad del aire).

  • Alcantarillado: opcional puede ser equipado con filtro de aguas grises y sistemas sépticos autónomos.

Para hacer un PassivDom en casa, el equipo traza el plan para la impresora 3D en sus fábricas en Ucrania y California. Capa por capa, el robot de siete ejes imprime el techo, el piso y las paredes de 20 centímetros de grosor, que están hechas de fibras de carbono, poliuretano, resinas, fibras de basalto y fibra de vidrio.

planocasa.PNG
Una imagen esquemática de un marco de casa PassivDom.

Luego se agregan puertas, ventanas, electrodomésticos, un sistema de alarma, paneles solares y sistemas sépticos, eléctricos, de curación y de enfriamiento.

 

Dependiendo del modelo, todo el proceso puede tomar menos de 24 horas. El diseño y la producción de casas más grandes con más especificaciones y acabados, como el que se muestra a continuación, pueden demorar hasta un mes. Si una casa está prefabricada, se puede enviar al día siguiente.

En el siguiente vídeo podemos ver el interior  de una de las viviendas que proponen:

 

 

PassivDom no es la única empresa que utiliza la impresión 3D para construir viviendas. La empresa de viviendas con sede en San Francisco Apis Cor , Dus Architects en Amsterdam, así como Branch Technology de Chattanooga, Tennessee, dicen que pueden construir casas en cuestión de días o semanas.

La startup cree que la impresión 3D es una forma más económica y eficiente de construir casas que puede vender a un precio (relativamente) asequible. «Más de 100 millones de personas no tienen un techo sobre sus cabezas», dijo Sorokina. «Es necesario construir casas más asequibles».

Cerradura RFID conArduino


RFID o identificación por radiofrecuencia (del inglés Radio Frequency Identification) es un sistema de almacenamiento y recuperación de datos remoto que usa  transpondedores RFID con el  propósito de transmitir la identidad de un ente  mediante ondas de radio. Las tecnologías RFID se agrupan dentro de las denominadas Auto ID (automatic identification, o identificación automática).

Las etiquetas RFID  son  dispositivos pequeños, similares a una pegatina que contienen antenas para permitirles recibir y responder a peticiones por radiofrecuencia desde un emisor-receptor RFID.

Una de las grandes ventajas de esta tecnología   es que las etiquetas   son pasivas ,no necesitando por  tanto  alimentación eléctrica   así como tampoco  requieren visión directa entre emisor y receptor.

En el post de  hoy  vamos    a ver como se implementa  establecer un pestillo de puerta que puede abrirse mediante una tarjeta  RFID  programando  una lista de las tarjetas ‘claves’ aceptables que podrían  abrir  la puerta durante un período determinado de tiempo.

Este es proyecto es  sencillo  pero requiere que alterar la  jamba de la puerta lo cual requiere mucha pericia   pero como podemos  en el siguiente vídeo  el resultado  es muy espectacular.

 

 Electrónica necesaria

Estas son las partes recomendadas para este proyecto. Puede usar otro relé de variante, Arduino, o etiqueta RFID compatibles, pero se recomienda el escudo RFIDuino para que el código que veremos funcione sin problemas.

 

Note que usando un solenoide de cierre de puerta recta necesita energía para abrir la puerta. Si pierde energía, usted se eficazmente bloqueará hacia fuera y no se puede abrir la puerta hasta que la energía se devuelve al sistema pero si usa una  placa electrónica , todavía puede utilizar su clave normal para abrir la puerta en el caso de un apagón.

Obtener sus datos de etiqueta RFID

  1. Conecte su RFIDuino como se muestra en la imagen teniendo en cuenta que el escudo RFdui9no deberá colocarlo encima de su Arduino en la posición exacta en que coinciden ambas placas .De la placa no olvide que ira la antena  RFID  al exterior y  por su puesto su Arduino ira conectado  por usb a su pc para poer  instalarle el firmware
  2. Abra su tablero. Usted puede encontrar este bosquejo bajo RFIDuino_helloworld
    File>Examples>RFIDuino>RFIDuino_helloworld
  3. Usted necesitará asegurarse de que el código se ajusta para el hardware del RFIduino.
    v1.2 escudos (2 pin antena, ‘REV 1.2’ impreso en el tablero) se necesita el siguiente código escudos v1.1 (antena de 4 pines, ningún número de versión impresa en la placa) tendrá el siguiente código

    RFIDuino myRFIDuino(1.2);     //initialize an RFIDuino object for hardware version 1.2
    RFIDuino myRFIDuino(1.1);     //initialize an RFIDuino object for hardware version 1.1

    Ambas líneas de código están disponibles en el dibujo, simplemente quite el comentario de que no necesita.RFIDuino_helloworld

    Si tiene aún dudas sobre qué hardware está usando, vea esta página

  4. Conecte un cable micro del USB de su ordenador  a su Geekduino
  5. Cargue  RFIDuino_helloworld3  en su tarjeta usando el botón de carga en el IDE de Arduino.
  6. Una vez cargado, puede dejar la placa conectada al ordenador  pues  necesita esta conexión para alimentar el tablero y para comunicarse con la computadora
  7. Abra al Monitor serie.
    Tools -> Serial Monitor

    El serial monitor debe ajustarse a los valores predeterminados (‘Fin a No Line’, 9600 baudios)

  8. Pase una etiqueta por la antena de RFIDuino. La luz verde se iluminará y el zumbador hará un ruido.
  9. El Serial Monitor mostrará 5 números. Estos números representan el ID de la etiqueta.
  10. Copie abajo estos números para uso futuro. Puede ser útil escribir el ID en una nota adhesiva y se adhiere a la etiqueta. Nota: se necesita el ID por al menos una etiqueta para el siguiente paso.

 Cableado y programación

  1. Conecte sus componentes como se muestra en le imagen  de arriba  donde como  se puede apreciar se ha añadido una placa de rele  en cuya salida conectaremos un solenoide que alimentaremos con una tensión exterior  y el alimentador  dedicado para suministrar energía  a la placa   Arduino y el Escudo .
  2. Abierta sobre su tablero. Usted puede encontrar este bosquejo bajo RFIDuino_demo3_lockbox_multi
    File>Examples>RFIDuino>RFIDuino_demo3_lockbox_multi
  3. Usted necesitará asegurarse de que el código se ajusta para el hardware del RFIduino.
    v1.2 escudos (2 pin antena, ‘REV 1.2’ impreso en el tablero) se necesita el siguiente código escudos v1.1 (antena de 4 pines, ningún número de versión impresa en la placa) tendrá el siguiente código

    RFIDuino myRFIDuino(1.2);     //initialize an RFIDuino object for hardware version 1.2
    RFIDuino myRFIDuino(1.1);     //initialize an RFIDuino object for hardware version 1.1

    Ambas líneas de código están disponibles en el dibujo, simplemente quite el comentario de que no necesita.RFIDuino_demo3_lockbox_multi

     

  4. Modifique el código para el número de tarjetas que desee por línea edición 58. Por ejemplo, si tienes tres tarjetas, utilice el código
    #define   NUMBER_OF_CARDS 3     //total numer of key cards that the system will respond to.
  5. También necesitará modificar el bosquejo para incluir los identificadores de las etiquetas que desea incluir. Estos identificadores pueden encontrarse usando el bosquejo. Encontrar el bloque de código a partir de en línea 62 – se parece a esto. Ahora inserte el ID para sus etiquetas. Si tenemos tres etiquetas clave, nuestro código podría ser algo así como Hello World
    byte keyTag[NUMBER_OF_CARDS][5] ={
    {0,0,0,0,0},  //Tag 1 //commenting each tag with a description can help you keep track of them
    {0,0,0,0,0},  //Tag 2
    {0,0,0,0,0}, //Tag 3
    {0,0,0,0,0},//Tag 4
    };
    byte keyTag[NUMBER_OF_CARDS][5] ={
    {77,0,44,22,242},  //Tag 1 //commenting each tag with a description can help you keep track of them
    {200,1,4,98,236},  //Tag 2
    {23,64,4,25,1}, //Tag 3
    };
  6. Conecte un cable micro del USB de su ordenador  a su Geekduino
  7. Cargar en su tarjeta usando el int del botón de subir el IDE de Arduino. RFIDuino_demo3_lockbox_multi
  8. Una vez cargado, desconecte el cable USB del ordenador…
  9. Ninguna de las etiquetas ‘clave’ pase por la antena de RFIDuino. La luz verde se iluminará y el zumbador tocar tres notas diferentes. Además, el solenoide se dispara.
  10. Pase cualquier etiqueta que no es la etiqueta de ‘clave’ a través de la antena de RFIDuino. La luz roja se iluminará y el zumbador tocar tres notas monótonos. El solenoide no reaccionará.

 Montaje final

 Una vez que este seguro que lo tiene programado y el seguro libera cuando usted pase la correcta etiqueta de RFID, ya puede montarlo en el marco de una  puerta. En el video  de hecho podemos ver en una puerta de marco de metal con ventanas de cristal, por lo que es mas sencillo instalar  el lector de RFID tras el cristal.
También se  puede montar la antena en una caja resistente a la intemperie para la accesibilidad y mantener el Arduino y otros aparatos electrónicos en el interior por seguridad.

Hay instrucciones con la placa electrónica de apertura que puede ayudar en el montaje  Se recomienda mantener la placa tan al ras como puedas a la pared se monta en y tener cuidado al pasar los cables a través de una pared.

Fuente : instructables.com

 

Servidor para Netduino+


NeonMika.Webserver es un servidor web preconfigurado  para Netduino+  yNetduino 2+   fácil de extender de modo que con un código mínimo (o incluso nulo), puede obtener excelentes resultados controlando todos  los puertos de  su Netduino +, accediendo y cargando archivos, creando servicios web ¡y algunas cosas  más!

El código  fuente esta disponible aun en codeplex en  :https://neonmikawebserver.codeplex.com/documentation  aunque hay  una version para Netduino 3+ en  Github .  A pesar de que el foro  de Netduino se ha mudado al sitio widernesslab.co  se mantiene  información  de NeonMika.Webserver  en el antiguo  foro de Netduino ( http://forums.netduino.com/index.php?/topic/2889-neonmikawebserver/)  asi que tiene más preguntas o desea  mas explicaciones  sobre el código le recomiendo que se dirija a ese sitio.

Si usa el esquema de la cafetera conectada  del que hablábamos  en un post anterior     únicamente puede   usar el pin digital  D2  como salida  y al que  conectaremos  una economica placa de un relé   compatible  con Arduino (5V)

 

Como se puede apreciar en el esquema del circuito , este no puede ser mas simple pues solo hay que alimentar el circuito del rele con la tensión  de 5V procedente de la placa Netduino, conectar el pin de datos  D2 a la entrada IN de la placa del  relé  y finalmente conectar la carga ( en este caso un cafetera)  a los contactos de salida del relé

 

Gracias  a neomikaserver podremos controlar fácilmente la cafetera   de una manera muy facil  y rapida pero ademas este servidor destaca por la siguientes  funcionalidades:

  • Acceso a la tarjeta microSD
  • Control de todos  lso puertos GPIO
  • Lectura de todos los puertos GPIO
  • Control   de  su Netduino+  usando métodos existentes como setPWM o setDigitalPinState
  • Permite agregar sus propios métodos similares al servicio web para que pueda expandir NeonMika.Webserver a sus propias necesidades para cada proyecto.

Hay dos directorios de interés para usted:

  • Framework :contiene el código de la biblioteca para un nuevo proyecto usando NeonMika.Webserver. Consulte esta carpeta si desea agregar NeonMika.Webserver a un proyecto existente.
  • Executeable:  contiene un pequeño proyecto creado usando NeonMika.Webserver. Consulte este si desea obtener una primera experiencia con el servidor. ¡Puede ejecutarlo sin escribir ninguna línea de código!

Para probar NeonMika.Webserver y tener algún código de muestra, simplemente siga estos pasos:

  • Simplemente descargue el código y vaya a «Executeables».
  • Implemente el proyecto en su Netduino Plus. Debería comenzar a funcionar.
  • Este proyecto de ejemplo que utiliza NeonMika.Webserver tiene el siguiente método xml agregado al servidor web en tiempo de ejecución: netduinoplus / wave … Conecte los LEDs al Pin 0,1,4,5,8,9 y verá que su LED se enciende uno después el otro.

 

Setup

Como puede ver, solo necesita llamar al constructor para iniciar NeonMika.Webserver.

Server WebServer = new Server(PinManagement.OnboardLED, 80, false, "192.168.0.200", "255.255.255.0", "192.168.0.1", "NETDUINOPLUS");

Los parámetros necesarios son  autoexplicativos:

  • El puerto 
  • DHCP encendido / apagado
  • Dirección IP
  • Máscara de subred
  • Gateway
  • Nombre de red

¡No necesita nada más para ejecutarlo!

Métodos sopurtados?

Aquí hay una lista con todos los métodos web precodificados que puede usar en su navegador o en cualquier otra aplicación para comunicarse con su Netduino:

  • echo (devuelve el valor enviado) ,    ejemplo   netduinoplus / echo? value = [a-Z] , por ejemplo http://192.168.0.2/echo?value=markus devolveria «markus»
  • switchDigitalPin (Cambia el pin seleccionado de verdadero a falso y vis-a-vis) ,ejemplo : -> netduinoplus / switchDigitalPin? pin = [0-13]  es decir  por ejemplo para encender la cafetera seria http://192.168.0.2/setDigitalPin?pin=2&state=true y para apagarla http://192.168.0.2/setDigitalPin?pin=2&state=flase
  • setDigitalPin (Establece el pin digital seleccionado al estado seleccionado), ejemplo -> netduinoplus / setDigitalPin? pin = [0-13] & estado = [verdadero | falso]
  • pwm (establece el PWM del pin para el período y duración enviados, ejemplo -> netduinoplus / pwm? pin = [5 | 6 | 9 | 10] & period = [int] & duration = [int]
  • getAnalogPinValue (Devuelve el valor del pin analógico seleccionado),ejemplo-> netduinoplus / getAnalogPinValue? pin = [0-5]
  • getDigitalPinState (Devuelve el estado de su pin seleccionado (on / off)),ejemplo -> netduinoplus / getDigitalPinState? pin = [0-13]
  • getAllAnalogPinValues ​​(Devuelve el valor de cada pin analógico), ejemplo-> netduinoplus / getAllAnalogPinValues
  • getDigitalPinState (Devuelve el estado de cada pin digital).ejemplo-> netduinoplus / getAllDigitalPinStates
  • getAllPWMValues ​​(Devuelve los valores para todos los puertos PWM), ejemplo-> netduinoplus / getAllPWMValues
  • fileUpload (Carga un archivo en la ruta de la tarjeta SD mediante POST. Debe escribir los datos de archivo (bytes) en el cuerpo POST),ejemplo  -> netduinoplus / upload? path = [a-Z]
  • Respuesta de archivo y directorio: Simplemente escriba netduinoplus / [pathtomyfile] y podrá ver / descargar su archivo. Si la ruta dada es un directorio, se devolverá una vista de directorio

 

Más para fines de prueba, pero también como parte de NeonMika.Webserver:

  • xmlResponselist (le da una lista de todos los métodos XML) , ejemplo -> netduinoplus / xmlResponselist
  • jsonResponselist (Te da una lista de todos los métodos JSON),ejemplo -> netduinoplus / jsonResponselist
  • multipleXML (Ejemplo sobre cómo usar XML anidado), ejemplo -> netduinoplus / multixml

Algunos  ejemplos de uso

Como expandirlo con servicios XML

WebServer.AddResponse(new XMLResponse("wave", new XMLResponseMethod(WebserverXMLMethods.Wave)));

No se ve tan complicado? Eso porque no es complicado.

Este es un ejemplo de cómo escribir un XMLResponse

private void Echo(Request e,Hashtable results)
{
  if(e.Request.GetArguments.Contains("value") == true)
    results.Add("Echo",e.Request.GetArguments["value"]);
  else
    results.Add("ERROR", "No 'value'-parameter transmitted toserver");
}

Todas las XMLResponses deben tener este formato:

  • Valor de retorno:vacío
  • Parámetro: Solicitud (con esto puede acceder al parámetro escrito en la URL)
    Hashtable (aquí usted agrega la respuesta)
  • Si necesita XML apilado, eche un vistazo al método MultiXML en Server.cs

 

Cómo escribir una respuesta JSON:

 

private void ResponseListJSON(Request e, JsonArray j)
{
   JsonObject o;
   foreach(Object k in _Responses.Keys)
   {
     o = newJsonObject();
     o.Add("methodURL", k);
     o.Add("methodName", ((Response)_Responses[k]).Name);
     j.Add(o);
   }
}

Server setup:

Server WebServer = new Server(PinManagement.OnboardLED,80,false,"192.168.0.200","255.255.255.0","192.168.0.2","NETDUINOPLUS"); 
WebServer.AddResponse(newXMLResponse("echo", new XMLResponseMethod(Echo))); 
WebServer.AddResponse(newJSONResponse("jsonResponselist", new JSONResponseMethod(ResponseListJSON)));

 

Cómo acceder a los últimos datos POST:

PostFileReader post = new PostFileReader ();

byte [] postData = post.Read (bufferSize);

 

Mostrar el directorio de archivos:

http://192.168.0.2/SD

 

Archivo de acceso:

http://192.168.0.2/SD/folder/file.txt

 

 

 

Problemas con atwtusblcon.exe


Windows 10 no se cerrará ya que sigue diciendo que Atwtusblcon aún se está ejecutando. de modo que  hay que que usar la opción Cerrar de todos modos. ¿Qué es Atwtusblcon? Malware? ¿Virus? ¿y puedo eliminarlo?

El proceso conocido como Show Atwtusb Icon Application o AtwtusbIcon Application pertenece al software desconocido por WALTOP International (www.waltop.com). Este ejecutable no es esencial para el sistema operativo Windows y causa relativamente  muy pocos problemas ,pero  a veces impide el apagado ordenado del equipo, lo cual puede generar problemas de estabilidad .

El ejecutable AtwtusbIcon.exe se encuentra en la carpeta C: \ Windows \ System32. Los tamaños de archivo conocidos en Windows 10/8/7 / XP son 2,963,456 bytes (83% de todas las ocurrencias), 733,928 bytes o 2,256,384 bytes.

Versiones recientes  compatibles con Windows 10 tienen incluso un tamaño mayor de  3.42MB  por lo que vemos que por lo menos ha evolucionado dicho sw.

 

atwtusblcon.png
Lo que nos desconcierta es que no hay información sobre el autor del archivo y tampoco el programa y, tampoco tiene una ventana visible central de Windows,   por lo que en principio podría parecer que es  un archivo desconocido en la carpeta de Windows.

Hay un potencial  problema  pues AtwtusbIcon.exe puede registrar entradas de teclado y mouse por lo que  la evaluación técnica de seguridad es 68% peligrosa, sin embargo, el proceso conocido como Show Atwtusb Icon Application o AtwtusbIcon Application pertenece al software desconocido por WALTOP International (www.waltop.com)   es usado por algunas tabletas digitalizadoras . Si tiene ese hardware y / o puede rastrear cualquier software de Waltop. Pruebe desconectar / desinstalar y / o buscar controladores actualizados.

Mucho sitios  en Interntet hablan  de  que el archivo está enmascarado por malware, ya que su uso es interpretar la escritura (tableta) de entrada y  también se utiliza como un registrador de teclado pero no es completamente cierto pues  tiene un uso licito , de  hecho para demostrarlo puede ir al archivo en / system32, hacer clic con el botón derecho y escanear con Defender.

Si tiene una tableta digitalizadora ,touchpad, etc   puede desinstalarla, reiniciarla y reinstalarla, ya que es muy probable que el archivo no esté instalado correctamente. Después de todo, es como el cargador de mejoras Synaptic Touchpad … una amenaza de seguridad si no se carga correctamente durante el arranque asi que lo mejor es intentar al menos que no se inicie   o eliminarlo directamente  si notenemos ese hw

Si intentamos eliminarlo no es posible:

borrar.png

Exactamente ocurre lo mismo si buscamos este ejecutable en el registro :! no  aparece!

 

Lo mejor por tanto  , para que no nos moleste en el apagado, al menos  es  desabilitarlo desde el administrador de  tareas ,de modo que si lo necesitamos usar nuevamente solo tengamos que volverlo a  Habilitar.

Nos iremos pues al administrador de  tareas  ( «Control»+ «Alt» +»Supr»  ) , seleccionaremos la pestaña de Inicio  y buscaremos «Show AtwTusb Icon Applicaction»

 

inicio.png

 

Como vemos en la ventana de propiedades  «Show AtwTusb Icon Applicaction»  corresponde justamente al ejecutable  atwtusblcon.exe,   por lo queda aclarado  el origen del problema y su fácil solución,pues  basta con  desabilitar esta aplicación desde el administrador de tareas y por supuesto reiniciar el equipo; de este modo cuando vuelva a arrancar el equipo  y después lo  vuelva a apagar  ya no le volverá  a salir el mensaje de que no se puede apagar el equipo porque atwtusblcon.exe lo esta impidiendo.

 

 

Cafetera conectada con Netduino


Netduino es una plataforma electrónica de código abierto utilizando .NET Micro Framework   basada en  un microcontrolador de 32 bits y con un entorno de desarrollo muy rico destinada a ingenieros y aficionados por igual. Netduino Plus   ademas añade  Ethernet integrado (hay una pila de TCP/IP completa )y una ranura para tarjetas microSD para almacenar archivos .No menos importante esta el tema de las conexiones externas,pues   Netduino ofrece 20 GPIOs combinados con SPI, I2C, 2 UARTs (1 RTS/CTS), 4 canales PWM y 6 canales ADC. A gran diferencia con Arduino,   para desarrollo se puede usar tanto   para Windows   (  con Visual Studio,)  o con Xamarin Studio en Mac OS X , ambas  perfectas  para complilar ,depurar  y probar nuestra aplicaciones . Incluso se puede  utilizar el Netduino en equipo Linux y Mac con Mono en lugar de .NET de código abierto 

La familia Netduino se basa en el Cortex-M Micro procesador la v4.3 .NET Micro Framework (NETMF) que como comentabamos está repleto de IO; incluyendo 22 entrada/salida de propósito General (GPIO) puertos, de las cuales 6 apoyo generación de modulación de ancho de pulso (PWM) de hardware, 4 UARTs (comunicación serial), I2C y SPI (Serial Bus de interfaz periférico).

.NET micro Framework combina la facilidad de codificación de alto nivel y las características de los  microcontroladores  soportando  eventos programación multi-threading, depuracion  línea por línea, puntos de interrupción y mucho más en clara diferencia con Arduino.

Antes de continuar  debemos recordar que  Netduino también es pin compatible con Arduino shields  permitiendo  asi  usar algunos escudos  de Arduino  que ofrecen funcionalidades preconstruidas como localización GPS, servo control , etc .

Realmente la potencia de Netduino+  frente a otras placas de igual factor de forma es su conectividad integrada  en la propia placa al  no necesitar ningún escudo adicional,  lo cual le permite llegar a aplicaciones de una forma  muy sencilla  y de una forma muy rápida como vamos a ver

En este ejemplo   vamos demostrar lo fácil que resulta controlar una cafetera  ( o lo que quiera ) desde Internet  por medio de una placa  Netduino+   que esta conectado a  la red ethernet

Para este  proyecto únicamente se usara el pin digital  D2  que se configurara como salida  y al que  conectaremos  una economica placa de un relé   compatible  con Arduino (5V)

Aunque es fácilmente construible por nosotros mismso  usando un relé  ,un transistor  y sus componentes asociados  , debido al bajisimo precio <2€)   de uno ya montado merece la pena adquirirlo  asi pues comunicante habrá que conectar a un pin de datos binario de Netduino , alimentarlo con 5v DC ( obtenidos del propio Netduino+)    y por ultimo usar los contactos del relé  para encender cualquier cosa que se nos ocurra.

Como se puede apreciar en el esquema del circuito , este no puede ser mas simple pues solo hay que alimentar el circuito del rele con la tensión  de 5V procedente de la placa Netduino, conectar el pin de datos  D2 a la entrada IN de la placa del  relé  y finalmente conectar la carga ( en este caso un cafetera)  a los contactos de salida del relé.

Para  probar el funcionamiento del circuito , conecte el Netduino+  a su ordenador , inicie Visual Studio 2012  y cree una nueva aplicación .NET MicroFramework llamada Connected_Coffee_SimpleControl, y agregue referencias a los siguientes dlls:

  • Microsoft.SPOT.Hardware
  • System
  • SecretLabs.NETMF.Hardware.Netduino

A continuación, pegue el siguiente código en su archivo program.cs:

using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;
using System.Threading;

namespace Connected_Coffee_SimpleControl
{
    public class Program
    {
        public static void Main()
        {
            // create an output port (a port that can be written to) and 
            // connect it to Digital Pin 2
            OutputPort relay = new OutputPort(Pins.GPIO_PIN_D2, false);

            // run forever
            while (true)
            {
                relay.Write(true); // turn on the relay
                Thread.Sleep(5000); // Leave on for 5 seconds
                relay.Write(false); // turn off the relay
                Thread.Sleep(5000); // leave off for 5 seconds
            }
        }
    }
}

Si observamos que la cafetera se enciende  por unos 5 segundos  y se apaga por 5 segundos en un bucle indefinido, el circuito funciona  perfectamente. así que con todo esto habremos ya  construido la base de la cafetera conectada mediante la creación de lo que era esencialmente una toma de corriente inteligente que podre controlar con un Netduino. Ademas después de montar el hardware, implantamos una  pequeña aplicación que controla el relé para activar la energía del hogar a la cafetera, efectivamente añadiendo un control muy simple.
Si bien esta aplicación es funcional , vamos a realizar un paso más y añadir una web API a la aplicación Netduino para que nosotros podemos controlar  la salida de forma remota.

Una vez tengamos la web API en su lugar, tenemos un punto final que puede ser aprovechado de una variedad de casos de uso. como por ejemplo  construyendo una aplicación móvil de Xamarin.Forms que use esa API para controlar la cafetera  conectado desde un dispositivo móvil

El código de ejemplo para el proyecto de la cafetera conectado todo se puede encontrar en
github.com/WildernessLabs/Netduino_Samples/tree/master/Connected_CoffeeMaker»>Netduino_Samples/Connected_CoffeeMaker y el código que se ejecuta en el Netduino está en la carpeta de la aplicación de ApplianceHost  ( de hecho ese es el código que se va examinar aquí).

Introducción a Maple

Con el fin de exponer la web API para permitir el control remoto de nuestra cafetera, necesitamos un servidor web para acogerla,así que vamos a ver  un servidor web especialmente diseñado para Netduino, el  Aervidor de maple(github.com/WildernessLabs/Maple).
Maple  es un servidor web en  código abierto, ultra ligero, habilitada  para JSON , soportando RESTful   construido específicamente para dispositivos Netduino  con capacidades de red. También se publica como un paquete nuget, por lo que es muy fácil de añadir  funcionalidades de red a sus proyectos. Este servidor esta diseñado específicamente para Netduino por lo que es increíblemente simple, rápido y super fácil de usar. Debe ejecutarse sin problemas en las placas  N3 Ethernet Wifi N3  y N2 +.

A continuación se muestran los comandos con las respectivas asignaciones en RequestHandler.cs:

  • GET http: // IPADDRESS / status – getStatus ()
  • POST http: // IPADDRESS / turnon – postTurnOn ()
  • POST http: // IPADDRESS / apagado – postTurnOff ()

¡Despliegue esto en su Netduino y acceda a estos puntos finales para verlo en acción!

Controladores de solicitudes

Criterios de valoración API web de Maple   se definen mediante la creación de clases personalizadas que heredan de la clase RequestHandlerBase.  Maple  utiliza la reflexión para crear direcciones URL basándose en los nombres de método en las clases personalizadas. Soporta tanto los metodos  get y post  asi como  los nombres de métodos que  deben tener el prefijo con cualquiera de esas cadenas para ser automáticamente en un extremo.

Por ejemplo, la siguiente clase expone tres URL endpoints   :/Status,  /TurnOn  y  TurnOff.

Como indican los nombres de los  métodos, las entradas el estado extremo acepta solicitudes get y los métodos de control de potencia (TurnOff y TurnOn) como se puede ver en el siguiente código:

using System;
using Microsoft.SPOT;
using Maple;
using System.Net;
using System.Collections;

namespace ApplianceHost
{
public class RequestHandler : RequestHandlerBase
{
private static bool _isPowerOn;

public RequestHandler(HttpListenerContext context) : base(context)
{
}

public void getStatus()
{
StatusResponse();
}

public void postTurnOn()
{
TogglePower(true);
StatusResponse();
}

public void postTurnOff()
{
TogglePower(false);
StatusResponse();
}

private void TogglePower(bool val)
{
_isPowerOn = val;
Ports.ONBOARD_LED.Write(val);
Ports.GPIO_PIN_D1.Write(val);
}

private void StatusResponse()
{
this.Context.Response.ContentType = «application/json»;
this.Context.Response.StatusCode = 200;
Hashtable result = new Hashtable {
{ «isPowerOn», _isPowerOn.ToString().ToLower() }
};
this.Send(result);
}
}
}

Cuando se invoquen a esos extremos, se llama al método adecuado. En el caso de nuestro servidor de control; el método getStatus devuelve un mensaje con formato JSON que contiene el actual estado del relé de encendido/apagado, el método postTurnOnactiva el relé y el método postTurnOffdesactiva el relé. También mantiene el LED a bordo en sincronía con la energía al relé como indicador.

Ports se ha definido la clase ports.cs, que proporcionan accesos OutputPort directos a los objetos que representan el LED a bordo y el pin digital 1, que controla el relé:

using System;

using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;

namespace ApplianceHost
{
static class Ports
{
static Ports()
{
ONBOARD_LED = new OutputPort(Pins.ONBOARD_LED, false);
GPIO_PIN_D1 = new OutputPort(Pins.GPIO_PIN_D1, false);
}

public static OutputPort ONBOARD_LED;
public static OutputPort GPIO_PIN_D1;
}
}

Uso de Maple, que es todo el código que se necesita para exponer una web moderna, RESTful API de un Netduino!

Inicialización de la red

A diferencia de aplicaciones tradicionales de escritorio o móvil en el que la interfaz de red durante mucho tiempo se ha inicializado cuando que se ejecuta una aplicación, usted debe inicializar la interfaz de red y espere a obtener su dirección IP, etc, antes de intentar hacer cualquier acceso a la red . Como tal, antes de iniciar el servidor de arce, estas tareas pero ser ejecutado y esperaron en.

La mayor parte del código en el principal extraido de ithub.com/WildernessLabs/Netduino_Samples/blob/master/Connected_CoffeeMaker/ApplianceHost/src/ApplianceHost/Program.cs hace justamente eso: Inicializa la red, espera a que una dirección IP y también hace una solicitud web para la validación. Mayoría del código está dedicado a la depuración y salida de información para ilustrar el proceso y proporcionar información para la instrucción y tiempo de desarrollo de exploración. Esta bien documentado en developer.wildernesslabs.co/Netduino/Input_Output/Network/ y de hecho estan trabajando en el envío de un paquete nuget que controlará todas esta cosas caja negra, en el futuro será aún más fácil de añadir a tus proyectos. Como tal, no voy a cubrir en detalle aquí, excepto to decir que si copia el código de inicialización de la red en su propia aplicación, debe llamar al método y comprobar que es el regreso (de éxito) antes de comenzar cualquier tratamiento que incluye acceso a la red :

InitializeNetwork true

if (InitializeNetwork())
 {
    // start the maple server
    // and start your application processing here 
}



Iniciar servidor de Maple

Una vez que la red se ha inicializado,   servidor Maple necesita ser instanciado y comenzar con método Start : >MapleServer server = new MapleServer(); server.Start(); Para la mayoría de los casos, esto debe ir directamente después de la llamada de inicialización de red, sin embargo, dependiendo de sus necesidades de aplicación, puede iniciarlo cuando sea necesario.

Configuración de la red

El último paso necesario para configurar la muestra ApplicationHost es configurar la red. Algunas piezas de la red, tales como el nombre de red WiFi y la contraseña (si corresponde), necesita ser configurado en implementar tiempo. Si usted está desarrollando en una máquina Windows, puede utilizar MFDeploy, que se instala como parte del SDK .NET MicroFramework. Para desarrolladores de Mac, existe  MacDeploy, que proporciona la misma funcionalidad: Si está usando el WiFi  con  Netduino 3, la autenticación y opciones de cifrado pueden ser un poco confusos, sin embargo, si se está conectando a una red WiFi moderna que requiere una contraseña, usted probablemente necesitará ajustar la autenticación para Compartido y la configuración de cifrado WPA. Además, el SSID se refiere al nombre de la red WiFi.

Probar el servidor de Control de aplicaciones API

Una vez que la red se configura y se implementa la aplicación, ya está listo para probar la funcionalidad  de Maple. Si todo va bien, la ventana de Salida de la aplicación en Visual Studio, debe tener algo similar a  lo siguiente:

Getting all the network interfaces.

Found 802.11

WiFi Interface MAC Address: 60-D7-E3-A0-02-CB

DHCP enabled: True

Dynamic DNS enabled: False

IP Address: 0.0.0.0

Subnet Mask: 0.0.0.0

Gateway: 0.0.0.0

SSID:Cabin in the Woods Found 802.11

WiFi Interface No IP Address

DHCP is enabled, attempting to get an IP Address Sleep while obtaining an IP Sleep while obtaining an IP Sleep while obtaining an IP Got IP

Address: 172.16.42.8

Necesitará la dirección IP para probar el punto final de la API. El extremo del estado es fácil de comprobar a través de un navegador; Asegúrese de que usted está en la misma red que el Netduino y abra una ventana del navegador y vaya a la  url. Debe mostrar una respuesta JSON. Sin embargo, recomiendo conseguir el  programa Postman para probar los extremos. Es gratuito y diseñado específicamente para probar interfaces RESTful. Le  permite publicar solicitudes además de obtener, así como una mirada de otras cosas útiles, incluyendo análisis automático de  respuestas JSON de  la forma http://direccion_ip/Status

Envío de datos de Iot en Raspberry Pi a la nube


Hoy vamos a  ver  lo fácil  que es conectar un sensor simple conectado a una Raspberry Pi a la nube de transmisión utilizando para ello  un sensor de temperatura digital, el popular DS18B20 y dos scripts de Python simples: uno para enviar los datos del sensor a la nube y el otro para recibirlo para su uso en alguna otra aplicación.

El código  para que pueda iniciarse esta disponible en un repositorio de GitHub .

CONEXIÓN DE UN SENSOR A SU RASPBERRY PI

Primero debe conectar el sensor a su Raspberry Pi. Debe conectar conectar al sensor una resistencia de Pull Uo  de 4,7 K entre  la linea de datos (que conectaremos al GPIO4 )  y la alimentacion de 3.3V

En la imagen se describe la sencilla conexión utilizando el bus 1wire con tres pines GPIO (alimentación, tierra y el pin de datos real).

Connection diagram for ds18b20 1-wire temperature sensor to Raspberry Pi GPIO

Después de hacer las conexiones  debe asegurarse de que el módulo kernel del dispositivo de comunicación 1wire esté cargado.

El procedimiento para hacerlo es ligeramente diferente entre las versiones de Raspberry Pi antes y después de enero de 2015, cuando kernel 3.18.8 se incluyó en Raspbian , la distribución de Linux más utilizada para Raspberry Pi. En las actualizaciones recientes debe modificar el archivo /boot/config.txt como se describe aquí:

# with a pre-3.18.8 kernel:
[email protected] ~ $ sudo modprobe w1-gpio &amp;&amp; sudo modprobe w1_therm

# else:
[email protected] ~ $ uname -a
Linux raspberrypi 3.18.11-v7+ #781 SMP PREEMPT Tue Apr 21 18:07:59 BST 2015 armv7l GNU/Linux
[email protected] $ sudo nano /boot/config.txt
# add this line at the bottom (and then reboot):
# dtoverlay=w1-gpio

Ahora puede buscar los dispositivos 1wire respectivos en su sistema de archivos. Cada sensor DS18B20 tiene una identificación única que aparece en este directorio de dispositivos, en nuestro caso 28-000004a365ef .

La siguiente sección muestra cómo leer los datos del sensor para que puedan publicarse en la nube.

LECTURA DE LOS DATOS DEL SENSOR

Una vez que conozca la identificación única de su DS18B20 , puede acceder a los datos del sensor de una manera más reutilizable con una función de Python como la de read_temp.py .

Al ejecutar este código también se ejecutará un ciclo corto para leer y visualizar la temperatura ambiente alrededor del sensor. Intente tocar el sensor con los dedos para ver cómo afecta las lecturas.

Ahora que el sensor está funcionando y entrega datos, es hora de enviar esos datos a la nube , la cual en esta ocasion sera ofrecida por el proveedor europeo relayr

relayr.png

Si no tiene una cuenta de desarrollador relayr , tendrá que crear una. Una vez que tenga una cuenta, puede crear un prototipo de sensor simplemente accediendo a la página de dispositivos de su dispositivo y moviendo el puntero del mouse sobre el botón con el signo más en la esquina inferior derecha.

Luego, desplácese hacia abajo y seleccione «Continuar sin un modelo» para crear el dispositivo. Ahora, cambie el lenguaje de programación a «Python» y copie el código de firmware generado, que será útil para la siguiente sección.

PUBLICACIÓN  DE SUS DATOS DE SENSOR EN LA NUBE DE RELAYR

Puede publicar sus datos usando MQTT (un protocolo para comunicar mensajes de máquina a máquina). Si aún no está instalado, tendrá que configurarlo en su Pi. El paquete paho-mqtt proporciona soporte MQTT para Python y se puede instalar fácilmente como un paquete Python con pip como este (instale pip primero si aún no lo tiene):

 pi @ raspberrypi ~ $ sudo apt-get install python-pip
 pi @ raspberrypi ~ $ sudo pip install paho-mqtt == 1.1

Sabrá si lo ha instalado con éxito si puede ejecutar esta declaración en Python sin ningún error: import paho .

A continuación, puede copiar el fragmento de muestra de Python de la página del prototipo del panel que haya visto al crear un prototipo. Para hacer esto, reemplace el ciclo while en la parte inferior del código con el de publish_temperature.py (disponible en el repositorio).

No olvide incluir la función read_temperature desde arriba y también agregar su identificación de sensor única al ciclo while (la que encontró al configurar el sensor). Alternativamente, puede usar el código en publish_data_mqtt.py , asegurándose de cambiar las credenciales (con las de su panel) y el device_id en la parte inferior de la página.

Esto le permitirá ejecutar un ciclo sin fin, leer los valores de temperatura y publicarlos uno por segundo a la nube de retransmisión.

CONSULTA DE SUS  DATOS

A medida que introduce sus datos en la nube de relayr, puede ver los valores en tiempo real a medida que cambian en el tablero de relayr.

Screen_Shot_2016-07-12_at_16.12.28.png

Ver sus datos en el tablero de instrumentos a medida que cambia es genial, pero en algún momento querrá extraer los datos para usarlos. Para ello, puede acceder a sus datos a través de MQTT de nuevo escribiendo un script simple como el Llamado fetch_data_mqtt.py en el repositorio de GitHub .

Si ejecuta esa secuencia de comandos, mostrará los mensajes MQTT en vivo que contienen los valores de datos tal como se recibieron.

Para ello, utilice el SDK de Relayr Python instalando primero los paquetes necesarios (ejecute las líneas a continuación en su pi):

sudo pip install git + https: //github.com/relayr/pythonsdk

sudo pip install relayr upgrade

Si tiene una Raspberry Pi nueva, asegúrese  de actualizar su lista de paquetes Debian e instalar algunos paquetes de desarrollador antes de instalar el paquete más nuevo de GitHub de la siguiente manera:

  pi @ raspberrypi ~ $ sudo apt-get update 
  pi @ raspberrypi ~ $ sudo apt-get install python-dev libffi-dev libssl-dev 
  pi @ raspberrypi ~ $ pip install git + https://github.com/relayr/python-sdk 

Ahora puede usar el código en receive_data.py para recibir datos de la nube. Asegúrese de cambiar la identificación de su dispositivo y el token de acceso (omitiendo la parte «Portador» del token).


En este ejemplo ha visto cómo puede conectar un sensor de temperatura simple a una Raspberry Pi y publicar sus datos en la nube de transmisión . Esto le permite ver los datos en vivo en el tablero, o exportarlos para usarlos en una aplicación. Puede usar MQTT para publicar y recibir los datos del sensor, o usar uno de los SDK de Relayr, como el SDK de Python , para acceder a los datos de manera más conveniente.

También puede usar sensores más emocionantes y publicar valores de datos más complejos que un solo flotante (es decir, una lista de tres flotantes que representan información geoespacial). Siempre que proporcione una lecturaconocida en el panel de control de relayr, mostrará sus datos en un buen widget. Y también puede publicar algo aún más complicado, como un objeto con niveles de anidación más profundos. En ese caso, el tablero mostrará un widget genérico. ¡Depende de usted y de lo que quiera hacer!

El código del ejemplo esta disponible ena GitHub (buscar relayr-raspberry-pi).

Usuario y clave por defecto en jenkins


Jenkins es una herramienta que nos ayuda en el proceso de integración continua y la entrega continua de los proyectos, independientemente de la plataforma en la que está trabajando. Es una fuente gratuita que puede manejar cualquier tipo de construcción o de integración continua pudiendo integrarse  con una serie de tecnologías de pruebas y despliegue.

La integración continua es una práctica que requiere el desarrollo de los desarrolladores integrar código en un repositorio compartido a intervalos regulares. Este concepto fue destinado a eliminar el problema de encontrar más tarde aparición de problemas en el ciclo de vida de construcción. La integración continua requiere que los desarrolladores tener construye frecuente. La práctica común es que cada vez que se produce un código de cometer, una acumulación debe ser activado.

Jenkins es gratuito     y  mantienen la antigua la 2.73.3 (Docker,FreeBSD,Gentoo,Mac OS X ,OpenBSD,openSUSE,Red Hat/Fedora/CentOS,Ubuntu/Debian,Windows y como  Generic Java package (.war)

Asimismo esta herramienta  esta disponible en su  ultima version disponible en el momento de escribir este post : la 2.93 (Arch Linux,Docker,FreeBSD,Gentoo,Mac OS X
OpenBSD,openSUSE,Red Hat/Fedora/CentOS,Ubuntu/Debian,OpenIndiana Hipster, Windows y
Generic Java package (.war)

Todas ellas  se pueden de descargar desde su sitio oficial : https://jenkins.io/download/

jenkins1.PNG

Una vez descargada la versión correspondientes  e  instalada  para comprobar que e Jenkins está en marcha, se puede acceder desde el enlace de Jenkins – http: // localhost: 8080

Este enlace se abrirá el cuadro de mandos Jenkins.

En la versión 2.93 han obviado las típicas claves por defecto(admin/Jenkins) y ahora las  credenciales se obtienen de un modo muy distinto:

  • User: admin
  • PWD :  ir a   al directorio de instalación de  .jenkins/secrets/initialAdminPassword

 

Como se puede ver,  la clave se guarda en un fichero de texto cuyo contenido nos reportara la clave del administrador ( y que por supuesto se puede cambiar)

 

jenkins.PNG

 

 

Monitorización de consumo energético con Raspberry pi


Con el fin de intentar optimizar el uso  domestico que hacemos de la energía eléctrica  ,  un seguimiento estadístico del consumo energético nos puede ayudar a conocer nuestro consumo y con ello intentar optimizarlo,   ya que  existe un máxima que afirma que no se puede optimizar  algo que no se pueda medir . Para semejante objetivo  se  pueden utilizar contadores de energía para medir   el consumo del  cuadro  de distribución de corriente alterna de une vivienda   y enviar esta información  en tiempo real  a  un logger de datos basados en una Raspebrry pi 3 por medio del protocolo RS485 (sistema de bus diferencial multipunto, ideal para transmitir a altas velocidades sobre largas distancias y a través de canales ruidosos) permitiendo enviar la información  gracias a este protocolo ,  no solo de un watimetro sino de muchos  todos  operando sobre la misma linea .

El medio físico de transmisión  de  la salida de  dichos contadores  es un par trenzado , el cual admite 32, 128 o 256 estaciones en 1 solo par, con una longitud máxima de 1200 metros operando entre 300 y 19 200 bit/s y la comunicación half-duplex (semiduplex) dependiendo del consumo de cada driver  debido   a que la transmisión diferencial permite alcanzar mayor distancia con una notable inmunidad al ruido, siempre que el bus de comunicación conserve las características de bus balanceado (dando incluso la posibilidad de una configuración multipunto).

Gracias al  sistema de bus diferencial multipunto del protocolo  RS485  , se puede  transmitir únicamente con dos  hilos   a altas velocidades incluso sobre largas distancias (10 Mbit/s hasta 12 metros y 100 kbit/s en 1200 metros)  a través de canales ruidosos (es decir compartiendo las canalizaciones eléctricas  )  , ya que el par trenzado reduce los ruidos que se inducen en la línea de transmisión.

 

En cuanto al  software necesario  para procesar la información de los watimetros   se   pueden utilizar los  siguiente  componentes de código abierto:

  • Minimalmodbus -Leer los parámetros de los contadores de energía
  • InfluxDB -Tiempo base de datos de la serie para almacenar datos
  • Grafana -Herramienta de visualización de datos basada en web

Respecto al  hardware se pueden usan los siguientes elementos:

 

Escudo RS485 SparkFun Linksprite RS485/GPIO Shield

Este  escudo ,como puede adivinar,  es el elemento estrella de esta configuración pues precisamente permite  soportar el  protocolo RS485 en  la Raspberry Pi,  de modo que  podrá tener un puerto de comunicación para su bus de campo directamente conectado a su RPi.

Aunque el RS485 a veces se considera un protocolo «arcaico», permitirá que hasta 32 dispositivos se comuniquen a través de la misma línea de datos a lo largo de una longitud de cable de hasta 1200 mt con una velocidad de datos máxima de 10Mbit / s.  (lo cual no son malos números)

Este escudo viene premontado, así que todo lo que tiene que hacer es ajustarlo directamente a tu Raspberry Pi y obtener la programación. El RS485 Shield V3 es compatible con Raspberry Pi B, B + y Raspberry Pi 2.

Nota: El escudo tiene una huella despoblada para un conector DB9. Verifique a continuación si necesita agregar el conector. De lo contrario, puede usar los terminales de tornillo.

Se ha verificado que funciona con una Raspberry Pi 3 con un escudo Linksprite RS485 y valores de lectura de un SDM120 y SDM630. Al cambiar el archivo [model].yml y crear un archivo .yml [modelo] correspondiente, debería ser posible usar otros modelos habilitados para modbus (agregar el conector). De lo contrario, puede usar los terminales de tornillo.

Cableado

Conecte un cable de par trenzado al escudo Linksprite RS485  , teniendo en cuenta que debe diferenciar el significado de cada hilo ( por ejemplo diferenciando con dos colores) y  teniendo en cuanta que cada  color que deberían ir   a la A y la B.

Conecte el otro extremo del cable al terminal de Modbus del metro de la energía. Asegúrese de que el mismo color va a la A como uno conectarse A en el escudo y lo mismo para B. Si más metros van a conectar, seguir conectando los medidores de la serie: A A, B a B. Un cable de encadenamiento puede ser útil.

 

Se recomienda utilizar resistencias de terminación al final de la cadena.  Para asegurar una conexión buena puede ser una buena idea para soldar un cable de encadenamiento para conectar todo A terminales en serie y todos los terminales B en serie.

Consulte esta documentación para obtener más información: https://www.maximintegrated.com/en/App-Notes/index.MVP/ID/763

Requisitos previos

Descargar tramo de Raspbian Lite y Flash en tarjeta SD, por ejemplo mediante el uso de grabador. Monte el protector de RS485 de cabecera de GPIO de la Raspberry Pi. Poder Rasberry Pi y contraseña de configuración (passwd) y SSH, localización, etc. utilizando la red:

$ sudo raspi-config

Con la configuración abierta  de   raspi-confi, ir a: Opciones de la interfaz 5 -> Serie P6 y Deshabilitar el shell de login serial y Habilitar hardware de puerto serie (es decir NO y luego sí)

Para poder utilizar el UART es necesario deshabilitar el Bluetooth incorporado ya que comparte el UART. Para ello, agregue las siguientes líneas a /boot/config.txt

# Disable built in Bluetooth 
dtoverlay=pi3-miniuart-bt

fuente

Para deshabilitar la consola serie, necesita editar la /boot/cmdline.txt archivo para parecerse a la siguiente línea:

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

fuente

Instalar Python Package Manager PIP si no ya instalado (no instalado en Raspbian Lite):

$ sudo apt-get install python-pip

Instalar Git si no ya instalado (no instalado en Raspbian Lite):

$ sudo apt-get install git

Instrucciones de instalación

Puede seguir las instrucciones de GitHub para instalar código fuente InfluxDB, Grafana y medidor registrador de energía, resumidamente son las siguintes:

Instalar InfluxDB *

Instrucciones paso a paso
  • Agregue el repositorio InfluxData
      $ curl -sL https://repos.influxdata.com/influxdb.key |  sudo apt-key add -
     $ source / etc / os-release
     $ test $ VERSION_ID = " 9 " && echo " deb https://repos.influxdata.com/debian stretch stable " |  sudo tee /etc/apt/sources.list.d/influxdb.list
  • Descargar e instalar
      $ sudo apt-get update && sudo apt-get install influxdb
  • Comience el servicio de influxdb
      $ sudo service influxdb start
  • Crea la base de datos
      $ afluencia
     CREAR BASE DE DATOS db_meters
     salida

*fuente

Instalar Grafana *

Instrucciones paso a paso
  • Añadir repositorio APT
      $ echo " deb https://dl.bintray.com/fg2it/deb-rpi-1b jessie main " |  sudo tee -a /etc/apt/sources.list.d/grafana.list
  • Añadir clave de Bintray
      $ curl https://bintray.com/user/downloadSubjectPublicKey ?  nombre de usuario = bintray |  sudo apt-key add -
  • Ahora instala
      $ sudo apt-get update && sudo apt-get install grafana
  • Comience el servicio usando systemd:
      $ sudo systemctl daemon-reload
     $ sudo systemctl start grafana-server
     $ systemctl status grafana-server
  • Habilite el servicio systemd para que Grafana comience al arrancar.
      $ sudo systemctl enable grafana-server.service
  • Vaya a http: // localhost: 3000 e inicie sesión usando admin / admin (recuerde cambiar la contraseña) * source

Instalar Energy Meter Logger:

  • Descargue e instale desde Github
      $ git clone https://github.com/samuelphy/energy-meter-logger
  • Ejecute el script de configuración (debe ejecutarse como root (sudo) si la aplicación necesita ser iniciada desde rc.local, ver abajo)
      $ cd energy-meter-logger
     $ sudo python setup.py install
  • Hacer que el archivo de script sea ejecutable
      $ chmod 777 read_energy_meter.py
  • Edite meters.yml para que coincida con su configuración
  • Pruebe la configuración ejecutando:
      ./read_energy_meter.py
     ./read_energy_meter.py --help # Muestra todos los parámetros disponibles
  • Para ejecutar el script python al inicio del sistema. Agregue a las siguientes líneas hasta el final de /etc/rc.local pero antes de salir:
      # Start Energy Meter Logger
     /home/pi/energy-meter-logger/read_energy_meter.py --interval 60 > /var/log/energy_meter.log &

    El registro con posibles errores se encuentra en /var/log/energy_meter.log

Configuración del medidor de energía

En este proyecto energía Modbus activado se utilizan wtimetros de la marca  Eastron. El autor ha usado dos modelos  :uno normales  de una sola  fase y otro de tres fases . Para capturar los datos muchos de los registros y los registros de interés se especifiquen en dos archivos de configuración: SDM120.yml y SDM630.yml. Los parámetros de estos registros se almacenan como 32 bits flotante  (tamaño de 2 registros) y deben ser leídos por código función 04, fuente : code = 4, 2 registers)

De la documentación Eastron obtenemos el siguiente mapa de registro para configurar nuestros archivos de configuración.

Si se utiliza un medidor de energía diferentes, simplemente deberá configurar  su propio archivo de configuración y añadir a meters.yml donde también se define la configuración modbus para cada metro.

meters: 
   - name : Meter Group 1 
     type : SDM120.yml 
     id : 1     # this is the slave address number 
     baudrate : 9600   # Baud 
     bytesize : 8 
     parity : even # none | odd | even 
     stopbits : 1 
     timeout  : 0.5   # seconds 

Grafana

Grafana abierto (e.g. http://raspberrypi.local:3000) y entrar con admin / admin.

Empezar por crear un origen de datos:

  • Nombre: Dar un nombre de su elección
  • Tipo: Seleccione InfluxDB
  • Acceso: proxy
  • Base de datos: db_meters
  • ¡Agregar!

Añadir un panel de control y haga clic en gráfico. Haga clic en «Panel de título» y edición. Haciendo clic en «seleccionar medición», «+», «valor de campo» etcetera puede seleccionar los parámetros que interesa analizar.

Una cosa vale la pena destacar es en «Opciones» donde debe ingresar el «intervalo de tiempo mínimo» que debe ser el mismo que el tiempo entre mediciones.

En la pestaña de «Ejes» puede la unidad para la medición.

NOTAS:

En caso  de  que no se registren las lecturas   en la Raspberry Pi  ,lo mejor es empezar por investigar el archivo de registro. El nivel de registro puede establecerse como parámetro cuando se ejecuta el script:

read_energy_meter.py --log DEBUG | INFO | WARNING | ERROR 

Al registro de configuración para depuración usted obtiene más información. Si usted ha de  escribir el registro en un archivo puede buscar en el registro de error usando este comando:--logfile

$ cat energy.log | grep -in 'error' | awk -F: '{print $2" - Line number : "$1}' 

Asimismo asegúrese de que todos sus medidores conectados en el mismo están configurados con la misma velocidad en baudios.  También es  muy   importante definir un tiempo de espera corto, aproximadamente 10 ms,(con entre parámetro así definido  se puede hacer que se tolere  si se produce errores de CRC al azar).

 

Mas información en  https://www.hackster.io/samuelphy/energy-meter-logger-6a3468