Mostrando entradas con la etiqueta arduino. Mostrar todas las entradas
Mostrando entradas con la etiqueta arduino. Mostrar todas las entradas
22 de noviembre de 2019
Callback Function - Arduino
A partir de C++11 se puede usar funciones invocables sin importar de que tipo sean, es decir, si es puntero de clase o una función suelta.
Ejemplo:
Declaramos un tipo de dato, con los parámetros de la función:
typedef std::function<void(String,String)> IoTOnOffError;
Esto es similar a:
typedef void(*IoTOnOffError)(String,String);
En una clase tenemos la declaración del ejemplo así:
La función/método que guarda el blanco a invocar:
void onError(IoTOnOffError _callback);
Y la variable que tiene el blanco:
IoTOnOffError _error_callback;
Para su invocación se puede llamar usando diferentes maneras, pero hay dos principales, función suelta o que el método corresponda a una clase.
Función suelta:
Se tiene declarada la función:
void error(String source, String error) {
Serial.print(source + ": " + error);
blink();
}
Y solo se inicializa de esta forma:
iotOnOff.onError(error);
De esta forma pasamos el nombre de la función, ya que coincide con la firma de IoTOnOffError
Método que corresponda a una clase:
void IotOnOff::error(String source, String error) {
Serial.print(source + ": " + error);
}
Para inicializar el objeto usamos una funciona lambda, esto crea un método que invocara el llamado con el contexto del objeto:
clase_abc.onError([this](String source, String error) mutable { this->error(source, error); return;});
Ahora el llamado a la función se hace igual en todos los casos, se valida que este inicializada para proceder a su invocación:
if (_error_callback) {
_error_callback("ON_OFF", source + ": " + error);
}
Se debe incluir:
#include <functional>
Notas y Referencias
20 de enero de 2019
Smart Home - DIY
DIY: Do It Yourself, Haslo tu mismo.
En este tiempo de asistentes personales como:
En este post, se enfocara en el Asistente de Google, para automatizar un hogar se tiene las siguientes opciones:
Entre las opciones 2 y 3, se tiene el inconveniente de la integración con el asistente de google, que se puede solucionar de las siguientes formas:
Para este caso Google proporciona un servicio llamado Firebase con el cual podemos crear nuestra propia nube con conexiones y almacenamiento limitado en su parte de uso gratuita.
Para este caso tenemos el ejemplo de una Lavadora: https://codelabs.developers.google.com/codelabs/smarthome-washer/
Para complementar este ejemplo podemos buscar en internet "firebase realtime database esp8266", y encontramos ejemplos de como conectarnos mediante el API Firebase-Arduino: https://github.com/FirebaseExtended/firebase-arduino
De esta forma tenemos nuestra nube y nuestros dispositivos DIY para interactuar con el Asistente de Google.
Para este caso se requiere construir tu propio "parlante" (asistente) y extenderlo con hardware externo y/o conexiones que permitan interactuar con otros dispositivos: https://developers.google.com/assistant/sdk/device-actions-overview
En esta pagina podemos observar el kit inicial: https://www.adafruit.com/product/4080
Hay dos formas de usar el api, en forma de servicio, pero esta requiere un botón para activar el asistente y la otra forma es una librería, pero principalmente depende del hardware donde se implemente: https://developers.google.com/assistant/sdk/overview#features
El servicio de IFTTT tiene una integración con google que permite crear comandos que ejecuten acciones denominadas "applet", con estas acciones podemos interactuar con nuestros dispositivos DIY, y se pueden hacer de tres formas:
Paso previo tener configurado la parte inicial en IFTTT y un dispositivos DIY.
Notas y Referencias:
En este tiempo de asistentes personales como:
- "Ok Google" - Asistente de Google
- Siri - Apple
- Alexa - Amazon
- Cortana - Microsoft
En este post, se enfocara en el Asistente de Google, para automatizar un hogar se tiene las siguientes opciones:
- Compara dispositivos listos, pero no entraría en la clasificación DIY.
- Comprar dispositivos "chinos" por AliExpress y re-configurarlos a sus gusto, como los dispositivos "Sonoff".
- Construir tu propio dispositivo, con un esp82266, raspberry pi, entre otros.
Entre las opciones 2 y 3, se tiene el inconveniente de la integración con el asistente de google, que se puede solucionar de las siguientes formas:
Crear tu propia nube y conecta tus dispositivos.
Para este caso Google proporciona un servicio llamado Firebase con el cual podemos crear nuestra propia nube con conexiones y almacenamiento limitado en su parte de uso gratuita.
Para este caso tenemos el ejemplo de una Lavadora: https://codelabs.developers.google.com/codelabs/smarthome-washer/
Para complementar este ejemplo podemos buscar en internet "firebase realtime database esp8266", y encontramos ejemplos de como conectarnos mediante el API Firebase-Arduino: https://github.com/FirebaseExtended/firebase-arduino
De esta forma tenemos nuestra nube y nuestros dispositivos DIY para interactuar con el Asistente de Google.
Usar el API Device Actions para extender un asistente personal.
Para este caso se requiere construir tu propio "parlante" (asistente) y extenderlo con hardware externo y/o conexiones que permitan interactuar con otros dispositivos: https://developers.google.com/assistant/sdk/device-actions-overview
En esta pagina podemos observar el kit inicial: https://www.adafruit.com/product/4080
Hay dos formas de usar el api, en forma de servicio, pero esta requiere un botón para activar el asistente y la otra forma es una librería, pero principalmente depende del hardware donde se implemente: https://developers.google.com/assistant/sdk/overview#features
Usar comandos de voz configurados en el servicio de IFTTT.
El servicio de IFTTT tiene una integración con google que permite crear comandos que ejecuten acciones denominadas "applet", con estas acciones podemos interactuar con nuestros dispositivos DIY, y se pueden hacer de tres formas:
Paso previo tener configurado la parte inicial en IFTTT y un dispositivos DIY.
- Exponer el dispositivo al internet, abrir el puerto del moden/router y exponer un rest/http, el cual es invocado por IFTTT.
- Como la forma anterior, sin abrir el puerto, pero usar un servicio de proxy inverso o VPN inversa para exponer el pc y/o dispositivo. (ejemplo usar: https://ngrok.com/).
- La forma mas segura es, conectarse aun servicio de colas MQT, y que este servicio posea integración con IFTTT. (Ejmplo: Adafruit IO).
Notas y Referencias:
- Adafruit IO, si usas este servicio por favor usar el hardware que ellos venden.
- IFTTT
- No confundir Device Actions (Google Assistant SDK) con Actions (Actions on Google) que es el api para los servicios en la nube (Cloud).
1 de diciembre de 2016
ESP8266
El ESP8266 es un chip WiFi de bajo consumo y pequeño, desarrollado por una empresa china Espressif, este chip permite desarrollar IOT (Internet of Things). Así, que se puede conectar con cualquier sensor (compatible con Arduino ) a Internet vía WiFi.
Hay otros modelos básicos que incorporan mas GPIO que el inicial, como el ESP-12F
Modelos (prototyping boards):
Para trabajar con el ambiente Arduino se necesita lo siguiente:
Diagrama básico (mínimo) de trabajo (ESP-12):
Notas y referencias:
El ESP8266 se puede usar directamente por medio una interface Serial usando comandos AT, o mas avanzado, usando el ambiente de programación Arduino para re-programarlo.
Existen varios modelos de este chip, el primero denominado ESP-01, fue el inicial.
Hay otros modelos básicos que incorporan mas GPIO que el inicial, como el ESP-12F
Hay otras versiones que ya están diseñadas para conectarlas (micro usb) y programarlas de inmediato, y cuando no se usa una de esas prototyping boards hay que hacer una adecuación mínima para comenzar a trabajar sobre el ESP8266.
Modelos (prototyping boards):
- Adafruit HUZZAH ESP8266 (ESP-12)
- NodeMCU
- WeMos D1
- SparkFun ESP8266 Thing
Para trabajar con el ambiente Arduino se necesita lo siguiente:
- El Arduino IDE de (https://www.arduino.cc).
- Instalar la librería que da soporte al ESP8266 (https://github.com/esp8266/Arduino), esta librerías es OpenSource y mantenida por Ivan Grokhotkov.
- Preparar el Hardware necesario para su conexión.
Diagrama básico (mínimo) de trabajo (ESP-12):
Como subir el programa, se debe poner el esp8266 en modo FLASH, y se realiza de la siguiente forma: Poner GPIO_0 a GND, al mismo tiempo RESET a GND (poner y retirar, o poner un pulsador) y luego retirar el GPIO_0 de GND, y de esta forma el esp8266 entra en modo flash, es decir, pulsar FLASH mantenerlo pulsado mientras se pulsa RESET y soltar ambos.
![]() |
ESP-12F en Protoboard |
Documentación y ejemplos visitar: https://github.com/esp8266/Arduino
Notas y referencias:
Suscribirse a:
Entradas (Atom)