Videos mas famosos sobre Inteligencia artificial


Inteligencia Artificial es una realidad de hoy en día  constituyendo realmente una colección de tecnologías avanzadas que permite a las máquinas sentir, comprender, actuar y aprender.

En el  siguiente documental de Discovery channel podemos  ver como la inteligencia artificial está cambiando la forma de ver el mundo  en ejemplos tan diversos  como :

  • La capacidad de debatir
  • Vehículos autónomos
  • Teoría de los juegos
  • Robótica
  • Humanoides
  • Educación
  • Aplicaciones para invidentes
  • Reconocimiento facial
  • Uso de otros medicamentos para curar otras enfermedades
  • etc

Asimismo  se  trata un tema como Stephen Hawking pronosticó que el desarrollo de la inteligencia artificial puede llegar a provocar la extinción de la raza humana.

En este otro  video, podemos  ver la evolución de los robots que  han creado la famosa  empresa  Boston Dynamics desde 2012 hasta 2019

 

Transformar el negocio de maneras que no hemos visto desde la Revolución Industrial; reinventar fundamentalmente la forma en que las empresas funcionan, compiten y prosperan. Cuando se implementan holísticamente, estas tecnologías ayudan a mejorar la productividad y reducir los costos, desbloqueando empleos más creativos y creando nuevas oportunidades de crecimiento.

Este cortometraje fue creado por MMP Global para destacar por qué los profesionales que trabajan en Servicios Financieros necesitan estar al tanto de la IA ahora.

 

Antes de profundizar en el apasionante mundo de la Inteligencia Artificial, hay que conocer bien por donde nos movemos. Hoy traigo un mapa conceptual con algunos de los conceptos más importantes y que con mayor confusión son utilizados: el Machine Learning  y el Deep Learning.

La visión por computadora es fascinante para mí porque a) suena intrigante y b) es parte de tantas cosas diferentes que usamos hoy en día (realidad aumentada, búsqueda de imágenes, Google Fotos, cámaras, esas primeras líneas amarillas que vemos viendo fútbol en la televisión, coches autónomos, lentes selfie, y más). En este video,podemos ver  varios investigadores de Google para obtener una visión general del campo hoy, un poco de su historia, y un indicio de su futuro.

Instalar Pyenv en W10


pyenv para python es una gran herramienta pero, como rbenv para desarrolladores ruby, pero no es compatible con Windows directamente. Después de un poco de investigación y comentarios de los desarrolladores de Python, descubrí que querían una característica similar para los sistemas Windows.

El autor que ha desarrollado esta herrmienta se inspiró en el problema de pyenv para el soporte de Windows auque el usa Mac y Linux conpyenv , pero algunas empresas todavía usan Windows para el desarrollo. Esta biblioteca es para ayudar a los usuarios de Windows a administrar múltiples versiones de Python.

El autor encontro un sistema similar para rbenv-win para desarrolladores ruby. Este proyecto se bifurcó de rbenv-win y se modificó para pyenv . pyenv-win está madurando cada día gracias por los contribuyentes y apoyos.

 

pyenv

pyenv es una sencilla herramienta de gestión de versiones de Python. Le permite cambiar fácilmente entre varias versiones de Python. Es simple, discreto y sigue la tradición de UNIX de herramientas de un solo propósito que hacen una cosa bien.

Estos son algunos de los camandos mas usados:

 

   commands     List all available pyenv commands
   local        Set or show the local application-specific Python version
   global       Set or show the global Python version
   shell        Set or show the shell-specific Python version
   install      Install 1 or more versions of Python 
   uninstall    Uninstall 1 or more versions of Python
   update       Update the cached version DB
   rehash       Rehash pyenv shims (run this after switching Python versions)
   vname        Show the current Python version
   version      Show the current Python version and its origin
   versions     List all Python versions available to pyenv
   exec         Runs an executable by first preparing PATH so that the selected Python
   which        Display the full path to an executable
   whence       List all Python versions that contain the given executable

 

 

 

 

Instalación

 

Obtener pyenv-win

