Este artigo visa montar e descrever um módulo que muda automaticamente para modo de programação/bootloader nos ESP 32 e 8266 no Arduino IDE.
![]() |
| Parte do esquema em ESP32-Core-Board-V2 |
![]() |
| Pinagem S8050 |
![]() |
| Errado: DTR-> io0, RTS->EN |
Variedades sobre desenvolvimento, eletrônica e afins. Ou: minha memória de longo prazo.
Este artigo visa montar e descrever um módulo que muda automaticamente para modo de programação/bootloader nos ESP 32 e 8266 no Arduino IDE.
![]() |
| Parte do esquema em ESP32-Core-Board-V2 |
![]() |
| Pinagem S8050 |
![]() |
| Errado: DTR-> io0, RTS->EN |
Para programar o WT32-ETH01, um Esp32 Wroom com Ethernet embutida, conectar um USB-Serial com TX-RX invertidos, alimentação (3.3 ou 5V), jumpear GND e GPIo00, e energizar (deixar o GND da alimentação para ligar por último). Assim, ele entrará em modo de programação. Jumpear também o EN(able) e outro GND e energizar.
Assim que aparecer um connecting no Arduino IDE, ou um pouco antes, tirar o jumper do EN.
Aparentemente no Thonny, não há a necessidade do jumper em EN.
Nos Unix-like (Linux, macOS, etc) você pode definir seu programa executável ao chamar do shell, sem ter que invocar um interpretador (python, shell, etc), nos arquivos texto, como python .py.
Na primeira linha do arquivo texto, inicie com #! para esta definição, seguido de espaço e do caminho (se não estiver no PATH) e nome do programa executor, como por exemplo:
#! python3 --argumentos
Como pode haver problemas quanto ao ambiente, a recomendação, caso não funcione, é adicionar o /usr/bin/env logo após o #!.
#!/usr/bin/env python3 --argumentos
Feito isso, e utilizando um chmod +X arq.py é possível chamar o arquivo diretamente na linha de comando:
$ arq.py
Montando um interruptor compatível com Alexa.
Utilizado o módulo Relé para ESP01 v4.0 do AliExpress
em conjunto com ESP01S<link href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.4.0/styles/default.min.css" rel="stylesheet">
<script src='//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.4.0/highlight.min.js'/>>
<script>hljs.highlightAll();</script>
<pre><code class="language-c++">
..........................
</code></pre>
#define WIFI_SSID "YOUR_SSID"
#define WIFI_PASS "YOUR_PASSWORD"
#include
#ifdef ESP32
#include
#else
#include
#endif
#include "fauxmoESP.h"
#include "credentials.h"
fauxmoESP fauxmo;
// -----------------------------------------------------------------------------
#define SERIAL_BAUDRATE 115200
#define RELE 2
#define BUTTON 0
#define ID_RELE "Office Light"
const IPAddress remote_ip(192, 168, 15, 2);
boolean estado;
int buttonState;
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// Wifi
// -----------------------------------------------------------------------------
void wifiSetup() {
#ifdef DEBUG_ESP_PORT
// Set WIFI module to STA mode
WiFi.mode(WIFI_STA);
// Connect
Serial.printf("[WIFI] Connecting to %s ", WIFI_SSID);
#endif
WiFi.begin(WIFI_SSID, WIFI_PASS);
#ifdef DEBUG_ESP_PORT
// Wait
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(100);
}
Serial.println();
// Connected!
Serial.printf("[WIFI] STATION Mode, SSID: %s, IP address: %s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());
#endif
}
void hold(const unsigned int &ms) {
// Non blocking delay
unsigned long m = millis();
while (millis() - m < ms) {
yield();
}
}
void setup() {
#ifdef DEBUG_ESP_PORT
// Init serial port and clean garbage
Serial.begin(SERIAL_BAUDRATE);
Serial.println();
Serial.println();
#endif
// LEDs
pinMode(RELE, OUTPUT);
pinMode(BUTTON, INPUT_PULLUP);
digitalWrite(RELE, HIGH);
#ifdef DEBUG_ESP_PORT
pinMode(LED_BUILTIN, OUTPUT);
#endif
// Wifi
wifiSetup();
fauxmo.createServer(true);
fauxmo.setPort(80); // This is required for gen3 devices
fauxmo.enable(true);
fauxmo.addDevice(ID_RELE);
fauxmo.onSetState([](unsigned char device_id, const char * device_name, bool state, unsigned char value) {
#ifdef DEBUG_ESP_PORT
Serial.printf("[MAIN] Device #%d (%s) state: %s value: %d\n", device_id, device_name, state ? "ON" : "OFF", value);
#endif
if (strcmp(device_name, ID_RELE)==0) {
digitalWrite(RELE, !state ? HIGH : LOW);
estado = !state;
}
});
digitalWrite(RELE, HIGH);
estado = true;
}
void loop() {
fauxmo.handle();
buttonState = digitalRead(BUTTON);
if (buttonState == LOW) {
estado = !estado;
digitalWrite(RELE, estado ? HIGH : LOW);
#ifdef DEBUG_ESP_PORT
digitalWrite(LED_BUILTIN, estado ? HIGH : LOW);
#endif
hold(700);
}
static unsigned long last = millis();
if (millis() - last > 10000) {
#ifdef DEBUG_ESP_PORT
Serial.printf("[MAIN] Free heap: %d bytes\n", ESP.getFreeHeap());
#endif
last = millis();
}
}
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
Lembrete pessoal: para utilizar este circuito com o Tasmota, utilizar a configuração na opção módulo:
ou com a opção personalizada em "Other":
{"NAME":"ESP01v4","GPIO":[32,0,256,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}Seguem abaixo as últimas configurações para funcionamento de registro e chamado do Echo Dot v2 e Alexa para o Esp-01s.
Arduino IDE 1.8.19, Board Esp8266 3.0.2, Library FauxmoESP 3.4.0
Adaptador simples e esquema para facilitar o manuseamento do Esp01 em protoboards. Meus programadores do Esp01 já tem o botão de Reset e o switch de modo de programação embutidos, mas constam no diagrama, até para facilitar referências. Recomendo alterar a largura para 4 pinos, para liberar mais espaço na Protoboard.
Passo a passo para instalação do MQTT Broker Mosquitto no Raspberry Pi Zero W com Raspberry Pi OS Lite (32 bits).
É necessário também um cartão Micro SD de 4 GB ou mais.
Inserir o cartão em um adaptador e conectá-lo à entrada USB do PC.
Baixar o Imager do RPi no endereço https://www.raspberrypi.org/software/, instalar e executar. No Operating System, escolher Raspberry Pi OS (other) e Raspberry Pi OS Lite (32-bit). Em Storage, selecionar o Cartão SD e executar com WRITE. Confirmar a operação e aguardar a gravação do SO.
Tirar e colocar o adaptador na porta USB, para que o Windows o reconheça.
Abra o bloco de notas e digite o código abaixo, substituindo os dados em network pelo SSID e senha do seu Wi-Fi:
Instalar o tmux - para multiplexar os consoles:
sudo apt-get install tmux
e o Mosquitto:
sudo apt-get install mosquittoy
e os Moquito clients:
sudo apt-get install mosquitto-clients
Inciar o tmux: tmux
Criar uma sessão tmux: Ctrl-B C
Trocar para a outra sessão tmux: Ctrl-B L
Inicia o servidor Mosquitto: mosquitto -d