Programação em blocos com ESP32

Recém escrevi um artigo para a UsinaInfo, já me deparei com mais uma possibilidade de programação em blocos para ESP32. E comecei a pesquisar a respeito porque minha filha já tem 7 anos, ou seja, hora de aprender a programar. Mas como ensinar programação para uma criança, de modo que ela possa se interessar? Vou começar a série por esse artigo, onde mostrarei como fazer programação em blocos com ESP32.

Programação em blocos com ESP32 (online)

Sobre esse recurso, vou deixar que leiam o artigo que escrevi para o blog da UsinaInfo, mas vou deixar o link do TunIOT.

Programação em blocos é fantástico, pois a pessoa sequer precisa saber programar para produzir um programa funcional, basta ter lógica. A primeira vez que vi programação em blocos foi no Android Studio. Posteriormente vi alguma coisa mais, como a interface do EV3 do Lego MindStorms. Bem, agora temos algumas opções para microcontroladores populares e estou começando essa série com ESP32 porque é minha plataforma preferida, e a utilizarei para ensinar minha filha a programar.

Programação em blocos com ESP32 (standalone)

Essa é matadora! Achei uma IDE fantástica para programar para ESP32, que é a KBIDE (parece cabide, não consigo ler de outra forma). Ela possui versões para diversas arquiteturas. Aqui uso somente Linux, portanto baixei a versão portable. O visual dela é essa da imagem de destaque.

Explicação para iniciantes

Se você não é programador e deseja iniciar no mundo do IoT, esse parágrafo é seu ponto de partida. Se já é programador, pode pular para o próximo tópico.

O Arduino é a mais popular plataforma do mercado. Tem biblioteca para praticamente todos os sensores e atuadores e a programação de alto nível (em C++) permite atingir o objetivo de forma simplificada. O sucesso tem sido tanto que diversas outras plataformas e arquiteturas foram sendo adicionadas ao modelo de programação oferecida pela IDE do Arduino. Essa camada de abstração é chamada de API (Aplicattion Programming Interface). Mas de qualquer modo, é necessário um mínimo de conhecimento em programação e a absorção de uma série de conceitos até para a tarefa mais simples, que é piscar um LED.

A estrutura básica de programação no modelo da API do Arduino é composta por 2 funções principais; setuploop. As configurações de ambiente que precisam ser ajustadas antes do código principal ser executado são configuradas em setup. O código que se executa infinitamente, instrução após instrução, fica dentro da função loop. Quando a última instrução do código contido dentro da função loop é executada, então retorna-se para a primeira linha dessa função loop, e assim sucessivamente.

O único conceito fundamental para iniciar nossa programação em blocos é justamente saber essa diferença.

Ao abrir a IDE KBIDE, já teremos duas peças relacionadas a essas funções; a setup e a loop.

Apresentação do KB IDE

Essa IDE possui 3 menus importantes, os quais descrevo nos tópicos a seguir.

Menu lateral

Do lado esquerdo, temos os menus principais para a programação. Esse menu se modifica conforme os plugins instalados e a placa escolhida. Do básico, temos os GPIO, temporizadores, variáveis, funções matemáticas, lógica, loops e o menu Advanced, que também depende da placa em questão. Sendo escolhida a ESP32, estará disponível WiFi, bluetooth, Task, MQTT etc. Mais plugins podem ser instalados através desse menu.

Menu superior esquerdo

Nesse menu encontram-se recursos fundamentais. No primeiro ícone escolhe-se o modo de programação, que pode ser em blocos ou código C/C++.

No segundo ícone, escolhe-se a placa a ser programada. Diversas placas são suportadas, no vídeo apresentarei com detalhes.

O terceiro ícone é o gerenciador de plugins, onde pode-se instalar diversos recursos não contemplados na interface padrão. Eu instalei alguns que me interessavam; dentre eles, o display OLED.

Os próximos dois são “exemplos e tutoriais” e configuração da interface. Na interface tem alguns temas, mas muda apenas as cores dos quadros superior e esquerdo; os temas não surtiram efeito algum. A cor eu mudei para um azul, mas não tem muita possibilidade de escolha também.

Menu superior direito

No menu superior direito temos as funções básicas, como Novo, Abrir, Salvar, Monitor Serial. Com uma sutil separação, temos Compilar, Gravar firmwareconfiguração da serial.

O formato do arquivo não é código em texto plano como a IDE do Arduino. Isso significa que o programa salvo só poderá ser reaberto no KB IDE.