Obtenga pyenv-win mediante uno de los siguientes métodos:

  • Con pip (para admitir usuarios de Python existentes)
    • Powershell o Git Bash: pip install pyenv-win --target "$HOME\.pyenv"
    • cmd.exe: pip install pyenv-win --target "%USERPROFILE%\.pyenv"
  • Con archivo zip
    1. Enlace de descarga: pyenv-win
    2. Cree un .pyenvdirectorio si no existe bajo $HOMEo%USERPROFILE%
    3. Extraiga y mueva archivos a
    • Powershell o Git Bash: $HOME/.pyenv/
    • cmd.exe: %USERPROFILE%\.pyenv\
    1. Asegúrese de ver la bincarpeta debajo%USERPROFILE%\.pyenv\pyenv-win
  • Con Git
  • Con chocolate
    • choco install pyenv-win (esto también instala todas las variables de entorno)

 

Terminar la instalación

NOTA: Si está ejecutando Windows 10 1905 o más reciente, debe deshabilitar el iniciador de Python incorporado a través deshabilitado los alias de “Instalador de aplicaciones” para Python,para ello  invoquea la configuración predeterminada de Windows 10 en la pantalla de su PC usando las teclas de acceso directo de Windows + I.

La imagen tiene un atributo ALT vacío; su nombre de archivo es alias.jpg

Haga clic en Aplicaciones . Se abrirán las opciones adicionales para las aplicaciones en una nueva página y puede desactivar ahi los alias para Python.

 

Si lo instaló con Chocolatey, puede pasar al paso 3.

  1. Agregue PYENV y PYENV_HOME a sus variables de entorno
    1. Utilizando PowerShell o Windows 8 / ejecución de Terminal superior[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User") [System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User") Nota: PYENV_HOME es compatible con pipenv
  2. Ahora agregue las siguientes rutas a su variable USER PATH para acceder al comando pyenv. Ejecute lo siguiente en PowerShell o Windows 8 / Terminal superior: [System.Environment]::SetEnvironmentVariable('path', $HOME + "\.pyenv\pyenv-win\bin;" + $HOME + "\.pyenv\pyenv-win\shims;" + $env:Path,"User")
  3. Cierre y vuelva a abrir su aplicación de terminal y ejecute pyenv --version
    1. Si el valor de retorno es la versión instalada de pyenv, continúe con el Paso 4
    2. Si recibe un error de comando no encontrado, asegúrese de que las variables de entorno estén configuradas correctamente a través de la GUI: Esta PC → Propiedades → Configuración avanzada del sistema → Avanzado → Variables de entorno … → RUTA
    3. Si recibe un error de comando no encontrado y está utilizando Visual Studio Code u otro IDE con un terminal integrado, reinícielo e intente nuevamente
  4. Ahora ejecute el pyenv rehashdirectorio de inicio
    • Si recibe un error, repita los pasos nuevamente. .
  5. Ejecutar pyenvpara ver la lista de comandos que admite.

La instalación está terminada.

 

Soporte  de 32 bits

  • Con Git
    • cambiar directorio a %USERPROFILE%\.pyenvviacd
    • ejecutar el siguiente comando git checkout -b 32bit-train origin/32bit-train
    • ahora ejecuta pyenv --versionnecesitas ver 2.32.x
  • Con pepita
    • Powershell o Git Bash: pip install pyenv-win==2.32.x --target $HOME\.pyenv
    • cmd.exe: pip install pyenv-win==2.32.x --target %USERPROFILE%\.pyenv
  • Con archivo zip
    1. Enlace de descarga: pyenv-win
    2. Cree un .pyenvdirectorio si no existe bajo $HOMEo%USERPROFILE%
    3. Extraiga y mueva archivos a
    • Powershell o Git Bash: $HOME/.pyenv/
    • cmd.exe: %USERPROFILE%\.pyenv\
    1. Asegúrese de ver la bincarpeta debajo%USERPROFILE%\.pyenv\pyenv-win

 

 

Uso

  • Actualice la lista de versiones de Python pyenv updatedetectables usando: comando para pyenv-win 2.64.xy 2.32.xversiones

PS C:\Users\carlo> pyenv update
:: [Info] :: Mirror: https://www.python.org/ftp/python
:: [Info] :: Scanned 141 pages and found 479 installers.
PS C:\Users\carlo>

  • Para ver una lista de las versiones de Python compatibles con pyenv windows: pyenv install -l
  • Para instalar una versión de Python: pyenv install 3.8.5

