esp32
This is an old revision of the document!
Table of Contents
Install
Préambule: Les vidéos de Tommy Desrochers
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
- Error Msg:
ModuleNotFoundError: No module named 'serial
' ⇒# apt install python3-serial
- Error msg:
Failed uploading: no upload port provided
⇒# /sbin/usermod -aG dialout <USER>
+ reboot - Menu Tools → Serial Monitor
- Change to 115200 Baud
ESP32 Chip model = ESP32-D0WDQ6 Rev 101 This chip has 2 cores Chip ID: 11493932
K2000
[26/09/2014]
#include <math.h> const float pi = 3.14159; // Suite illogique des pins GPIO // /!\ GPIO-1 en OUTPUT -> conflit avec sortie Serial const int ledPin[7] = {5,18,19,21,3,22,23}; void setup() { Serial.begin(115200); while (!Serial) continue; Serial.println("Ready."); 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; //Serial.print(led); digitalWrite (ledPin[led], HIGH); delay(1); digitalWrite (ledPin[led], LOW); } //Serial.println(); }
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.1729425185.txt.gz · Last modified: 2024/10/20 11:53 by bruno