Conceptos B谩sicos

1

Qu茅 aprender谩s sobre Internet of Things

2

Espectro electromagn茅tico y qu茅 es radiofrecuencia

3

Clasificacion de radiofrecuencia

4

Regulaci贸n de la radiofrecuencia

5

驴Qu茅 son las Telecomunicaciones?

6

Halfduplex y Fullduplex

7

Clasificaci贸n de transmisiones: Upstream y Downstream

8

Link budget

9

Con ciertas caracter铆sticas, 驴Habr铆a conexi贸n en el sistema?

Alto data rate

10

Wi-fi

11

Bluetooth

12

Redes celulares

LPWANs

13

NB-IoT

14

Consideraciones para implementaci贸n de NB-IoT

15

LoRaWAN

Reto 2

16

驴Qu茅 usar铆as para monitorear la posici贸n GPS de un veh铆culo? y 驴Qu茅 usar铆as para monitorear datos en campo?

Dise帽o

17

Arquitectura de nodos

Introducci贸n a la pr谩ctica

18

Instalaci贸n de framework ESP32 e instalaci贸n de framework SAMD21

19

Qu茅 es una interrupci贸n

Pr谩ctica de WiFi

20

Prueba de se帽al Wi-fi

21

Protocolo HTTP desde un microcontrolador

22

Conectando sensores y actuadores al microcontrolador

23

Preparaci贸n de aplicaci贸n para recibir datos

24

Programaci贸n por eventos de un microcontrolador

25

Configuraci贸n de eventos del microcontrolador

26

Conexi贸n de aplicaci贸n

Pr谩ctica con LoRa

27

驴Cu谩l es el stack de LoRaWAN?

28

Creando tu propio gateway

29

Ensamblado de gateway

30

Pon a andar tu gateway de LoRa

31

Creando tu Stack de LoRa

32

Conecta tu nodo a internet

33

Integrando datos a un dashboard

34

Terminando de implementar nuestro stack de LoRa

35

BugFixing nuestro stack de LoRa

36

Ensamblando el nodo de LoRa

37

Probando LoRa en nuestro Dashboard

38

Pr谩cticas con tarjetas MKR

Cierre del curso

39

Cierre del curso

A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Configuraci贸n de eventos del microcontrolador

25/39
Recursos

Si en las interrupciones se ponen c贸digos muy extensos es posible que rompa el programa ya que van a sobreescribir espacios de memoria. Por eso hay que tener cuidado en c贸mo y d贸nde se ponen las interrupciones y para ello se utilizan las banderas.

Aportes 9

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Con este programa se explican tres tipos de interrupciones

  1. la primera interrupciones que encontramos nos permiten activar una interrupcion desde internet (sin estar fisicamente cerca de los actuadores o del microcontraldor) a trav茅s de un downstring desde un servido. especificamente para este programa se logra con la funcion de la libreria Blynk 鈥++BLYNK_WRITE() ++鈥, con esta funcion solo debemos poner como parametro el cable virtual de donde estaremos reciviendo downstrings.

    En el ejemplo vemos como desde la apliacion encendemos
    un LED fisico conectado al microcontrolador.

  2. la segunda interrupcion se caracteriza por activarse periodicamente a trav茅s de una instancia de la libreria Blynk, con la cual podemos establecer que funcion se ejecutara y el periodo para ejecutarse, para este ejemplo en especifico esta interrupcion periodica se configura con 3 lineas de codigo y una funcion.
    En la primera linea creamos la instancia del timer de la libreria
    Blynk al principio del programa(BlynkTimer timer).

    En la segunda linea establecemos el periodo y la funcion a
    ejecutarse para lo cual necesitamos dos parametros uno es
    el tiempo del periodo y el segundo es la funcion que se
    ejecutara (timer.setInterval(2000L,sendSensor)) esto se
    escribe en el setup ya que solo se debe establecer
    una vez鈥

    En la tercera linea estaremos corroborando que el timer este
    corriendo y que no exista un over flow, esta linea se escribira
    en el loop para que se ejecute constantemente.

    la funcion se establece como funcion de vacio (void) ya que
    no necesitamos que nos devuelva una valor y se vincula a la
    interrupcion periodica cuando se establce los parametros del
    timer. para este ejemplo en especifico cuando se activa la
    funcion despues de cumplido el tiempo se pone en marcha la
    seccion del codigo dentro de la funcion, en el codigo creamos
    dos variables tipo float y las cargamos con los valores
    optenidos de la lectura del sensor y porteriormente se envian
    servidor con la funcion (Blynk.virtualWrite(V5,h)) donde
    debemos poner como parametro el cable virtual y el dato a
    enviar.

    En el ejemplo vemos como se envia informacion obtenida
    del sensor al servidor y se muestra en la aplicacion de
    nuestro dispositivo.

  3. la tercera interrupcion es muy parecida a la primera con la diferencia que se establece con una funcion propia de arduino (attachinterrupt) y la cual se activa en fisico a trav茅s de un cambio de estado en un pin de nuestro microcontrolador, es decir que esta funcion es como un upstring ya que se activa desde el micro controlador hasta el servidor, caso contrario a la primera interrupcion.

    En el ejemplo vemos como desde un pulsador fisico
    podemos encender un led virtual en la aplicacion.

