Skip to content

douglaszuqueto/esp32-http-firmware

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ESP32 HTTP Firmware - V1.2.0 (em desenvolvimento)

Firmware para ESP32 com suporte a integração com WebService e configuração via WiFiManager

Versões

Posts relacionados

Se você chegou até aqui e esta boiando sobre o que originou este projeto, recomendo ver os posts que fiz no Grupo Arduino Brasil no Facebook!

Bibliotecas

Arquitetura/Organização

Firmware dividido em arquivos. Cada arquivo com sua responsabilidade. Tudo isso visando melhor organização e facilidade em manter o código a longo prazo.

img

Diagrama de fluxo

img

Funcionalidades

  • Configuração WiFi/Device via WifiManager
  • Storage(Preferences)
  • Ticker
  • Cache(carregado no setup) - token, device_id, device_token, client_id
  • Integração com webservice
  • Autenticação e Autorização
  • Renovação de token apenas quando expirado
  • Suporte a debug
  • Suporte a deepsleep
  • Visualização através do webapp embarcado
  • Multi-tarefas

Código principal

void setup() {
  pinMode(LED, OUTPUT);
  ticker.attach(0.3, tick);

  initSerial();
  openStorage();

  setupWifiManager();
  setupWiFi();

  makeCache();
  showConfig();

  //
  API_AUTH = API_URL + "/auth";
  API_SEND_DATA = API_URL + "/device/" + device_id;
  //

  requestAccess();

  ticker.detach();
  digitalWrite(LED, LOW);

#if ESP_DASH
  initEspDash();
#endif

#if DEEP_SLEEP
  sendData();
  closeStorage();
  DEBUG_PRINTLNC(F("[ESP] Sleeping..."));
  ESP.deepSleep(sleep_time);
#endif

  delay(1000);
  initTasks();
}

void loop() {
}

Tasks

X tarefas são criadas. Elas serão distribuidas e gerenciadas através do RTOS de forma automática.

img

WifiManager

Página de configuração via wifi manager

img

ESP-DASH

Como brincadeira adicional acabei conhecendo o projeto ESP-DASH em um grupo, dei uma olhada e gostei bastante das funcionalidades e da arquitetura que foi aplicada no projeto.

Ainda não tem nenhuma integração real, mas o mesmo possui uma tarefa no qual os dados são atualizados de X em X tempo. Também possui um botão no qual possui integração com o led.

É um projeto muito bacana, pois foi embarcado um WebAPP desenvolvido em VueJS e o build('compilação') desse webapp é embarcado dentro do esp através do SPIFFS - uma técnica deveras interessante que pode agregar muito nos projetos!

Outro fato legal que eu gostei bastante, é que toda comunicação ocorre em 'tempo real' através do uso de websockets. Então além do ESP32 atuar como webserver servindo o webapp também cria um servidor de websockets, interessante não é?!

  • Dashboard

img

  • Stats

img

Monitor serial

Um pouco do fluxo que ocorre após o salvamento das configurações no wifi manager.

No monitor serial houve uma melhoria que agora possibilita ver em qual core as tasks estão rodando em tempo de execução.

img

Referências