Detector de movimiento inteligente


En este ejemplo    volveremos a  usar  un economico NodeMCU ,junto con un  sensor de movimiento PIR  y la plataforma de IoT  Carriots para  construir, usando el IDE de Arduino, un  detector de movimiento inteligente para comerciales y hogar.

El tema  gira en torno a la seguridad de un edificio o casa o una zona restringida detectando cualquier movimiento dentro de un rango específico con un sensor PIR . Gracias al  IoT, además de detectar objetos en movimientos podemos hacer  muchas más cosas como por ejemplo:

  • Encender un dispositivo mediante un relé (en el ejemplo es una luz durante unos 30 segundos).
  •  Al mismo tiempo enviar un correo electrónico al usuario, utilizando la IOT – plataforma Carriots sobre WIFI.
  • El relé se puede conectar a cualquier luz del dispositivo, alarma, cámara, sistema de seguridad…
  • Incluso el disparo puede ser SMS, llamar a las autoridades, llamando a otros servicios…

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  de Iot   Carrriots,  la cual  nos va  permitir monitorear  y controlar el ESP8266.

Los pasos  a seguir   para conectar un ESP8266   a  Carriots   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.

Carriots es una Plataforma como Servicio (PaaS en sus siglas en inglés) diseñada para proyectos del Internet de las Cosas (IoT) y de Máquina a Máquina (M2M)

carriots

Carriots es una plataforma IoT creada en España  que  permite crear potentes productos y servicios IoT  haciendo posible conectar fácilmente “sus cosas” al Internet de las Cosas.

Se  pueden construya sus apps inteligentes con Carriots en pocos pasos.

  1. Conectar Dispositivos
  2. Recopilar Datos
  3. Gestionar Dispositivos y Datos
  4. Construir APPs

Principales ventajas

  • Listo para empezar a desarrollar.
  • Minimizar tiempo de desarrollo.
  • Gestión simplificada de múltiples proyectos: Arquitectura de 7 niveles
  • Amplia variedad de APIs y potente SDK: REST API y SDK
  • Escalabilidad inmediata
  • Inicio gratuito y pago por uso.
  • Alojamiento simplificado: Oferta PaaS para escalabilidad fiable.

Hardware

Ahora preparado el entorno , necesitamos el hw  que lo permita , el cual  como vamos a ver,  es muy simple reduciendose a la placa o NodeMCUuna placa de relé, el sensor PIR  y una fuente de 5V DC

Sensor PIR

El sensor PIR usado , es del tipo HC-SR501, de bajo coste   el cual es ampliamente utilizado en diversos equipos eléctricos de detección automática, productos para el control automático especialmente a batería.Tiene alta sensibilidad, alta fiabilidad, bajo consumo de energía, el modo de operación de bajo voltaje.

Especificaciones:

  •  Dimensiones: Cerca de 3,2 x 2,4 cm (L x W).
  •  Rango de tensión: 5V-20V DC.
  •  Corriente estática: < 50uA
  •  Voltaje de salida: 3,3 V (alto) / 0V (bajo)
  •  Modo del disparador: L (no se puede gatillo repetida), H gatillo repetida (Repetición predeterminado de disparo)
  •  El Tiempo de retardo: 0,3 seg 18 seg (ajustable)
  •  Temperatura De funcionamiento: -15 C a 70

 Placa de rele

Por  precio  es mucho mas asequible optar por una placa    de  2 reles    con salida de relé máxima: DC 30V / 10A, AC 250V / 10A. Es  importanet   que el interfaz de tarjeta de relé sea de 5v . En nuestro caso es de 2 canales y cada canal necesita 15-20mA actual controlador

Este tipo de placas es de fácil instalación por el microcontrolador como Arduino, 8051, AVR, PIC, DSP, BRAZO, MSP430, PLC, lógica TTL pues solo ha que conectar la alimentacion  y dos cables de datos en caso de necesitar los dos canales 

Resumiendo , estos son los componentes  necesarias:

  • Placa de desarrollo de NodeMcu Lua WIFI Internet de las cosas basado en ESP8266 – 1 (capacidad de MCU y WIFI)
  • Sensor PIR ( hemos hablado  en este blog )
  • 1 módulo de relé con opto aislamiento de  5V1
  • Fuente de alimentación conmutada  220V/5v ( nos sirve cuaqluier cargador de movil  con salida microusb)
  • Placa Protoboard

Diagrama del circuito:

El circuito   no incluye dificultad alguna ,pues se reduce a conectar el sensor PIR a +5V  y la salida binaria al pin D2, el módulo de rele a +5v   y al pin D2    y por  supuesto la alimentación del circuito que puede ser bien a baterías  o  bien por medio del  propio micro-usb   usado para programar el  NodeMcu

Resumiendo las conexiones con las siguientes:

  • NodeMCU (ESP8266 Dev Kit) D1—> INI del relé
  • NodeMCU (ESP8266 Dev Kit) D2—> Digital sensor PIR
  • NodeMCU (ESP8266 Dev Kit) VCC—> VCC (+) de la batería
  • NodeMCU (ESP8266 Dev Kit) GND—> GND (-) de la batería
  • Relé de VCC—> VCC (+) de la batería
  • Relé de tierra—> GND (-) de la batería
  • PIR Sensor VCC—> VCC (+) de la batería
  • PIR Sensor de tierra—> GND (-) de la batería

Software

Una vez el hardware  montado nos toca escribir el código  el código utilizando el IDE de Arduino para hacer que NodeMCU trabaje con un relé, sensor de movimiento PIR y utilizar IOT plataforma carriots sobre WIFI

El autor se  encontró con  algunos puntos problemas  en el diseño del programa  para ejecutar en la placa NodeMcu;

  • Compruebe que los pines de NodeMcu  están dando la entrada o salida correcta como se están asumiendo, por ejemplo, asegurándose  que usted no está tomando el pin 4 (GPIO) como un pin de entrada asi que por defecto que este pin debe leer…
  • Utilizar un método directo de get y post HTTP en lugar de utilizar una función de visualización por BLYNK o Thinger.io.
  • Observe  que el PIR da salida permanentemenet alta durante un par de envíos pero se necesita traer retraso para evitar el envío de múltiples correos electrónicos. Con algunos servicios como BLYNK este retraso causa un problema  asi que  es mejro a llamar a esa función una vez despues  de 6 o 7 seg.
  • Una vez satisfecha la condición de if loop, llamar a una función, en lugar de escribir todo con el bucle. Esto aporta claridad del código y ayuda en la resolución de problemas.
  • Se  puede  ajustar la sensibilidad del PIR para reducir el tiempo que permanece alta.

A continuación veamos el codigo completo del sw  que habrá que subir  a la placa desde el entorno  de Arduino:

#include “ESP8266WiFi.h”

const char * ssid = “NETGXXXXX”;   //red wifi a la que se conectara

const char * clave = “XXXXXXXXX”;  //clave red wifi para coenctarse

const char * servidor = “api.carriots.com”;

const String APIKEY = XXXXXXXXXX”; //Sustituir con su apikey de Carriots

 const  String DEVICE = “[email protected]”; //Reemplazar por el id_developer del dispositivo de  carriots

int ledpin = 4;

pirpin INT = 12;

int pirstate = LOW;

int val = 0;

void setup() {

Serial.Begin(115200);

Delay(10);

pinMode(ledpin,OUTPUT);

pinMode(pirpin,INPUT);

Serial.println(“calibrando”);

for (int i = 0; i < 20; i ++) {

Serial.Print(“.”);

Delay(1000);

}

//iniciar wifi

Serial.println();

Serial.println();

Serial.Print (“conectarse”);

Serial.println(SSID);

WiFi.begin (ssid, clave);

while  (WiFi.status()! = WL_CONNECTED) {

Delay(500);

Serial.Print(“.”);

}

Serial.println(“”);

Serial.println (“Wi-Fi conectado”);

Serial.println (“dirección IP:”);

Serial.println(WiFi.localIP());

}

