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

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

14 Días
10 Hrs
11 Min
34 Seg

Conexión de aplicación

26/39
Recursos

Aportes 9

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Yo programe una conexion wifi con arduinoUNO y esp8266, y es complicado con los comandos AT.
para ejecutar una Orden de gateway a Server no hay problema, se manda con GET en HTTP
Pero una orden de Server a gateway no se puede directamente. y tiene que hacerse a base de consultas cada cierto tiempo. (el gateway preguntando al server si tiene una orden, y el server respondiendo con la orden).
En base a consultas queda solucionado. Me pregunto si Blynk se basa en lo mismo para ejecutar una Orden de Server a Gateway.?
Todo esta simplificado en esa función:
BLYNK_WRITE(V0){
}
lo cual es maravilloso, Eduardo dijo que esa funcion se activa cuando hay un cambio en VO, pero el Server no podria comunicar eso directamente al Gateway a no ser que el gateway este haciendo consultas constantemente debido a la misma naturaleza de las conexiones cliente servidor en HTTP.
¿Alguien me dice si estoy en lo correcto?

Buenas noches!
Comparto mi código, con algunas variaciones ya que he usado un NodeMCU ESP8266, con la cual algunas librerías que usa el profe aquí no funcionan. Ademas he sumado una pequeña porción de código que activa un relé (Y este encendería un ventilador) cuando se supera cierta temperatura:

#define BLYNK_PRINT Serial

//Librerias utilizadas
#include <DHTesp.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

//Variables
bool ext_intFlag = 0;
bool pinChanged = 0; //Indica el cambio de estado
float t,h;

//def
#define dhtPin D0 // Pin DHT22
#define led1 D1 //Pin LED
#define relay D2 //Pin Relay
#define btn1 D3 //Pin Pulsador

//Init
DHTesp dht;
BlynkTimer timer;
WidgetLED wled(V1);

//WiFi & Token
char ssid[] = "Tu SSID";
char pass[] = "Tu contraseña";
char auth[] = "Tu token de Blynk";

BLYNK_WRITE(V0)
{
  int v0Data = param.asInt();
  /* Otros tipos de parametro:
   *  asString
   *  asDouble
   */
   Serial.print("Valor de V0:");
   Serial.println(v0Data);
   digitalWrite(led1,v0Data);
}

void sendSensors()
{
  t = dht.getTemperature();
  h = dht.getHumidity();

  Blynk.virtualWrite(V5,t);
  Blynk.virtualWrite(V6, h);
}

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

void ICACHE_RAM_ATTR checkPin();

void setup()
{
  Serial.begin(9600);

  Blynk.begin(auth, ssid, pass);
  
  timer.setInterval(2000L, sendSensors);
  
  pinMode(relay, OUTPUT);
  digitalWrite(relay,LOW);
  pinMode(btn1, INPUT_PULLUP);
  pinMode(led1, OUTPUT);
  digitalWrite(led1,LOW);
  dht.setup(dhtPin,DHTesp::DHT22);

  attachInterrupt(digitalPinToInterrupt(btn1),checkPin,RISING);
}

void loop()
{
  Blynk.run();
  timer.run();
  if(pinChanged)
  {
    if(ext_intFlag)
    {
      wled.on();
    }
    else
    {
      wled.off();
    }
    pinChanged = 0; //Volvemos el valor a 0 para evitar que se ejecute el if por error
  }
  if (t > 27.00)
  {
    digitalWrite(relay,HIGH);
  }
  else
  {
    digitalWrite(relay,LOW);
  }
}

Espero les sea de utilidad!

Saludos

Les doy mi aporte para los que solo tienen un Esp8266 y no cuentan con un push button, ni un sensor DHT. No se puede encender el LED de blynk, pero si aparecen unos valores random de temperatura y humedad en la grafica y si presionas el botón de encendido o apagado, se enciente el led que trae de fabrica el Esp8266.

#define BLYNK_PRINT Serial //se debe poner antes de la libreria

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

#define led 2


BlynkTimer timer;
WidgetLED led1(V1);

char token[]="zXI3NpVjj9H-YdVdgwHQp4fhdQuY1QBh";

BLYNK_WRITE(V0){//lee desde blynk el estado del boton y si se presiona, el led se enciende
  int V0data = param.asInt(); //.asString .asDouble
  Serial.println("Valor de V0= ");
  Serial.print(V0data);
  digitalWrite(led, V0data);
}

void sendsensors(){ //funcion envia a blynk los valores de temperatura y humedad
  float h = random(80,99);
  float t = random(20,33);

  Blynk.virtualWrite(V5,t);
  Blynk.virtualWrite(V6,h);
}

void setup() {
 Serial.begin(115200);
 pinMode(led, OUTPUT);
 digitalWrite(led, LOW);
 timer.setInterval(2000, sendsensors); //cada 2000 milis se ejecuta la funcion sendsensors
 Blynk.begin(token, "RED","CONTRASEÑA"); //token de autorizacion e internet
 
}

