Skip to content

Entrega de Ambos Sensores via Wokwi + Flespi #71

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Open
wants to merge 26 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
036d502
Create readme.md
DiegotsCodeHub Feb 19, 2025
5aa1979
Delete class-material/U1/sensores/22210297 - Sensores de nivel de líq…
DiegotsCodeHub Feb 19, 2025
8e0ce16
Create readme.md
DiegotsCodeHub Feb 19, 2025
3b58c7a
Merge branch 'tectijuana:main' into main
DiegotsCodeHub Feb 24, 2025
6149b9a
Update readme.md
DiegotsCodeHub Feb 24, 2025
8386629
Update readme.md
DiegotsCodeHub Feb 24, 2025
06de7f0
Merge branch 'tectijuana:main' into main
DiegotsCodeHub Mar 10, 2025
13d1b38
Merge branch 'tectijuana:main' into main
DiegotsCodeHub Apr 2, 2025
ccda704
Create readme.md
DiegotsCodeHub Apr 3, 2025
f6c81fd
Update readme.md
DiegotsCodeHub Apr 3, 2025
5d35e41
Update readme.md
DiegotsCodeHub Apr 3, 2025
4b175a9
Update readme.md
DiegotsCodeHub Apr 3, 2025
0570a88
Create readme.md
DiegotsCodeHub Apr 3, 2025
e36b0b4
Update readme.md
DiegotsCodeHub Apr 3, 2025
641f77f
Update readme.md
DiegotsCodeHub Apr 3, 2025
7719474
Merge branch 'tectijuana:main' into main
DiegotsCodeHub Apr 7, 2025
a359a26
Create readme.md
DiegotsCodeHub Apr 7, 2025
71c94ff
Update readme.md
DiegotsCodeHub Apr 7, 2025
b070f89
Merge branch 'tectijuana:main' into main
DiegotsCodeHub Apr 8, 2025
00a4d51
Create desafiocalidadaire.md
DiegotsCodeHub Apr 8, 2025
6cadd72
Update desafiocalidadaire.md
DiegotsCodeHub Apr 8, 2025
2f69594
Update desafiocalidadaire.md
DiegotsCodeHub Apr 8, 2025
5a69033
Merge branch 'tectijuana:main' into main
DiegotsCodeHub Apr 9, 2025
ef283a4
Create readme.md
DiegotsCodeHub Apr 9, 2025
01b6eb2
Create readme.md
DiegotsCodeHub Apr 10, 2025
6c2abb4
Update readme.md
DiegotsCodeHub Apr 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 141 additions & 0 deletions class-material/FakeSensors/Sensor de Corriente ACS712/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
# Resultados de la Práctica de Programación con Sensor de Corriente ACS712 en Wokwi

## Descripción del Proyecto

En esta práctica de programación, se desarrolló y simuló un proyecto utilizando el sensor de corriente **ACS712** con el propósito de medir la corriente que pasa y visualizar el resultado en un **monitor serial**. El proyecto se implementó en la plataforma **Wokwi**, simulando un circuito con el microcontrolador **ESP32**.

### Objetivo

El objetivo principal de esta práctica fue aprender a utilizar el sensor **ACS712** para medir la distancia en un entorno simulado en **Wokwi**. Los resultados de la medición se envían al monitor serial para observar la corriente que recibe el sensor.

## Requisitos

- Cuenta en Wokwi.
- Conocimientos básicos de programación en **C/C++** para **ESP32**.
- Conocimientos de cómo funcionan los sensor de corriente ACS712.

## Hardware Utilizado

- **Microcontrolador:** ESP32
- **Sensor de Corriente:** ACS712

## Link de Wokwi:
https://wokwi.com/projects/427249570362939393

## Video demostracion en Loom del codigo:
https://www.loom.com/share/234a7e0d41a94cfa9a9d7d28b1059402?sid=7c1ad1e5-d467-4a0e-a9f3-e836190731e0

## Código Fuente

El código que se implementó para medir la distancia con el sensor ultrasónico **HC-SR04** es el siguiente:

