User Tools

Site Tools


informatica:arduino:esp32

This is an old revision of the document!


ESP32

ARDUINO IDE

Nos descargamos la última versión de Arduino IDE, tiene que ser por encima de la 1.6

Descargamos un plugin para poder conectar con esp32:

https://github.com/espressif/arduino-esp32

https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/boards_manager.md

Ponemos esta URL en file > preferences > Additional Boards Manager URLs:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json

Ahora vamos a tools > Board: “Arduino Uno” y seleccionamos Boards Manager. Buscamos esp32 y damos a install

En Tools > Board: “Arduino Uno” > ESP32 Arduino

Reiniciamos Arduino. Nos aseguramos que python apunte a python3 instalando python-is-python3

sudo apt install python-is-python3

Código de ejemplo. Conecta a wifi y nos da la ip. Una vez subido tenemos que reiniciar esp32 (desconectando usb)

#include <WiFi.h>        // Include the Wi-Fi library

const char* ssid     = "pitufina";         // The SSID (name) of the Wi-Fi network you want to connect to
const char* password = "reyvisigodo";     // The password of the Wi-Fi network

void setup() {
  Serial.begin(115200);         // Start the Serial communication to send messages to the computer
  delay(10);
  Serial.println('\n');
  
  WiFi.begin(ssid, password);             // Connect to the network
  Serial.print("Connecting to ");
  Serial.print(ssid);

  while (WiFi.status() != WL_CONNECTED) { // Wait for the Wi-Fi to connect
    delay(500);
    Serial.print('.');
  }

  Serial.println('\n');
  Serial.println("Connection established!");  
  Serial.print("IP address:\t");
  Serial.println(WiFi.localIP());         // Send the IP address of the ESP8266 to the computer
}

void loop() { 
  
}

La salida que nos da es esta:

.

Connection established!
IP address:	192.168.1.97

HAcer petición GET y POST

#include <WiFi.h>        // Include the Wi-Fi library
#include <HTTPClient.h>

const char* ssid     = "mi_red";         // The SSID (name) of the Wi-Fi network you want to connect to
const char* password = "*********";     // The password of the Wi-Fi network

//Your Domain name with URL path or IP address with path
String serverName = "http://192.168.1.200/esp32";

// the following variables are unsigned longs because the time, measured in
// milliseconds, will quickly become a bigger number than can be stored in an int.
unsigned long lastTime = 0;
// Timer set to 10 minutes (600000)
//unsigned long timerDelay = 600000;
// Set timer to 5 seconds (5000)
unsigned long timerDelay = 5000;

void setup() {
  Serial.begin(115200); 

  WiFi.begin(ssid, password);
  Serial.println("Connecting");
  while(WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to WiFi network with IP Address: ");
  Serial.println(WiFi.localIP());
 
  Serial.println("Timer set to 5 seconds (timerDelay variable), it will take 5 seconds before publishing the first reading.");
}

void loop() {
  //Send an HTTP POST request every 10 minutes
  if ((millis() - lastTime) > timerDelay) {
    //Check WiFi connection status
    if(WiFi.status()== WL_CONNECTED){
      HTTPClient http;

      String serverPath = serverName + "?temperature=24.37";
      
      // Your Domain name with URL path or IP address with path
      http.begin(serverPath.c_str());
      
      // Send HTTP GET request
      int httpResponseCode = http.GET();
      
      if (httpResponseCode>0) {
        Serial.print("HTTP Response code: ");
        Serial.println(httpResponseCode);
        String payload = http.getString();
        Serial.println(payload);
      }
      else {
        Serial.print("Error code: ");
        Serial.println(httpResponseCode);
      }
      // Free resources
      http.end();
    }
    else {
      Serial.println("WiFi Disconnected");
    }
    lastTime = millis();
  }
}

Python

https://www.youtube.com/watch?v=fs10aqFTj8I

apt-get install esptool

Descargamos el firmware:

https://micropython.org/download/esp32/

Descargo este:

 GENERIC : esp32-idf3-20210202-v1.14.bin 

Para borrar la memoria. Si no sabemos el puerto, no lo ponemos y lo detecta, es /dev/ttyUSB0:

esptool erase_flash
esptool.py v2.8
Found 1 serial ports
Serial port /dev/ttyUSB0
Connecting........_
Detecting chip type... ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: f0:08:d1:d3:1e:98
Enabling default SPI flash mode...
Erasing flash (this may take a while)...

A fatal error occurred: ESP32 ROM does not support function erase_flash.

Da error. Subimos el firmware que hemos descargado. Tarda un poco. Debería devolver un prompt pero no hace nada:

esptool write_flash 0x1000 esp32-idf3-20210202-v1.14.bin 
esptool.py v2.8
Found 1 serial ports
Serial port /dev/ttyUSB0
Connecting.......
Detecting chip type... ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: f0:08:d1:d3:1e:98
Enabling default SPI flash mode...
Configuring flash size...
Auto-detected Flash size: 4MB
Erasing flash...
Took 2.39s to erase flash block
Wrote 1445888 bytes at 0x00001000 in 140.5 seconds (82.3 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Arduino IDE

https://github.com/espressif/arduino-esp32

https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/boards_manager.md

Ponemos esta URL en file > preferences > Additional Boards Manager URLs:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json

Ahora vamos a tools > Board: “Arduino Uno” y seleccionamos Boards Manager. Buscamos esp32 y damos a install

En Tools > Board: “Arduino Uno” > ESP32 Arduino

Energia y consumo

informatica/arduino/esp32.1615155725.txt.gz · Last modified: 2021/03/07 22:22 by jose