void loop() {
Blynk.run(); //si llegó un dato desde blynk
timer.run();

}

ACa les anexo mi codigo funcional para un NodeMCU v3 con chip ESP8266:

Les recomiendo que lean además este link, ya que la documentacion desde que el profe grabó la clase ha cambiado un poco, por lo que para hallar los valores de id, name y tokem se debe de usar nuestro pc y seguir los pasos mencionados en el link de arriba.

#define BLYNK_TEMPLATE_ID "Esto lo sacas de blynk"
#define BLYNK_DEVICE_NAME "Esto tambien lo sacas de blynk"
#define BLYNK_AUTH_TOKEN  "Lo sacas de blynk x3"
#define BLYNK_PRINT Serial

#include <BlynkSimpleEsp8266.h>
#include <ESP8266WiFi.h>
#include <DHT.h>

#define BUTTON D4
#define LED    D6
#define DHTPIN D5

DHT dht(DHTPIN, DHT22);
BlynkTimer timer;
WidgetLED led1(V2);

bool ext_intFlag = 0;
bool pinChanged = 0;
float t,h;
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "El nombre de tu red";
char pass[] = "La contraseña de tu red";

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

void sendSensor() {
  t = dht.readTemperature();
  h = dht.readHumidity();

  Blynk.virtualWrite(V5,t);
  Blynk.virtualWrite(V6,h);
}

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

void ICACHE_RAM_ATTR checkPin();

void setup() {
  Serial.begin(115200);
  pinMode(BUTTON, INPUT_PULLUP);
  pinMode(LED, OUTPUT);
  digitalWrite(LED, LOW);

  Blynk.begin(auth, ssid, pass);
  timer.setInterval(2000, sendSensor);

  dht.begin();
  attachInterrupt(digitalPinToInterrupt(BUTTON),checkPin,RISING);  
}

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

Para esta practica, yo utilice los siguientes componentes:
ESP32 CAM
Conversor USB A Serial: CP2102
DHT11
Pulsador
Protoboard
Cables

Este es mi código, luego de ver solucionar los cambios que se necesitan en el código para loggearse en blynk, que no es como se dice en el curso. Sugiero usar Blynk.Console para verificar los datos de ID, NAME Y AUTH\_TOKEN.```js /* Fill-in information from Blynk Device Info here */ // en la página de Blynk, iniciar usuario, ir a Blynk.Console //Buscar el device > Device info y allí copiar la info // del proyecto de cada uno. Yo aquí los dejo en XXXXXX #define BLYNK_TEMPLATE_ID "XXXXXXXXXXXXXXXX" #define BLYNK_TEMPLATE_NAME "practicablynk" #define BLYNK_AUTH_TOKEN "XXXXXXXXXXXXXXXXXXXX" #define BLYNK_PRINT Serial #include <WiFi.h> #include <DHT.h> #include <BlynkSimpleEsp32.h> #define INTPIN 4 #define LED 16 #define DHTPIN 23 DHT dht(DHTPIN,DHT22); BlynkTimer timer; WidgetLED led1(V1); bool ext_intFlag = 0; bool pinChanged = 0; char ssid[] = "Fox"; char pass[] = "3014747312"; 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(); Blynk.virtualWrite(V5,h); Blynk.virtualWrite(V6,t); } void checkPin(){ ext_intFlag = !ext_intFlag; pinChanged = 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(BLYNK_AUTH_TOKEN, ssid, pass); } void loop() { Blynk.run(); timer.run(); if(pinChanged){ if(ext_intFlag){ led1.on(); } else{ led1.off(); } pinChanged = 0; } } ```/\* Fill-in information from Blynk Device Info here \*/ \#define BLYNK\_TEMPLATE\_ID "TMPL2PIaD03sH" \#define BLYNK\_TEMPLATE\_NAME "practicablynk" \#define BLYNK\_AUTH\_TOKEN "yhaEZjuV7yXtwZ7SgayejQ4umIZNgz7B" \#define BLYNK\_PRINT Serial \#include \<WiFi.h> \#include \<DHT.h> \#include \<BlynkSimpleEsp32.h> \#define INTPIN 4 \#define LED 16 \#define DHTPIN 23 DHT dht(DHTPIN,DHT22); BlynkTimer timer; WidgetLED led1(V1); bool ext\_intFlag = 0; bool pinChanged = 0; char ssid\[] = "Fox"; char pass\[] = "3014747312"; 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(); Blynk.virtualWrite(V5,h); Blynk.virtualWrite(V6,t); } void checkPin(){ ext\_intFlag = !ext\_intFlag; pinChanged = 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(BLYNK\_AUTH\_TOKEN, ssid, pass); } 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

A mí no me ha salido, de momento, con el Wemos D1 mini Pro (ESP8266). Lo seguiré intentando.

Tengo un ESP8266 y debería funcionar importando estas librerías

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>