-
Notifications
You must be signed in to change notification settings - Fork 8
/
Modulo_Emisor_BMP280.ino
120 lines (96 loc) · 3.02 KB
/
Modulo_Emisor_BMP280.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/*********
Marce Ferra 2021
Proyecto de emisor y receptor para tres entradas lógicas (para contacto seco) en emisor y tres salidas lógicas de estado en receptor
Usando protocolo ESP NOW de Espressif
MODULO EMISOR con BMP280 por I2C
Si esta información te resulta útil e interesante, invitame un cafecito!!!
https://cafecito.app/marce_ferra
Desde fuera de Argentina en:
https://www.buymeacoffee.com/marceferra
If you found this information useful and interesting, buy me a cafecito!!!
https://www.buymeacoffee.com/marceferra
*********/
#include <esp_now.h>
#include <WiFi.h>
#include <Adafruit_BMP280.h>
#include <Adafruit_Sensor.h>
#define SEALEVELPRESSURE_HPA (1025.00) //Presión atmosferica promedio de Buenos Aires
Adafruit_BMP280 bmp; // I2C
float temperature;
float humidity;
float pressure;
#define conector_1 18
#define conector_2 19
#define conector_3 5
// MAC Address del ESP32 placa B "receptor"
uint8_t broadcastAddress[] = {0xB4, 0xE6, 0x2D, 0xC1, 0x59, 0x0D};
// Variable to add info about peer
esp_now_peer_info_t peerInfo;
// Estructura de datos para enviar
typedef struct struct_message {
float temp;
float pres;
bool pulso;
bool entrada_1;
bool entrada_2;
bool entrada_3;
} struct_message;
struct_message paquete_datos;
// 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");
}
void setup() {
// Init Serial Monitor
Serial.begin(115200);
if (!bmp.begin(0x76)) {
Serial.println("Could not find a valid BMP280 sensor, check wiring!");
while (1);
}
pinMode(conector_1, INPUT);
pinMode(conector_2, INPUT);
pinMode(conector_3, INPUT);
// Set device as a Wi-Fi Station
WiFi.mode(WIFI_STA);
// Init ESP-NOW
if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
}
// Once ESPNow is successfully Init, we will register for Send CB to
// get the status of Trasnmitted packet
esp_now_register_send_cb(OnDataSent);
// Register peer
memcpy(peerInfo.peer_addr, broadcastAddress, 6);
peerInfo.channel = 0;
peerInfo.encrypt = false;
// Add peer
if (esp_now_add_peer(&peerInfo) != ESP_OK) {
Serial.println("Failed to add peer");
return;
}
}
void loop() {
// Set values to send
getReadings();
paquete_datos.pulso = 1;
paquete_datos.entrada_1 = digitalRead(conector_1);
paquete_datos.entrada_2 = digitalRead(conector_2);
paquete_datos.entrada_3 = digitalRead(conector_3);
paquete_datos.temp = temperature;
paquete_datos.pres = pressure;
// Send message via ESP-NOW
esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &paquete_datos, sizeof(paquete_datos));
if (result == ESP_OK) {
Serial.println("Sent with success");
}
else {
Serial.println("Error sending the data");
}
delay(3000);
}
void getReadings() {
temperature = bmp.readTemperature();
pressure = (bmp.readPressure() / 100.0F);
}