//función para hablar con la plataforma Carriot

void sendStream()

{

String txt = “”; //Texto para enviar

if (pirstate == HIGH)

{/ / alarma

txt = “Detecta movimiento;”

} else {/ / alarma en

txt = “Algo mal”;

}

 

Serial.println(txt);

Serial.println(Val); / / para fines de depuración

Client WiFiClient;

const int httpPort = 80;

if  (client.connect (servidor, 80)) {/ / si hay una conexión exitosa

Serial.println(F(“Conectedo”));

//Construir el campo de datos

String json = “{\”protocol\”:\”v2\”,\”device\”:\””+DEVICE+”\”,\”at\”:\”now\”,\”data\”:{\”light\”:\””+txt+”\ “}}”;

//Realizar una solicitud HTTP

Client.println (“POST /streams HTTP/1.1”);

Client.println (“Host: api.carriots.com”);

Client.println (“Accept: aplicación/json”);

Client.println (“User-Agent: Arduino-Carriots”);

Client.println (“Content-Type: aplicación/json”);

Client.Print (“carriots.apikey:”);

Client.println(APIKEY);

Client.Print (“Content-Length:”);

int thisLength = json.length();

Client.println(thisLength);

Client.println (“conexión: cerrar”);

Client.println();

Client.println(JSON);

}

Else {}

//Si no tiene una conexión con el servidor:

Serial.println (F (“Conexión fallida”));

}

}

 

void loop() {}

Val = digitalRead(pirpin);

Serial.println(Val);

if(Val == HIGH) {}

digitalWrite(ledpin,HIGH);

if  (pirstate == LOW) {

Serial.println (“movimiento detectado”);

pirstate = HIGH;

Serial.println (F (“secuencia de enviar”));

sendStream();

Delay(30000);

}

/ * {while(client.available())}

String linea = client.readStringUntil(‘\r’);

Serial.Print(line);

Delay(30000);

} */

}

Else {}

digitalWrite(ledpin,LOW);

if(pirstate == HIGH) {}

Serial.println (“movimiento detectado correo enviado”);

pirstate = LOW;

}

}

}

Programación de disparadores de Carriots enviar Email:

Una vez   que  tenga desplegado el  sw en su  placa NodeMcu  ,la capacidad de activar un correo debe ser  programado o configurado en la plataforma de Internet para este producto que está utilizando (la plataforma Carriots IOT) . Si no sabe como hacerlo en el siguiente video podemso  ver  como  familiarizarse con las funciones y cómo utilizarlas:

 

Obviamente esto podría programarse para llamada, o un texto o una alarma a la policía o quien sea. !Como podemos adivinar   las posibilidades  son infinitas!.

Fuente 

Anuncios

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.

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

 

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

 

Futurista ambientador


Es  reconfortante tener una fragante casa floral de primavera para senirse como si estuviera en medio de un jardín de lavanda en lugar de una vivienda tradicional  donde probablemente viva, de heho eso es es que precisamente por esto, muchas de las diferentes empresas han creado para los amantes del aire  una multitud de aromas.

Hay muchos ambientadores en el mercado: desde los antiguos aerosoles manuales hasta los disparados por temporizador pero los últimos, aunque son automáticas, son bastante tontas pues seguirán rociando incluso si no estás cerca para  sentir el olor, desperdiciando esas recargas de fragancia no tan baratas.

¿No sería agradable si su refrescante de aire fuera capaz de comunicarse con otros dispositivos y disparar solo cuando realmente lo necesite ?

En este proyecto IgorF2 diseñó   un ambientador  conectado , usando algunas impresiones 3D, NodeMCU, IFTTT y Adafruit.IO.

!

¡Siempre tenga en cuenta que este es un prototipo experimental y podría usarse con precaución!

Paso 1: herramientas y materiales

