User Tools

Site Tools


esp32

This is an old revision of the document!


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 :

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