Translate

sexta-feira, 9 de dezembro de 2022

ESP01S Relay V4 utilizando o Tasmota e Echo / Alexa

 Montando um interruptor compatível com Alexa.

Utilizado o módulo Relé para ESP01 v4.0 do AliExpress

em conjunto com ESP01S

Necessário um programador para o ESP01/S

Para flash do Tasmota:
Sugiro jumpear o ESP01 e colocar um botão momentâneo e uma chave no programador:



O Jumpeamento no ESP01 permite que ele fique em modo de funcionamento. Pode deixar o jumper permanente que não há problema algum. No programador, o botão é de reset, ficando entre o GND e o RST e o switch força o modo de programação, ficando entre o GND e o GPIO0. Caso esteja desligado, esse switch deixa em modo de execução. Pode ser visto melhor nesta outra foto:

Note que já deixo pronto todos os meus ESP01/S e programadores. Alguns ESP01/S conseguem ser programados sem o switch, utilizando o modo Tasmotizer. Como não é nosso foco, deixo somente dicas e citações - https://github.com/tasmota/tasmotizer

Para instalação online do tasmota:
https://tasmota.github.io/install/

Caso esteja tudo em ordem - tudo ligado, porta serial identificada, modo de programação - basta selecionar 




 e [Connect].

Escolha a serial do programador


 e [Conectar]

Para não encher muito de figuras, citarei somente o que deve ser escolhido
  • clicar em INSTALL TASMOTA BR
  • marcar ERASE e clicar em NEXT
  • clicar em INSTALL
O processo vai demorar um pouco, mas aparecerá um arco de progresso da instalação.

Ao final clicar em NEXT e fechar no X

Deixe o programador em modo de execução e resete-o.

Novamente escolha a serial do programador:

e [Conectar].

Clique em CONNECT TO WI-FI

Em seguida escolha a sua rede Wi-fi na caixa Network, digite a senha do Wi-fi e [Connect]

Clique agora em VISIT DEVICE.

Vai ser aberta uma nova aba no navegador com a configuração do dispositivo.

Clique em CONFIGURAÇÃO, CONFIGURAR OUTRA OPÇÕES

Copie e cole em MODELO:

{"NAME":"ESP01v4","GPIO":[256,320,0,32,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}

Altere o NOME AMIGÁVEL para um nome que queira utilizar no Alexa.

Marque o Belkin Wemo em EMULAÇÃO e clique em SALVAR.

Confira se em CONFIGURAÇÃO, CONFIGURAR MÓDULO, está selecionado ESP01V4(0) em TIPO DE MÓDULO. Mude, se não estiver e dê SALVAR.

Bastará encaixar o ESP01 de volta ao módulo relé, fazer as ligações elétricas/eletrônicas e pedir para a Alexa pesquisar dispositivos. 

Caso queira colocar um botão físico para des/ligar, coloque um botão momentâneo entre GND e RX.



Referências:
https://templates.blakadder.com/ESP-01S-Relay-v4.html

quinta-feira, 17 de fevereiro de 2022

Destacar / formatar código fonte no Blogger

1. Clicar em Tema na Coluna esquerda e na seta do botão PERSONALIZAR:




2. Escolher a opção Editar HTML:


3. Procurar pela Tag </head> e inserir a linha abaixo DEPOIS da tag encontrada:

<link href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.4.0/styles/default.min.css" rel="stylesheet">


4. Procurar pela Tag </body> e inserir as linhas abaixo ANTES da tag encontrada:

<script src='//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.4.0/highlight.min.js'/>>
<script>hljs.highlightAll();</script>


5. Utilizar as tags abaixo ao redor do código fonte para realce:

<pre><code class="language-c++">
..........................
</code></pre>

quarta-feira, 16 de fevereiro de 2022

ESP-01 acionando módulo relé com Echo Dot - Alexa


Utilizando neste projeto: Arduino IDE 1.8.19, Board Esp8266 3.0.2, Library FauxmoESP 3.4.0

O LED é obrigatório nesse caso, devido ao módulo rele low level trigger. Outros módulo, tipo high level, podem exigir a remoção deste.

Foi utilizado o Pull-up interno do esp8266. Caso utilize o físico, recomenda-se um resistor de 3k3 entre vcc e gpio00.

Testei com inversão das GPIO 00 e 02 e tudo certo. Não há efeito colateral na inversão.

Em síntese, o rele inicia-se em estado off, podendo ser utilizada a Alexa, após "PESQUISAR DISPOSITIVOS" executado com sucesso, e o switch, para ligar e desligar o aparelho ligado ao rele.

O adaptador que usei na protoboard está semelhante à do post link, mas sem o botão e o switch.

ATENÇÃO: alimentar o circuito com 3.3v (até o rele de 5v funcionou perfeitamente). 

Obs.: Alexa falhou no video na primeira vez. Shit happens.... 









credentials.h

#define WIFI_SSID "YOUR_SSID"
#define WIFI_PASS "YOUR_PASSWORD"





program.ino code

#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();
    }
}
  

Configuração Arduino IDE para Esp-01S respondendo ao Echo Dot/Alexa

 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



segunda-feira, 14 de fevereiro de 2022

Adaptador Ep01 para Protoboard

 


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.







terça-feira, 1 de junho de 2021

Mosquitto MQTT instalado no Raspberry Pi Zero W


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:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=BR
network={
    ssid="Wi-Fi_SSID"
    psk="Wi-Fi_senha"
}

Grave o arquivo como wpa_supplicant.conf no disco com nome boot (no cartão SD) e dê o comando "copy nul ssh" (isso deve criar um arquivo vazio com o nome de ssh)


Ejete o cartão SD no Windows e passe o cartão para o RPi.

É necessário descobrir o endereço IP do RPi. Você pode utilizar o Advanced IP Scanner disponível em https://www.advanced-ip-scanner.com/. O Mac Address dosRPis sempre se inicia por B8:27:EB, caso procure no seu roteador WiFi. No advanced IP Scanner é mais fácil de localizar:


No programa Putty, podemos acessar remotamente pelo SSH, o RPi:


O terminal pedirá usuário / senha que deverão ser pi / raspberry



Em seguida, dar os comandos:

sudo apt-get update
sudo apt-get upgrade

(Tive problemas no comando upgrade - mais especificamente no download do raspberrypi-kernel, que congelava perto dos 50% - rodei um sudo rpi-update e corrigiu)

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

Trocar para a outra sessão e mandar um teste para o servidor: 
    mosquitto_pub -d -t relaycontrol -m "Turn on"
Na outra sessão deverá aparecer a mensagem Turn on

Iniciar automaticamente o Mosquitto:

sudo systemctl stop mosquitto
sudo update-rc.d mosquitto remove
sudo rm /etc/init.d/mosquitto
sudo nano /etc/systemd/system/mosquitto.service

quarta-feira, 24 de março de 2021

Teste de link com 2 gateways


Aparelho simples que "ping"a no mesmo endereço, utilizando gateways diferentes e informando Timeout, latência ou latência muito alta. Isso feito no esp8266 mais simples, o esp-01. Útil e simples, mesmo que não utilize a reversão de gateway. O ping é dado 1 vez por segundo, alternando o gateway. No meu caso, o V e o A são iniciais dos provedores.