```cpp
#include <WiFi.h>
#include <PubSubClient.h>

// Definir el pin para leer el sensor ACS712
#define SensorPin A0 // Pin analógico A0 para leer el voltaje del ACS712

// Datos de la red Wi-Fi
const char* ssid = "Wokwi-GUEST"; // Reemplaza con tu SSID
const char* password = ""; // Reemplaza con tu contraseña de Wi-Fi

// Datos de Flespi
const char* mqtt_server = "mqtt.flespi.io"; // Servidor MQTT de Flespi
const char* mqtt_token = "l3VDhmTWtzu6Dbu8kh1POdvVqKMOljAn9MLkQ1KxATR3seK8gYyhHUKezHtnNX15"; // Tu token de Flespi
const char* mqtt_topic = "Sensores/ACS712"; // Tema MQTT para enviar la corriente

WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
Serial.begin(115200); // Iniciar la comunicación serial

// Configurar el pin del sensor como entrada
pinMode(SensorPin, INPUT);

// Conectar a la red Wi-Fi
setup_wifi();

// Configurar el servidor MQTT
client.setServer(mqtt_server, 1883);
}

void setup_wifi() {
delay(10);
Serial.println("📡 Conectando a WiFi...");

// Conexión Wi-Fi
WiFi.begin(ssid, password);
int retries = 0;

// Esperar hasta que se conecte o llegue al límite de reintentos
while (WiFi.status() != WL_CONNECTED && retries < 20) { // Intentar 20 veces
delay(500);
retries++;
}

if ((WiFi.status() == WL_CONNECTED)){
delay(500);
Serial.println("✅ WiFi conectado!");
}
else{
delay(500);
Serial.println("🚫 Sin conexion WiFi");
Serial.println("Estado WiFi: " + String(WiFi.status()));
}
}

void reconnectMQTT() {
while (!client.connected()) {
Serial.println("👨‍💻 Conectando a MQTT...");
if (client.connect("ESP32Client", mqtt_token, "")) {
Serial.println("✅ Conectado a MQTT!");
}
else {
Serial.print("❌ Fallo MQTT, rc=");
Serial.println(client.state());
switch (client.state()) {
case -1: Serial.println("Error de conexión, motivo: No hay conexión."); break;
case -2: Serial.println("Error de conexión, motivo: No se pudo encontrar el broker MQTT."); break;
case -3: Serial.println("Error de conexión, motivo: Conexión rechazada por broker."); break;
case -4: Serial.println("Error de conexión, motivo: Credenciales incorrectas."); break;
default: Serial.println("Error desconocido."); break;
}
Serial.println("🔄 Reintentando en 5 segundos... ");
delay(5000);
}
}
}

void loop() {
if (!client.connected()) {
reconnectMQTT();
}
client.loop();

// Leer el valor analógico del sensor ACS712
int sensorValue = analogRead(SensorPin); // Valor entre 0 y 4095

// Convertir el valor a voltaje (3.3V de referencia en ESP32)
float voltage = sensorValue * (3.3 / 4095.0); // Convertir a voltaje

// Calcular la corriente basada en el voltaje
// El valor de referencia es 2.5V, y la sensibilidad es 0.185 A/V para el ACS712
float current = (voltage - 2.5) / 0.185;

// Imprimir el valor de la corriente en el monitor serial
Serial.print("Voltaje: ");
Serial.print(voltage);
Serial.print(" V, Corriente: ");
Serial.print(current);
Serial.println(" A");

// Enviar la corriente a Flespi a través de MQTT
char msg[50];
snprintf(msg, 50, "{\"current\": %.3f}", current); // Formato JSON
client.publish(mqtt_topic, msg);

delay(1000); // Hacer una pausa de 1 segundo
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
# Resultados de la Práctica de Programación con Sensor Ultrasónico HC-SR04 en Wokwi

## Descripción del Proyecto

En esta práctica de programación, se desarrolló y simuló un proyecto utilizando el sensor ultrasónico **HC-SR04** con el propósito de medir la distancia y visualizar el resultado en un **monitor serial**. El proyecto se implementó en la plataforma **Wokwi**, simulando un circuito con el microcontrolador **ESP32**.

### Objetivo

El objetivo principal de esta práctica fue aprender a utilizar el sensor ultrasónico **HC-SR04** para medir la distancia en un entorno simulado en **Wokwi**. Los resultados de la medición se envían al monitor serial para observar la distancia en centímetros.

## Requisitos

- Cuenta en Wokwi.
- Conocimientos básicos de programación en **C/C++** para **ESP32**.
- Conocimientos de cómo funcionan los sensores ultrasónicos HC-SR04.

## Hardware Utilizado

- **Microcontrolador:** ESP32
- **Sensor Ultrasónico:** HC-SR04
- **VCC** al pin **5V** de ESP32
- **GND** al pin **GND** de ESP32
- **Trig** al pin **3** de ESP32
- **Echo** al pin **4** de ESP32

- **Conexiones:**
- El sensor **HC-SR04** se conecta a los pines digitales de Arduino para la transmisión de señales de disparo y eco.

## Esquema de Circuito

El circuito se simuló en Wokwi con la siguiente configuración:

- El **pin Trig** del sensor está conectado al pin **5** de ESP32.
- El **pin Echo** del sensor está conectado al pin **7** de ESP32.
- El **VCC** se conecta al pin de **5V** de ESP32.
- El **GND** se conecta al pin de **GND** de ESP32.

## Link de Wokwi para mejor identificacion de los pines:
https://wokwi.com/projects/427202158131296257

## Video demostracion en Loom del codigo:
https://www.loom.com/share/dea4bcdfa9d24c24bd2977aa33cb42da?sid=a5f5cf3c-c0de-4c44-8808-de383a820ed0

## Código Fuente

El código que se implementó para medir la distancia con el sensor ultrasónico **HC-SR04** es el siguiente:

```cpp
#include <WiFi.h>
#include <PubSubClient.h>

