/*
* ESP32 version
* Este sketch permite el envío de dos datos mediante la comunicación ESP-NOW
*/
/*
*****************************************************
* LIBRERIAS
*****************************************************
*/
#include <esp_now.h>
#include <WiFi.h>
/*
*****************************************************
* VARIABLES
*****************************************************
*/
#define LED_onboard 2 //Led Conetado al GPIO2 PIN4 (D2) on 30pin kit (ESP32)
const int pin_pot=34; // Pin con entrada del potenciometro
uint8_t mac_addr[6] = {0xDC, 0x4F, 0x22, 0x10, 0xD3, 0x26};// REPLACE WITH YOUR RECEIVER MAC Address
//MAC_ESP8266: DC:4F:22:10:D3:26
//ESTRUCTURA DE LOS DATOS TRANSMITIDOS MAESTRO (TRANSMISOR)
typedef struct mensaje_enviado {
uint16_t pot;
uint32_t tiempo;
} mensaje_enviado;
// Create a struct_message called myData
mensaje_enviado myData;
esp_now_peer_info_t peerInfo; // obtener información del par
/*
*****************************************************
* INICIO
*****************************************************
*/
void setup() {
// Inicialización del puerto serial
Serial.begin(115200);
// Colocamos el dispositivo en modo estación
WiFi.mode(WIFI_STA);
// Inicialización del protocolo ESP-NOW
if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
}
/*
Una vez que ESPNow haya iniciado con éxito, nos registraremos
en SentCB para obtener el estado del paquete enviado (transmitido)
*/
esp_now_register_send_cb(OnDataSent);//Registramos los datos enviados por el transmisor
// Registrando módulo (par)
memcpy(peerInfo.peer_addr, mac_addr, 6);
peerInfo.channel = 0;
peerInfo.encrypt = false;
// Agregando par
if (esp_now_add_peer(&peerInfo) != ESP_OK){
Serial.println("Failed to add peer");
return;
}
//pinMode(pin_pot,INPUT);
}
/*
*****************************************************
* REPETICIÓN
*****************************************************
*/
void loop() {
// Datos a enviar
myData.pot=analogRead(pin_pot);
Serial.print("Dato potenciometro: ");
Serial.print(myData.pot);
delay(20);
myData.tiempo = millis();
Serial.print(". Dato tiempo: ");
Serial.println(myData.tiempo);
// Envia mensaje via ESP-NOW
esp_err_t result = esp_now_send(mac_addr, (uint8_t *) &myData, sizeof(myData));
if (result == ESP_OK) {
Serial.println("Sent with success");
}
else {
Serial.println("Error sending the data");
}
delay(2000);
}
/*
*****************************************************
* FUNCIONES
*****************************************************
*/
// callback when data is sent
void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
Serial.print("\r\nLast Packet Send Status:\t");
Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Delivery Success" : "Delivery Fail");
}