PS C:\Users\carlo> pyenv install 3.8.5
:: [Info] :: Mirror: https://www.python.org/ftp/python
:: [Downloading] :: 3.8.5 …
:: [Downloading] :: From https://www.python.org/ftp/python/3.8.5/python-3.8.5-amd64-webinstall.exe
:: [Downloading] :: To C:\Users\carlo.pyenv\pyenv-win\install_cache\python-3.8.5-amd64-webinstall.exe
:: [Installing] :: 3.8.5 …
:: [Info] :: completed! 3.8.5
PS C:\Users\carlo>

  • Nota: Es posible que aparezca un asistente de instalación para algunas instalaciones no silenciosas. Deberá hacer clic en el asistente durante la instalación. No es necesario cambiar ninguna opción en él. o puede usar -q para bastante instalación
    • También puede instalar varias versiones en un solo comando: pyenv install 2.4.3 3.6.8
  • Para configurar una versión de Python como la versión global: pyenv global 3.8.5
    • Esta es la versión de Python que se usará de forma predeterminada si no se establece una versión local (ver más abajo).
    • Nota: Primero se debe instalar la versión.
  • Para establecer una versión Python como la versión local: pyenv local 3.8.5.
    • La versión proporcionada se utilizará siempre que pythonse llame desde esta carpeta. Esto es diferente a un entorno virtual, que debe activarse explícitamente.
    • Nota: Primero se debe instalar la versión.
  • Después de (des) instalar cualquier biblioteca usando pip o modificar los archivos en la carpeta de una versión, debe ejecutar pyenv rehashpara actualizar pyenv con nuevos shims para Python y los ejecutables de las bibliotecas.
    • Nota: Esto debe ejecutarse fuera de la .pyenvcarpeta.
  • Para desinstalar una versión de Python: pyenv uninstall 3.8.5
  • Para ver qué Python está usando y su ruta: pyenv version

PS C:\Users\carlo> pyenv version
3.8.5 (set by C:\Users\carlo.python-version)
PS C:\Users\carlo>

  • Para ver todas las versiones de Python instaladas en este sistema: pyenv versions

PS C:\Users\carlo> pyenv versions

  • 3.8.5 (set by C:\Users\carlo.python-version)
    PS C:\Users\carlo>

 

Cómo recibir actualizaciones

  • Si se instala a través de pip
    • Agregue la ruta instalada de pyenv-win al easy_install.ptharchivo que se encuentra en site-package. Ahora pyenv-win es reconocido por pip
    • Recibe actualizaciones a través de pip pip install --upgrade pyenv-win
  • Si se instala a través de Git
    • Vaya a %USERPROFILE%\.pyenv\pyenv-win(que es su ruta instalada) y ejecutegit pull
  • Si se instala a través de zip
    • Descarga el zip más reciente y extráelo
    • Ir a %USERPROFILE%\.pyenv\pyenv-winy reemplazar las carpetas libexecy bincon los nuevos que acaba de descargar

 

Preguntas más frecuentes

  • Pregunta: ¿pyenv para windows es compatible con python2?
    • Respuesta: Sí, admitimos python2 desde la versión 2.4+ hasta que python.org lo elimine oficialmente.
    • Las versiones inferiores a 2.4 utilizan instaladores Wise obsoletos y tienen problemas para instalar varias versiones de parches, a diferencia de Windows MSI y los nuevos instaladores Python3 que admiten instalaciones de “extracción”.
  • Pregunta: ¿pyenv para windows es compatible con python3?
    • Respuesta: Sí, admitimos python3 desde la versión 3.0. Lo apoyamos desde 3.0 hasta que python.org lo elimine oficialmente.
  • Pregunta: Tengo el problema batch file cannot be found.al instalar Python, ¿qué debo hacer?
    • Respuesta: puede ignorarlo. Está llamando al pyenv rehashcomando antes de crear el archivo bat en algunos dispositivos.
  • Pregunta: El sistema se atasca al desinstalar la versión de Python, ¿qué hacer?
    • Respuesta: Navegue a la ubicación donde instaló pyenv, abra su carpeta de ‘versiones’ (generalmente %USERPROFILE%\.pyenv\pyenv-win\versions) y elimine la carpeta de la versión que desea eliminar.
  • Pregunta: Instalé pyenv-win usando pip. ¿Cómo puedo desinstalarlo?
  • Pregunta: pyenv-win no se reconoce, pero he configurado ENV PATH?
    • Respuesta: De acuerdo con Windows, al agregar la ruta en las variables Usuario o Sistema, para la variable Usuario debe cerrar la sesión y volver a iniciar sesión para reflejar los cambios. Para la variable del sistema, no es necesario.

 

 

