Skip to content

Instantly share code, notes, and snippets.

@omendezmorales
Last active May 4, 2023 22:20
Show Gist options
  • Save omendezmorales/2b72359a12ae8464d71d9b177287d277 to your computer and use it in GitHub Desktop.
Save omendezmorales/2b72359a12ae8464d71d9b177287d277 to your computer and use it in GitHub Desktop.
Notas de mi diplomado IoT

Diplomado IoT de la re-PUCV

@TODO definir/investigar cuales serían los temas calientes de IoT en este momento para Latam, y sugerirlo al eventual equipo.

Conectar eventualmente con Cesar Cofre de innovacion de la PUCV

De la logística

Asistencia al 80%, i.e. con más de 9 ausencias, se pierde el diplomado.

Boad miro de la clase https://miro.com/app/board/uXjVPXxO9NI=/

clase jue 15 sep 2022 19:13:46 -03

La bitácora se entrega 7 días después de cada módulo.

dos personas tienen que resumir la clase definir en grupo>

  • NOmbre equipo, logo
  • Ideas de proyectos
  • 1er representante
  • canales de comunicación

Creación de valor en IoT

SE pueden vender

  • sensores, actuadores, sistemas embebidos (HW)
  • modelos, i.e. un credit score, o todos aquellos que reciben un valor de entrada x salida.
  • aplicación. ¿Qué dos procesos nunca han conversado juntos? Qué mundos corren paralelos (i.e. silos), y necesitan cruzar información, para mejor toma de decisión.

Consultar OSS: Operational Support System
BSS: Business Support System

Ver https://www.designthinking.es/inicio/index.php; sobre las fases del proceso creativo mediante design thinking

B2C : business to client

Pregunta de prueba: Alineación del modelo de negocios. ¿qué variables hacen que el cliente gane o pierda $ ? Como se puede cobrar/compartir lo ahorrado/ganado de estos servicios/productos ?

para el modelo de negocios, ver cual es la base de funcionalidad/features mínimos a ofrecer, y luego ofrecer un extra que añada ventaja competitiva.

Mantenimiento y servicio son adicionales en la facturación. Considerarlo dentro de la estructura de costo. ¿Cual es el MTTF de los componentes de HW usados? considerar tercerización-asociaciones para ciertos segmentos dentro del stack...

Buscar la mayor cantidad de datos

board de miró

para la llamada bitácora https://miro.com/app/board/uXjVPWriWkU=/

clase mar 20 sep 2022 19:00:38 -03

La linea base es el simulado-supuesto sobre el cual se parte para demostrar el aporte que un nuevo sistema IoT aporta para generar valor al cliente.

¿qué es la innovación abierta?

(AP) - Comenzar a estructurar las soluciones/ideas IoT según los ejes definidos por docentes.

Con IoT, pasamos a ser (en el largo plazo) parte del negocio de los clientes.

El foco de soluciones IoT tiene que ser en identificar las variables que redituen para el cliente, y que sirvan para alinear nuestro modelo de negocios con el del cliente.

(AP) Lookup the Technology Readiness Level (EU standard); más detalles, en la entrada de wiki y también, WTF es el marco Cynefin (galés)? Es un marco conceptual para asistir en la toma de decisiones. Además de la entrada en wikipedia, está este video

Sobre agile y gestión de proyectos, mirar https://www.projecttimes.com/articles/the-pmbok-guide-seventh-edition-summary/

Ya vamos a comenzar a armar bitácora.

AP Angelo Va a enviar la rúbrica de la bitácora para este 1er módulo. done

ejemplos de plantillas a usar para bitácora

recursos para documentar desarrollo de productos IoT

clase jue 22 sep 2022 18:55:02 -03

enlace de archivos repl.it: https://replit.com/@omendezmorales/Clase-1-modulo-2

clase mar 27 sep 2022 19:00:45 -03

