esp32
This is an old revision of the document!
Table of Contents
Préambule
Installation
Install config sous Linux
Sous Debian 13, lors du 1er test, j'ai reçu ces deux messages d'erreur:
- Error Msg:
ModuleNotFoundError: No module named 'serial
' - Error msg:
Failed uploading: no upload port provided
On va donc, d'abord:
# apt install python3-serial
# /sbin/usermod -aG dialout <USER>
+ reboot
Suivi de l'installation proprement dite :
- Download Aduino IDE: https://www.arduino.cc/en/software
- Unzip :
$ unzip arduino[…]
- Launch :
$ cd arduino[…]
,$ ./arduino-ide
- Menu File → Preferences → Additional boards manager URLs: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
- Menu Tools → Board → Board Manager… → search with ESP32, select de most recent version of ESP32 by Espressif Systems, and Install
- Menu Tools → Board → Esp32 → ESP32 Dev Module
- Menu Tools → Port → /dev/ttyUSB0
Test
- Menu File → example → ESP32 → ChipID → GetChipID
- Upload: Menu Sketch → Upload
- Menu Tools → Serial Monitor
- Change to 115200 Baud
ESP32 Chip model = ESP32-D0WDQ6 Rev 101 This chip has 2 cores Chip ID: 11493932
Serial Output
void setup() { Serial.begin(115200); while (!Serial) continue; Serial.println("Ready."); } void loop() { }
K2000
[26/09/2014]
Suite illogique des pins GPIO
GPIO-1 en OUTPUT → conflit avec sortie serial
#include <math.h> const float pi = 3.14159; const int ledPin[7] = {5,18,19,21,3,22,23}; void setup() { for (int i=0; i<7; i++) { pinMode (ledPin[i], OUTPUT); } } void loop() { for (float ang=-pi; ang<pi; ang=ang+(2*pi/700)) { int led = (1+std::sin(ang))*7/2; digitalWrite (ledPin[led], HIGH); delay(1); digitalWrite (ledPin[led], LOW); } }
Client Wifi
#include <WiFi.h> void setup() { Serial.begin(115200); while (!Serial) continue; WiFi.begin("SSID", "P4sswOrd"); while (WiFi.status() != WL_CONNECTED) delay(500); Serial.print("IP address:"); Serial.println(WiFi.localIP()); } void loop() { if (WiFi.status() == WL_CONNECTED) { Serial.println("Connected to Wifi."); } else { Serial.println("WiFi connection lost."); } delay(1000); }
Client HTTP
#include <WiFi.h> #include <HTTPClient.h> void setup() { Serial.begin(115200); while (!Serial) continue; WiFi.begin("SSID", "P4ssw0rd"); while (WiFi.status() != WL_CONNECTED) delay(500); Serial.println("Connected to Wifi."); HTTPClient http; Serial.print("Get https://example.com... "); http.begin("https://example.com"); int httpCode = http.GET(); if (httpCode == HTTP_CODE_OK) { Serial.println(http.getString()); } else { Serial.printf("failed, error: %s\n", http.errorToString(httpCode).c_str()); } http.end(); } void loop() { }
Server HTTP
#include <WiFi.h> #include <WebServer.h> //#include <ESPmDNS.h> const char *ssid = "Your SSID"; const char *password = "P4sswOrd"; WebServer server(80); void handleRoot() { String html = "<!DOCTYPE html>"; html += "<html>\n"; html += "<head>\n"; html += "<title>Server ESP32</title>\n"; html += "</head>\n"; html += "<body>\n"; html += "<h1>Hello world</h1>\n"; html += "</body>\n"; html += "</html>"; server.send(200, "text/html", html); } void setup(void) { Serial.begin(115200); while (!Serial) continue; WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) delay(500); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); //if (MDNS.begin("esp32")) { // Serial.println("MDNS responder started"); //} server.on("/", handleRoot); server.onNotFound([]() { server.send(404, "text/plain", "Not Found"); }); server.begin(); Serial.println("HTTP server started"); } void loop(void) { server.handleClient(); delay(2); //allow the cpu to switch to other tasks }
Client REST API
#include <WiFi.h> #include <HTTPClient.h> #include <ArduinoJson.h> void setup() { Serial.begin(115200); while (!Serial) delay(100); WiFi.begin("SSID", "P4ssw0rd"); while (WiFi.status() != WL_CONNECTED) delay(500); Serial.println("Connected."); } void loop() { if (WiFi.status() == WL_CONNECTED) { HTTPClient http; // https://docs.kraken.com/api/docs/rest-api/get-ticker-information http.begin("https://api.kraken.com/0/public/Ticker?pair=XXBTZEUR"); int httpCode = http.GET(); if (httpCode == HTTP_CODE_OK) { String response = http.getString(); JsonDocument doc; DeserializationError error = deserializeJson(doc, response); if (error) { Serial.print(F("deserializeJson() failed: ")); Serial.println(error.f_str()); } else { Serial.print("BTC: "); Serial.println(doc["result"]["XXBTZEUR"]["c"][0].as<double>()); } } else { Serial.printf("failed, error: %i %s\n", httpCode, http.errorToString(httpCode).c_str()); } http.end(); } else { Serial.println("Network unreachable"); } delay(5000); }
Thread
#include <WiFi.h> #include <WebServer.h> #include <HTTPClient.h> #include <ArduinoJson.h> #include <Thread.h> const char *ssid = "....."; const char *password = "....."; float btc; Thread myThread = Thread(); void getBtcFromKraken() { HTTPClient http; http.begin("https://api.kraken.com/0/public/Ticker?pair=XXBTZEUR"); int httpCode = http.GET(); if (httpCode == HTTP_CODE_OK) { String response = http.getString(); JsonDocument doc; DeserializationError error = deserializeJson(doc, response); if (!error) { btc = doc["result"]["XXBTZEUR"]["c"][0].as<float>(); Serial.print("BTC: "); Serial.println(btc); } } http.end(); } WebServer server(80); void handleRoot() { String html = "BTC = " + String(btc); server.send(200, "text/plain", html); } void setup(void) { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) delay(500); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); //if (MDNS.begin("esp32")) { // Serial.println("MDNS responder started"); //} myThread.onRun(getBtcFromKraken); myThread.setInterval(10000); myThread.run(); server.on("/", handleRoot); server.onNotFound([]() { server.send(404, "text/plain", "Not Found"); }); server.begin(); Serial.println("HTTP server started"); } void loop(void) { if (myThread.shouldRun()) myThread.run(); Serial.print("."); server.handleClient(); delay(500); //allow the cpu to switch to other tasks }
esp32.1729426383.txt.gz · Last modified: 2024/10/20 12:13 by bruno