Fuente https://github.com/pyenv-win/pyenv-win

IoT Cloud


En este post vamos a a ver conectar una placa MKR1000 (o MKR 1010) a la nube de Arduino IoT  de modo que podremos controlar y supervisar  las entradas  o salidas de estas places a través de Internet utilizando el sitio web de Arduino IoT Cloud.

Para ello simplemente seguiremos tres pasos,:

  • Agregaremos nuestra placa a Arduino IoT Cloud como una cosa( Thing) , es decir  una representación de nuestra placa en la nube.
  • A continuación, le daremos a nuestra cosa un conjunto de propiedades que representan sensores, LEDs, motores y muchos otros componentes en el proyecto al que queremos acceder desde la nube.
  • Subiremos a nuestra placa el código que nos propone Arduino IoT Cloud personalizado para nuestra red wifi

Si le  interesa  como hacerlo , vera que es muy sencillo,  pues como vamos a ver  casi todo esta hecho, pero antes, veremos las semejanzas   y diferencias de ambas placas  y después veremos paso a paso como lograrlo.

Arduino MKR1000

Arduino MKR1000 es una placa diseñada para ofrecer una solución práctica y rentable para cualquiera que busque agregar conectividad WiFi a sus proyectos con una experiencia mínima en redes.  Su precio no es excesivo  teniendo en cuenta que integra la conectividad  wifi (unos 38€ en Amazon)

El diseño incluye un circuito de carga Li-Po que permite que el Arduino MKR1000 funcione con una  batería o 5V externos, cargando la batería Li-Po mientras funciona con energía externa: el cambio de una fuente a otra se realizara automáticamente  y por tanto no tendremos que preocuparnos de nada más.

El MKR1000 tiene un procesador Arm Cortex-M0 + de 32 bits  corriendo a 2.4ghz ,  y cuenta con  el rico conjunto habitual de interfaces de E / S . Sin duda uno de su punto fuertes  es que integra  WiFi de baja potencia con un chip criptográfico para una comunicación segura.

Una de las grandes ventajas  es que puede programarlo utilizando el software Arduino (IDE) al que estamos  todos familiarizados  siendo muy  fácil de usar.

Todas estas características hacen de esta placa la opción preferida para los proyectos emergentes que funcionan con baterías de IoT en un factor de forma compacto.

 Desafortunadamente, Arduino aún no lo ha integrado en su IDE, por lo que la configuración no es tan fácil como lo es para la mayoría de sus otras placas ,sin embargo, siga algunos pasos para configurarlo y podrá ponerlo a prueba: –

  • Instale el último IDE de Arduino 
  •  Haga clic en Herramientas | Puerto – Seleccione el puerto COM (no se mostrará ninguna placa) 
  • Ahora haga clic en Herramientas | Junta | Obtener información del tablero. Verá información con “Tablero desconocido” como tipo
  •  A continuación, haga clic en Herramientas | Junta | Gerente de la Junta
  • Instale el paquete Arduino SAMD Boards (ARM Cortex-M0 + de 32 bits) que incluye MKR WiFi 1010, Genuino Zero, MKR1000, etc.
  • Reinicie el IDE para que surta efecto el nuevo paquete de placa
  • En este punto, puede desconectar y volver a conectar la placa para que el IDE lo vea
  • Haga clic en Herramientas | Información del tablero; esta vez verá “Arduino / Genuino MKR1000” !!! ¡No olvides este siguiente paso o no podrás subir tu boceto!
  • Haga clic en Herramientas | Tablero: 
  • Seleccione Arduino / Genuino MKR1000 . En este punto, yaa puede cargar un boceto en su tablero  como  por ejemplo el que vamos a ver en este post para controlar un led desde Internet

Como   se puede  ver en la imagen de  mas abajo , los pines disponibles son casi los mismos que los que solemos tener en un Arduino convencional  : los pines A0  a A6   para entradas  y salidas analógicas , los pines 0 al 14  para entradas salidas binarias y los típicos de alimentación externa(VIN,VCC 5v y GND)   , la referencia (AREF )  y  RESET.

Si le interesa esta placa la puede comprar en Amazon por unos 38€

Arduino MKR1010

Hablamos ahora de una placa muy similar a la anterior   algo mas barata que la la Mkr1000 ( unos  33€  en Amazon , es decir unos 5€ mas barato que la MKR1000)

Esta placa  está compuesta por tres bloques principales:

  • Microchip ATSAMD21 MCU basado en un procesador Arm Cortex-M0 
  • Serie u-blox NINA-W10 de baja potencia 2.4GHz IEEE 802.11 b / g / n Wi-Fi ECC508 CryptoAuthentication
  • El diseño incluye un Li-Po Circuito de carga que permite que Arduino MKR WiFi 1010 funcione con batería o 5V externos, cargando la batería Li-Po mientras funciona con energía externa. El cambio de una fuente a otra se realiza automáticamente.

Como  vemos , la gran diferencia  es  el Microcontrolador que es menos potente  pues  cuenta con el  Microchip ATSAMD21 (procesador Arm Cortex-M0 +)  en contraste  con el Arm Cortex-M0 + de 32 bits  corriendo a 2.4ghz del MKR100.

Respecto a la conectividad,  es similar al  MKR1000  contando con WiFi u-blox NINA-W102 (ESP32)

La alimentación se puede hacer con una fuente de alimentación externa de 5v DC  bien por  USB  o bien por el pin VIN , pero  cuenta   además  con conexión para Batería compatible (*) Li-Po de celda única, 3,7 V, 700 mAh  siendo el voltaje mínimo de funcionamiento del circuito 3,3 V .

 

Como   se puede  ver en la imagen de  mas abajo , los pines disponibles son casi los mismos que los que solemos tener en un Arduino convencional  ( y los mismo que el  MKR100)   : los pines A0  a A6   para entradas  y salidas analógicas , los pines 0 al 14  para entradas salidas binarias y los típicos de alimentación externa(VIN,VCC 5v y GND)   , la referencia (AREF )  y  RESET.

Si le interesa esta placa la puede comprar en Amazon por unos 33€

 

1. Crear una cosa y controlar un LED a través de la nube

Para empezar vamos a crear un circuito simple que consiste en un LED conectado a la placa Arduino MKR1000  (o MKR 1010).

Como se muestra en el esquema, simplemente conectaremos la pata positiva del LED al Pin digital 2 de la placa y la pata negativa a tierra a través de una resistencia de 150 ohmios.

Observe que la potencia de la placa de pan proviene del Vcc, no del pin de 5V de la placa MKR1000 pues  si lo conectamos al pin de 5V, podríamos dañar la placa  cuando por ejemplo  agreguemos  un botón.

An LED connected to Digital Pin 2 of an Arduino MKR1000

Ahora que hemos conectado nuestro LED, podremos  habilitado para IoT pero antes de eso, tendremos que configurar una placa Arduino para que pueda comunicarse con la nube.