Primeiro programa com KB IDE

Para o nosso primeiro programa, vamos fazer algo bem, bem simples. Vamos habilitar a comunicação serial para podermos nos comunicar com o ESP32. Além disso, vamos fazer um blink com o LED onboard. Apenas isso.

A lógica para esse programa:

  • Configurar a serial
  • Configurar o pino do LED onboard (GPIO 25)
  • Iniciar o pino do LED onboard desligado
  • Exibir mensagem de LED ON/OFF
  • Acender ou apagar o LED
  • Aguardar 1 segundo antes de inverter o estado e exibir a mensagem novamente

Para atingir esse objetivo, siga os passos descritos a seguir (se desejar, dê uma olhada na imagem um pouco mais abaixo para entender melhor a explicação):

  • Entre no menu Serial e clique em Initial USB Serial baud rate (115200). Encaixe-o em setup, para fazer a configuração da porta serial.
  • Entre no menu GPIO e clique em “set pin …” para configurar o pino do LED onboard. Troque o valor para 25 e coloque como OUTPUT, para saída. Encaixe-o abaixo do bloco serial.
  • Configure o pino com estado inicial desligado. Para isso, coloque o estado do pino em 0. Entre no menu GPIO e pegue o bloco digital write pin. Configure o pino 25 para o valor 0. Encaixe-o abaixo do bloco anterior (tudo em setup, hum?).
  • Exiba a primeira mensagem na serial. No menu Serial pegue o bloco “Serial write … port … with new line”, coloque a mensagem “serial inicializada”. Encaixe-a abaixo do bloco anterior.
  • Crie uma variável em Variables. Chamei de pin_state. Depois, encaixe a variável abaixo do bloco anterior. Vá ao menu Math e pegue o menor bloco, com valor 0 e encaixe-o à direita do bloco da variável.

Agora vamos alimentar o bloco de repetição. Comecemos por uma condicional: Se a variável pin_state estiver com o valor 0,  mudamos o estado do pino 25 para 1 e exibimos a mensagem de que o LED está LIGADO. Então, colocamos o valor do pin_state em 1. Se o valor do pin_state for 1, mudamos para 0, mostramos na serial que o LED está DESLIGADO e mudamos o valor da variável pin_state para 0. Pra finalizar, fazemos uma pausa de 1 segundo.

Fazendo desse modo, a cada ciclo desse conjunto de instruções o LED alternará seu estado. Para fazer essa condicional, basta usar os respectivos menus. Primeiramente, vá ao menu Logic para pegar o bloco de lógica if/do. Ele tem uma pequena engrenagem no canto superior esquerdo. Após tê-lo adicionado à área de desenvolvimento, clique na engrenagem e arraste a opção else para o campo da direita. Falta o atraso de 1 segundo antes do próximo ciclo. Para isso, entre no menu Time e pegue o bloco Delay … millisecond. Deixe o padrão.

A cara final do programa é essa:

Programação em blocos

Agora o mais impressionante é a facilidade de adicionar recursos como MQTT, Task e imagens ao display OLED. Essas são tarefas que em muitos casos são difíceis até para quem programa um pouco, requer uma certa intimidade com programação e de fato, para quem usa apenas como hobby, acaba tendo algumas limitações. Porém, com essa IDE você terá muito mais resultado com pouco esforço e de quebra pode converter os blocos para código, e assim aprender mais! Para finalizar, preciso avisar que uma vez convertido para código, não há como reverter.

Onde comprar o TTGO ESP32 LoRa

Agora você pode comprar uma boa placa sem medo, já que estará hábil a acessar seus recursos através da programação em blocos, incluindo cartão SD. Minha recomendação para esse artigo é a placa TTGO ESP32 LoRa da UsinaInfo, disponível nesse link. Se precisar de mais informações sobre essa placa, também escrevi um artigo exclusivo sobre ela, nesse link.

Próximo artigo relacionado

Devo escrever mais dois ou três artigos com outras IDEs, focando mais em crianças. Espero que acompanhe e compartilhe nas redes sociais.

Vídeo

Em breve devo fazer um vídeo a respeito, inscreva-se em nosso canal DobitaobyteBrasil no Youtube e clique no sininho para receber notificações.

Até a próxima!

 

Revisão: Ricardo Amaral de Andrade

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

3 comentários em “Programação em blocos com ESP32

Fechado para comentários.