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.

Revisions

  1. omendezmorales revised this gist May 4, 2023. No changes.
  2. omendezmorales revised this gist Mar 15, 2023. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion MOOC IoT.md
    Original file line number Diff line number Diff line change
    @@ -3,7 +3,7 @@
    @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](mailto:cesar.cofre@pucv.cl) de innovacion de la [PUCV] (https://www.pucv.cl/uuaa/facultad-ingenieria/i-d-i-e)
    Conectar eventualmente con [Cesar Cofre](mailto:cesar.cofre@pucv.cl) de innovacion de la [PUCV](https://www.pucv.cl/uuaa/facultad-ingenieria/i-d-i-e)

    ## De la logística
    Asistencia al 80%, i.e. con más de 9 ausencias, se pierde el diplomado.
  3. omendezmorales revised this gist Mar 15, 2023. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions MOOC IoT.md
    Original file line number Diff line number Diff line change
    @@ -387,10 +387,10 @@ La solución demostrada x los docentes se ve así:

    ## 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 [DAC](https://es.wikipedia.org/wiki/Conversi%C3%B3n_anal%C3%B3gica-digital)
    Estas señales necesitan convertirse a señales digitales (discretas) mediante un [ADC](https://es.wikipedia.org/wiki/Conversi%C3%B3n_anal%C3%B3gica-digital)
    ![Pasted image 20221103190609](https://user-images.githubusercontent.com/6626759/225004152-f759c543-109b-4a5a-b30c-c4eaf414ed42.png)

    El DAC hace dos procesos:
    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](https://user-images.githubusercontent.com/6626759/225004146-f18e19eb-8490-4060-9166-984ddffacbb5.png)
  4. omendezmorales revised this gist Mar 15, 2023. 1 changed file with 0 additions and 48 deletions.
    48 changes: 0 additions & 48 deletions MOOC IoT.md
    Original file line number Diff line number Diff line change
    @@ -365,54 +365,6 @@ _V_ = A x D, o A x (τ / T)`


    En el caso de Arduino, tenemos estas frecuencias de salida con PWM
    Frecuencia del PWM:![Pasted image 20230131211253](https://user-images.githubusercontent.com/6626759/225003863-5bf4510f-8e4d-49d4-b8f6-be9bf3e5d9fb.png)
    ![Pasted image 20230131211218](https://user-images.githubusercontent.com/6626759/225003868-d4151ef2-35ff-4160-bd51-288baa89ee0d.png)
    ![Pasted image 20230130122110](https://user-images.githubusercontent.com/6626759/225003872-1fab68ac-ac64-4b28-adfa-07e1e7879b1c.png)
    ![Pasted image 20230126195316](https://user-images.githubusercontent.com/6626759/225003876-aa1359d7-c5c7-420b-b80e-2c6c3f6cc2fd.png)
    ![Pasted image 20230126194505](https://user-images.githubusercontent.com/6626759/225003884-adcc7c38-eb35-40f5-84e5-8962371f5cfb.png)
    ![Pasted image 20230126193207](https://user-images.githubusercontent.com/6626759/225003885-bc473f7f-3781-452e-951e-e1d42f3467e3.png)
    ![Pasted image 20230126191259](https://user-images.githubusercontent.com/6626759/225003891-4ba616d1-8d8f-4f11-a1bc-84cb260108d9.png)
    ![lambda-free-tier](https://user-images.githubusercontent.com/6626759/225003895-1b0eed74-259f-4f3e-ae85-ce6ff14aaa64.png)
    ![Pasted image 20230124212231](https://user-images.githubusercontent.com/6626759/225003898-dd08f93a-c31e-496c-8cfa-ae962c694d2f.png)
    ![Pasted image 20230124210319](https://user-images.githubusercontent.com/6626759/225003900-aa0cdece-9da6-497f-9497-50c3a619f79b.png)
    ![Pasted image 20230124202652](https://user-images.githubusercontent.com/6626759/225003902-8a102632-e766-4a29-98d6-49d8cce167b1.png)
    ![Pasted image 20230119220737](https://user-images.githubusercontent.com/6626759/225003906-e90afbf2-d264-435a-afe9-948b18e60521.png)
    ![Pasted image 20230119220413](https://user-images.githubusercontent.com/6626759/225003911-a2232d6d-410d-49ab-8780-f56045a6d82f.png)
    ![Pasted image 20230119205033](https://user-images.githubusercontent.com/6626759/225003918-34090382-063c-41ec-b198-2602ee08abf7.png)
    ![Pasted image 20230119205011](https://user-images.githubusercontent.com/6626759/225003924-6bf4d1fb-e0a2-44ac-aef8-82975ad79755.png)
    ![Pasted image 20230119193025](https://user-images.githubusercontent.com/6626759/225003931-eaa6a42c-bdd6-49d5-ae02-c0cfbf9b7f2c.png)
    ![Pasted image 20230119191056](https://user-images.githubusercontent.com/6626759/225003937-724369f5-9ee9-44b4-bf05-a958ffde31f6.png)
    ![Pasted image 20230112192519](https://user-images.githubusercontent.com/6626759/225003942-929f7de8-629e-47a5-9a50-de20bb841d53.png)

    ![Pasted image 20230110192915](https://user-images.githubusercontent.com/6626759/225003951-c503d102-1bf7-4203-ad2b-7c8869f6e55f.png)
    ![Pasted image 20230110192436](https://user-images.githubusercontent.com/6626759/225003956-3729524c-0980-4bc4-b668-b37127be35f3.png)

    ![Pasted image 20221222220226](https://user-images.githubusercontent.com/6626759/225003987-adadf015-21af-4411-b820-134118a472a0.png)



    ![Pasted image 20221108220635](https://user-images.githubusercontent.com/6626759/225004086-3d4bf97f-8d59-476f-8891-c632aea90bc5.png)

    ![Pasted image 20221105125838](https://user-images.githubusercontent.com/6626759/225004098-a565714a-b06f-4938-bfb9-24de59cbbab5.png)



    ![Pasted image 20221105123629](https://user-images.githubusercontent.com/6626759/225004111-d0f827d3-8478-4517-ad70-ce90aaf9ab6a.png)


    ![Pasted image 20221103220705](https://user-images.githubusercontent.com/6626759/225004137-6eb21ffc-e659-401c-8551-0efc01f31e65.png)


    ![Pasted image 20221102124011](https://user-images.githubusercontent.com/6626759/225004154-0d8f3695-2722-41b0-bfa0-cdf19e8ce1fe.png)




    ![Pasted image 20221020220005](https://user-images.githubusercontent.com/6626759/225004172-aeefb0e5-6589-4f0b-9987-7d17a32eec1f.png)

    ![Pasted image 20221004120718](https://user-images.githubusercontent.com/6626759/225004183-4b9023c2-4ba0-4b7f-981b-caea10a982af.png)



    • Pines 3, 9, 10 y 11: 490 [Hz]
    • Pines 5 y 6: 980 [Hz]
  5. omendezmorales revised this gist Mar 15, 2023. 1 changed file with 25 additions and 35 deletions.
    60 changes: 25 additions & 35 deletions MOOC IoT.md
    Original file line number Diff line number Diff line change
    @@ -386,24 +386,9 @@ Frecuencia del PWM:![Pasted image 20230131211253](https://user-images.githubuser

    ![Pasted image 20230110192915](https://user-images.githubusercontent.com/6626759/225003951-c503d102-1bf7-4203-ad2b-7c8869f6e55f.png)
    ![Pasted image 20230110192436](https://user-images.githubusercontent.com/6626759/225003956-3729524c-0980-4bc4-b668-b37127be35f3.png)
    ![Pasted image 20230105192659](https://user-images.githubusercontent.com/6626759/225003958-bf2e3294-7100-4d04-9541-4fa8150da1cb.png)
    ![Pasted image 20230105192522](https://user-images.githubusercontent.com/6626759/225003962-5ecec18f-88df-45a1-8b71-f72e06a5989b.png)
    ![protocolos-en-arq-ref](https://user-images.githubusercontent.com/6626759/225003964-4e60bbad-d4a9-4f80-8386-4b6390239491.png)
    ![Pasted image 20221229194551](https://user-images.githubusercontent.com/6626759/225003965-c4d10d75-d318-4fad-9ffc-ed962436e1fc.png)
    ![Pasted image 20221227220622](https://user-images.githubusercontent.com/6626759/225003968-b76337db-f363-4810-a6eb-b6b50a4e8033.png)
    ![Pasted image 20221227215249](https://user-images.githubusercontent.com/6626759/225003972-3063097a-abd8-4683-813d-f1f657e1f1a8.png)
    ![Pasted image 20221227215122](https://user-images.githubusercontent.com/6626759/225003976-bb1834ad-fca2-4613-a156-8b72aaec0c73.png)
    ![Pasted image 20221227191415](https://user-images.githubusercontent.com/6626759/225003980-b68a19ea-29c4-4816-b98d-c85082f8fd38.png)

    ![Pasted image 20221222220226](https://user-images.githubusercontent.com/6626759/225003987-adadf015-21af-4411-b820-134118a472a0.png)
    ![Pasted image 20221222215221](https://user-images.githubusercontent.com/6626759/225003990-a9c1d24a-f6fd-4f44-a1ee-0b65e5035ba5.png)
    ![Pasted image 20221220191544](https://user-images.githubusercontent.com/6626759/225003993-3b4c9eea-26d2-4bbf-902b-df150bc3810e.png)
    ![Pasted image 20221215212521](https://user-images.githubusercontent.com/6626759/225003997-a7263eaa-0042-42c4-aa54-aa4490655c63.png)
    ![Pasted image 20221206193417](https://user-images.githubusercontent.com/6626759/225004004-d7dd4105-a6b3-4316-847b-39ddf3fd847b.png)
    ![Pasted image 20221201193348](https://user-images.githubusercontent.com/6626759/225004007-485d967c-738c-41e7-94af-b3b0e5b26519.png)
    ![Pasted image 20221129192013](https://user-images.githubusercontent.com/6626759/225004010-f8c1207f-40eb-46b5-a625-108b209d1f20.png)
    ![Pasted image 20221124212201](https://user-images.githubusercontent.com/6626759/225004014-c2f1632b-ed96-4c99-a66e-59bfc0bdb83c.png)
    ![Pasted image 20221122212001](https://user-images.githubusercontent.com/6626759/225004016-fc8976ae-ccb3-4fe4-8d48-d5249fd7fa22.png)
    ![Pasted image 20221122192131](https://user-images.githubusercontent.com/6626759/225004018-3ba6b1b0-15e4-44b6-ba17-19f2e5143c12.png)



    ![Pasted image 20221108220635](https://user-images.githubusercontent.com/6626759/225004086-3d4bf97f-8d59-476f-8891-c632aea90bc5.png)
    @@ -736,7 +721,7 @@ La fecha de entrega es el 28 de Noviembre.

    ### 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.png]]
    ![Pasted image 20221122192131](https://user-images.githubusercontent.com/6626759/225004018-3ba6b1b0-15e4-44b6-ba17-19f2e5143c12.png)

    El mapa de cobertura digital de Subtel está disponble [aquí](https://subtel.maps.arcgis.com/apps/instant/portfolio/index.html?appid=da49e2e1f8a342bd9f048be385458b45)

    @@ -746,7 +731,7 @@ 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.png]]
    ![Pasted image 20221122212001](https://user-images.githubusercontent.com/6626759/225004016-fc8976ae-ccb3-4fe4-8d48-d5249fd7fa22.png)

    Un ejemplo de HW que implemente este estándar para comunicaciones es el [xbee](https://es.digi.com/xbee)

    @@ -776,7 +761,8 @@ Hay un[ emulador](https://emulator.tp-link.com/110-Outdoorv3/index.html) de TP-L
    WiFi HaLow es un estándar IEEE para equipos de baja potencia. [Aquí](https://www.wi-fi.org/discover-wi-fi/wi-fi-certified-halow) hay una descripción detallada.

    codigo del ejercicio
    ![[Pasted image 20221124212201.png]]
    ![Pasted image 20221124212201](https://user-images.githubusercontent.com/6626759/225004014-c2f1632b-ed96-4c99-a66e-59bfc0bdb83c.png)


    La API de la librería WiFi que usamos está en este [enlace](https://www.arduino.cc/reference/en/libraries/wifi/)

    @@ -785,7 +771,7 @@ La API de la librería WiFi que usamos está en este [enlace](https://www.arduin
    *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](https://drive.google.com/file/d/1BCq6bkk5ejpCq4H3a9PvjfS3bpivryKO/view?usp=sharing), esta imagen lo explica mejor, i.e. la cobertura/tasa de trasnsferencia vs consumo energético:
    ![[Pasted image 20221129192013.png]]
    ![Pasted image 20221129192013](https://user-images.githubusercontent.com/6626759/225004010-f8c1207f-40eb-46b5-a625-108b209d1f20.png)


    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
    @@ -815,7 +801,7 @@ Principalmente se usan
    HTTP usa los verbos GET, POST, PUT y DELETE para pedir datos al servidor.

    Hay varias categorías de [códigos de respuesta ](https://es.wikipedia.org/wiki/Anexo:C%C3%B3digos_de_estado_HTTP)frente a las peticiones HTTP:
    ![[Pasted image 20221201193348.png]]
    ![Pasted image 20221201193348](https://user-images.githubusercontent.com/6626759/225004007-485d967c-738c-41e7-94af-b3b0e5b26519.png)

    #### El protocolo CoAP (Constrained Application Protocol)
    CoAP está diseñado para interactuar con HTTP y RESTful a través de simples proxies.
    @@ -847,7 +833,7 @@ Dan una granularidad más fina para gestionar los diferentes componentes de un s
    ### Kafka
    Es un almacén de datos para transmisión constante de datos en tiempo real (*streaming*).

    ![[Pasted image 20221206193417.png]]
    ![Pasted image 20221206193417](https://user-images.githubusercontent.com/6626759/225004004-d7dd4105-a6b3-4316-847b-39ddf3fd847b.png)

    ### Mosquitto
    Es un [intermediario](test.mosquitto.org) (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.
    @@ -882,7 +868,7 @@ Mi espacio grafana es `omendezmorales.grafana.net`.
    Tanto en grafana como en influxDB, se puede usar el lenguaje [flux](https://www.youtube.com/watch?v=5-AwY8ly6NA) para consultar las series de tiempo, aquí está otro [recurso de ayuda]([https://docs.influxdata.com/influxdb/cloud/tools/grafana/#configure-grafana-to-use-flux](https://docs.influxdata.com/influxdb/cloud/tools/grafana/#configure-grafana-to-use-flux))


    ![[Pasted image 20221215212521.png]]
    ![Pasted image 20221215212521](https://user-images.githubusercontent.com/6626759/225003997-a7263eaa-0042-42c4-aa54-aa4490655c63.png)

    ## 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.
    @@ -891,15 +877,15 @@ Respecto de agregar más de una variable en los puntos de datos de *influxDB*, e


    La arquitectura del sistema es la siguiente:
    ![[Pasted image 20221220191544.png]]
    ![Pasted image 20221220191544](https://user-images.githubusercontent.com/6626759/225003993-3b4c9eea-26d2-4bbf-902b-df150bc3810e.png)


    ## Clase jue 22 dic 2022 18:58:42 -03
    Vimos consumo de datos via API usando el plugin de *[infinity](https://github.com/yesoreyeram/grafana-infinity-datasource)*.
    Otra recomendación fue (en HW) usar el [ BroadLink RM4](https://www.pcfactory.cl/producto/38005-broadlink-control-universal-inteligente-rm-4-pro-rf-ir-wifi--4tagen), y como controlador el [home assistant](https://www.home-assistant.io/), 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.png]]
    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](https://user-images.githubusercontent.com/6626759/225003990-a9c1d24a-f6fd-4f44-a1ee-0b65e5035ba5.png)

    * 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'`
    @@ -910,19 +896,20 @@ Otros ejemplos de curl con diferentes verbos (e.g. POST) pueden encontrarse en e
    Vimos [Ubidots](https://ubidots.com/). 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.png]]
    ![Pasted image 20221227191415](https://user-images.githubusercontent.com/6626759/225003980-b68a19ea-29c4-4816-b98d-c85082f8fd38.png)

    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](http://help.ubidots.com/developer-guides/send-data-to-ubidots-using-python-requests?_gl=1*qrcamg*_ga*NTIxMjI0ODY4LjE2NzIxNzk4NTQ.*_ga_VEME7QQ5EZ*MTY3MjE3OTg1My4xLjEuMTY3MjE3OTk0Ny4wLjAuMA..)/ Hay así mismo una guía para [crear un dispositivo como la WeMOS](https://is.gd/iqgAjk) dentro de Ubidots

    Se crean/registran dispositivos,
    ![[Pasted image 20221227215249.png]]
    ![Pasted image 20221227215249](https://user-images.githubusercontent.com/6626759/225003972-3063097a-abd8-4683-813d-f1f657e1f1a8.png)

    y luego se pueden definir tableros, e.g.,
    ![[Pasted image 20221227215122.png]]
    ![Pasted image 20221227215122](https://user-images.githubusercontent.com/6626759/225003976-bb1834ad-fca2-4613-a156-8b72aaec0c73.png)

    (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.png]]
    ![Pasted image 20221227220622](https://user-images.githubusercontent.com/6626759/225003968-b76337db-f363-4810-a6eb-b6b50a4e8033.png)

    ## Clase jue 29 dic 2022 18:49:09 -03
    Se puede usar *curl* también para hacer peticiones POST & PATCH
    @@ -931,7 +918,7 @@ Para **transmitir** datos de forma segura a los sserver de *ubidots*, se la [dir
    Para **recibir** datos, se puede consultar la [documentación respectiva](https://docs.ubidots.com/v1.6/reference/get-variable-data).

    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.png]]
    ![Pasted image 20221229194551](https://user-images.githubusercontent.com/6626759/225003965-c4d10d75-d318-4fad-9ffc-ed962436e1fc.png)

    Hay también un cliente de la [API en Python](https://github.com/ubidots/ubidots-python)

    @@ -946,7 +933,8 @@ Los componentes de una arquitectura de referencia para plataformas IoT considera
    * 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.png]]
    ![protocolos-en-arq-ref](https://user-images.githubusercontent.com/6626759/225003964-4e60bbad-d4a9-4f80-8386-4b6390239491.png)


    Ejemplos de plataformas en la nube que integran todo lo anterior, son [AWS IoT](https://aws.amazon.com/architecture/iot/?cards-all.sort-by=item.additionalFields.sortDate&cards-all.sort-order=desc&awsf.content-type=*all&awsf.methodology=*all), [Azure IoT](https://azure.microsoft.com/en-us/solutions/iot/).

    @@ -979,10 +967,12 @@ otros recursos de aprendizaje IoT:


    Vamos a tener el siguiente formato de presentacion para los últimos dos días de presentaciones:
    ![[Pasted image 20230105192522.png]]
    ![Pasted image 20230105192522](https://user-images.githubusercontent.com/6626759/225003962-5ecec18f-88df-45a1-8b71-f72e06a5989b.png)


    Otros aspectos a considerar son:
    ![[Pasted image 20230105192659.png]]
    ![Pasted image 20230105192659](https://user-images.githubusercontent.com/6626759/225003958-bf2e3294-7100-4d04-9541-4fa8150da1cb.png)


    Sobre la rúbrica que envió Angelo, para el ultimo punto sobre coherencia problema solucion (FIT), ver [esta página](https://www.feedough.com/problem-solution-fit/).
    Vamos a usar para el desarrollo del proyecto *miró*, y de ahí vamos a ir rellenando el ppt
  6. omendezmorales revised this gist Mar 15, 2023. 1 changed file with 44 additions and 52 deletions.
    96 changes: 44 additions & 52 deletions MOOC IoT.md
    Original file line number Diff line number Diff line change
    @@ -404,35 +404,20 @@ Frecuencia del PWM:![Pasted image 20230131211253](https://user-images.githubuser
    ![Pasted image 20221124212201](https://user-images.githubusercontent.com/6626759/225004014-c2f1632b-ed96-4c99-a66e-59bfc0bdb83c.png)
    ![Pasted image 20221122212001](https://user-images.githubusercontent.com/6626759/225004016-fc8976ae-ccb3-4fe4-8d48-d5249fd7fa22.png)
    ![Pasted image 20221122192131](https://user-images.githubusercontent.com/6626759/225004018-3ba6b1b0-15e4-44b6-ba17-19f2e5143c12.png)
    ![Pasted image 20221119102642](https://user-images.githubusercontent.com/6626759/225004022-8298acb8-7d97-48a9-abdc-dcbc58ccfe42.png)
    ![Pasted image 20221115194011](https://user-images.githubusercontent.com/6626759/225004032-10f6dd48-4317-4b9c-a83f-2f0ec003a98c.png)
    ![Pasted image 20221115192622](https://user-images.githubusercontent.com/6626759/225004035-397922fb-21c9-4ae7-858b-c9574287295d.png)
    ![Pasted image 20221112155916](https://user-images.githubusercontent.com/6626759/225004042-df17c55e-575c-44d8-a483-e99d58cdf77c.png)
    ![Pasted image 20221111145640](https://user-images.githubusercontent.com/6626759/225004047-e6a5742f-d4ab-4ec5-a34c-e75bf043e909.png)
    ![Pasted image 20221110153341](https://user-images.githubusercontent.com/6626759/225004055-ebb9babe-e23b-4782-ba81-934a42546fa6.png)
    ![Pasted image 20221110152355](https://user-images.githubusercontent.com/6626759/225004057-7cb43ecf-48e6-4497-8a2d-26912f9ee8e2.png)
    ![Pasted image 20221110151912](https://user-images.githubusercontent.com/6626759/225004061-b52d5bc8-04c9-4435-b26c-f79a6d26b68b.png)
    ![Pasted image 20221110151131](https://user-images.githubusercontent.com/6626759/225004068-6d926c54-5ead-40f9-b177-9df956150be1.png)
    ![Pasted image 20221109165128](https://user-images.githubusercontent.com/6626759/225004072-98f1b27d-b7a0-401a-bd4d-8d8943248f98.png)
    ![Pasted image 20221108221326](https://user-images.githubusercontent.com/6626759/225004076-a8f06f4c-5a04-4590-bb37-43fc60644241.png)


    ![Pasted image 20221108220635](https://user-images.githubusercontent.com/6626759/225004086-3d4bf97f-8d59-476f-8891-c632aea90bc5.png)
    ![Pasted image 20221108202425](https://user-images.githubusercontent.com/6626759/225004089-c0c75d07-4843-4fbb-84c0-45a98b9d876b.png)
    ![Pasted image 20221108191737](https://user-images.githubusercontent.com/6626759/225004094-c111be7d-a29e-4560-9a4b-fc90f91d1469.png)

    ![Pasted image 20221105125838](https://user-images.githubusercontent.com/6626759/225004098-a565714a-b06f-4938-bfb9-24de59cbbab5.png)
    ![Pasted image 20221105124857](https://user-images.githubusercontent.com/6626759/225004102-8265eff6-dc95-4e60-860b-bdc8207f6f2b.png)
    ![Pasted image 20221105123721](https://user-images.githubusercontent.com/6626759/225004103-288f3be5-cb57-407e-a988-e0bad1f5af43.png)
    ![Pasted image 20221105123709](https://user-images.githubusercontent.com/6626759/225004107-5078ab91-37b5-465b-9634-423c1e4d02ab.png)



    ![Pasted image 20221105123629](https://user-images.githubusercontent.com/6626759/225004111-d0f827d3-8478-4517-ad70-ce90aaf9ab6a.png)
    ![Pasted image 20221105123323](https://user-images.githubusercontent.com/6626759/225004119-5887afdb-70a3-4c9e-9f81-7e5e35e591ef.png)
    ![Pasted image 20221105105049](https://user-images.githubusercontent.com/6626759/225004123-a1dc3a4b-3f54-4979-8002-82b5d94e82d7.png)
    ![Pasted image 20221105102716](https://user-images.githubusercontent.com/6626759/225004128-3cb45d22-eb9a-4c8c-8c9b-9ac8a16489e7.png)
    ![Pasted image 20221103220809](https://user-images.githubusercontent.com/6626759/225004129-349799e1-5c8c-4792-899d-556c85e2bac7.png)
    ![Pasted image 20221103220730](https://user-images.githubusercontent.com/6626759/225004132-6fc2e2da-438a-4348-819e-6fb38a2b424a.png)


    ![Pasted image 20221103220705](https://user-images.githubusercontent.com/6626759/225004137-6eb21ffc-e659-401c-8551-0efc01f31e65.png)
    ![Pasted image 20221103214745](https://user-images.githubusercontent.com/6626759/225004140-87f902c6-039f-47ef-8aad-35e81fca6dcc.png)
    ![Pasted image 20221103214225](https://user-images.githubusercontent.com/6626759/225004142-419febe2-4bad-4f8f-b354-596f4b9077c3.png)
    ![Pasted image 20221103192046](https://user-images.githubusercontent.com/6626759/225004146-f18e19eb-8490-4060-9166-984ddffacbb5.png)
    ![Pasted image 20221103190609](https://user-images.githubusercontent.com/6626759/225004152-f759c543-109b-4a5a-b30c-c4eaf414ed42.png)


    ![Pasted image 20221102124011](https://user-images.githubusercontent.com/6626759/225004154-0d8f3695-2722-41b0-bfa0-cdf19e8ce1fe.png)


    @@ -466,12 +451,13 @@ La solución demostrada x los docentes se ve así:
    ## 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 [DAC](https://es.wikipedia.org/wiki/Conversi%C3%B3n_anal%C3%B3gica-digital)
    ![[Pasted image 20221103190609.png]]
    ![Pasted image 20221103190609](https://user-images.githubusercontent.com/6626759/225004152-f759c543-109b-4a5a-b30c-c4eaf414ed42.png)

    El DAC 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.png]]
    ![Pasted image 20221103192046](https://user-images.githubusercontent.com/6626759/225004146-f18e19eb-8490-4060-9166-984ddffacbb5.png)



    La entrada AREF del Arduino, es el valor máximo en [v] de la señal analógica que ingresa por los pines
    @@ -505,15 +491,17 @@ Para ver los valores continuos, se puede usar el monitor serial , usando los com
    Para una referencia de todas las funciones disponibles en ARduino, ver la [documentación correspondiente](https://www.arduino.cc/reference/en/language/functions/)

    Para el ejemplo 2 del relé, esta es la imagen del circuito del docente:
    ![[Pasted image 20221103214225.png]]
    ![Pasted image 20221103214225](https://user-images.githubusercontent.com/6626759/225004142-419febe2-4bad-4f8f-b354-596f4b9077c3.png)

    ![[Pasted image 20221103214745.png]]

    ![Pasted image 20221103214745](https://user-images.githubusercontent.com/6626759/225004140-87f902c6-039f-47ef-8aad-35e81fca6dcc.png)

    para el ejercicio 3, el esquema de cableado del docente es>
    ![[Pasted image 20221103220730.png]]
    ![Pasted image 20221103220730](https://user-images.githubusercontent.com/6626759/225004132-6fc2e2da-438a-4348-819e-6fb38a2b424a.png)

    El código del docente es:
    ![[Pasted image 20221103220809.png]]
    ![Pasted image 20221103220809](https://user-images.githubusercontent.com/6626759/225004129-349799e1-5c8c-4792-899d-556c85e2bac7.png)


    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.

    @@ -532,7 +520,7 @@ haber una configuración común entre Tx y Rx en términos de:
    3. Bits de inicio y parada

    En Arduino se utilizan los PINs 0 y 1 de la salida columna I/O:
    ![[Pasted image 20221105102716.png]]
    ![Pasted image 20221105102716](https://user-images.githubusercontent.com/6626759/225004128-3cb45d22-eb9a-4c8c-8c9b-9ac8a16489e7.png)

    `Serial.begin(baudios);`
    `Serial.print(dato);`
    @@ -545,7 +533,7 @@ En Arduino se utilizan los PINs 0 y 1 de la salida columna I/O:
    digitales

    Ejercicio 1
    ![[Pasted image 20221105105049.png]]
    ![Pasted image 20221105105049](https://user-images.githubusercontent.com/6626759/225004123-a1dc3a4b-3f54-4979-8002-82b5d94e82d7.png)


    ### Interface SPI
    @@ -580,13 +568,13 @@ 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.png]]
    ![Pasted image 20221105123323](https://user-images.githubusercontent.com/6626759/225004119-5887afdb-70a3-4c9e-9f81-7e5e35e591ef.png)

    En arduino, se pueden usar los PINS digitales arriba de AREF
    ![[Pasted image 20221105123709.png]]
    ![Pasted image 20221105123709](https://user-images.githubusercontent.com/6626759/225004107-5078ab91-37b5-465b-9634-423c1e4d02ab.png)
    y los PINs analogos A4 y A5:

    ![[Pasted image 20221105123721.png]]
    ![Pasted image 20221105123721](https://user-images.githubusercontent.com/6626759/225004103-288f3be5-cb57-407e-a988-e0bad1f5af43.png)

    **Instrucciones para Comunicación LCD I2C**
    • Librería:
    @@ -601,7 +589,7 @@ y los PINs analogos A4 y A5:


    Para el ejemplo 2, el chip del LCD es *PCF85741*, y en TTinkercad, se configura así:
    ![[Pasted image 20221105124857.png]]
    ![Pasted image 20221105124857](https://user-images.githubusercontent.com/6626759/225004102-8265eff6-dc95-4e60-860b-bdc8207f6f2b.png)

    Los docentes compartieron [este codigo](https://www.tinkercad.com/things/dehb8tSVTRv-lcdi2cej1/editel?sharecode=Q5QcomNI9-ExgadqBsdsXEn3Sqrgz4XXiN9fy0tQ89w) del ejemplo 2.

    @@ -612,32 +600,34 @@ Los docentes compartieron [este codigo](https://www.tinkercad.com/things/dehb8tS

    ### La familia ESP de micro controladores
    Vamos a usar el [ESP8266](https://www.wemos.cc/en/latest/d1/d1_mini_pro.html),
    LA configuración de los pines es de *dual* i.e. Arduino IDE, o los nombres de PINs de la tarjeta
    ![[Pasted image 20221108191737.png]]
    La configuración de los pines es de *dual* i.e. Arduino IDE, o los nombres de PINs de la tarjeta
    ![Pasted image 20221108191737](https://user-images.githubusercontent.com/6626759/225004094-c111be7d-a29e-4560-9a4b-fc90f91d1469.png)


    NB issue found documented [here](https://codeburst.io/how-to-install-and-run-appimage-on-linux-systems-f031ec6a85ce)
    para activar el serial, ver este [link](https://forum.arduino.cc/t/arduino-ide-2-0-not-showing-ports/858267/18), y este [otro](https://askubuntu.com/questions/1408192/can-not-connect-arduino-ide-with-arduino-board-on-ubuntu-22-04)

    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.png]]
    ![Pasted image 20221109165128](https://user-images.githubusercontent.com/6626759/225004072-98f1b27d-b7a0-401a-bd4d-8d8943248f98.png)


    El ejercicio 1 tiene esta conexión
    ![[Pasted image 20221108202425.png]]
    ![Pasted image 20221108202425](https://user-images.githubusercontent.com/6626759/225004089-c0c75d07-4843-4fbb-84c0-45a98b9d876b.png)

    #### 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](https://www.youtube.com/watch?v=6jIJwZDhkkY)

    ### 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.png]]
    ![Pasted image 20221110151131](https://user-images.githubusercontent.com/6626759/225004068-6d926c54-5ead-40f9-b177-9df956150be1.png)

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

    ![[Pasted image 20221110151912.png]]
    ![Pasted image 20221110151912](https://user-images.githubusercontent.com/6626759/225004061-b52d5bc8-04c9-4435-b26c-f79a6d26b68b.png)

    y así se ve en TinkerCad -usando Arduino:
    ![[Pasted image 20221110152355.png]]
    ![Pasted image 20221110152355](https://user-images.githubusercontent.com/6626759/225004057-7cb43ecf-48e6-4497-8a2d-26912f9ee8e2.png)

    ### Uso de sensor ultrasónico.
    Usa la fórmula de cálculo de distancia D :
    @@ -658,17 +648,18 @@ 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.png]]
    ![Pasted image 20221110153341](https://user-images.githubusercontent.com/6626759/225004055-ebb9babe-e23b-4782-ba81-934a42546fa6.png)


    Para hacer la lectura del sensor, se usa [pulseIn(pin, valor)](https://www.arduino.cc/reference/en/language/functions/advanced-io/pulsein/)

    Con el cableado del Ejercicio 1 es:
    ![[Pasted image 20221111145640.png]]
    ![Pasted image 20221111145640](https://user-images.githubusercontent.com/6626759/225004047-e6a5742f-d4ab-4ec5-a34c-e75bf043e909.png)

    Del sensor de movimiento [HC-SR04](https://maker.pro/custom/tutorial/hc-sr04-ultrasonic-proximity-sensor-datasheet-highlights), 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.png]]
    ![Pasted image 20221108221326](https://user-images.githubusercontent.com/6626759/225004076-a8f06f4c-5a04-4590-bb37-43fc60644241.png)

    ## clase mar 10 nov 2022

    @@ -679,7 +670,7 @@ INternamente contiene un CAD
    * 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.png]]
    ![Pasted image 20221112155916](https://user-images.githubusercontent.com/6626759/225004042-df17c55e-575c-44d8-a483-e99d58cdf77c.png)

    ## 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.
    @@ -689,13 +680,14 @@ En el proyecto de este diplomado, usaremos el sensor FC-28 , que usa el método


    El sensor opera con el rango de voltaje de 0-5V, y tiene una salida análota y otra digital:
    ![[Pasted image 20221115192622.png]]
    ![Pasted image 20221115192622](https://user-images.githubusercontent.com/6626759/225004035-397922fb-21c9-4ae7-858b-c9574287295d.png)



    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.png]]
    ![Pasted image 20221115194011](https://user-images.githubusercontent.com/6626759/225004032-10f6dd48-4317-4b9c-a83f-2f0ec003a98c.png)


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

    @@ -706,8 +698,8 @@ Usamos la conexión del puerto Serial, y para comunicarnos usamos el módulo de

    ## 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.png]]
    Highlight: estructura administrativa para levantar un proyecto IoT:
    ![Pasted image 20221119102642](https://user-images.githubusercontent.com/6626759/225004022-8298acb8-7d97-48a9-abdc-dcbc58ccfe42.png)

    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.
  7. omendezmorales revised this gist Mar 14, 2023. 1 changed file with 17 additions and 20 deletions.
    37 changes: 17 additions & 20 deletions MOOC IoT.md
    Original file line number Diff line number Diff line change
    @@ -119,11 +119,11 @@ 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.png]]
    * Se pueden hacer comparaciones entre más de dos tuplas: ![Pasted image 20221001115953](https://user-images.githubusercontent.com/6626759/225004197-71a24cc5-bb09-4770-b040-8001347df155.png)


    * para hacer unfolding, puedo usar `_` si no voy a usar esos elementos>
    * ![[Pasted image 20221001120616.png]]
    * ![Pasted image 20221001120616](https://user-images.githubusercontent.com/6626759/225004194-ee8aec26-1fe7-4414-b5f8-47d492093bab.png)

    ## 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.
    @@ -201,7 +201,7 @@ para regresar al inicio de un archivo, se puede llamar la función:
    ### Arquitectura de plataformas IoT

    Estos son los pilares de la arquitectura IoT
    ![[Pasted image 20221011194116.png]]
    ![Pasted image 20221011194116](https://user-images.githubusercontent.com/6626759/225004179-7e03ba64-a6ca-47ec-8ce7-ec440ec8b620.png)
    Estos pilares sirven como criterios para poder cubrir las necesidades de un cliente potencial.

    ### Estándares
    @@ -249,7 +249,7 @@ Este es el recurso/servicio para conectar *cosas*: https://ifttt.com/explore/ser
    Hay un [editor en línea para json](https://jsoneditoronline.org)

    Existen diferentes arquitecturas (o modelos) de red:
    ![[Pasted image 20221020191656.png]]
    ![Pasted image 20221020191656](https://user-images.githubusercontent.com/6626759/225004175-262fbc84-9d32-414f-ada5-53a73c03059d.png)

    y para enviar mensajes a diferentes apps, se usan puertos, usando la notación <IP>:<puerto>
    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](https://datatracker.ietf.org/doc/html/rfc1918)
    @@ -310,7 +310,7 @@ Ejercicio`

    Luego, descargar para integrar a la carpeta.
    Este son los esquema de PULL-UP(izq) & PULL-DOWN(der)>
    ![[Pasted image 20221025214228.png]]
    ![Pasted image 20221025214228](https://user-images.githubusercontent.com/6626759/225004169-8a0b30d1-15c2-4c61-ac5d-048514fa9733.png)


    Para el ejercicio 2, usar el `switch` case para elegir dependiendo de las entradas en la slide 33.
    @@ -320,7 +320,7 @@ Para el ejercicio 2, usar el `switch` case para elegir dependiendo de las entrad
    ### Sensores
    Se perciben/registran valores de resistencia (o capacitor) variable, corriente, frecuencia, voltaje.
    Como ejemplo de tipos de sensores, tenemos:
    ![[Pasted image 20221027190804.png]]
    ![Pasted image 20221027190804](https://user-images.githubusercontent.com/6626759/225004163-5d228a82-9044-4517-9b6d-902214b11f37.png)
    En función de aquello, se procesan en el (micro) controlador, y se emite una respuesta a ejecutarse mediante un actuador

    `c= λ f`
    @@ -434,17 +434,15 @@ Frecuencia del PWM:![Pasted image 20230131211253](https://user-images.githubuser
    ![Pasted image 20221103192046](https://user-images.githubusercontent.com/6626759/225004146-f18e19eb-8490-4060-9166-984ddffacbb5.png)
    ![Pasted image 20221103190609](https://user-images.githubusercontent.com/6626759/225004152-f759c543-109b-4a5a-b30c-c4eaf414ed42.png)
    ![Pasted image 20221102124011](https://user-images.githubusercontent.com/6626759/225004154-0d8f3695-2722-41b0-bfa0-cdf19e8ce1fe.png)
    ![Pasted image 20221027220708](https://user-images.githubusercontent.com/6626759/225004158-d9602947-03b4-4df5-a60d-4aa928be34ab.png)
    ![Pasted image 20221027213950](https://user-images.githubusercontent.com/6626759/225004159-bdfc66ad-b034-4123-9bf5-3d87585bed32.png)
    ![Pasted image 20221027212813](https://user-images.githubusercontent.com/6626759/225004160-7d486ca9-4c26-47a1-862a-b2aca24eff48.png)
    ![Pasted image 20221027190804](https://user-images.githubusercontent.com/6626759/225004163-5d228a82-9044-4517-9b6d-902214b11f37.png)
    ![Pasted image 20221025214228](https://user-images.githubusercontent.com/6626759/225004169-8a0b30d1-15c2-4c61-ac5d-048514fa9733.png)




    ![Pasted image 20221020220005](https://user-images.githubusercontent.com/6626759/225004172-aeefb0e5-6589-4f0b-9987-7d17a32eec1f.png)
    ![Pasted image 20221020191656](https://user-images.githubusercontent.com/6626759/225004175-262fbc84-9d32-414f-ada5-53a73c03059d.png)
    ![Pasted image 20221011194116](https://user-images.githubusercontent.com/6626759/225004179-7e03ba64-a6ca-47ec-8ce7-ec440ec8b620.png)

    ![Pasted image 20221004120718](https://user-images.githubusercontent.com/6626759/225004183-4b9023c2-4ba0-4b7f-981b-caea10a982af.png)
    ![Pasted image 20221001120616](https://user-images.githubusercontent.com/6626759/225004194-ee8aec26-1fe7-4414-b5f8-47d492093bab.png)
    ![Pasted image 20221001115953](https://user-images.githubusercontent.com/6626759/225004197-71a24cc5-bb09-4770-b040-8001347df155.png)



    • Pines 3, 9, 10 y 11: 490 [Hz]
    • Pines 5 y 6: 980 [Hz]
    @@ -453,18 +451,17 @@ y la instruccion para generar esas frecuencias es
    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.png]]
    ![Pasted image 20221027212813](https://user-images.githubusercontent.com/6626759/225004160-7d486ca9-4c26-47a1-862a-b2aca24eff48.png)

    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.png]]

    ![Pasted image 20221027213950](https://user-images.githubusercontent.com/6626759/225004159-bdfc66ad-b034-4123-9bf5-3d87585bed32.png)

    LA solución demostrada x los docentes se ve así:
    ![[Pasted image 20221027220708.png]]
    La solución demostrada x los docentes se ve así:
    ![Pasted image 20221027220708](https://user-images.githubusercontent.com/6626759/225004158-d9602947-03b4-4df5-a60d-4aa928be34ab.png)

    ## clase jue 03 nov 2022 18:54:46 -03
    ### Señales analógicas
  8. omendezmorales revised this gist Mar 14, 2023. 1 changed file with 0 additions and 3 deletions.
    3 changes: 0 additions & 3 deletions MOOC IoT.md
    Original file line number Diff line number Diff line change
    @@ -5,9 +5,6 @@ definir/investigar cuales serían los temas calientes de IoT en este momento par

    Conectar eventualmente con [Cesar Cofre](mailto:cesar.cofre@pucv.cl) de innovacion de la [PUCV] (https://www.pucv.cl/uuaa/facultad-ingenieria/i-d-i-e)

    ## Acceso a Google drive del curso
    https://drive.google.com/drive/folders/1VXA09voHVCmhfaT9bOFuJsZWRmYhxx1N?usp=sharing_eip_m&ts=631c05c0

    ## De la logística
    Asistencia al 80%, i.e. con más de 9 ausencias, se pierde el diplomado.

  9. omendezmorales revised this gist Mar 14, 2023. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions MOOC IoT.md
    Original file line number Diff line number Diff line change
    @@ -386,7 +386,7 @@ Frecuencia del PWM:![Pasted image 20230131211253](https://user-images.githubuser
    ![Pasted image 20230119193025](https://user-images.githubusercontent.com/6626759/225003931-eaa6a42c-bdd6-49d5-ae02-c0cfbf9b7f2c.png)
    ![Pasted image 20230119191056](https://user-images.githubusercontent.com/6626759/225003937-724369f5-9ee9-44b4-bf05-a958ffde31f6.png)
    ![Pasted image 20230112192519](https://user-images.githubusercontent.com/6626759/225003942-929f7de8-629e-47a5-9a50-de20bb841d53.png)
    ![Pasted image 20230112192008](https://user-images.githubusercontent.com/6626759/225003947-35f2b6d3-1390-47dc-9ce1-23f86f58c246.png)

    ![Pasted image 20230110192915](https://user-images.githubusercontent.com/6626759/225003951-c503d102-1bf7-4203-ad2b-7c8869f6e55f.png)
    ![Pasted image 20230110192436](https://user-images.githubusercontent.com/6626759/225003956-3729524c-0980-4bc4-b668-b37127be35f3.png)
    ![Pasted image 20230105192659](https://user-images.githubusercontent.com/6626759/225003958-bf2e3294-7100-4d04-9541-4fa8150da1cb.png)
    @@ -1005,7 +1005,7 @@ Vamos a usar para el desarrollo del proyecto *miró*, y de ahí vamos a ir relle

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

    (diagram)[Pasted image 20230112192008.png]
    ![Pasted image 20230112192008](https://user-images.githubusercontent.com/6626759/225003947-35f2b6d3-1390-47dc-9ce1-23f86f58c246.png)


    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.
  10. omendezmorales revised this gist Mar 14, 2023. 1 changed file with 1 addition and 3 deletions.
    4 changes: 1 addition & 3 deletions MOOC IoT.md
    Original file line number Diff line number Diff line change
    @@ -1005,10 +1005,8 @@ Vamos a usar para el desarrollo del proyecto *miró*, y de ahí vamos a ir relle

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

    ![[Pasted image 20230112192008.png]]
    (diagram)[Pasted image 20230112192008.png]


    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](<file:///home/orlando/Documents/MOOCS/IoT_CORFO/slides/IoT P2 Taller de Proyecto IoT C3.pdf>).


  11. omendezmorales created this gist Mar 14, 2023.
    1,014 changes: 1,014 additions & 0 deletions MOOC IoT.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,1014 @@
    # 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](mailto:cesar.cofre@pucv.cl) de innovacion de la [PUCV] (https://www.pucv.cl/uuaa/facultad-ingenieria/i-d-i-e)

    ## Acceso a Google drive del curso
    https://drive.google.com/drive/folders/1VXA09voHVCmhfaT9bOFuJsZWRmYhxx1N?usp=sharing_eip_m&ts=631c05c0

    ## 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](https://es.wikipedia.org/wiki/Nivel_de_madurez_tecnol%C3%B3gica)
    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](https://youtu.be/N7oz366X0-8)

    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
    - Look - mock - analyze, https://miro.com/templates/look-mock-analyse/, me gusta porque puede usarse para separar x clase
    - newsletter template, https://miro.com/templates/newsletter/ me parece muy sucinto y eso ayuda cuando hay que ver las cosas en perspectiva.
    - Un simple mind-map, https://miro.com/templates/mind-map/ puede servir también
    - El *syllabus*, https://miro.com/templates/syllabus/ puede ser un elemento más canónico
    - como *bonus track*, creo que la plantilla de funnel https://miro.com/templates/idea-funnel-backlog/ debiera ayudarnos a filtrar la idea de qué proyecto elegimos para trabajar en él.

    ### recursos para documentar desarrollo de productos IoT
    * https://www.iotforall.com/iot-product-development
    * episodio de podcast https://masproducto.com/desarrollo-de-productos-iot/, y aquí el podcast del [invitado](https://danielelizalde.com/podcast/), [Daniel Elizalde](https://www.linkedin.com/in/danielelizalde/)
    * https://www.springer.com/series/11636/books?page=2
    * https://ioterra.com/internet-of-things-iot-product-development-from-idea-stage/ ☑️
    * https://www.intuz.com/iot-product-development-guide
    * https://www.telcel.com/empresas/tendencias/notas/desarrollo-iot-en-mundo#

    ## 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](https://miro.com/app/board/uXjVPRsb34XU=/)
    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.png]]


    * para hacer unfolding, puedo usar `_` si no voy a usar esos elementos>
    * ![[Pasted image 20221001120616.png]]

    ## 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](#https://python.plainenglish.io/how-to-use-methods-that-you-have-not-implemented-yet-in-python-41375f600d81 )

    Para un ejemplo de estándar de conectividad pensado exclusivamente en domótica, ver el proyecto [Matter en github](https://github.com/project-chip/connectedhomeip)

    * 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:
    * [Colab](https://colab.research.google.com/#scrollTo=Nma_JWh-W-IF)?
    * github - o parecido?
    * [repl.it](https://replit.com/~) ?
    * google-drive?

    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](https://diariolaquinta.cl/2022/10/11/presidente-gabriel-boric-anuncia-plan-nacional-de-proteccion-contra-incendios-forestales-2022-2023/)

    ### ¿Cuáles son los principales casos de uso?
    1)
    - monitoreo de activos (para evitar robo)
    - Tiempo de uso de los activos arrendados

    2)
    - ahorro en la cuenta de energía consumida
    - monitoreo de consumo de energía

    3)
    - 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](https://riptutorial.com/Download/flask-es.pdf) 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.png]]
    Estos pilares sirven como criterios para poder cubrir las necesidades de un cliente potencial.

    ### Estándares
    * Hay un estándar internacional llamada [OneM2M](https://www.onem2m.org/using-onem2m/developers/basics),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](https://iotforum.org), 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]( https://aioti.eu),
    **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](https://www.synthesia.io/learning-and-development#book-demo), 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*](https://en.wikipedia.org/wiki/Over-the-air_programming) , 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](https://es.wikipedia.org/wiki/Computaci%C3%B3n_frontera)

    Finalmente, el esquema de [*fog computing* ](https://en.wikipedia.org/wiki/Fog_computing) es un intermedio entre la Nube y la frontera (borde)

    En el diplomado, vamos a trabajar con APIs del tipo [web socket](https://es.wikipedia.org/wiki/WebSocket), y más concretamente, en las del subtipo REST.
    Para consultar las peticiones REST, se pueden probar/validar usando e.g. [Postman](https://www.postman.com/product/rest-client/)

    (AP) completar el tutorial de [Postman](https://web.postman.co/workspace/My-Workspace~7648810b-be2d-457f-80db-827bb7b77445/overview) , y probar las sig. APIs: (**DONE**)
    [https://apis.digital.gob.cl/fl/feriados](https://apis.digital.gob.cl/fl/feriados)
    https://goweather.herokuapp.com/weather/Curanilahue
    [http://airesantiago.mma.gob.cl/api/home2](http://airesantiago.mma.gob.cl/api/home2)
    [https://api.gael.cloud/general/public/sismos](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](https://jsoneditoronline.org)

    Existen diferentes arquitecturas (o modelos) de red:
    ![[Pasted image 20221020191656.png]]

    y para enviar mensajes a diferentes apps, se usan puertos, usando la notación <IP>:<puerto>
    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](https://datatracker.ietf.org/doc/html/rfc1918)


    Para enviar mensajes a diferentes apps, se usan puertos, usando la notación <IP>:<puerto>. Esta notación constituye un *socket*, y hay dos protocolos que permiten implementar esta conectividad (ver slide 8 de [la clase correspondiente](https://drive.google.com/drive/folders/1ybo0nrxjr6KEtofYVkkFZe9NxAfrchCQ) ):
    * [UDP](https://en.wikipedia.org/wiki/User_Datagram_Protocol)
    * [TCP](https://en.wikipedia.org/wiki/Transmission_Control_Protocol)

    El registro de direcciones en LATAM, se encuentra disponible en [lanic](https://www.lacnic.net/966/1/lacnic/acerca-de-lacnic)

    ### 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/](https://cloudsecurityalliance.org/)
    Sobre los diferentes tipos de ataques IoT, ver slides 19-20 de la [presentación](https://drive.google.com/drive/folders/1ybo0nrxjr6KEtofYVkkFZe9NxAfrchCQ)

    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](https://www.tinkercad.com), usando Arduino . alguas empresas vistas fueron
    * [lemsystems](https://lemsystem.cl/). agricultura, hidrología, industria
    * [dos20](https://dos20.cl). gestión de recursos hídricos y fluidos en general
    * [oasys](https://oasys-sw.com/). industria, tramporte, infraestructura & energía
    * [libellium](https://www.libelium.com). Agricultura, smarcities, sustentabilidad

    La plataforma [waspmote](https://development.libelium.com/waspmote-technical-guide/waspmote-kit) 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](https://www.raspberrypi.com/),

    ## 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.png]]


    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.png]]
    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
    Frecuencia del PWM:![Pasted image 20230131211253](https://user-images.githubusercontent.com/6626759/225003863-5bf4510f-8e4d-49d4-b8f6-be9bf3e5d9fb.png)
    ![Pasted image 20230131211218](https://user-images.githubusercontent.com/6626759/225003868-d4151ef2-35ff-4160-bd51-288baa89ee0d.png)
    ![Pasted image 20230130122110](https://user-images.githubusercontent.com/6626759/225003872-1fab68ac-ac64-4b28-adfa-07e1e7879b1c.png)
    ![Pasted image 20230126195316](https://user-images.githubusercontent.com/6626759/225003876-aa1359d7-c5c7-420b-b80e-2c6c3f6cc2fd.png)
    ![Pasted image 20230126194505](https://user-images.githubusercontent.com/6626759/225003884-adcc7c38-eb35-40f5-84e5-8962371f5cfb.png)
    ![Pasted image 20230126193207](https://user-images.githubusercontent.com/6626759/225003885-bc473f7f-3781-452e-951e-e1d42f3467e3.png)
    ![Pasted image 20230126191259](https://user-images.githubusercontent.com/6626759/225003891-4ba616d1-8d8f-4f11-a1bc-84cb260108d9.png)
    ![lambda-free-tier](https://user-images.githubusercontent.com/6626759/225003895-1b0eed74-259f-4f3e-ae85-ce6ff14aaa64.png)
    ![Pasted image 20230124212231](https://user-images.githubusercontent.com/6626759/225003898-dd08f93a-c31e-496c-8cfa-ae962c694d2f.png)
    ![Pasted image 20230124210319](https://user-images.githubusercontent.com/6626759/225003900-aa0cdece-9da6-497f-9497-50c3a619f79b.png)
    ![Pasted image 20230124202652](https://user-images.githubusercontent.com/6626759/225003902-8a102632-e766-4a29-98d6-49d8cce167b1.png)
    ![Pasted image 20230119220737](https://user-images.githubusercontent.com/6626759/225003906-e90afbf2-d264-435a-afe9-948b18e60521.png)
    ![Pasted image 20230119220413](https://user-images.githubusercontent.com/6626759/225003911-a2232d6d-410d-49ab-8780-f56045a6d82f.png)
    ![Pasted image 20230119205033](https://user-images.githubusercontent.com/6626759/225003918-34090382-063c-41ec-b198-2602ee08abf7.png)
    ![Pasted image 20230119205011](https://user-images.githubusercontent.com/6626759/225003924-6bf4d1fb-e0a2-44ac-aef8-82975ad79755.png)
    ![Pasted image 20230119193025](https://user-images.githubusercontent.com/6626759/225003931-eaa6a42c-bdd6-49d5-ae02-c0cfbf9b7f2c.png)
    ![Pasted image 20230119191056](https://user-images.githubusercontent.com/6626759/225003937-724369f5-9ee9-44b4-bf05-a958ffde31f6.png)
    ![Pasted image 20230112192519](https://user-images.githubusercontent.com/6626759/225003942-929f7de8-629e-47a5-9a50-de20bb841d53.png)
    ![Pasted image 20230112192008](https://user-images.githubusercontent.com/6626759/225003947-35f2b6d3-1390-47dc-9ce1-23f86f58c246.png)
    ![Pasted image 20230110192915](https://user-images.githubusercontent.com/6626759/225003951-c503d102-1bf7-4203-ad2b-7c8869f6e55f.png)
    ![Pasted image 20230110192436](https://user-images.githubusercontent.com/6626759/225003956-3729524c-0980-4bc4-b668-b37127be35f3.png)
    ![Pasted image 20230105192659](https://user-images.githubusercontent.com/6626759/225003958-bf2e3294-7100-4d04-9541-4fa8150da1cb.png)
    ![Pasted image 20230105192522](https://user-images.githubusercontent.com/6626759/225003962-5ecec18f-88df-45a1-8b71-f72e06a5989b.png)
    ![protocolos-en-arq-ref](https://user-images.githubusercontent.com/6626759/225003964-4e60bbad-d4a9-4f80-8386-4b6390239491.png)
    ![Pasted image 20221229194551](https://user-images.githubusercontent.com/6626759/225003965-c4d10d75-d318-4fad-9ffc-ed962436e1fc.png)
    ![Pasted image 20221227220622](https://user-images.githubusercontent.com/6626759/225003968-b76337db-f363-4810-a6eb-b6b50a4e8033.png)
    ![Pasted image 20221227215249](https://user-images.githubusercontent.com/6626759/225003972-3063097a-abd8-4683-813d-f1f657e1f1a8.png)
    ![Pasted image 20221227215122](https://user-images.githubusercontent.com/6626759/225003976-bb1834ad-fca2-4613-a156-8b72aaec0c73.png)
    ![Pasted image 20221227191415](https://user-images.githubusercontent.com/6626759/225003980-b68a19ea-29c4-4816-b98d-c85082f8fd38.png)
    ![Pasted image 20221222220226](https://user-images.githubusercontent.com/6626759/225003987-adadf015-21af-4411-b820-134118a472a0.png)
    ![Pasted image 20221222215221](https://user-images.githubusercontent.com/6626759/225003990-a9c1d24a-f6fd-4f44-a1ee-0b65e5035ba5.png)
    ![Pasted image 20221220191544](https://user-images.githubusercontent.com/6626759/225003993-3b4c9eea-26d2-4bbf-902b-df150bc3810e.png)
    ![Pasted image 20221215212521](https://user-images.githubusercontent.com/6626759/225003997-a7263eaa-0042-42c4-aa54-aa4490655c63.png)
    ![Pasted image 20221206193417](https://user-images.githubusercontent.com/6626759/225004004-d7dd4105-a6b3-4316-847b-39ddf3fd847b.png)
    ![Pasted image 20221201193348](https://user-images.githubusercontent.com/6626759/225004007-485d967c-738c-41e7-94af-b3b0e5b26519.png)
    ![Pasted image 20221129192013](https://user-images.githubusercontent.com/6626759/225004010-f8c1207f-40eb-46b5-a625-108b209d1f20.png)
    ![Pasted image 20221124212201](https://user-images.githubusercontent.com/6626759/225004014-c2f1632b-ed96-4c99-a66e-59bfc0bdb83c.png)
    ![Pasted image 20221122212001](https://user-images.githubusercontent.com/6626759/225004016-fc8976ae-ccb3-4fe4-8d48-d5249fd7fa22.png)
    ![Pasted image 20221122192131](https://user-images.githubusercontent.com/6626759/225004018-3ba6b1b0-15e4-44b6-ba17-19f2e5143c12.png)
    ![Pasted image 20221119102642](https://user-images.githubusercontent.com/6626759/225004022-8298acb8-7d97-48a9-abdc-dcbc58ccfe42.png)
    ![Pasted image 20221115194011](https://user-images.githubusercontent.com/6626759/225004032-10f6dd48-4317-4b9c-a83f-2f0ec003a98c.png)
    ![Pasted image 20221115192622](https://user-images.githubusercontent.com/6626759/225004035-397922fb-21c9-4ae7-858b-c9574287295d.png)
    ![Pasted image 20221112155916](https://user-images.githubusercontent.com/6626759/225004042-df17c55e-575c-44d8-a483-e99d58cdf77c.png)
    ![Pasted image 20221111145640](https://user-images.githubusercontent.com/6626759/225004047-e6a5742f-d4ab-4ec5-a34c-e75bf043e909.png)
    ![Pasted image 20221110153341](https://user-images.githubusercontent.com/6626759/225004055-ebb9babe-e23b-4782-ba81-934a42546fa6.png)
    ![Pasted image 20221110152355](https://user-images.githubusercontent.com/6626759/225004057-7cb43ecf-48e6-4497-8a2d-26912f9ee8e2.png)
    ![Pasted image 20221110151912](https://user-images.githubusercontent.com/6626759/225004061-b52d5bc8-04c9-4435-b26c-f79a6d26b68b.png)
    ![Pasted image 20221110151131](https://user-images.githubusercontent.com/6626759/225004068-6d926c54-5ead-40f9-b177-9df956150be1.png)
    ![Pasted image 20221109165128](https://user-images.githubusercontent.com/6626759/225004072-98f1b27d-b7a0-401a-bd4d-8d8943248f98.png)
    ![Pasted image 20221108221326](https://user-images.githubusercontent.com/6626759/225004076-a8f06f4c-5a04-4590-bb37-43fc60644241.png)
    ![Pasted image 20221108220635](https://user-images.githubusercontent.com/6626759/225004086-3d4bf97f-8d59-476f-8891-c632aea90bc5.png)
    ![Pasted image 20221108202425](https://user-images.githubusercontent.com/6626759/225004089-c0c75d07-4843-4fbb-84c0-45a98b9d876b.png)
    ![Pasted image 20221108191737](https://user-images.githubusercontent.com/6626759/225004094-c111be7d-a29e-4560-9a4b-fc90f91d1469.png)
    ![Pasted image 20221105125838](https://user-images.githubusercontent.com/6626759/225004098-a565714a-b06f-4938-bfb9-24de59cbbab5.png)
    ![Pasted image 20221105124857](https://user-images.githubusercontent.com/6626759/225004102-8265eff6-dc95-4e60-860b-bdc8207f6f2b.png)
    ![Pasted image 20221105123721](https://user-images.githubusercontent.com/6626759/225004103-288f3be5-cb57-407e-a988-e0bad1f5af43.png)
    ![Pasted image 20221105123709](https://user-images.githubusercontent.com/6626759/225004107-5078ab91-37b5-465b-9634-423c1e4d02ab.png)
    ![Pasted image 20221105123629](https://user-images.githubusercontent.com/6626759/225004111-d0f827d3-8478-4517-ad70-ce90aaf9ab6a.png)
    ![Pasted image 20221105123323](https://user-images.githubusercontent.com/6626759/225004119-5887afdb-70a3-4c9e-9f81-7e5e35e591ef.png)
    ![Pasted image 20221105105049](https://user-images.githubusercontent.com/6626759/225004123-a1dc3a4b-3f54-4979-8002-82b5d94e82d7.png)
    ![Pasted image 20221105102716](https://user-images.githubusercontent.com/6626759/225004128-3cb45d22-eb9a-4c8c-8c9b-9ac8a16489e7.png)
    ![Pasted image 20221103220809](https://user-images.githubusercontent.com/6626759/225004129-349799e1-5c8c-4792-899d-556c85e2bac7.png)
    ![Pasted image 20221103220730](https://user-images.githubusercontent.com/6626759/225004132-6fc2e2da-438a-4348-819e-6fb38a2b424a.png)
    ![Pasted image 20221103220705](https://user-images.githubusercontent.com/6626759/225004137-6eb21ffc-e659-401c-8551-0efc01f31e65.png)
    ![Pasted image 20221103214745](https://user-images.githubusercontent.com/6626759/225004140-87f902c6-039f-47ef-8aad-35e81fca6dcc.png)
    ![Pasted image 20221103214225](https://user-images.githubusercontent.com/6626759/225004142-419febe2-4bad-4f8f-b354-596f4b9077c3.png)
    ![Pasted image 20221103192046](https://user-images.githubusercontent.com/6626759/225004146-f18e19eb-8490-4060-9166-984ddffacbb5.png)
    ![Pasted image 20221103190609](https://user-images.githubusercontent.com/6626759/225004152-f759c543-109b-4a5a-b30c-c4eaf414ed42.png)
    ![Pasted image 20221102124011](https://user-images.githubusercontent.com/6626759/225004154-0d8f3695-2722-41b0-bfa0-cdf19e8ce1fe.png)
    ![Pasted image 20221027220708](https://user-images.githubusercontent.com/6626759/225004158-d9602947-03b4-4df5-a60d-4aa928be34ab.png)
    ![Pasted image 20221027213950](https://user-images.githubusercontent.com/6626759/225004159-bdfc66ad-b034-4123-9bf5-3d87585bed32.png)
    ![Pasted image 20221027212813](https://user-images.githubusercontent.com/6626759/225004160-7d486ca9-4c26-47a1-862a-b2aca24eff48.png)
    ![Pasted image 20221027190804](https://user-images.githubusercontent.com/6626759/225004163-5d228a82-9044-4517-9b6d-902214b11f37.png)
    ![Pasted image 20221025214228](https://user-images.githubusercontent.com/6626759/225004169-8a0b30d1-15c2-4c61-ac5d-048514fa9733.png)
    ![Pasted image 20221020220005](https://user-images.githubusercontent.com/6626759/225004172-aeefb0e5-6589-4f0b-9987-7d17a32eec1f.png)
    ![Pasted image 20221020191656](https://user-images.githubusercontent.com/6626759/225004175-262fbc84-9d32-414f-ada5-53a73c03059d.png)
    ![Pasted image 20221011194116](https://user-images.githubusercontent.com/6626759/225004179-7e03ba64-a6ca-47ec-8ce7-ec440ec8b620.png)
    ![Pasted image 20221004120718](https://user-images.githubusercontent.com/6626759/225004183-4b9023c2-4ba0-4b7f-981b-caea10a982af.png)
    ![Pasted image 20221001120616](https://user-images.githubusercontent.com/6626759/225004194-ee8aec26-1fe7-4414-b5f8-47d492093bab.png)
    ![Pasted image 20221001115953](https://user-images.githubusercontent.com/6626759/225004197-71a24cc5-bb09-4770-b040-8001347df155.png)

    • 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.png]]

    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.png]]


    LA solución demostrada x los docentes se ve así:
    ![[Pasted image 20221027220708.png]]

    ## 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 [DAC](https://es.wikipedia.org/wiki/Conversi%C3%B3n_anal%C3%B3gica-digital)
    ![[Pasted image 20221103190609.png]]

    El DAC 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.png]]


    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](https://www.arduino.cc/reference/en/language/functions/)

    Para el ejemplo 2 del relé, esta es la imagen del circuito del docente:
    ![[Pasted image 20221103214225.png]]

    ![[Pasted image 20221103214745.png]]

    para el ejercicio 3, el esquema de cableado del docente es>
    ![[Pasted image 20221103220730.png]]

    El código del docente es:
    ![[Pasted image 20221103220809.png]]

    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.png]]

    `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.png]]


    ### 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](https://www.drouiz.com/blog/2018/06/25/uart-vs-spi-vs-i2c-diferencias-entre-protocolos/). 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.png]]

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

    ![[Pasted image 20221105123721.png]]

    **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.png]]

    Los docentes compartieron [este codigo](https://www.tinkercad.com/things/dehb8tSVTRv-lcdi2cej1/editel?sharecode=Q5QcomNI9-ExgadqBsdsXEn3Sqrgz4XXiN9fy0tQ89w) 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](https://www.wemos.cc/en/latest/d1/d1_mini_pro.html),
    LA configuración de los pines es de *dual* i.e. Arduino IDE, o los nombres de PINs de la tarjeta
    ![[Pasted image 20221108191737.png]]

    NB issue found documented [here](https://codeburst.io/how-to-install-and-run-appimage-on-linux-systems-f031ec6a85ce)
    para activar el serial, ver este [link](https://forum.arduino.cc/t/arduino-ide-2-0-not-showing-ports/858267/18), y este [otro](https://askubuntu.com/questions/1408192/can-not-connect-arduino-ide-with-arduino-board-on-ubuntu-22-04)

    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.png]]


    El ejercicio 1 tiene esta conexión
    ![[Pasted image 20221108202425.png]]

    #### 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](https://www.youtube.com/watch?v=6jIJwZDhkkY)

    ### 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.png]]

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

    ![[Pasted image 20221110151912.png]]
    y así se ve en TinkerCad -usando Arduino:
    ![[Pasted image 20221110152355.png]]

    ### 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.png]]

    Para hacer la lectura del sensor, se usa [pulseIn(pin, valor)](https://www.arduino.cc/reference/en/language/functions/advanced-io/pulsein/)

    Con el cableado del Ejercicio 1 es:
    ![[Pasted image 20221111145640.png]]

    Del sensor de movimiento [HC-SR04](https://maker.pro/custom/tutorial/hc-sr04-ultrasonic-proximity-sensor-datasheet-highlights), 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.png]]

    ## 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.png]]

    ## 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.png]]



    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.png]]

    ## 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.png]]

    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](https://ubidots.com/stem/) , 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](https://drive.google.com/drive/folders/16m3Egkf8xAAykSaAK_MyXISkGVBSko7W?usp=sharing_eil_m&ts=63778770)

    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.png]]

    El mapa de cobertura digital de Subtel está disponble [aquí](https://subtel.maps.arcgis.com/apps/instant/portfolio/index.html?appid=da49e2e1f8a342bd9f048be385458b45)

    En la diapo 18, se menciona la [IETF](https://www.ietf.org/), 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.png]]

    Un ejemplo de HW que implemente este estándar para comunicaciones es el [xbee](https://es.digi.com/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](https://www.ieee802.org/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](https://es.wikipedia.org/wiki/DBm).

    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](https://emulator.tp-link.com/110-Outdoorv3/index.html) de TP-Link para ver los puntos acceso WiFi.

    WiFi HaLow es un estándar IEEE para equipos de baja potencia. [Aquí](https://www.wi-fi.org/discover-wi-fi/wi-fi-certified-halow) hay una descripción detallada.

    codigo del ejercicio
    ![[Pasted image 20221124212201.png]]

    La API de la librería WiFi que usamos está en este [enlace](https://www.arduino.cc/reference/en/libraries/wifi/)

    ## 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](https://drive.google.com/file/d/1BCq6bkk5ejpCq4H3a9PvjfS3bpivryKO/view?usp=sharing), esta imagen lo explica mejor, i.e. la cobertura/tasa de trasnsferencia vs consumo energético:
    ![[Pasted image 20221129192013.png]]


    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](https://www.semtech.com/), 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](https://www.thethingsnetwork.org/) 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](https://es.wikipedia.org/wiki/Red_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](https://lora-alliance.org/) 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](https://www.rfc-editor.org/rfc/rfc9110), [CoAP](https://www.rfc-editor.org/rfc/rfc9110) (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 ](https://es.wikipedia.org/wiki/Anexo:C%C3%B3digos_de_estado_HTTP)frente a las peticiones HTTP:
    ![[Pasted image 20221201193348.png]]

    #### 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:
    * https://www.cloudmqtt.com/
    * https://mosquitto.org/
    * https://www.emqx.io/
    * https://www.emqx.io/


    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=/](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.png]]

    ### Mosquitto
    Es un [intermediario](test.mosquitto.org) (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](https://pypi.org/project/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](https://www.mongodb.com/docs/mongodb-shell/), y el módulo de [pymongo](https://pymongo.readthedocs.io/en/stable/index.html).

    Vieron también [influxDB](https://www.influxdata.com)


    ## 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](https://code.visualstudio.com/docs/python/tutorial-flask), 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](https://grafana.com/), 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](https://www.youtube.com/watch?v=5-AwY8ly6NA) para consultar las series de tiempo, aquí está otro [recurso de ayuda]([https://docs.influxdata.com/influxdb/cloud/tools/grafana/#configure-grafana-to-use-flux](https://docs.influxdata.com/influxdb/cloud/tools/grafana/#configure-grafana-to-use-flux))


    ![[Pasted image 20221215212521.png]]

    ## 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](https://docs.influxdata.com/influxdb/v2.6/api-guide/client-libraries/python/), en especial el método [`from_dict`](https://pub.dev/documentation/influxdb_client/latest/influxdb_client_api/Point/addField.html)


    La arquitectura del sistema es la siguiente:
    ![[Pasted image 20221220191544.png]]


    ## Clase jue 22 dic 2022 18:58:42 -03
    Vimos consumo de datos via API usando el plugin de *[infinity](https://github.com/yesoreyeram/grafana-infinity-datasource)*.
    Otra recomendación fue (en HW) usar el [ BroadLink RM4](https://www.pcfactory.cl/producto/38005-broadlink-control-universal-inteligente-rm-4-pro-rf-ir-wifi--4tagen), y como controlador el [home assistant](https://www.home-assistant.io/), 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.png]]

    * 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](https://blog.marcnuri.com/curl-post-request-examples)

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

    Vimos [Ubidots](https://ubidots.com/). 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.png]]

    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](http://help.ubidots.com/developer-guides/send-data-to-ubidots-using-python-requests?_gl=1*qrcamg*_ga*NTIxMjI0ODY4LjE2NzIxNzk4NTQ.*_ga_VEME7QQ5EZ*MTY3MjE3OTg1My4xLjEuMTY3MjE3OTk0Ny4wLjAuMA..)/ Hay así mismo una guía para [crear un dispositivo como la WeMOS](https://is.gd/iqgAjk) dentro de Ubidots

    Se crean/registran dispositivos,
    ![[Pasted image 20221227215249.png]]
    y luego se pueden definir tableros, e.g.,
    ![[Pasted image 20221227215122.png]]

    (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.png]]

    ## 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](https://industrial.api.ubidots.com) 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](https://docs.ubidots.com/v1.6/reference/get-variable-data).

    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.png]]

    Hay también un cliente de la [API en Python](https://github.com/ubidots/ubidots-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.png]]

    Ejemplos de plataformas en la nube que integran todo lo anterior, son [AWS IoT](https://aws.amazon.com/architecture/iot/?cards-all.sort-by=item.additionalFields.sortDate&cards-all.sort-order=desc&awsf.content-type=*all&awsf.methodology=*all), [Azure IoT](https://azure.microsoft.com/en-us/solutions/iot/).

    Un artículo sobre el uso de AWS IoT se puede leer-escuchar [aquí](https://itnext.io/aws-iot-lora-and-lorawan-ec073d7bdfa5).

    ## 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 ](http://help.ubidots.com/en/articles/5105507-plugins-connect-aws-iot-core-to-ubidots-using-https)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](https://azure.microsoft.com/en-us/products/azure-stack/edge/#overview), 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:
    * [https://learn.microsoft.com/es-es/training/azure/](https://learn.microsoft.com/es-es/training/azure/)
    * [https://aws.amazon.com/es/education/awseducate/](https://aws.amazon.com/es/education/awseducate/)

    # 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.png]]

    Otros aspectos a considerar son:
    ![[Pasted image 20230105192659.png]]

    Sobre la rúbrica que envió Angelo, para el ultimo punto sobre coherencia problema solucion (FIT), ver [esta página](https://www.feedough.com/problem-solution-fit/).
    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.png]]


    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](<file:///home/orlando/Documents/MOOCS/IoT_CORFO/slides/IoT P2 Taller de Proyecto IoT C3.pdf>).