Para este proyecto, podemos elegir un MKR1000 o un MKR  1010.  Una vez que nuestra placa está configurada, necesitaremos crear a una cuenta Arduino  ( ai aún no la tenemos creada, y hecho ya nos iremos a Arduino IoT Cloud y comenzaremos  con el  viaje a través de IoT 

Asi pues nos  iremos  Arduino IoT Cloud que comenzara con el proceso guiado de introducción  que nos ayudará a configurar nuestra placa, darle un nombre e instalar las claves que le permitirán conectarse de forma segura a nuestra nube mediante un canal cifrado.

Getting Started Wizard
Este es el asistente de introducción
Select a supported board
Seleccionaremos  una placa compatible
Let's make it connect securely to IoT Cloud
Haremos que se conecte de forma segura a IoT Cloud
Time to plug our board into our computer, it will be recognised automatically
Es hora de conectar nuestra placa a nuestro ordenador, se reconocerá automáticamente
Let's give it a name...
Vamos a darle un nombre…
and click on CONFIGURE
Ahora  haremos clic en CONFIGURAR
After a little time all is done, and we can get BACK TO CLOUD
Después de un poco de tiempo todo está hecho, y podemos llegar DE VUELTA A CLOUD

Al hacer clic en el botón “BACK TO CLOUD” podremos crear nuestra primera Cosa.

Nuestra placa MKR recién configurada se seleccionará automáticamente para ser asociada con nuestra Cosa, por lo que todo lo que queda es darle un nombre. Elegimos llamarlo IoTCloud_Tutorial_Thing pero puede nombrarlo como desee.

 

Our board is preselected ->
Nuestra placa está preseleccionada ->
Let's name it...
Vamos a nombrarlo…
and click the CREATE button
y haga clic en el botón CREAR

Ahora seremos redirigidos a nuestra vista de edición de Thing, donde podremos crear y modificar sus Propiedades – la representación de sensores y actuadores a los que queremos acceder a través de la nube.

Nuestro objetivo es encender y apagar el LED a través de Cloud cuando alternamos un interruptor gráfico en nuestro navegador. Para hacerlo, tenemos que crear una propiedad, así que haga clic en el botón + como se muestra en la imagen de abajo.

Time to create our first Property
Es hora de crear nuestra primera propiedad

Usaremos como nombre significativo que lo represente  (este nombre se reflejará en el nombre de la variable que usaremos en el boceto) como por ejemplo dado que va ser un led   de  “.light"

El Tipo de esta propiedad debe ser “ON/OFF (Boolean)”.

Our properties details are set, let's CREATE it
Nuestros detalles de propiedades están establecidos  así que vamos vamos a crearlo

Podemos dejar El permiso establecido en “Leer y escribir” – para que podamos encender y apagar el LED desde el navegador. 

También deje Actualizar en “Cuando cambie el valor”, lo cual  asegurará de que siempre que el valor de la propiedad/variable cambie dentro del boceto de la placa, dicho valor se enviará inmediatamente a la nube.

Finalmente haga clic en CREAR.

Property Edit view
Vista de edición de propiedades
Dashboard view
Vista del panel

 

Desde la vista Editar podemos hacer clic en “EDITAR CODE”. Esto nos redirigirá al Editor mostrando un boceto ya hecho que se ha generado para nuestra Cosa.

En este caso de ejemplo se generará el siguiente código que tendremos que cargar en nuestra placa:

 

*
Sketch generated by the Arduino IoT Cloud Thing "testThing"
https://create.arduino.cc/cloud/things/d276ab77-67cb-420b-9ea4-bd34cdf385d9



Arduino IoT Cloud Properties description



The following variables are automatically generated and updated when changes are made to the Thing properties



bool switchState;
int potentiometerValue;
bool ledState;



Properties which are marked as READ/WRITE in the Cloud Thing will also have functions
which are called when their values are changed from the Dashboard.
These functions are generated with the Thing and added at the end of this sketch.
*/



include "thingProperties.h"



include



define LED_PIN 2



define POT_PIN A1



define BUTTON_PIN 5



FTDebouncer buttons;



void setup() {
pinMode(LED_PIN, OUTPUT);
buttons.addPin(BUTTON_PIN, LOW);
buttons.init();



/*
The following function allows you to obtain more information
related to the state of network and IoT Cloud connection and errors
the higher number the more granular information you’ll get.
The default is 0 (only errors).
Maximum is 3
*/
setDebugMessageLevel(2);



// Initialize serial and wait for port to open:
Serial.begin(9600);
// This delay gives the chance to wait for a Serial Monitor without blocking if none is found
delay(1500);



// Defined in thingProperties.h
initProperties();



// Connect to Arduino IoT Cloud
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
}



void loop() {
buttons.update();
ArduinoCloud.update();
// Your code here
int angleSensor = analogRead(A1);
angle = map(angleSensor, 0, 1023, 0, 270);
}



void onLightChange() {
digitalWrite(LED_PIN, light);
Serial.print("The light is ");
if (light) {
Serial.println("ON");
} else {
Serial.println("OFF");
}
}



void onPinActivated(uint8_t pinNr) {
// do something according to the _pinNR that is triggered. For instance:
Serial.println(pinNr);
toggle = !toggle;
}



void onPinDeactivated(uint8_t pinNr) {
// do something according to the _pinNR that is triggered. For instance:
Serial.println(pinNr);
}

 

El boceto se denominará exactamente igual que nuestra Cosa, más la fecha de creación y, finalmente, un número si ya existe un boceto con nombre .

Aparte del archivo .ino principal , verá tres archivos más:

  • ReadMe.adoc: se trata de un archivo de texto sin formato que contiene información sobre el boceto, el autor y el propio proyecto.
  • thingProperties.h: este es el código generado por Arduino IoT Cloud cuando agregamos nuestra propiedad. No necesitamos editar este código, pero es útil verlo ya que muestra qué variablesde nuestro archivo de boceto principal (.ino) se sincronizarán con la nube.light
  • En la Pestaña Secreto: Detalles de la conexión WiFi,  esta pestaña nos permite rellenar los valores  como  son el nombre y la contraseña de la red WiFi a la que se conectará nuestra placa.SECRET_SSIDSECRET_PASS

 

Vamos a profundizar en cada línea de este boceto para entender lo que hacen los difrentes ficheros qeu lo compone:

Fichero thingProperties.h

#include <ArduinoIoTCloud.h>

Importa la biblioteca ArduinoIoTCloud, que es necesaria para sincronizar nuestras variables de boceto locales con sus propiedadesde IoT Cloud.

#include <Arduino_ConnectionHandler.h>

El WiFiConnectionManager se utiliza para gestionar la conexión WiFi y la reconexión sin problemas.

char ssid[] = SECRET_SSID;
char pass[] = SECRET_PASS;

Estos valores se extraen de la pestaña Secreto.

#define THING_ID "d276ab77-67cb-420b-9ea4-bd34cdf385d9"

El código de identificación único de la cosa.

void onLightChange();

Esta línea declara una función que se llamará cada vez que se cambia el valor de nuestra propiedad en el panel. Este tipo de función se conoce como devolución de llamada.light

bool light;

Declaración de la variable.light

void initProperties()

Esta función se llamará dentro del bloque de nuestro archivo *.ino. setup()

ArduinoCloud.setThingId(THING_ID);

Le dice a nuestro boceto a qué cosa conectarse.

ArduinoCloud.addProperty(light, READWRITE, ON_CHANGE, onLightChange);

Este código pues le indica al sketch que trate la variable como una propiedad de nuestra cosa y que ejecute la función de devolución de llamada cada vez que se cambie el valor de propiedad de Arduino IoT Cloud.

Los permisos se establecen para esta propiedad porque esto es lo que seleccionamos al crear esta propiedad.lightonLightChangeREADWRITE

 

El resto de codigo es  el siguiente:

void onLightChange();

bool toggle;
int angle;
bool light;

void initProperties(){
ArduinoCloud.setThingId(THING_ID);
ArduinoCloud.addProperty(toggle, READ, ON_CHANGE, NULL);
ArduinoCloud.addProperty(angle, READ, ON_CHANGE, NULL, 3.000000);
ArduinoCloud.addProperty(light, READWRITE, ON_CHANGE, onLightChange);
}

WiFiConnectionHandler ArduinoIoTPreferredConnection(ssid, pass);

 

Este código Inicializa Connection Manager con el nombre de punto de acceso WiFi (SECRET_SSID) y la contraseña (SECRET_PASS)que establecemos en la pestaña Secreto

 

Fichero *.ino

Al igual que en cualquier Arduino Sketch, hay dos funciones principales, y . Se llama una sola vez; cuando el croquis se inicia o se restablece. El se ejecuta continuamente siempre y cuando la placa esté siendo alimentada.void setup(){...}void loop() {...}setup()loop()

#include "thingProperties.h"

Importa variables y funciones declaradas en thingProperties.h, así como en otras bibliotecas importadas.

setDebugMessageLevel(2);

Establece el nivel deseado de mensajes de registro que se imprimirán en el Monitor serie. En este momento el nivel se establece en 2, pero podemos cambiarlo de0 (que registra sólo errores) hasta 3 (que registra TODO!). Si algo no está funcionando con la conexión a WiFi o Cloud, será más fácil encontrar el problema si se establece en un nivel superior. Por ahora, podemos dejarlo como está.

Serial.begin(9600);

Inicializa el monitor seriepara imprimir lo y leer deél.

delay(1500);

Espera 1,5 segundos para dar al Monitor serie el tiempo necesario para inicializar.

initProperties();

Inicializa las propiedades tal como se definen en thingProperties.h.

ArduinoCloud.begin(ArduinoIoTPreferredConnection);

InicializatheArduinoCloudusingthe mencionado anteriormente ConnectionManager.

Dentro de lo que encontramosloop()

ArduinoCloud.update();

Maneja muchas cosas en segundo plano, incluyendo la sincronización de los valores de las propiedades entre la nube y la placa, checkingtheconnectiontonetworkyCloudy otra lógica. Si el valor de una propiedad cambia en el boceto, la biblioteca la detectará automáticamente y notificará a la nube, de modo que dicho valor se reflejará en nuestro Arduino IoT Cloud Dashboard. Del mismo modo, cuando se cambia el valor de una propiedad en el panel, la biblioteca actualizará el valor correspondiente en el dispositivo.

void onLightChange() {...}

La implementación de nuestra devolución de llamada que se llamará en cualquier momento que cambie el valor de la propiedad. Aquí agregaremos cualquier código que queramos que se ejecute cuando cambie la propiedad de nuestro panel.light

Y ahora, con el fin de encender y apagar el LED desde el Arduino IoT Cloud Dashboard, necesitamos escribir algunas líneas de código. Primero definimos el pin al que está conectado nuestro LED. Agregue este código justo encima de la funciónsetup()

#define LED_PIN 2

En la función, necesitamos inicializar este pin para que sea una SALIDA:setup()

pinMode(LED_PIN, OUTPUT);

Por último, en la función, agregamos un poco de lógica para rastrear el estado en el monitor serie y para encender y apagar el LED. Tenga en cuenta que esta función de devolución de llamada se genera automáticamente cada vez que se agrega una nueva propiedad con permisos de lectura y escritura.onLightChange()light

void onLightChange() {
    digitalWrite(LED_PIN, light);
    Serial.print("The light is ");
    if (light) {
        Serial.println("ON");
    } else {
        Serial.println("OFF");
    }
}

 

Pruebas

Una vez preparados los ficheros  anteriores  podemos cargar el boceto desde el IDE de Arduino haciendo clic en el botón Cargar y luego abra el Monitor Serie a la izquierda para ver si todo funciona.

Debido a que hemos establecido el nivel de registro en 2, el Monitor serie nos mostrará información sobre el progreso de nuestra placa que se conecta a IoT Cloud.

Una vez conectado con éxito a nuestro WiFi, logró obtener una dirección e inició un enlace seguro, la placa se conectará a IoT Cloud y comenzará a intercambiar datos con ella.

[ 144313 ] Connecting to "FT Mobile"
[ 148284 ] Connected to "FT Mobile"
[ 148284 ] Acquiring Time from Network
....
[ 148690 ] Network Time: 1550057496
[ 148910 ] Connecting to Arduino IoT Cloud...
[ 152212 ] Connected to Arduino IoT Cloud

Si alguno de los pasos anteriores falla, recibiremos un error. Si eso sucede, podemos restablecer el tablero e intentarlo de nuevo. Si los pasos anteriores se han seguido cuidadosamente, es un caso poco probable 🙂

Al hacer clic en el botón GO TO IOT CLOUD seremos redirigidos a la página de nuestra Cosa en Arduino IoT Cloud. Desde aquí haremos clic en el botón del panel.

Dasboard view
En la Vista de Dasboard ya deberíamos ver un widget que muestra el estado de la propiedad que creamos, y debe establecerse en OFF.light

Vamos a hacer clic en él un par de veces y vamos a ver el LED encender y apagar… y ON… y OFF de nuevo…

¡Misión cumplida!