Codigo:

#define BLYNK_PRINT Serial

#include <WiFi.h>
#include <DHT.h>
#include <BlynkSimpleEsp32.h>


#define INTPIN 2 
#define LED 4
#define DHTPIN 14 

char token[]="lfF1oRODknEx02kahSpyI4C-SfQx2YNx";

//instancia sensor DHT
DHT dht(DHTPIN,DHT11);
BlynkTimer timer;
WidgetLED led1(V1);

bool ext_intFlag=0;
bool pinChanged=0; //se activo la interrupcion

BLYNK_WRITE(V0){
  int V0Data = param.asInt();
  Serial.print("Valor de V0= ");
  Serial.println(V0Data);
  digitalWrite(LED,V0Data);
}

void sendSensor(){
  float t=dht.readTemperature();
  float h=dht.readHumidity();
  //Serial.println("temp: "+String(t)+" hum: "+String(h));
  Blynk.virtualWrite(V5,h);
  Blynk.virtualWrite(V6,t);
}

void checkPin(){
  ext_intFlag = !ext_intFlag;
  pinChanged=true;
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  pinMode(INTPIN,INPUT_PULLUP);
  pinMode(LED,OUTPUT);
  attachInterrupt(digitalPinToInterrupt(INTPIN),checkPin,RISING);
  digitalWrite(LED,LOW);
  dht.begin();
  timer.setInterval(10000,sendSensor);
  Blynk.begin(token,"Familia RC","josefa1047"); 
  
}

void loop() {
  Blynk.run();
  timer.run();
  if(pinChanged){
    if(ext_intFlag){
      led1.on();
    }
    else{
      led1.off();
    }
    pinChanged=0;
  }  

}

Tengo una esp32-pico-kit-v4-1 y el sensor DHT11 y DHT22 no me funcionaron con esta placa, decidi continuar con una BMP180 para continuar las activadades del curso. Aun asi si alguien ha tenido experiencias usando esta placa con esos sensores y han encotrado solucion lo agradecer铆a

En esta clase 25 Configuraci贸n de eventos del microcontrolador se dice que ya esta todo el codigo escrito鈥 Sin embargo en la clase 24 Programaci贸n por eventos de un microcontrolador no se expone todo el codigo que pararece en la clase 25.

puedes pasar la liga sobre los pull-ups y pull-downs

En el siguiente link explican como instalar la librer铆a DHT:
https://learn.adafruit.com/dht/using-a-dhtxx-sensor

En el siguiente link explican como instalar la libreria Blynk:
http://help.blynk.cc/en/articles/512105-how-to-install-blynk-library-for-arduino

El c贸digo del profesor:


#define BLYNK_PRINT Serial

#include <WiFi.h>
#include <DHT.h>
#include <BlynkSimpleEsp32.h>


#define INTPIN 2 
#define LED 16
#define DHTPIN 23 

char token[]="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

//se crea una instacia de DHT
DHT dht(DHTPIN,DHT22);
BlynkTimer timer;
WidgetLED led1(V1);

bool ext_intFlag=0;
bool pinChange=0; 

BLYNK_WRITE(V0)
{
  int V0Data = param.asInt();      //.asString     //.asDouble
  Serial.print("Valor de V0= ");
  Serial.println(V0Data);
  digitalWrite(LED,V0Data);
}

void sendSensor()
{
  float t=dht.readTemperature();
  float h=dht.readHumidity();
  //Serial.println("temp: "+String(t)+" hum: "+String(h));
  Blynk.virtualWrite(V5,h);//escribimos en el cable virtual V5 el valor de la humedad
  Blynk.virtualWrite(V6,t);//escribimos en el cable virtual V5 el valor de la tepmepratura
}

void checkPin()
{
  ext_intFlag = !ext_intFlag;
  pinChange = true;
}

void setup() 
{
  Serial.begin(115200);
  pinMode(INTPIN,INPUT_PULLUP);
  pinMode(LED,OUTPUT);
  attachInterrupt(digitalPinToInterrupt(INTPIN),checkPin,RISING);
  digitalWrite(LED,LOW);
  dht.begin();
  timer.setInterval(2000L,sendSensor);
  Blynk.begin(token,"SSID","Password"); 
}


void loop() 
{
  Blynk.run();
  timer.run();
  if(pinChange)
  {
    if(ext_intFlag)
    {
      led1.on();
    }
    else
    {
      led1.off();
    }
    pinChange=0;   //cambiamos la bandera para que no vuelva a entrar en el if
    //  as铆 solo entrar谩 cada vez que seejecute la interrupci贸n
  }
}