Las siguientes herramientas y materiales fueron utilizados en este proyecto:

  • impresora 3d. En mi caso, utilicé Voolt3D, una impresora 3D basada en Grabber i3;
  • 1.75mm PLA de su color favorito;
  • Alambre de soldar. Tendrás que soldar algunos cables;
  • Destornillador. Lo necesitará para montar su caso;
  • Tornillos M2x6mm (x11) ;
  • Servomotor MG995
  • NodeMCU LoLin (- La versión NodeMCU LoLin tiene un pin UV, que está conectado al terminal USB 5V. De esta forma, es posible usar los 5 V de un cargador USB, pasando por la placa NodeMCU, para alimentar el servomotor. Otras versiones de NodeMCU no tienen este pin UV (tienen un pin reservado en su lugar). De esta forma, no podrá alimentar su servomotor directamente si usa una de esas otras versiones;
  • NeoPixel 16 x WS2812 5050 RGB LED
  • Botón pulsador de 12x12x12 mm
  • Cable MiniUSB , para la conexión entre NodeMCU y la computadora (para cargar el código);
  • Cargador USB 5V, 2A ( cargador de teléfono, por ejemplo) para alimentar el circuito;
  • 5 cables de puente hembra-hembra;
  • 3 cables de puente macho-hembra;
  • Recambio de aire fresco.

 

Paso 2: impresión en 3D

Imagen de impresión 3D

El modelo 3d se diseñó utilizando Fusion 360.

El modelo se compone de cinco partes diferentes:

  • Frente: cuerpo principal del gadget. Aquí es donde algunos de los componentes electrónicos (anillo LED y botón pulsador) y el servomotor se unirán;
  • Funda trasera: se usa para cerrar el cuerpo de la caja. Aquí es donde se instalarán NodeMCU y el recambio de renovación;
  • Botón : esta parte está conectada al botón;
  • Tapa: esta parte se enrosca en la parte posterior de la caja y permite reemplazar la recarga
  • Soporte: esta parte se utiliza para bloquear el anillo LED y el botón en su posición.

Puede descargar todos los archivos stl en https://www.thingiverse.com/thing:2613327

Este es un prototipo experimental. Tenga en cuenta que fue diseñado para un modelo determinado de recarga de renovación de aire (una Glade, cuyas dimensiones en milímetros puede encontrar en las imágenes). Si desea utilizar un modelo diferente, envíe un comentario y puedo ver si es posible cambiar las dimensiones del modelo para adaptarlo a sus necesidades.

Si no tiene una impresora 3D, aquí hay algunas cosas que puede hacer:

  • Pídale a un amigo que lo imprima para usted;
  • Encuentre un espacio para hackers / fabricantes cerca. Las piezas utilizadas en este modelo se pueden imprimir rápidamente (alrededor de 9 horas).Algunos espacios de hackers / fabricantes solo le cobrarán por los materiales utilizados;
  • ¡Improvisar! Puede intentar ensamblar una estructura sin partes impresas en 3D;

Paso 3: Explicación del circuito

Imagen del circuito explicado

Para este proyecto se utiliza  el modulo  NodeMCU LoLin para controlar el gadget. NodeMCU es una plataforma de código abierto IoT, que se ejecuta en un SoC Wi-Fi ESP8266 de Espressif Systems. Su hardware se basa en el módulo ESP-12.

La placa de desarrollo conecta una red Wi-Fi determinada y recibe algunos comandos de Adafruit.io plafrom. Un anillo NeoPixel se utiliza para la indicación del estado (si la conexión Wi-Fi fue exitosa, o si se recibió un comando dado, por ejemplo). El tablero de control también acciona un servomotor, que actuará en una recarga de renovación de aire. Un botón pulsador se usa para comandos locales.

Se utilizó un cargador USB de 5 V y 2 A para alimentar la placa de control y todos los periféricos. Es importante observar que cuando se activa el servo, se toma una corriente máxima considerable de la fuente de alimentación. De esta forma, no use el puerto USB de una computadora (o cualquier otro dispositivo) para alimentar su circuito. Podría reiniciarse o incluso dañarse.

Las figuras ilustran cómo se conectaron los componentes.

Paso 4: Prepare la electrónica

Imagen de Prepare the Electronics

Algunos de los componentes utilizados en este proyecto deben soldarse primero. En este paso, mostraré cómo se prepararon para una conexión más fácil de los componentes.

1. Terminales Solder NeoPixel

Los anillos NeoPixel generalmente vienen sin cables conectados a sus terminales. Esto significa que tuve que soldar algunos cables para la conexión de los LED al microcontrolador.

Para eso use tres puentes femeninos y femeninos. Corte un lado del puente y suelde sus cables en los terminales de anillo NeoPixel. El otro extremo de cada jumper estará con un terminal hembra, que se conectará más adelante en los pines NodeMCU.

  • Cable rojo = 5V
  • Cable negro = GND
  • Cable amarillo = entrada de datos

2. Terminales de botón de soldadura

Para conectar el botón pulsador al NodeMCU, primero tuve que soldar algunos cables de puente en dos terminales del botón.

Use dos jumpers femeninos y femeninos. Cortar un lado del jumper y suelde sus hilos al botón.

  • Cable verde = entrada de datos
  • Cable negro = GND

3. Servomotor MG995

Los servomotores generalmente tienen un terminal hembra de tres pines, pero desafortunadamente no se puede conectarse directamente al NodeMCU debido a la posición de los pines. Para conectar esos componentes usé un cable de puente macho-hembra.

Paso 5: Ensamblar los componentes

Imagen de Montar los Componentes

En este paso, veremos cómo ensamblar los componentes dentro de la estructura impresa en 3D. Si no desea imprimir el caso por algún motivo, puede saltar al siguiente paso y ver cómo está conectado el circuito.
Una vez que se imprime su estructura, ensamblar el circuito es bastante simple:

  1. Coloque el anillo de LED dentro de la caja frontal ;
  2. Coloque el botón impreso en 3D dentro del anillo;
  3. Coloque el botón pulsador en el medio del soporte impreso en 3D;
  4. Monte el soporte dentro de la caja frontal con cuatro pernos M2x6mm;
  5. Monte el servomotor dentro de la carcasa delantera con cuatro tornillos (los que generalmente vienen con el servo);
  6. Coloque la bocina del servo de acuerdo con la imagen y bloquee su posición con un perno. Cuando el servo está a 90 grados, la retención debe ser horizontal;
  7. Fije NodeMCU dentro de la caja trasera usando cuatro pernos M2x6mm;
  8. Inserte el relleno de renovación de aire dentro de la cámara;
  9. Thead la tapa, cerrando la cámara;
  10. Conecte el circuito (en el siguiente paso le mostraré cómo hacerlo);
  11. Cierre la caja con tres tornillos M2x6mm.

Después de eso, estará listo para subir el código.

Paso 6: Cableado del circuito

Imagen de Wire Up the Circuit

Una vez que los componentes se colocaron dentro de la caja, conecte los cables de acuerdo con los esquemas.

  • NeoPixel 5V (cable rojo) => NodeMcu 3V3
  • NeoPixel GND (cable negro) => NodeMcu GND
  • Entrada de datos NeoPixel (cable amarillo) => NodeMcu GPIO 15 (pin D8)
  • Botón pulsador 1 (cable verde) => NodeMcu GPIO 14 (pin D5)
  • Pulsador 2 (cable negro) => NodeMcu GND
  • MG995 servo 5V (cable rojo) => NodeMcu VU pin
  • MG995 servo GNG (cable marrón) => NodeMcu GND
  • Servo señal MG995 (cable naranja) => NodeMcu GPIO 12 (pin D6)

Paso 7: Configurar NodeMCU en Arduino IDE

Imagen de Setup NodeMCU en Arduino IDE

Para este proyecto se utiliza  Arduino IDE para programar  el NodeMcu. Es la forma más fácil si ya has usado un Arduino antes, y no necesitarás aprender un nuevo lenguaje de programación, como Python o Lua, por ejemplo.

Si nunca has hecho esto antes, primero tendrá que agregar el soporte de la placa ESP8266 al software Arduino.

1. Descargue e instale la última versión de Arduino IDE

Puede encontrar la última versión para Windows, Linux o MAC OSX en el sitio web de Arduino: https://www.arduino.cc/en/main/software

Descárguelo gratis, instálelo en su computadora y ejecútelo.

2. Agregar el tablero ESP8266

Arduino IDE ya viene con soporte para muchas placas diferentes: Arduino Nano, Mine, Uno, Mega, Yún, etc. Desafortunadamente ESP8266 no está por defecto entre esas placas de desarrollo soportadas. Por lo tanto, para subir sus códigos a una placa base ESP8266, primero deberá agregar sus propiedades al software de Arduino.

  • Navegue a Archivo> Preferencias (Ctrl +, en el sistema operativo Windows);
  • Agregue la siguiente URL al cuadro de texto Gestor de tableros adicionales (el que está en la parte inferior de la ventana de Preferencias):

http://arduino.esp8266.com/stable/package_esp8266com_index.json

  • Si el cuadro de texto no estaba en blanco, significa que ya había agregado otras placas antes en Arduino IDE. Agregue una coma al final de la URL anterior y la anterior.
  • Presiona el botón “Aceptar” y cierra la ventana de Preferencias.
  • Navegue hacia Herramientas> Tablero> Administrador de tableros para agregar su placa ESP8266.
  • Escriba “ESP8266” en el cuadro de texto de búsqueda, seleccione “esp8266 por ESP8266 Community” e instálelo.

Ahora su IDE de Arduino estará listo para trabajar con muchas placas de desarrollo basadas en ESP8266, como el ESP8266 genérico, NodeMcu (que utilicé en este tutorial), Adafruit Huzzah, Sparkfun Thing, WeMos, etc.

3. Agregar las bibliotecas

Las siguientes bibliotecas se usarán para nuestro código Arduino. Descargue las siguientes bibliotecas:

Navegue a Boceto-> Incluir biblioteca-> Administrar bibliotecas … en tu IDE de Arduino y agrega las bibliotecas de arriba.¡Ahora que su entorno de desarrollo está listo, pasemos al siguiente paso!

Paso 8: Configuración de Adafruit.IO

Imagen de la configuración de Adafruit.IO

Hay muchos servicios de registro de datos disponibles para comunicar un microcontrolador a la web. Con esos servicios, puede cargar / descargar datos desde / hacia la nube y hacer muchas cosas interesantes.
Adafruit.IO es uno de esos servicios gratuitos. ¡Es realmente fácil de usar y promete traer Internet de las cosas a todos!

Crear Adafruit IO Web Feed

  • Regístrese en https://io.adafruit.com/
  • En Feeds> Crear un nuevo feed, agregue un nuevo feed denominado “IoT air freshner command”. Creará una base de datos, y la usaremos para almacenar los comandos recibidos por el gadget.

En el siguiente paso, veremos cómo configurar IFTTT, otra plataforma utilizada  en este proyecto. La idea aquí es simple: IFTTT tendrá configurados algunos desencadenantes y enviará algunos datos a la plataforma Adafruit.IO cuando una lógica dada sea verdadera. El gadget podrá leer los datos almacenados en un feed determinado en Adafruit.IO, ejecutar un poco de lógica y realizar algunas acciones.

También es un buen momento para copiar su clave Adafruit.IO, que luego será utilizada para permitir que su dispositivo acceda a la base de datos. Navega por Configuración> Ver clave AIO y copia el código de tecla activa. Lo necesitará para su código Arduino (NodeMCU) en los próximos pasos.

Paso 9: Configuración IFTTT

Imagen de la configuración IFTTT

IFTTT es una plataforma gratuita que ayuda a conectar aplicaciones y dispositivos. Puede usarlo para conectar su teléfono inteligente con otros dispositivos, o para compartir datos entre sus servicios web favoritos (como Google, Facebook, Twitter, Instragram, etc.) y otros dispositivos físicos, por ejemplo. ¡Y la mejor parte es que es realmente fácil de usar!

IFTTT usa una lógica “si esto, luego eso”, donde “esto” representa un servicio que activará una acción determinada dada por “eso”. De esta forma, creará pequeños applets que conectan los servicios y dispositivos web. Para el proyecto descrito en este tutorial, hay varias manzanas que se te ocurren. Por ejemplo, los siguientes ejemplos podrían usarse para activar su dispositivo (“esto”):

  • se hace clic en un botón virtual en un teléfono;
  • todos los días en un momento dado;
  • un teléfono inteligente (GPS) llega a una ubicación determinada;
  • se recibe una notificación por correo electrónico.

En nuestros ejemplos, “ese” valor siempre será un enlace a Adafruit.IO, donde los comandos (resultado de un desencadenante dado) se almacenarán, y más tarde serán leídos por el NodeMCU.

Primero tendrá que iniciar sesión en:https://ifttt.com/

Luego instale la aplicación IFTTT en su teléfono inteligente. Puedes encontrarlo en Google Play Store:https://play.google.com/store/apps/details?id=com.ifttt.ifttt

En el sitio web, vaya a Nuevo applet (haga clic en el botón de flecha al lado de su inicio de sesión para acceder al menú).

Paso 10: Applet # 1 – The Lazy Boy

Imagen de Applet # 1 - The Lazy Boy

Para este applet crearemos un botón virtual que activará su gadget IoT. ¡En nuestro caso, significa que no tendrá que levantarse y encender su refrescante de aire! Haga clic en un botón, aguarde y respire profundamente.

Crear el applet en el sitio web:

  • Haga clic en + Esto;
  • Escriba “botón” en el cuadro de texto del servicio Seach y seleccione Botón widget> Presione botón . Tal como se describe en el sitio web de IFTTT, creará un activador que se activará cada vez que presione el botón;
  • Ahora elija + Eso ;
  • Escriba “adafruit” y seleccione Adafruit> Enviar datos a Adafruit IO . Esto enviará datos a un canal de información en su cuenta IO de Adafruit siempre que el activador que configuró previamente ( + Esto ) esté activado;
  • Configure el nombre del feed como “IoT air freshner command” y Data para guardar como “botón”.
  • Termina tu applet y enciéndelo.

Crea un botón virtual en dispositivos Android:

  • Mantenga presionado el fondo. Y elige Widgets ;
  • Búsqueda de IFTTT Small 1 x 1;
  • Ahora elija Enviar datos a IoT air freshner command feed;
  • Se creará un botón con el ícono de Adafruit.

Pruebas:

  • Haga clic en el botón que acaba de crear;
  • En https://io.adafruit.com/, vaya a su feed de comandos de renovación de aire IoT y verifique si se recibió el comando. Mostrará la última vez que se recibió la acción si funciona correctamente.

En pasos adicionales, le mostraré cómo crear el código para su ESP8266 para realizar una acción cuando se recibe el comando.

Paso 11: Applet # 2 – IIIIIIII es Tiiiiiime!

Imagen de Applet # 2 - IIIIIIIIt es Tiiiiiime!

Para este applet, crearemos un disparador de temporizador para su gadget de IoT, que se activará en determinados momentos. Reloj de alarma perfumado listo para despertarte!

Crea el applet en el sitio web:

  • Haga clic en + Esto ;
  • Escriba “Fecha” en el cuadro de texto del servicio Seach y seleccione el widget Fecha y hora> Todos los días a las . Tal como se describe en el sitio web de IFTTT, creará un disparador que se dispara todos los días en un momento determinado;
  • Haga clic en + Eso ;
  • Escriba “adafruit” y seleccione Adafruit> Enviar datos a Adafruit IO. Esto enviará datos a un feed en su cuenta IO de Adafruit siempre que el activador que configuró previamente (+ Esto) esté activado;
  • Configure el nombre del feed como “IoT air freshner command” y Data para guardar como “time”;
  • Termina tu applet y enciéndelo.

Pruebas:

  • Para probar si está funcionando, configure el tiempo de activación por un minuto después de su hora actual. Y espéralo;
  • En https://io.adafruit.com/ , vaya a su feed de comandos de renovación de aire IoT y verifique si se recibió el comando. Mostrará la última vez que se recibió la acción si funciona correctamente.

Paso 12: Applet # 3 – ¡Hogar, dulce hogar!

Imagen de Applet # 3 - Home, Sweet Home!

Para este applet, crearemos un activador de ubicación para su gadget IoT, que se activará cada vez que ingrese a un área específica (su hogar, por ejemplo).Utilizará el servicio de Localización de su teléfono (posición de GPS) para determinar si se acerca a una ubicación específica.

Crear el applet en el sitio web:

  • Haga clic en + Esto ;
  • Escriba “ubicación” en el cuadro de texto del servicio Seach y seleccione widget de ubicación> Ingrese un área . Tal como se describe en el sitio web de IFTTT, creará un activador que se activará cada vez que ingrese a una ubicación específica;
  • Especifique la dirección de su ubicación;
  • Haga clic en + Eso ;
  • Escriba “adafruit” y seleccione Adafruit> Enviar datos a Adafruit IO . Esto enviará datos a un feed en su cuenta IO de Adafruit siempre que el activador que configuró previamente (+ Esto) esté activado;
  • Configure el nombre del feed como “comando IoT air freshner” y datos para guardar como “ubicación”;
  • Termina tu applet y enciéndelo.

Pruebas:

Para probar si funciona, ¡tendrá que caminar un poco! Tienes que salir de la ubicación que especificaste y volver allí. :RE

Paso 13: Applet # 4 – ¡Tiene correo!

Imagen de Applet # 4 - ¡Tienes correo!

Para este applet, crearemos un activador de notificación para su gadget IoT, que se activará cada vez que se reciba un correo electrónico en su cuenta de gmail. Si un tono de llamada y una notificación de vibración no fueran suficientes, ¡ahora puede agregar una notificación de olor para los mensajes entrantes!

Crea el applet en el sitio web:

  • Haga clic en + Esto ;
  • Escriba “gmail” en el cuadro de texto del servicio Seach y seleccione widget de Gmail> Cualquier correo electrónico nuevo en la bandeja de entrada . Tal como se describe en el sitio web de IFTTT, creará un activador que se activará cada vez que llegue un nuevo mensaje a Gmail.
  • Haga clic en + Eso ;
  • Escriba “adafruit” y seleccione Adafruit> Enviar datos a Adafruit IO . Esto enviará datos a un feed en su cuenta IO de Adafruit siempre que el activador que configuró previamente (+ Esto) esté activado;
  • Configure el nombre del feed como “comando IoT air freshner” y datos para guardar como “correo”;
  • Termine su applet y enciéndelo.

Pruebas

  • Para probar si funciona, envíelo y envíe un correo electrónico;
  • En https://io.adafruit.com/ , vaya a su feed de comando de renovación de aire IoT y verifique si se recibió el comando. Mostrará la última vez que se recibió la acción si funciona correctamente.

Paso 14: Código ESP8266

Imagen del código ESP8266

Ahora que sus activadores están configurados, trabajemos en su código ESP8266.

Básicamente, su gadget se conectará a una red wi-fi y esperará hasta que se reciba un nuevo comando en Arduino.IO. Cada vez que se recibe un mensaje, el renovador de aire IoT realizará sus acciones (mover un servo motor para liberar un poco de perfume, cambiar los colores del LED) y regresar para el estado inactivo. El circuito también usará un botón como entrada.

Para cargar su código, seleccione NodeMCU 0.9 (Módulo ESP-12) (si está utilizando un NodeMCU) con una velocidad de carga de 11520 kbps.Desconecte el servomotor del NodeMCU, conecte NodeMCU al puerto USB de su computadora y cargue el código.

Llevará un tiempo (mucho más que completar y cargar un boceto para un Arduino … tenga paciencia …). ¡Ahora es un buen momento para que le des un mecano de instrucciones mientras esperas! :RE

Después de completar la carga, desenchufe el cable USB, conecte el servomotor y alimente su circuito desde un cargador USB.

Código explicado:

Para la configuración de IO de Adafruit, deberá reemplazar el nombre de usuario ( XXXXXXXXXX ) y la tecla io ( YYYYYYYYY ).

Visite adafruit.io, inicie sesión en su cuenta y copie la clave io (tal como se describió en los pasos anteriores).

/************************ Adafruit IO Configuration *******************************/
// visit io.adafruit.com if you need to create an account, or if you need your Adafruit IO key.
#define IO_USERNAME “XXXXXXXXXX”
#define IO_KEY “YYYYYYYYY”

También deberá especificar el SSID y la contraseña de su enrutador Wi-Fi.Reemplace WWWWWWWWWW y ZZZZZZZZZZ para configurar su conexión Wi-Fi.

/******************************* Configuración de WIFI ***************** ********************* /
#define WIFI_SSID “WWWWWWWWWW”
#define WIFI_PASS “ZZZZZZZZZZ”
#include “AdafruitIO_WiFi.h”
AdafruitIO_WiFi io (IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);

 

Se usarán las siguientes bibliotecas (como se describe en los pasos anteriores).Deberá agregarlos en el ide de Arduino antes de compilar el código.

/ ************************ El programa principal comienza aquí ********************* ********* /

#include <ESP6266WiFi.h>
#include <AdafruitIO.h>
#include <AdafruitMQTT.h>
#include <ArduinoHttpClient.h>
#include “Servo.h”

 
Varias cosas (pines y parámetros de LED) se definen antes de la configuración:
#define SERV1 12 // Pin conectado al Servomotor
Servo s1;
#define BUTTON_PIN 14 // Pin conectado al pulsador
#define PIXELS_PIN 15 // Pin conectado a la entrada de datos NeoPixel
#define NUM_LEDS 16 // Número de NeoPixels
#define BRILLO 30
#define PIXEL_TYPE NEO_GRB + NEO_KHZ800 // Tipo de NeoPixels (vea el ejemplo de strandtest).
Anillo Adafruit_NeoPixel = Adafruit_NeoPixel (NUM_LEDS, PIXELS_PIN, PIXEL_TYPE); // + NEO_KHZ800);
AdafruitIO_Feed * command = io.feed (“iot-air-freshner-command”); // configura el feed ‘comando’
Durante la configuración, el NodeMCU inicializará los LED (apague y encienda), inicie el puerto de comunicación en serie y conéctese a Adafruit.io. Se mostrará una animación mientras intenta conectarse.

Las entradas (pulsador) y las salidas (servomotor) también se configuran durante la configuración.

void setup () {
ring.setBrightness (BRILLO);
ring.begin ();
ring.show (); // Inicializa todos los píxeles a ‘off’
// inicia la conexión en serie </ p> Serial.begin (115200);
// conectarse a io.adafruit.com
Serial.print (“Conectando a Adafruit IO”);
io.connect ();

// configuramos un manejador de mensajes para el feed ‘comando’.
// la función handleMessage (definida a continuación)
// se llamará cada vez que se envíe un mensaje
// recibido de adafruit io.
command-> onMessage (handleMessage);
// espera una conexión
int i = NUM_LEDS – 1;
int color = 255;
// anima los LED mientras espera la conexión
while (io.status () <AIO_CONNECTED) {
Serial.print (“.”);
ring.setPixelColor (i, 0, 0, color);
ring.show ();
i = i – 1;
if (i <0)

{ if (color == 255) {

color = 0; }

else

{ color = 255;

}

i = NUM_LEDS – 1;

} delay (50); }

lightPixels (ring.Color (0, 0, 0, 0)); // restablecer todos los píxeles a apagado cuando está conectado

// Estamos conectados

Serial.println ();

Serial.println (io.statusText ());

// mover el servomotor a la posición neutral s1.attach (SERV1);

s1.write (90); retraso (500);

s1.detach (); // establecer el pin del botón como entrada pinMode (BUTTON_PIN, INPUT_PULLUP);

}

El ciclo principal es bastante corto. Verifica si hay datos entrantes de Adafruit.io, y verifica si se presionó el botón. Si uno presiona el botón, envía datos a Adafruit.io.

 

void loop ()

{ // io.run (); es requerido para todos los bocetos.

// siempre debe estar presente en la parte superior de tu ciclo // función. mantiene al cliente conectado a

// io.adafruit.com, y procesa cualquier información entrante.

io.run ();

if(digitalRead(BUTTON_PIN) == LOW) {
command->save(“button”);
}

}

 

Cada vez que se recibe un mensaje, se llama a la función handleMessage .Esta función lee los últimos datos recibidos en una fuente dada en Adafruit.io, y verifica si se recibió una de las cadenas de comandos conocidas (‘botón’, ‘temporizador’, ‘ubicación’ o ‘correo’).

Según el comando recibido, los LED parpadearán con diferentes colores y el servomotor se activará.
// esta función se invoca cada vez que se recibe un mensaje
// de Adafruit IO. estaba adjunto a
// la alimentación en la función setup () arriba.

void handleMessage (AdafruitIO_Data * data) {

lightPixels (ring.Color (0, 0, 0, 0)); // restablecer todos los píxeles a apagado cuando se recibe nueva información
String commandStr = data-> toString (); // almacena los comandos entrantes en una cadena

Serial.print (“recibido <-“);
Serial.println (commandStr);

// Estas declaraciones if comparan la variable meteorológica entrante con las condiciones almacenadas, y controlan las NeoPixels en consecuencia.

// si se presionó el botón virtual
if (commandStr.equalsIgnoreCase (“button”)) {
Serial.println (“Botón virtual”);
rotatingPixels (ring.Color (255, 255, 0, 0)); // mostrar animación
lightPixels (ring.Color (255, 255, 0, 0)); // mostrar animación
launch (1);
lightPixels (ring.Color (0, 0, 0, 0)); // restablecer todos los píxeles a apagado cuando se recibe nueva información
}

// si es hora
if (commandStr.equalsIgnoreCase (“timer”)) {
Serial.println (“es hora”);
rotatingPixels (ring.Color (0, 0, 255, 0)); // mostrar animación
lightPixels (ring.Color (0, 0, 255, 0)); // mostrar animación
launch (2);
lightPixels (ring.Color (0, 0, 0, 0)); // restablecer todos los píxeles a apagado cuando se recibe nueva información
}

// si se alcanzó la ubicación
if (commandStr.equalsIgnoreCase (“ubicación”)) {
Serial.println (“Bienvenido a casa!”);
rotatingPixels (ring.Color (0, 255, 0, 0)); // mostrar animación
lightPixels (ring.Color (0, 255, 0, 0)); // mostrar animación
launch (2);
lightPixels (ring.Color (0, 0, 0, 0)); // restablecer todos los píxeles a apagado cuando se recibe nueva información
}

// si tiene correo
if (commandStr.equalsIgnoreCase (“mail”)) {
Serial.println (“¡tienes correo!”);
rotatingPixels (ring.Color (255, 0, 0, 0)); // mostrar animación
lightPixels (ring.Color (255, 0, 0, 0)); // mostrar animación
launch (1);
lightPixels (ring.Color (0, 0, 0, 0)); // restablecer todos los píxeles a apagado cuando se recibe nueva información
}
}

//La función auxiliar rotatingPixels fue desarrollada para mostrar una animación.El color se recibe como una entrada para esta variable.
// Rotación completa de Funcion NeoPixels 

void rotatingPixels (uint32_t color) {
for (int j = 0; j <3; j ++) { for (int i = NUM_LEDS-1; i> = 0; i–) {
ring.setPixelColor (i, color);
ring.show ();
delay (50);
ring.setPixelColor (i, 0, 0, 0);
ring.show ();
}
}
}

//la función de inicio se usa para controlar el servomotor. Ciclos su posición de //90 ° a 175 ° una cantidad determinada de veces.
// Actúa el servomotor
void launch (int number) {
s1.attach (SERV1);
para (int i = 0; i <number; i ++) {
s1.write (175);
delay (1000);
s1.write (90);
delay (1000);
}
s1.detach ();
}

 

Código completo Arduino  aqui; iot-air-freshner-code.inoiot-air-freshner-code.ino

 

Desde luego es un proyecto realmente muy interesante  no solo por su posible utilidad sino  porque no enseña la potencia de la herramientas o servios  web disponibles hoy en dia para ayudarnos en nuestros proyectos

¡Siempre tenga en cuenta que este es un prototipo experimental y podría usarse con precaución!

 

 

Fuente  ; instructables.com

Pushing usando Parse desde Netduino a Xamarin.Forms


Parse es un proveedor BaaS (Backend as a service) que, entre su conjunto de características, ofrece un servicio de notificaciones Push . Se usa  ese servicio para enviar las notificaciones push a nuestros  dispositivos. Es bastante sencillo comenzar, en primer lugar, crear una nueva aplicación, tomar las claves (para ambas REST API y .NET), escribir  un código y empezaré a enviar pushes.

Configurando el Netduino

Se puede utilizar  un simple interruptor de contacto magnético(es decir un rele reed)  para detectar cuándo la puerta se abrió o se cerró, en el código se verá algo así como var doorPort = new InputPort(... y un bucle infinito en el que reside la lógica “principal”). while el netduino lee el estado actual del sensor, lo compara con un estado previo y, si hay algún cambio, envía la notificación de inserción utilizando mi biblioteca parse-dotnetmf .

La biblioteca parse-dotnetmf

Para consumir las funciones REST Api de Parse de un Netduino 3, se puede í crear una biblioteca de clientes para facilitar las cosas , esta biblioteca actualmente solo admite el envío de notificaciones push o Parse, pero puede ampliarse fácilmente para admitir todas las demás funciones también , es fácil de usar simplemente cree un cliente var pc = new ParseClient("AppId", "Api Key"); y luego envíe una notificación push así: pc.SendPushToChannel("Hey!"); .

Esta biblioteca está muy inspirada en la biblioteca MicroTweet2 de Matt Isenhower. Utiliza la clase HttpWebRequest , no requiere dependencias adicionales y cabe fácilmente en un tablero de Wi-Fi Netduino 3.

Configuración de la aplicación Xamarin.Forms

Hay algunos pasos que debe seguir para implementar Parse Push en su aplicación Xamarin, le recomiendo que siga los tutoriales que ya existen en el sitio web de Parse. Voy a hacer un resumen rápido de lo que hice (además de tratar de crear mi propio complemento).

En primer lugar, para Windows Phone no hay pasos obligatorios que no sean seguir este tutorial , por otro lado, para Android tendrás que hacer dos cosas:
1. Marque este tutorial pero haga solo la parte de AndroidManifest.xml .
2. Compruebe la muestra en GitHub , en particular la implementación de la clase ParseApplication en el proyecto de Android.

El complemento CrossParse

Como sabemos, cuando queremos ofrecer experiencias específicas de la plataforma desde una aplicación Xamarin.Forms podemos usar o crear un complemento que nos permita resumir las funcionalidades de cada plataforma para interactuar con cada plataforma a través de una API común.

Tratar de hacer un complemento para manejar todas las interacciones con Parse push o resulta que no es tan fácil como se puede pensar al principio, pues  los Componentes Xamarin de Parse para cada plataforma ya son compatibles con las notificaciones push, pero no existe una capa de abstracción que pueda usarse con formularios, sin mencionar que hay algunos pasos especiales necesarios para cada plataforma que debe gestionar explícitamente en cada proyecto específico de plataforma como por ejemplo crear la clase ParseApplication extra en el proyecto de Android, por ejemplo).

Por lo tanto, este complemento no es tan útil o, pero aún ayuda proporcionando la capa de abstracción mencionada e instalando los nugets de Parse por ti. Con este complemento, puede suscribirse / darse de baja de los canales y gestionar las notificaciones mientras el usuario se encuentra en la aplicación. Realmente esperemos que Parse lance un complemento para formularios pronto, ya que es bastante fácil de hacer dado que ya tienen los componentes.

El autor ha realizado un video donde mostra cómo funciona el sistema:

Enlaces

No pretendemos desde este blog  crear una publicación llena de enlaces, así que aquí están los enlaces a los complementos GitHub repos (y su respectiva página NuGet):

Montaje de una impresora 3D paso a paso


Construir una  impresora  3d requiere una cierta cantidad de destreza física, sentido común y una comprensión profunda de lo que está haciendo.

Asi mismo la construcción y operación implica tensiones , por lo que deben tomarse todas las precauciones necesarias . No obstante las impresoras 3D,  funcionan con una fuente de 12V  DC  suministrados por una fuente de alimentación certificada, por lo que no debería haber peligro a tener que involucrarse con solo 12V, pero, tenga en cuenta que todavía puede haber altas corrientes involucradas ! incluso 12V no deberían tomarse a la ligera!.

Además,también las altas temperaturas están 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 plástico fundido extrudido 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.

Si esta pensando en adquirir una impresora 3d en Kit  en este post veremos paso a paso como se construye una  Iprusa I3 Max, una de las impresoras mas populares y económicas sobre todo cuando se compra en kit ( entre 100 y 200€)

Si en efecto adquiere un kit , desembale el equipo y compruebe que todas las piezas están en la caja revisando el estado de cada pieza, pues puede haber habido algún tipo de daño durante el envío. Para ayudarle con esto, suele haber una lista de componentes (BOM ) en la caja y cada bolsa de piezas suele estar etiquetadas .
Antes de empezar, con el fin de ahorrar tiempo, ordene especialmente los tornillos y tuercas y por supuesto !no los mezcle!.

Asegúrese de tener las habilidades necesarias para llevar a cabo el trabajo, o recurrir a la ayuda de alguien que lo haga.
Trabaje en una gran mesa o banco firme en un área limpia y bien iluminada.
Este tipo de kits contienen partes pequeñas asi que deberia mantenerlos fuera de los niños menores de 3 años.

1 Montar las varillas de un eje Y

Part ID Required quantity Required parts
NO.5 2 φ10 threaded rod
NO.W14 2 Y axis connect plate
NO.17 6 Spring washer
NO.8 8 M10 Washer
NO.12 8 M10  Nut

Enrosque las tuercas y las arandelas en las dos varillas roscadas M10 por separado.Es importante   respetar tanto el orden  como el numero de elementos ha insertar en la varilla roscada
El orden debe ser el siguiente:

1) Enrosque la placa de conexión del eje Y W14 en el centro.

2) Enroscar la arandela M10> Arandela elástica M10> Tuerca M10> Tuerca M10> Arandela M10 a la izquierda

3) Por la derecha enroscar la arandela M10

El aspecto de como debe quedar es el siguiente:

ejelargo.PNG

Puede ser buena ida para añadir los elementos auxiliarse de un par de gomas de borrar u otros elementos de poco espesor para apoyar ambos lados del eje

 

En el siguiente vídeo podemos ver paso a paso el montaje de este conjunto:

 Montar las 2 varillas lisas

Part ID Required quantity Required parts
NO.3 2 φ8 smooth rod
NO.32 3 LM8UU Linear bearings
NO.18 2 Screw locking ring
  1. Retirar la varilla de 410mm
  2. Deslice 3 Rodamientos lineales sobre las varillas lisas, una varilla lisa con dos piezas y otra con una. Antes de deslizar los rodamientos, asegúrese de que estén limpios.
  3. Deslice el anillo de fijación del tornillo en el extremo de la varilla lisa.

El resultado debería ser similar al de la imagen:

 

barras

3 Montar las placas de soporte del eje Y

Part ID Required quantity Required parts
NO. W9、

W 10

2 Support plate of Y axis(front)
NO. W 11、

W 12

2 Support plate of Y axis(rear)
NO.8 4 M10 washer
NO.12 4 M10 nut
  • Paso 1. Inserte dos barras roscadas en las placas de soporte traseras separadamente a través del orificio de montaje inferior; tenga en cuenta la orden secuencial de dos placas de soporte (como debajo de la imagen)
  • Paso 2. Fije ligeramente las varillas roscadas y la placa de soporte trasera con tuerca M10 y arandela M10.
  • Paso 3.Inserte las barras lisas con el anillo de cerradura encendido en las placas de soporte posteriores a través del agujero de montaje superior; luego fijar ligeramente el anillo de bloqueo.
  • Paso 4. Inserte el otro extremo de las varillas lisas y las varillas roscadas en la parte superior e inferior de los orificios de montaje del soporte delantero.
  • Paso 5. Fije ligeramente las varillas roscadas y la placa de madera con tuerca M10 y arandela M10.

 

 

El resultado debería ser similar al de la imagen

cuerpo.PNG

Consejos: Trate de mantener paralelas las varillas de rosca y las cuatro piezas de madera paralelas. El eje Y debe ser un rectángulo, es decir, las varillas en ambos lados deben ser paralelas, por lo que es la placa frontal y trasera. De lo contrario, causará obstrucción para el cinturón más tarde. Puede usar un calibrador digital para medir.

En el siguiente vídeo podemos ver paso a paso el montaje de este conjunto:

4 Montaje del motor Y

Part ID Required quantity Required parts
NO. W13 1 Y motor fix plate
NO.58 1 Stepper motor
NO.39 1 Pulleys
NO.22 3 M3 x 10mm screw
NO.24 2 M3 x 16 mm screw
NO.15 2 M3 square nut
NO.7 5 M3 washer

Paso 1. Montar la polea en el eje del motor, uno de los tornillos debe ser atornillado en el lado plano del eje. Atorníllelo lo más firmemente posible.(Observe la dirección de la polea )

Paso 2. A continuación, atornille el motor en el soporte del motor Y con 3 tornillos M3 x 10 mm y arandelas M3.

Paso 3. Empuje la lengüeta de sujeción del motor Y en el orificio cuadrado de la placa posterior. A continuación, fije con 2 tornillos M3x16mm, arandelas M3 y tuercas cuadradas M3

El resultado debería ser similar al de la imagen:

motor.PNG

En el siguiente vídeo podemos ver paso a paso el montaje de este conjunto:

5 Construcción de  la plataforma de impresión

Part ID Required quantity Required parts
NO.W15 1 Y platform support
NO.W16 3 Y bearing block
NO.A17 1 Belt mount
NO.47 1 Belt bracket
NO.62 4 Zip ties
NO.23 3 M3 x 12 mm screw
NO.24 6 M3 x 16 mm screw
NO.10 8 M3 nut
NO.15 1 M3 square nut
NO.7 9 M3 washer
    En este paso veremos como montar la pieza horizontal   de grandes dimensiones  donde descansara la cama caliente  que ademas  estara dotada de movilidad. Los pasos  para su montaje son los siguintes:
  • Paso 1. Monte los 3 bloques de rodamientos sobre la placa de soporte de la plataforma con tornillos M3 x 16m y arandela M3 y luego fije los otros extremos con tuercas M3.
  • Paso 2.Instale el soporte de la correa en el soporte de la correa con 2 tornillos M3 x 12mm, arandela M3 y tuerca M3.
  • Paso 3. Monte el soporte de la correa en la placa de soporte de la plataforma con un tornillo M3 x 12mm, una arandela M3 y una tuerca cuadrada M3 del mismo lado con el bloque del rodamiento.(Observe la dirección: La dirección del bracket de la correa es igual que el bloque del cojinete)
  • Paso 4. Coloque el soporte de la plataforma de construcción en el soporte del eje Y y, a continuación, ciérrelo con los tres cojinetes lineales del eje Y juntos.(Observe la dirección: El soporte de la correa está en la línea con la polea del motor Y.)

El resultado debería ser similar al de la imagen:

camacaliente.PNG

En el siguiente vídeo podemos ver paso a paso el montaje de este conjunto:

6 Ensamblaje  del rodillo Y

Part ID Required quantity Required parts
NO.41 2 Ball bearing
NO.37 1 Driven wheel holder
NO.40 1 Driven wheel
NO.24 1 M3 x 16 mm screw
NO.14 1 M3 wing nut
NO.29 1 M4 x25 mm screw
NO.13 1 M4 Lock nut

En realidad este paso es muy sencillo  y lo veremos de forma muy parecido en otros pasos similares del montaje . Básicamente se realiza en  los tres siguientes pasos:

Paso 1. Enrosque el tornillo M3 x 16mm a través del soporte de la rueda impulsada.

Paso 2. Ponga la rueda impulsada con rodamiento de bolas en el soporte de la rueda impulsada; Enrosque el tornillo M4 x25mm a través de la rueda motriz. Bloquee el otro extremo con una contratuerca M4. Es posible que necesite un par de alicates para apretar la tuerca de bloqueo. No  atornille demasiado el eje e pues debe dejar suficiente sitio para que la rueda dé vueltas libremente.

Etapa 4. Monte el soporte del rodamiento montado en las placas de soporte delanteras desde el interior hasta el exterior. Y atornille éste  con una tuerca de mariposa.

El resultado debería ser similar al de la imagen:

rodamiento.PNG

En el siguiente vídeo podemos ver paso a paso el montaje de este conjunto:

7 Montaje del cinturón del eje Y

Part ID Required quantity Required parts
NO.35 1 Timing Belts

En este paso  se trata de darle movilidad al eje Y , dado que se supone ya montado el motor  y la base de la cama caliente

Los pasos son muy sencillos y los veremos repetidos de forma muy similar para el montaje de los otros dos ejes:

  • Paso 1. Inserte un extremo de la correa en el soporte de la ranura. Preste atención a la malla del diente de la correa y la ranura.
  • Paso 2. Enhebre el otro extremo del cinturón a través de la polea del motor Y.
  • Paso 3. Enhebre el cinturón a través de la rueda impulsada. Bloquee la tuerca de mariposa. No apriete demasiado en este paso.
  • Etapa 4. Tense la correa en el soporte del cinturón, tire fuertemente y confirme su longitud, luego corte la pieza de recambio. Inserte el extremo de la correa en el soporte de la ranura
  • Paso 5.Tire la tuerca de mariposa.Consejos: La polea, el soporte del cinturón y la rueda impulsada deben estar al ras para asegurar que la plataforma de impresión se mueva suavemente.

El resultado debería ser similar al de la imagen:

ejez.PNG

En el siguiente vídeo podemos ver paso a paso el montaje de este conjunto:

8 Montaje del fin de carrera del eje Y

Part ID Required quantity Required parts
NO.52 1 End stop
NO.20 2 M2.5 x 16 mm screw
NO.9 2 M2.5 Hex nut
NO.6 2 M2.5 washer

Dentro de los componentes electrónicos, se encuentra el final de carrera o sensor de contacto (también conocido como “interruptor de límite”). Son dispositivos eléctricos  situados al final del recorrido o de un elemento móvil ,( el ejemplo mas claro es una cinta transportadora) , con el objetivo de enviar señales que puedan modificar el estado de un circuito en este caso para cortar la alimentación de motor paso a paso.

Internamente los usados en esta impresora   contiene  interruptores normalmente abiertos (NA), de modo que  al actuar sobre ellos  en la palanquilla abriran el circuito al que estén conectados

En nuestro caso simplemente montaremos  el tope final en la placa de soporte trasera del eje Y , con un tornillo M2.5 x 16mm, arandela M2.5 y tuerca hexagonal M2.5.

 

El resultado debería ser similar al de la imagen:

findecarrera.PNG

 

En el siguiente vídeo podemos ver paso a paso el montaje de este conjunto:

9 Montaje del marco XZ y el panel lateral

Part ID Required quantity Required part
NO. W1-A 1 X-Z frame (up)
NO.W1-B 1 X-Z frame (bottom)
NO.W2 1 Left side frame
NO.W3 1 Right side frame
NO.24 6 M3 x 16 mm screw
NO.15 6 M3 square nut
NO.7 6 M3 washer

En   esta fase simplemente se trata de montar el esqueleto de la impresora siguiendo los siguientes pasos:

  • Paso 1. Atornille el marco X-Z (arriba) y el panel lateral con tornillos M3 x 16mm, arandela M3 y tuercas cuadradas M3.
  • Paso 2. Atornille el marco X-Z (arriba) y el panel lateral con tornillos M3 x 16mm; M3 y tuercas cuadradas M3.  Observe la dirección de los orificios de la perilla LCD. Está a la derecha.

El resultado debería ser similar al de la imagen:

 

esqueleto.PNG

En el siguiente vídeo podemos ver paso a paso el montaje de este conjunto:

10 Ensamblaje del soporte de los  2 Z motores

Part ID Required quantity Required parts
NO.W4 1 Z motor fix plate (left)
NO.W5 1 Z motor fix plate (right)
NO.W6 3 Z motor support plate
NO. W7 1 Z motor support plate
NO.24 10 M3 x 16 mm screw
NO.15 10 M3 square nut
NO.7 10 M3 washer

Para alojar los motores en este paso  vamos a dotar a la estructura anterior de dos pequeños soportes donde irán los otros dos motores :

  • Paso 1.Ensamble Z placa de soporte del motor W6, W7 con placa de fijación del motor Z (izquierda) junto con tornillos M3 x 16 mm, arandela M3 y tuercas cuadradas M3.
  • Paso 2.Ensamble 2 placas de soporte de motor Z W6 con placa de fijación de motor Z (derecha) junto con tornillos M3 x 16 mm, arandela M3 y tuercas cuadradas M3.NOTE EL PEQUEÑO AGUJERO
  • Paso 3. Enrosque los soportes de motor Z montados a la izquierda y las esquinas de rigidez del marco principal con tornillos M3 x 16mm y tuercas cuadradas M3.

El resultado debería ser similar al de la imagen:

soporte motoes.PNG

En el siguiente vídeo podemos ver paso a paso el montaje de este conjunto:

11 Montaje del ventilador

Part ID Required quantity Required parts
NO.49

NO.254M3 x20 mm screw

NO.104M3 nut

NO.74M3 washer

1

1

1

1

Fan

Fije el ventilador en la parte posterior izquierda del bastidor con 4 tornillos M3 x 20, arandela M3 y tuercas M3. Cuidado con la dirección del ventilador. (El lado con la etiqueta está hacia afuera.)

El resultado debería ser similar al de la imagen:

ventilador.PNG

En el siguiente vídeo podemos ver paso a paso el montaje de este conjunto:

12 Esamblaje ejes Y – Z

Part ID Required quantity Required parts
NO.24 6 M3 x 16 mm screw
NO.10 4 M3 nut
NO.15 2 M3 square nut
NO.7 6 M3 washer

En este paso se trata de montar por fin la estructura que soportara  la cama caliente  al resto de estructura de la impresora-

Los pasos  son los siguientes:

  • Paso 1. Coloque el eje Y entre el marco principal. W14 está en la parte delantera del marco.
  • Paso 2. Atornille la placa trasera del eje Y y el panel lateral con tornillos M3 x16mm, arandela M3 y tuercas cuadradas M3.
  • Paso 3. Atornille el bastidor principal a la placa de conexión del eje Y con 4 tornillos M3 x 16mm, arandela M3 y tuercas M3.
  • Paso  4. Atornille las tuercas M10 en el eje Y.)

El resultado debería ser similar al de la imagen:

ensamblaje.PNG

En el siguiente vídeo podemos ver paso a paso el montaje de este conjunto:

13 Montaje fin de carrera eje Z

Part ID Required quantity Required parts
NO.52 1 End stop
NO.20 2 M 2.5 x 16 mm screw
NO.9 2 M 2.5 nut
NO.6 2 M 2.5washer

En este paso se trata de montar el interruptor de fin de carrera del eje z

Monte el tope en la base del motor de eje Z (izquierda) con tornillo M2.5 x 16mm, arandela M2.5 y tuerca hexagonal M2.5.

El resultado debería ser similar al de la imagen:

fin2.PNG

En el siguiente vídeo podemos ver paso a paso el montaje de este conjunto:

14 Montaje de los  2 Z motores

Part ID Required quantity Required parts
NO.58 2 Stepper motor
NO.22 8 M3 x 10mm screw
NO.7 8 M3 washer
  • Paso 1. Enhebre los cables de los motores a través de los agujeros de la fama principal. A continuación, coloque el motor debajo de la base del motor.
  • Paso 2. Atornille los motores con 4 tornillos M3 x 10mm y arandela M3.

El resultado debería ser similar al de la imagen:

motor_ens.PNG

Haga lo mismo con el otro motor Z de acuerdo con los pasos anteriores.

En el siguiente vídeo podemos ver paso a paso el montaje de este conjunto:

15 Montaje de los acoplamientos

Part ID Required quantity Required parts
NO.38 2 Coupling

Se trata  ahora de añadir al motor un acoplador para poder después conectarle un eje  en forma de varilla roscada

Los pasos a seguir son los siguientes:

  •  Fijar los dos acoplamientos en ambos del eje del motor.Tenga en cuenta:La apertura de ambos extremos, uno es de 5mm, otro es de 8mm, conectar el orificio de 5mm al eje del motor.
  • Atornille firmemente el tornillo de la pieza de 5 mm en la parte superior del lado plano del eje del motor; puede ver el límite en el interior del acoplamiento.
  • Haga lo mismo con el acoplamiento del eje del motor derecho de acuerdo con los pasos anteriores.

El resultado debería ser similar al de la imagen:

acople.PNG

En el siguiente vídeo podemos ver paso a paso el montaje de este conjunto:

 

En el siguiente post veremos la finalización del montaje de una impresora 3d tipo  Priusa I3 Pro W