Bonjour à tous,
Il semble que tout le monde s'amuse bien ici avec cette discussion.
Encore une fois avec un ESP, on a pas besoin de liaison série, car il y a le WiFi.
Ce qui est intéressant, c'est que le Pi devrait être généralement considéré comme un serveur ou "collectionneur" de données, par exemple pour conserver des températures dans une base de données SQLite et venant de divers objets connectés.
Comme il pleuvait, j'ai repris ce matin un de mes ESP32 qui possède un capteur de température 1-Wire DS18B20 de Dallas et un SSD1306 OLED display (0.9-2.6cm).
Avec un sketch Arduino assez simple (utilisation de <OneWire.h>, <DallasTemperature.h> et "SSD1306Wire.h"), il montrait, tôt ce matin, la température actuelle ainsi que le minimum et le maximum depuis le démarrage du système.
Sur mes deux Pi de simulation de présence, j'ai aussi ce même Dallas, dont je peux lire leurs températures (et aussi les minimum et les maximum) avec des http://192.168.1.13x:8000/temps.
Je viens de terminer un sketch sur cet ESP32 qui lit la température avec http.GET sur mes 2 Pis et les montrent sur deux lignes de mon display.
Le code de mon ESP32 qui suit nécessiterait un peu de nettoyage et plus d'explications ... mais ça roule:
Code Arduino : Sélectionner tout - Visualiser dans une fenêtre à part
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 #include <WiFi.h> #include <HTTPClient.h> #include <OneWire.h> #include <DallasTemperature.h> #include "SSD1306Wire.h" const char* ssid = "...."; const char* password = "....."; //Le fil data sur la broche P15 #define ONE_WIRE_BUS 15 //oneWire instance pour la communication OneWire oneWire(ONE_WIRE_BUS); //La réference du capteur de température Dallas DallasTemperature sensors(&oneWire); float temperatureMinimum = 100; float temperatureMaximum = -100; //Initialisation de l'OLED display avec la librairie Wire SSD1306Wire display(0x3c, 21, 18); //SDA et SCK void setup() { Serial.begin(9600); Serial.println("Script has started"); delay(4000); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi.."); } Serial.println("Connected to the WiFi network"); display.init(); //Font supported: ArialMT_Plain_10 ArialMT_Plain_16 ArialMT_Plain_24 display.setFont(ArialMT_Plain_16); sensors.begin(); } void loop() { String theTemps1 = "None"; String theTemps2 = "None"; int httpCode = 404; if ((WiFi.status() == WL_CONNECTED)) { //Check the current connection status HTTPClient http; http.begin("http://192.168.1.134:8000/temps"); //Specify the URL httpCode = http.GET(); //Make the request if (httpCode > 0) { //Check for the returning code theTemps1 = http.getString(); Serial.println(httpCode); Serial.println(theTemps1); } else { Serial.println("Error on HTTP request"); } http.end(); //Free the resources http.begin("http://192.168.1.135:8000/temps"); //Specify the URL httpCode = http.GET(); //Make the request if (httpCode > 0) { //Check for the returning code theTemps2 = http.getString(); Serial.println(httpCode); Serial.println(theTemps2); } else { Serial.println("Error on HTTP request"); } http.end(); //Free the resources } display.clear(); display.drawString(0, 4, theTemps1); display.drawString(0, 34,theTemps2); display.display(); delay(10000); }
Attention, on peut perdre beaucoup de temps: il faut utiliser la carte ESP32 Dev Module dans l'outil Arduino (version 1.8.9). Mon ESP32 est un NodeMCU ESP-32S V1.
Le Web serveur des Pi retourne par exemple: C: 21.8 21.3 22.1, assez court pour passer sur une ligne (partie Web aussi codée ce matin).
C: veut dire de mon Pi à la cuisine, suivit de la température actuelle et des minimum et maximum.
Sur le Pi le serveur Web est un thread, la lecture de la température aussi, recalculée chaque 20 secs, et tout cela en Java.
Il faudrait ôter quelques Serial.println() et remplacer certains par des messages d'erreurs visibles sur le display.
Comme le Font du texte est un peu petit, je vais à présent alterner, après quelques secondes, les deux résultats avec un Font plus grand et en y mettant ensuite aussi la température de l'ESP32 (autre sketch à intégrer) .. plus tard j'enverrai les 3 températures de l'ESP32 à mes deux Pi.
Donc, à la fin, on ne sait plus qui est client ou serveur ... et c'est normal.
Les électroniciens s'amusent avec leurs diodes ou autres ... et moi ... juste avec du logiciel!
Partager