// Definir los pines del sensor
#define Trigger 2 // Pin digital 2 para el Trigger del sensor
#define Echo 4 // Pin digital 4 para el Echo del sensor

// Definir las variables
long t; // Tiempo que demora en llegar el eco
long d; // Distancia en centímetros

// Datos de la red Wi-Fi
const char* ssid = "Wokwi-GUEST"; // Reemplaza con tu SSID
const char* password = ""; // Reemplaza con tu contraseña de Wi-Fi

// Datos de Flespi
const char* mqtt_server = "mqtt.flespi.io"; // Servidor MQTT de Flespi
const char* mqtt_token = "l3VDhmTWtzu6Dbu8kh1POdvVqKMOljAn9MLkQ1KxATR3seK8gYyhHUKezHtnNX15"; // Tu token de Flespi
const char* mqtt_topic = "Sensores/HC-SR04"; // Tema MQTT para enviar la distancia

WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
Serial.begin(115200); // Iniciar la comunicación serial
pinMode(Trigger, OUTPUT); // Pin como salida
pinMode(Echo, INPUT); // Pin como entrada
digitalWrite(Trigger, LOW); // Inicializamos el pin con 0

// Conectar a la red Wi-Fi
setup_wifi();

// Configurar el servidor MQTT
client.setServer(mqtt_server, 1883);
}

void setup_wifi() {
delay(10);
Serial.println("📡 Conectando a WiFi...");

// Conexión Wi-Fi
WiFi.begin(ssid, password);
int retries = 0;

// Esperar hasta que se conecte o llegue al límite de reintentos
while (WiFi.status() != WL_CONNECTED && retries < 20) { // Intentar 20 veces
delay(500);
retries++;
}

if ((WiFi.status() == WL_CONNECTED)){
delay(500);
Serial.println("✅ WiFi conectado!");
}
else{
delay(500);
Serial.println("🚫 Sin conexion WiFi");
Serial.println("Estado WiFi: " + String(WiFi.status()));
}
}

void reconnectMQTT() {
while (!client.connected()) {
Serial.println("👨‍💻 Conectando a MQTT...");
if (client.connect("ESP32Client", mqtt_token, "")) {
Serial.println("✅ Conectado a MQTT!");
}
else {
Serial.print("❌ Fallo MQTT, rc=");
Serial.println(client.state());
switch (client.state()) {
case -1: Serial.println("Error de conexión, motivo: No hay conexión."); break;
case -2: Serial.println("Error de conexión, motivo: No se pudo encontrar el broker MQTT."); break;
case -3: Serial.println("Error de conexión, motivo: Conexión rechazada por broker."); break;
case -4: Serial.println("Error de conexión, motivo: Credenciales incorrectas."); break;
default: Serial.println("Error desconocido."); break;
}
Serial.println("🔄 Reintentando en 5 segundos... ");
delay(5000);
}
}
}

void loop() {
if (!client.connected()) {
reconnectMQTT();
}
client.loop();

// Enviar un pulso de 10us al Trigger del sensor
digitalWrite(Trigger, HIGH);
delayMicroseconds(10); // Enviar un pulso de 10us
digitalWrite(Trigger, LOW);

// Recibir el pulso de respuesta del sensor por el pin Echo
t = pulseIn(Echo, HIGH); // Obtener el ancho del pulso

// Calcular la distancia
d = t / 59; // Escalar el tiempo a una distancia en cm

// Imprimir la distancia en el monitor serial
Serial.print("Distancia: ");
Serial.print(d); // Enviar serialmente el valor de la distancia
Serial.print(" cm");
Serial.println();

// Enviar la distancia a Flespi a través de MQTT
char msg[50];
snprintf(msg, 50, "{\"distance\": %ld}", d); // Formato JSON
client.publish(mqtt_topic, msg);

delay(1000); // Hacer una pausa de 1 segundo
}
Loading