En la función print, puedo usar el parámetro end para imprimir en la 1a línea , e.g. print("esto es una prueba de print" , end=' ') print("donde siga la misma linea")`

va a imprimir: esto es una prueba de print donde siga la misma linea

clase jue 29 sep 2022 19:12:44 -03

¿cómo se crea una función con parámetros opcionales en Python?

inicializándolos al declarar la función

para usar interppñación de cadenas, este es un ejemplo ``>>> s = ‘Soy {0} y vivo en {1}’

>>> s.format(‘Juan’, ‘Santiago’) ‘Soy Juan y vivo en Santiago’

recordar que puedo concatenar llamadas, e.g. s.replace().lower().replace

clase sáb 01 oct 2022 09:57:46 -03

url para bitácora módulo 3 url de plantilla https://miro.com/app/board/uXjVPR06OzE=/

  • La función insert es <> de append, porque puedo elegir el lugar donde quiero insertar el elemento.

  • Se pueden hacer comparaciones entre más de dos tuplas: Pasted image 20221001115953

  • para hacer unfolding, puedo usar _ si no voy a usar esos elementos>

  • Pasted image 20221001120616

Táctica para evaluar ideas candidatas en el proyecto final grupal

During the Triple Nickle activity, small groups first brainstorm and write down ideas on paper individually. After five minutes, each person passes their paper to the right, who gets another five minutes to build on that idea, until the paper returns to the original writer. This is a great way to quickly discover limitations of your idea and to strengthen it, without running the risk of immediately dismissing less conventional ideas.

clase mar 04 oct 2022 18:54:08 -03

Para indicar al compilador que un método falta x implementar, se usa la instrucción pass. Ver referencia en este link

Para un ejemplo de estándar de conectividad pensado exclusivamente en domótica, ver el proyecto Matter en github

  • El conjunto solo acepta elementos únicos, como las llaves de un diccionario. Los elementos al ser agregados son determinados en un orden aleatorio.

Puntos sobre la reunión para viernes 7

Acuerdos sobre medio de presentación:

Cada miembro se ocupa de tener los ejercicios de su área previamente, acordada (funciones en mi caso). + ejercicios post-clase.

Sobre las ideas de proyecto, estas son mis 3 candidatas>

¿quien es tu cliente?

  1. yo mismo
  2. todos los usuarios de luz eléctrica
  3. las forestales de chile/ Gobierno

¿de qué se dieron cuenta?¿Qué datos de negocio del cliente capturan?

  1. que en temporada vacacional, de invierno,  hay mucha gente usando trineos, y si los arriendo, ¿cómo evito que me los roben entre tanta gente usando otros trineos? Los datos de los trineos debieran tener un id único , tiempo de uso y su posición en coordenadas GPS

  2. que la gente se le olvida apagar la luz cuando pasa de una habitación a otra. Los datos a capturar serían la presencia de gente en la habitación, y un tiempo de espera  de estar vacío el espacio

  3. que en la temporada de verano es difícil controlar los incendios forestales, y causan un daño enorme al ecosistema, y el riesgo de perdidas materiales & humanas. Los datos a capturar serían: ' humedad del aire, humedad del suelo, y presencia de humo ocasionado por combustión, así como coordenadas GPS de un conjunto de árboles de referencia. Para aportar datos de justificación, ver esta nota

¿Cuáles son los principales casos de uso?

  • monitoreo de activos (para evitar robo)
  • Tiempo de uso de los activos arrendados
  • ahorro en la cuenta de energía consumida
  • monitoreo de consumo de energía
  • alerta temprana/prevención de incendios forestales
  • prevenir a la población respecto de evacuar o no por incendio

clase jue 06 oct 2022 19:05:16 -03

Elementos de la bitácora para el módulo -- Todos los ejercicios; elegir la mejor opción del subcódigo. Se entrega por grupo general, i.e. La Resistencia. -- Una tarea aplicado a IoT -- una semana para entregar

(AP) Armar un repositorio ya sea en Colab, Repl.it, .zip y/o Github. Dejar al equipo que decida.

El modo w de apertura en un archivo:

  • sobreescribe el archivo si ya existía
  • si no existe el archivo. lo crea

El modo a de apertura en un archivo:

  • crea el archivo si no existe
  • si ya existe, va a escribir al final del texto existente.

para regresar al inicio de un archivo, se puede llamar la función: file.seek(0)

(AP) Como seguimiento, meternos a Flask, para ir ganando tiempo, porque lo vamos a ver en el tema de estudio. Comenzar a jugar con el mismo, y aquí un tutorial para comenzar...

clase mar 11 oct 2022 19:23:39 -03

Arquitectura de plataformas IoT

Estos son los pilares de la arquitectura IoT Pasted image 20221011194116 Estos pilares sirven como criterios para poder cubrir las necesidades de un cliente potencial.

Estándares

  • Hay un estándar internacional llamada OneM2M,para armonizar estándares de telecomunicaciones. Esta armonización comprende interoperabilidad en arquitectura, especificaciones API, y seguridad para tecnologías IoT en los miembros participantes.

  • El otro estándar es el IoTWF, que "apunta al desarrollo de una IoT interoperable mundial, solucionado los desafíos sociales y comerciales pra crear un ecosistema y mercado IoT verdaderamente internacional".

Otras organizaciones que buscan armonización son aiot, NB Conectar con Rodrigo Muñoz Lara, quien tiene ya su micro-empresa de soluciones IoT.

Un Elevator Pitch para un edificio inteligente. Abordarlo al punto de vista de la seguridad:

  • Vigilancia
  • Alarmas
  • Monitoreo de emisiones de gas-monóxido de carbono La idea es integrar todas esas funcionalidades, con suscripciones a la medida/customizables, según los deseos del comprador potencial. Esto permite la integración con otros prestadores de servicios (e.g. internet )

Clase jue 13 oct 2022 17:10:15 -03

Para el elevator pitch, podemos usar una presentadora virtual asistida x IA, si es que no es un problema según la rúbrica.

Clase mar 18 oct 2022 19:22:37 -03

Un nuevo concepto es la programación over the air , y más específicamente firmware over the air

En los esquemas de Cloud computing si hay latencia muy alta de transferencia de datos, se puede migrar a un esquema de edge computing, alias computación de frontera

Finalmente, el esquema de fog computing es un intermedio entre la Nube y la frontera (borde)

En el diplomado, vamos a trabajar con APIs del tipo web socket, y más concretamente, en las del subtipo REST. Para consultar las peticiones REST, se pueden probar/validar usando e.g. Postman

(AP) completar el tutorial de Postman , y probar las sig. APIs: (DONE) https://apis.digital.gob.cl/fl/feriados https://goweather.herokuapp.com/weather/Curanilahue http://airesantiago.mma.gob.cl/api/home2 https://api.gael.cloud/general/public/sismos

Esta es la URL del mock server que creé: https://46e89537-5b06-450a-b4ca-2dc8809a4313.mock.pstmn.io/corfo_IoT

Este es el recurso/servicio para conectar cosas: https://ifttt.com/explore/services, ver tutorial .

clase jue 20 oct 2022

Hay un editor en línea para json

Existen diferentes arquitecturas (o modelos) de red: Pasted image 20221020191656

y para enviar mensajes a diferentes apps, se usan puertos, usando la notación : La dirección IP está instrumentada en versiones para 32 bits (IPv4) y 128 bits (IPv6) . Para ver sobre los rangos IP permitidos, consultar este recurso

Para enviar mensajes a diferentes apps, se usan puertos, usando la notación :. Esta notación constituye un socket, y hay dos protocolos que permiten implementar esta conectividad (ver slide 8 de la clase correspondiente ):

El registro de direcciones en LATAM, se encuentra disponible en lanic

conceptos de seguridad:

  • Exploits. Ataque que aprovecha las vulnerabilidades de apps, redes, OSs, o hardware.
  • Amenazas. Es el potencial para llevar acabo el daño o ataque.
  • Vulnerabilidad (en HW & SW). Una debilidad en el diseño de un sistema/dispositivo
  • Riesgos. Pérdida de la confidencialidad, integridad o disponibilidad de información

Para seguridad en la nube, ver https://cloudsecurityalliance.org/ Sobre los diferentes tipos de ataques IoT, ver slides 19-20 de la presentación

Para la rúbrica de este módulo, mandar el canvas de miró a rodrigo.munoz.l@pucv.cl y carlos.garcia.b@pucv.cl

Clase sáb 22 oct 2022 10:16:40 -03

Vamos a desarrollar con Tinkercad, usando Arduino . alguas empresas vistas fueron

  • lemsystems. agricultura, hidrología, industria
  • dos20. gestión de recursos hídricos y fluidos en general
  • oasys. industria, tramporte, infraestructura & energía
  • libellium. Agricultura, smarcities, sustentabilidad

La plataforma waspmote es similar a arduino, pero desarrollado x Libelium (ver arriba).

se pueden usar con wasmote los siguientes protocolos:

  • CANBUS
  • Modbus
  • GPRS
  • RS-485*
  • RS-232
  • Bluetooth
  • Wifi
  • ZigBee

Otra placa vista es la raspberry pi,

Clase mar 25 oct 2022 19:36:21 -03

Vimos el arduino Uno (principalmente), así como la estructura de un programa. (AP) MIrar el video desde las 19.55 para explicarle a Lili como conectar el ARduino a un LED.

Al código que armemos, agregar Autor Fecha Grupo Ejercicio

Luego, descargar para integrar a la carpeta. Este son los esquema de PULL-UP(izq) & PULL-DOWN(der)> Pasted image 20221025214228

Para el ejercicio 2, usar el switch case para elegir dependiendo de las entradas en la slide 33.

clase jue 27 oct 2022 18:59:31 -03 - Sensores & actuadores

Sensores

Se perciben/registran valores de resistencia (o capacitor) variable, corriente, frecuencia, voltaje. Como ejemplo de tipos de sensores, tenemos: Pasted image 20221027190804 En función de aquello, se procesan en el (micro) controlador, y se emite una respuesta a ejecutarse mediante un actuador

c= λ f donde c > vel luz f > frecuencia de onda λ > long de onda.

hay sensores infrarrojos

  • activos, que a su vez se dividen en
    • reflexivos
    • de ranuras
    • modulados
  • pasivos
    • PIR detector de movimiento pasivo (mediante diferencias de calor)

EEn el sensor IR de tinkercad, la salida siempre es 1, pero si recive un mando del control remoto, entonces recibe un 0 en la saldia.

Actuadores

Dispositivos que permiten modificar variables de un sistema real Ejem'plos son:

  • MOtores
    • motor paso a paso. Realiza un movimiento en grados (e.g. [1,8° 2° 2,5° 5°])
    • de Corriente continua
  • Válvulas
  • Pistones

En el pulso de Pulse Width Modulation (PWM), tenemos siempre un periodo T constante (duración). Se definen 5 términos:

D > ciclo de trabajo; T > periodo; τ > ancho de pulso; _V_ valor medio; A > amplitud

y donde D = τ / T _V_ = A x D, o A x (τ / T)

En el caso de Arduino, tenemos estas frecuencias de salida con PWM

• Pines 3, 9, 10 y 11: 490 [Hz] • Pines 5 y 6: 980 [Hz] y la instruccion para generar esas frecuencias es analogWrite(pin,value); donde value oscila entre 0(0%) y 255 (100%), ej. un % del 20 % equivale al valor 51 (255 * 0.2)

(AP) Qué componente es este en tinkercad que permite ver el comportamiento de PWM? Pasted image 20221027212813

Para la actividad 2 (slide 34), usar el driver de Puente H (L293D)) , donde Habilitador 1 conecta con señal PIN 9 (PWM) MOtor 1-a y 1-B conectan con PINS 3 y 6

La alimentación 5VDC conecta al PIN 16. Para mas detalles, ver la imagen Pasted image 20221027213950

La solución demostrada x los docentes se ve así: Pasted image 20221027220708

clase jue 03 nov 2022 18:54:46 -03

Señales analógicas

Estas señales necesitan convertirse a señales digitales (discretas) mediante un ADC Pasted image 20221103190609

El ADC hace dos procesos:

  • muestreo, usando un periodo T de toma de muestra, y
  • cuantificación. Una señal análoga necesita cuantificarse en rangos de máximos y mínimos de tensión (Voltaje)., Arduino tiene una capacidad de cuantificación de 2^10 [0-1023], y permite conectar hasta 6 sensores análogos: Pasted image 20221103192046

La entrada AREF del Arduino, es el valor máximo en [v] de la señal analógica que ingresa por los pines analógicos del Arduino, con el cual se obtiene el máximo valor digital, en este caso, se alimenta con 2V

La instrucción analogReference(type); (que tiene que definirse en la función void setup()) es la usada para configurar el voltaje de la señal de entrada, y tiene las siguientes opciones:

  • DEFAULT: la referencia de voltaje por defecto es 5[v] o 3.3[v], según la placa Arduino, en el rango 2^10 bits

  • INTERNAL: la referencia es 1,1[v] en ATmega168 o ATmega328 o 2.56[v] en ATmega8.

  • INTERNAL1V1: la referencia es de 1.1[v] (sólo en Arduino Mega)

  • INTERNAL2V56: la referencia es 2.56[v] (sólo en Arduino Mega).

  • EXTERNAL: el voltaje aplicado a AREF (entre 0 y 5[v]) es usado como referencia.

La lectura de señales analógicas se hace con la instrucción analogRead(pin);. Hay otra isntrucción para escalar magnitudes:map(valor, fromLow, fromHigh, toLow, toHigh);. Por ejemplo,

escalamiento=map(lectura, 0, 1023, 0, 10);

Para ver los valores continuos, se puede usar el monitor serial , usando los comandos:

Serial.begin(9600); // define un bit rate de 9600[baudios] Serial.print(dato); // imprime caracteres ASCII o algún valor numérico Serial.print("Texto"); // imprime un texto Serial.println(dato); // imprime caracteres ASCII o un valor numérico, y al término agrega un \n Serial.println("Texto");

Para una referencia de todas las funciones disponibles en ARduino, ver la documentación correspondiente

Para el ejemplo 2 del relé, esta es la imagen del circuito del docente: Pasted image 20221103214225

Pasted image 20221103214745

para el ejercicio 3, el esquema de cableado del docente es> Pasted image 20221103220730

El código del docente es: Pasted image 20221103220809

Se recomienda usar la regla de tres para valores flotantes, de otro modo, usar la instrucción map(valor, fromLow, fromHigh, toLow, toHigh);, que retorna valores enteros.

Clase sáb 05 nov 2022 09:56:06 -03

En los protocolos de comunicación interviene la cantidad de información a enviar, así como la velocidad. En comunicación serial , los datos se envían uno tras otro

El protocolo UART

• UART: Universal Aynchronous Receiver – Transmitter. • Usa sólo un cable para enviar datos desde un Tx a un Rx + la conexión a tierra. • ¿Cómo sabe el receptor cuando comienza o termina un bit o, en general, la información? Debe haber una configuración común entre Tx y Rx en términos de:

  1. Velocidad de transmisión.
  2. Longitud del dato.
  3. Bits de inicio y parada

En Arduino se utilizan los PINs 0 y 1 de la salida columna I/O: Pasted image 20221105102716

Serial.begin(baudios); Serial.print(dato); dato = Serial.read( ); Serial.write(dato); Serial.available( ); //Para conocer si existen datos pendientes en el bus de comunicación serial. //Retorna TRUE o FALSE. Serial.end( ); //Para deshabilitar el puerto serial y de esa forma poder usar los pines TX y RX como Pines digitales

Ejercicio 1 Pasted image 20221105105049

Interface SPI

Comunicación Serial: SPI

• SPI: Serial Peripheral Interface (Interfaz Periférica en Serie). • Considera 4 cables + conexión a tierra.

  1. Una señal de reloj: SCLK.
  2. Entrada esclava y salida maestra: MOSI.
  3. Entrada maestra y salida esclava: MISO.
  4. Selección de chip: SS.

• Principales ventajas de SPI:

  1. Permite comunicación full dúplex. En ese sentido, ambos dispositivos podrían enviar y recibir información de forma simultánea.
  2. I2C no permite comunicación full dúplex, ya que es sólo simplex.
  3. Velocidad de SPI es mucho mayor que I2C y UART, pero al mismo tiempo el consumo de energía es menor.

Para una comparativa entre SPI, UART & I2C, ver este enlace. También LA slide 37 de la clase 5 contiene el cuadro comparativo

Protocolo I2C

Comunicación Serial: I2C I2C: Inter – Integrated Circuit., es un protocolo de comunicación sincrónico, a diferencia de UART, creado por Phillips. • Necesita 2 conexiones + la conexión a tierra.

  1. SDA: Signal Data.
  2. SCL: Signal Clock. • En Tx y Rx debe existir la misma configuración de: cantidad de bits que se envían desde un Tx a un Rx y la velocidad de transmisión. Por lo general, I2C funciona con velocidades de 400[kbit/s] y enviar datos de 15 o 16 bits.

Trabaja en 2 fases: direccionamiento, y transmision de datos ; ver fig. siguiente: Pasted image 20221105123323

En arduino, se pueden usar los PINS digitales arriba de AREF Pasted image 20221105123709 y los PINs analogos A4 y A5:

Pasted image 20221105123721

Instrucciones para Comunicación LCD I2C • Librería: #include <LiquidCrystal_I2C> • Instrucción:LiquidCrystal_I2C lcd(adress,number_columns,number_rows); • Instrucción:lcd.init( ); // se define en void setup ( )

• Instrucción:lcd.backlight( ); // se define en void setup ( ) • Instrucción:lcd.setCursor(column_index,row_index); • Instrucción:lcd.print(“This is message”); • Instrucción:lcd.clear( );

Para el ejemplo 2, el chip del LCD es PCF85741, y en TTinkercad, se configura así: Pasted image 20221105124857

Los docentes compartieron este codigo del ejemplo 2.

NB, el potenciómetro tiene un rango de [0 - 2^10 - 1]

clase mar 08 nov 2022 19:03:02 -03

La familia ESP de micro controladores

Vamos a usar el ESP8266, La configuración de los pines es de dual i.e. Arduino IDE, o los nombres de PINs de la tarjeta Pasted image 20221108191737

NB issue found documented here para activar el serial, ver este link, y este otro

En el menú sketch de Arduino IDE, hay uno básico que dice Blink. AP- Probar ese, para ver que la conexión está correcta en el breadboard. Pasted image 20221109165128

El ejercicio 1 tiene esta conexión Pasted image 20221108202425

Sobre los códigos de color de las resistencias.

Las resistencias vienen con unas barritas de colores , e.g. La resistencia de 10KOhm es café-negro-naranja. Para más detalles, ver el video siguiente

Ejemplo 1

SE usan 2 resistencias: 1 de 220 Ohm, y la otra de 10KOhm . LA 1a va al cátodo del LED: Pasted image 20221110151131

La 2a va al dip switch , junto con el PIN D5 de entrada (ver cable verde de la sig imagen):

Pasted image 20221110151912

y así se ve en TinkerCad -usando Arduino: Pasted image 20221110152355

Uso de sensor ultrasónico.

Usa la fórmula de cálculo de distancia D : D = t/2 ∗c

para obtener distancias en centímetros , necesitamos convertir de metros a cm, y de segundos a microsegundos , i.e.: d = t/2 * c

donde

c = 34000 (velocidad del sonido)
2(segundos) = 2_000_000 ( μsecs )

D = t * 58.8

o D = t / 0.017

El sensor que viene en el kit es HC-SR04, y tiene un rango de alcance entre 2 y 400 cm. Pasted image 20221110153341

Para hacer la lectura del sensor, se usa pulseIn(pin, valor)

Con el cableado del Ejercicio 1 es: Pasted image 20221111145640

Del sensor de movimiento HC-SR04, El cable verde (trigger) corcode al PIN de salida, y el amarillo (echo) al de entrada.

Para modular el contraste del LCD, modularlo con el tornillo dentro del cuadro azul: Pasted image 20221108221326

clase mar 10 nov 2022

Vieron el sensor Dallas DS18B20 (de temperatura) INternamente contiene un CAD

  • Rango de operación está entre -55° a 125° C
  • Polarización de 3V a 5,5V
  • Requiere una resistencia pull-up, cuya magnitud en Ωs va a depender de la longitud del cable a conectar (ver tabla abajo)
  • Usa el protocolo one-wire, utiliza el bus 1-wire p/enviar la información al micro-controlador Pasted image 20221112155916

Clase mar 15 nov 2022 19:01:23 -03

Hoy se va a a utilizar el sensor de humedad. Hay distintos tipos de humedad: absoluta, relativa, y del suelo. Esta última se mide como proporción de peso de agua vs el suelo que deseamos medir. En el proyecto de este diplomado, usaremos el sensor FC-28 , que usa el método de resistencia eléctrica (diapo 8 de la presentación de clase).

(AP) sacar el múltímetro y probar el funcionamiento del sensor con agua, y con la plantita del baño.

El sensor opera con el rango de voltaje de 0-5V, y tiene una salida análota y otra digital: Pasted image 20221115192622

Es importante destacar que la salida analógica del sensor es inversamente propocional al % de humedad en la tierra: mientras + húmedo, menor es el V de salida. En cuanto a la salida digital, se puede usar el potenciómetro de la parte posterior del sensor para fijar un nivel de referencia de humedad, el cual una vez sobrepasado da un 1 (reflejado en un 2° LED con que viene el sensor): Pasted image 20221115194011

Clase jue 17 nov 2022 18:52:16 -03

Veremos la adquisición de datos, usando un datalogger. Se usará el puerto serial para comunicarnos con la WeMO. Usamos la conexión del puerto Serial, y para comunicarnos usamos el módulo de Python pyserial

Clase sáb 19 nov 2022 09:49:33 -03

Clase final del módulo. Charla invitada de Creatiox Highlight: estructura administrativa para levantar un proyecto IoT: Pasted image 20221119102642

El punto 3 de la imagen arriba se estudia los requerimientos de electrónica, protocolos de comunicación, almacenamiento, etc. El punto 4 indica un % de certeza de los elementos existentes (off the shelf), y el % que queda x desarrollar.

Las fases son de un proyecto IoT:

  • Concepto
  • Idea
  • Prototipo
  • Comercialización Elementos que componen un proyecto IoT: 1 HW 2 FW 3 Cloud 4 SW

Recomendación: Comprar licencia Click Up (licencia de $5 USD anual -o mensual?)

Para la nube, Creatiox usa ubidots , que tiene mucha experiencia en la parte de la nube, y especialmente cuidan el aspecto de integración de seguridad.

Los datos de contacto son Email: eleazar@creatiox.com Fono: +56 9 9436 6623 Sitio Web: [https://creatiox.com](https://creatiox.com)

(AP) Ver en qué consiste https://thingsboard.io

Armado bitácora + demos de Módulo 4

El listado de ejercicios-ejemplos está en https://docs.google.com/spreadsheets/d/1i3zwnMhfGvi0Pvq4RSoSBmhp75oUBrbIf-APlCd9N8Q/edit?usp=sharing El drive para guardar el código es este

Para los ejercicios que son de simulacuiones (en TinkerCAD), solo se requiere enviar el URL de la simulación. La fecha de entrega es el 28 de Noviembre.

Clase mar 22 nov 2022 18:58:36 -03

Inicio de módulo 5

Las siguientes son los rangos de cobertura según el tipo de RED/tecnología de acceso: Pasted image 20221122192131

El mapa de cobertura digital de Subtel está disponble aquí

En la diapo 18, se menciona la IETF, que es una ong de stándares para internet.

Radio mobile es un SW para hacer estudios de cobertura.

Sobre Zigbee

zigbee funciona sobre el estándar IEEE 802.15.4. Este estandar está en la capa 1 física del modelo OSI; visto en el [módulo 3](## clase jue 20 oct 2022). Esto queda ilustrado en el sig. diagrama:

Pasted image 20221122212001

Un ejemplo de HW que implemente este estándar para comunicaciones es el xbee

Para un ejemplo de comparativa entre dos alternativas de HW (e.g. 3G vs Zigbee), ver este comparativo: https://www.digi.com/products-compare/56350/56516

Clase jue 24 nov 2022 18:58:38 -03

Veremos el protocolo WiFi (IEEE 802.11 a/b/g/n ) En 2.4 GHz, para NorteAmérica se usan los canales 1-11; para Europa de 1-13, y para Japón 1-14.

La sensibilidad del equipo es la potencia mínima que puede recibir un equipo para seguir operando.

La relacion decibel a miliWatts se expresa mediante dBm = 10 log(mW) ver mas detalles en Wikipedia.

El SSID (Service Set ID) es el nombre de la red Inalámbrica, y hay distintos tipos:

  • Independent Basic (IBSS)
  • Basic (BSS)
  • Extended (ESS)
  • Mesh Basic (MBSS)

Seguridad en redes inalámbricas

WEP y WPA son estándares vulnerables. Se recomienda usar WPA2 & WPA3

Hay un emulador de TP-Link para ver los puntos acceso WiFi.

WiFi HaLow es un estándar IEEE para equipos de baja potencia. Aquí hay una descripción detallada.

codigo del ejercicio Pasted image 20221124212201

La API de la librería WiFi que usamos está en este enlace

Clase mar 29 nov 2022 19:03:05 -03

LoRa

LoRa es una técnica de modulación, que puede funcionar sin licencia en bamdas inferiores a 1Ghz, e.g. 915, 868 y 433 MHz En Chile se usan planes de frencuencia AU915. Del spreading factor (SF) mostrado en la tabla de la diapo 4, esta imagen lo explica mejor, i.e. la cobertura/tasa de trasnsferencia vs consumo energético: Pasted image 20221129192013

Los sensores LoRa son más baratos que los LoRaWAN. Los GAteway LoRa solo funcionan con sensores LoRA, y a su vez los gateway LoRaWAN solo funcionan con dispositivos LoRaWAN

LoRaWAN

Es un protocolo con licencia propietaria de Semtech, que se basa en la modulación LoRa, pero que agrega valor en la capa de contro de accceso al Medio (capa 2 del modelo OSI). Con TTN se puede obteber conectividad al servidor de red, para poder usar sus servidores con gateways LoRaWAN.

En LoRaWAN, la topología de red es siempre en estrella.

LoRaWAN clasifica en tres tipos de dispositivos: A, B, y C. Todos los dispositivos deben implementar A, porque C y B son extensiones de la especificación de dispositivos de la clase A.

La LoRa alliance tiene registro de certificación con los dispositivos a crear que se ajusten a este estándar. La especificación que se va actualizando, y cada nueva versión es compatible con la anterior. (AP), Ver alguno de los vids de lora alliance, https://lora-alliance.org/webinars-videos/

Un proveedor de dispositvos LoraWAN es https://www.advantech.com/en

Para cotizar electrónica en CL; ver https://www.zonaindustrial.cl

Clase jue 01 dic 2022 19:16:22 -03 Protocolos de mensajeria para IoT

Protocolos petición-respuesta

Principalmente se usan

  • HTTP, CoAP (para petición-respuesta)
  • MQTT, AMQP (esquema publicación-subscripción)

HTTP usa los verbos GET, POST, PUT y DELETE para pedir datos al servidor.

Hay varias categorías de códigos de respuesta frente a las peticiones HTTP: Pasted image 20221201193348

El protocolo CoAP (Constrained Application Protocol)

CoAP está diseñado para interactuar con HTTP y RESTful a través de simples proxies.

Tiene como ventaja que se puede lograr comunicación entre pares, i.e., peer2peer

Protocolos publicación-subscripción

MQTT (Message Queue Telemetry Transport)

Consiste en un servidor central (router o broker) que recibe los mensajes de los dispositivos emisores.

Hay varios ejemplos de brokers en la nube:

URL of MQTT publisher http://www.emqx.io/online-mqtt-client#/recent_connections/a1a4024c-7a14-4e52-93b8-73ff69f55685

URL de bitácora módulo 5: https://miro.com/app/board/uXjVP7a88V4=/

Clase mar 06 dic 2022 19:04:39 -03 CAPA PLATAFORMAS

Microservicios

Dan una granularidad más fina para gestionar los diferentes componentes de un sistema de información.

Kafka

Es un almacén de datos para transmisión constante de datos en tiempo real (streaming).

Pasted image 20221206193417

Mosquitto

Es un intermediario (broker) OSS, implementa el protocolo [MQTT]("#### MQTT (Message Queue Telemetry Transport)") en algunas de sus versiones. SE caracteriza x usar pocos recursos, lo que lo hace ideal para usar en dispositivos IoT.

Se usó en clase la librería de paho-mqtt para Python.

Clase 10-12 -perdida

Se conectaron a MongoDB, e insertaron una colección de datos. Para usar los datos, ver documentación del shell, y el módulo de pymongo.

Vieron también influxDB

Clase mar 13 dic 2022 19:01:07 -03

Servicios web

Son aplicaciones modulares, auto-contenidas , que se pueden publicar, localizar e invocar a través de la red.

Librerías/módulos en Python para desarrollo web se usan Flask (y flask_restful, requests), y FastAPI. Para correr una app web en Flask con VSCode, ver los detalles de este tutorial, en particular, la instrucción para correr la app, .e.g., python3 -m flask run .

Para exponer el sitio web (local) a través de ngrok, llamarlo con esta línea:

ngrok http 5000

Se usan (los verbos HTTP) POST para insertar, DELETE para borrar, y PUT para actualizar datos en el servidor.

Clase jue 15 dic 2022 19:09:09 -03

Se vió Grafana, herramienta para visualizar tableros web interactivos. Mi espacio grafana es omendezmorales.grafana.net.

Tanto en grafana como en influxDB, se puede usar el lenguaje flux para consultar las series de tiempo, aquí está otro recurso de ayuda

Pasted image 20221215212521

Clase mar 20 dic 2022 18:59:03 -03

Comienzo de taller. Usar además de la publicación de la temperatura, agregar la humedad de una planta. Hubo problemas para publicar desde el Wemos por temas de formateo, parsing y demás. Mejor usar los datos de JSON library.

Respecto de agregar más de una variable en los puntos de datos de influxDB, es mejor ver los ejemplos de la librería en Python, en especial el método from_dict

La arquitectura del sistema es la siguiente: Pasted image 20221220191544

Clase jue 22 dic 2022 18:58:42 -03

Vimos consumo de datos via API usando el plugin de infinity. Otra recomendación fue (en HW) usar el BroadLink RM4, y como controlador el home assistant, para controlar los dispositivos conectados.

Para poner dos variables de distintas escalas en el mismo gráfico en Grafana, se usa la opción de override en las opciones de timeseries. Pasted image 20221222215221

  • con curl, se puede consultar apis mediante los switches location y request , eg., curl --location --request GET 'https://apis.digital.gob.cl/fl/feriados/2022' Otros ejemplos de curl con diferentes verbos (e.g. POST) pueden encontrarse en este enlace

Clase mar 27 dic 2022 13:27:13 -03

Vimos Ubidots. Una plataforma IoT para el escalamiento de prototipos. Se considera ya una herramienta para salir a producción.

Funciona en modos que satisface IP al 100%, o parcialmente: Pasted image 20221227191415

Los puntos(dots) se generar con información no solo de las métricas que nos interesans, sino metadatos relativos al espacio (e.g. latitud, longitud) y tiempo(timestamp).

Hay unos tutoriales para conectar a ubidots usando Python/ Hay así mismo una guía para crear un dispositivo como la WeMOS dentro de Ubidots

Se crean/registran dispositivos, Pasted image 20221227215249

y luego se pueden definir tableros, e.g., Pasted image 20221227215122

(AP) Cómo se puede agregar Latitud y Longitud de los dispositivos? LO definen con Set Location, y luego editan de forma manual : Pasted image 20221227220622

Clase jue 29 dic 2022 18:49:09 -03

Se puede usar curl también para hacer peticiones POST & PATCH

Para transmitir datos de forma segura a los sserver de ubidots, se la dirección segura usa el puerto 443. ES importante siempre leer la respuesta http de los código de estados (e.g. 200, 401, 404, etc). Para recibir datos, se puede consultar la documentación respectiva.

En los tableros de ubidots, se hace una distinción entre las label (de dispositivos, variables, etc.), y los identificadores de los mismos, e.g. Pasted image 20221229194551

Hay también un cliente de la API en Python

(AP) rescatar del foro el último .py de Renzo para leer datos desde ubidots

Clase (final) mar 03 ene 2023 18:55:47 -03

Los componentes de una arquitectura de referencia para plataformas IoT consideran:

  • Servicios de mensajería
  • BBDD
  • servicios web
  • Visualizacion

Nótese que en la arcituectura de referencia que nos mostraron en el módulo, los protocolos de comunicación aparecen en las líneas de conexion : protocolos-en-arq-ref

Ejemplos de plataformas en la nube que integran todo lo anterior, son AWS IoT, Azure IoT.

Un artículo sobre el uso de AWS IoT se puede leer-escuchar aquí.

AWS IoT

Un aspecto importante de la arquitectura a usar, es el monitoreo de eventos (e.g. batería baja de dispositivos, algún umbral sobre-pasado en las variables reportadas, etc.), AWS IoT events es un servicio de datos es un ejemplo del aspecto en cuestión.

Es importante considerar los requerimientos de escalabilidad, para efectos de no consumir todos los servicios ofrecidos por las plataformas, además de comparar si otros proveedores acaso ofrecen mejores ofertas de costo.

En la plataforma ubidots también existe un plugin para conectar con el servicio AWS IoT Core

Azure IoT

Tiene entre otros componentes, IoT central que es un gestor de despositivos, y cuenta con servicios para visualizar y analizar datos. UN comodín de Azure, es el Azure Stack Edge, que es un enfoque hibrido (mitad on premise, mitad cloud) que ofrece HW como servicio

Sobre la evaluación del módulo

Docentes van a mandar rúbrica para una bitácora a armar, + una tarea "simple", relacionada con arquitectura de referencia.

URL de bitácora módulo 6: https://miro.com/app/board/uXjVPy97pm4=/ URL de tarea final: https://is.gd/Iuquk4

otros recursos de aprendizaje IoT:

Taller de diplomado

Clase jue 05 ene 2023 18:58:31 -03

Vamos a tener el siguiente formato de presentacion para los últimos dos días de presentaciones: Pasted image 20230105192522

Otros aspectos a considerar son: Pasted image 20230105192659

Sobre la rúbrica que envió Angelo, para el ultimo punto sobre coherencia problema solucion (FIT), ver esta página. Vamos a usar para el desarrollo del proyecto miró, y de ahí vamos a ir rellenando el ppt

Clase jue 12 ene 2023 19:12:28 -03

Para la capa física, se pueden usar diagrama de bloques:

Pasted image 20230112192008

Se espera que hagamos una tabla con los presupuestos (en términos de inventario de sensores) para el proyecto. Una vez que tengamos eso, necesitamos definir la lógica de control usando el diseño principal de un diagrama de flujo. No necesita ser tan detallado. Ver slide 13 de la diapositiva.

@omendezmorales
Copy link
Author

#TODO
re-asignar las imágenes en las ubicaciones donde se colocaron originalmente con Obsidian.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment