Aula #3 – Depuração de Erros do ESP8266

Ferramenta de Decodificação de Stack Trace:

https://github.com/me-no-dev/EspExceptionDecoder

Código de simulação de erro:

void setup()
{
  Serial.begin(115200);
  Serial.println();
  Serial.println("Let's provoke the s/w wdt firing...");
  //
  // provoke an OOM, will be recorded as the last occured one
  char* out_of_memory_failure = (char*)malloc(1000000);
  //
  // wait for s/w wdt in infinite loop below
  while(true);
  //
  Serial.println("This line will not ever print out");
}

void loop(){}

Referência:

https://arduino-esp8266.readthedocs.io/en/latest/faq/a02-my-esp-crashes.html

Aula #2 – Portas de Entrada/Saída do ESP8266

Nesta aula aprenderemos tudo sobre portas de entrada/saída do ESP8266, também conhecidas pela sigla GPIO.

Links da Aula:

Tópicos da Aula:

  • O que é a IDE?
  • Instalando IDE do Arduino
  • Configuração da IDE do Arduino
  • Estrutura de Arquivos da IDE do Arduino
  • E/S Digital do ESP8266
  • Restrições de Corrente e Tensão
  • Restrições de Uso dos Pinos
  • Modos de bootloader
  • PWM
  • Entrada Analógica
  • Porta Serial
  • I2C
  • SPI
  • Tabela de GPIO

Carro Robô Espião

Neste projeto desenvolveremos um carro robótico com uma câmera para exergarmos o que o robô está vendo! O vídeo da câmera será transmitido para o celular!

Impressora 3D – Prusa Mendel

Neste projeto veremos como criar uma impressora 3D Prusa Mendel IT2.

Lista de links do projeto

Imagens dos equipamentos do projeto

Rolamento 608
Rolamentos lineares LM8UU
Motor de Passo NEMA17 4,5Kg
Arduino Mega 2560 + Ramps 1.6 +5 Drive Drv8825 + Display 1.4
Eixos retificados de 8mm
Kit de correia dentada GT2 5mm com 3 polias

Carro Seguidor de Linha – Arduino

Nesta aula aprenderemos a fazer um carro robótico seguidor de linha com Arduino!

Links da Aula

Tutorial do Carro Seguidor de Linha

https://www.robocore.net/tutoriais/robo-seguidor-de-linha.html

Manual da Placa Motor Shield

https://cdn-learn.adafruit.com/downloads/pdf/adafruit-motor-shield.pdf

Biblioteca Motor Shield

https://github.com/adafruit/Adafruit-Motor-Shield-library/

Calculadora de Resistores para Divisor de Tensão

https://www.arduinoecia.com.br/p/calculador-divisor-de-tensao-function.html?m=1

Módulo Conversor RS485 – MODBUS

Conversor RS485 é um Módulo Avulso que pode ser ligado em um FTDi, um
Arduino UNO, NANO etc.

Na verdade o Conversor RS485 é igual ao Módulo Integrado RS485 do Arduino Supervisório, com algumas pequenas diferenças. A primeira é dele ser avulso. A segunda é que seu conector tem uma pinagem diferente do RS485 integrado.

Mas possui todos os jumpers de configuração e a mesma funcionalidade do módulo integrado. Foi pensado dessa forma para ser um acessório de bancada, onde você pode ligar seu Arduino UNO nesse Conversor
RS485 e ligar os fios no Arduino Supervisório MODBUS, para testar a comunicação MODBUS.

No manual veremos também código de exemplo para você poder efetuar os testes de funcionamento do seu equipamento

RS485 – Comunicando Arduinos a Distância

Material adicional da aula sobre RS485, clique nos links do menu ao lado.

Nesta aula veremos como utilizar o padrão de comunicação RS485 para comunicação entre Arduinos até 1,2Km de distância, podendo ligar até 32 endereços de dispositivos na Rede.

Configurando a Memória Flash do ESP8266 no Arduino IDE

Hoje vamos aprender como configurar corretamente o tamanho da memória Flash do ESP8266.

Bati muita cabeça aqui tentando fazer uma atualização do firmware do ESP8266 por WiFi, conhecida por OTA (Over The Air), que eu ensino nesse outro post aqui.

Mas sofri muito antes de conseguir efetuar a Atualização OTA por uma configuração errada no tamanho da memória Flash do meu módulo ESP8266.

Uma regra básica para a Atualização OTA funcionar é que o código sendo atualizado não pode ser maior que a metade do tamanho da memória Flash. Isso acontece pois é uma auto-atualização, de forma que o arquivo BIN é gravado no espaço vazio da memória Flash para depois então substituir o código atual sendo executado. Por isso precisa existir um espaço igual ou maior que o código sendo atualizado.

Meu módulo ESP8266 ESP01 estava configurado errado como tendo memória Flash de 512KB, mas o arquivo do código compilado e resultante BIN estava com mais que 256KB, portanto a Atualização OTA não estava sendo possível.

Descobri então que existe um Exemplo pronto que verifica isso pra gente. Basta seguir os passos a seguir.

Passo 1 – Abrir o Exemplo chamado CheckFlashConfig.ino, conforme imagem abaixo.

(clique na imagem para ampliar)

Passo 2 – Verifique que o código faz uso de funções nativas do ESP8266 para o tamanho da memória Flash configurada no Arduino IDE e o tamanho real do chip.

uint32_t realSize = ESP.getFlashChipRealSize();
uint32_t ideSize = ESP.getFlashChipSize();
FlashMode_t ideMode = ESP.getFlashChipMode();

Depois, através de um “if” na programação compara o valor real do configurado e avisa se está certo ou errado!

if (ideSize != realSize) {
  Serial.println("Flash Chip configuration wrong!\n");
} else {
  Serial.println("Flash Chip configuration ok.\n");
}

Passo 3 – Se estiver certo, vai aparecer a mensagem da imagem abaixo no Monitor da Serial ao executar o código. Repare que os tamanhos da memória real e configurada no IDE são iguais.

Passo 4 – Mas se aparecer a mensagem de erro “Flash Chip configuration wrong”, então vamos precisar configurar o tamanho correto no menu “Ferramentas” conforme mostra a imagem abaixo.

(clique na imagem para ampliar)

Mais Informações

No próximo artigo vou ensinar o que é o parâmetro SPIFFS da configuração da memória Flash.