[Post in Portuguese] Franzininho Wifi e BIPES

Este post é baseado na documentação do Franzininho WiFi (https://github.com/Franzininho/Franzininho-WIFI) preparado pelo Fábio Souza e Diana Santos:

https://docs.franzininho.com.br/docs/franzininho-wifi/franzininho-wifi

Nossa intenção é revisitar os exemplos e instruções apresentados pelo Fábio e Diana através do BIPES (https://bipes.net.br/). Para seguir, a placa já deve possuir o CircuitPython instalado, conforme explicado pelo Fábio e Diana na documentação do Franzininho WiFi citada acima. Considerando o CircuitPython já instalado na placa, nenhum software ou configuração adicional precisam ser feitos. Basta acessar o BIPES e programar / controlar sua Franzininho WiFi. Recomenda-se o uso do Google Chrome.

Hello World – Piscando um LED

Baseado em : https://docs.franzininho.com.br/docs/franzininho-wifi/exemplos-circuitpython/hello-world por Fábio Souza e Diana Santos.

O objetivo deste primeiro programa é testar as conexões, enviar comandos para a Franzininho WiFi e controlar um pino de saída (GPIO) para piscar um LED externo.

franzininho-wifi-hello-world

Para piscar o LED pelo BIPES, acesse o BIPES (https://bipes.net.br/ide/) e escolha a placa:

Em seguida, tente conectar na placa, usando o botão conectar:

Após clicar no símbolo da porta USB, selecione Serial:

Uma lista de dispositivos será mostrada. Selecione sua Franzininho WiFi:

Clique na guia Console do BIPES e tente enviar alguns comandos Python para a placa através deste Console / Terminal Serial no navegador web:

Com placa conectada, crie o seguinte programa:

Utilize blocos das opções: Laços, Lógica, Temporização e Máquina -> In/Out Pins

Você também pode acessar o programa acima diretamente ao clicar no link abaixo:

https://bipes.net.br/beta2/ui/?lang=pt-br#an9f6p

Tente executar e interromper o programa utilizando o botão Play e Stop ou as teclas de atalho Ctrl+Shift+R para executar e Ctrl+Shift+S para parar o programa:

Você também pode sofisticar o programa um pouco mais:

Link para acesso direto ao programa: https://bipes.net.br/beta2/ui/?lang=pt-br#pcjebw

Resultado:

Serial Console

Baseado em: https://docs.franzininho.com.br/docs/franzininho-wifi/exemplos-circuitpython/serial-console por Ewerton Leandro de Sousa.

Objetivo: controlar o LED RGB Nexopixel no GPIO18 através do Console.

franzininho-wifi-serial-console

A placa Franzininho WiFi possui um LED RGB Nexopixel no GPIO18. Podemos começar testando este LED com uma aplicação de exemplo: um semáforo:

Link pra acesso direto ao programa: https://bipes.net.br/beta2/ui/?lang=pt-br#3ueqpe

Resultado:

Mas também podemos perguntar ao usuário os valores desejados para o controle do LED, através do Console:

Resultado no Console:

Link pra acesso direto ao programa: https://bipes.net.br/beta2/ui/?lang=pt-br#5dwn6r

Entradas e Saídas Digitais

Baseado em: https://docs.franzininho.com.br/docs/franzininho-wifi/exemplos-circuitpython/entradas-saidas-digitais por Fábio Souza.

Objetivo: ler uma entrada digital e controlar uma saída digital a partir do estado da entrada digital.

Circuito Entrada e Saida digital

Programa:

Link para acesso direto ao programa: https://bipes.net.br/beta2/ui/?lang=pt-br#e9y9bu

Entrada Analógica

Baseado em: https://docs.franzininho.com.br/docs/franzininho-wifi/exemplos-circuitpython/entradas-analogicas por Fábio Souza e Diana Santos.

Objetivo: Ler uma entrada analógica da ESP32S2, plotar a leitura de forma gráfica e acionar o LED se a entrada for maior que 2.5 Volts.

Circuito

Vamos começar lendo valores da entrada analógica:

Link direto para o programa: https://bipes.net.br/beta2/ui/?lang=pt-br#8j3cur

Resultado:

Agora vamos converter a leitura digital para Volts:

Link direto para o programa: https://bipes.net.br/beta2/ui/?lang=pt-br#bt4tfw

O BIPES também permite plotar dados através de um dashboard IoT. Para isso, utilize o bloco “Show on IoT tab” e a aba IoT. Você pode usar este bloco várias vezes e plotar vários valores simultaneamente:

Link direto para o programa: https://bipes.net.br/beta2/ui/?lang=pt-br#ht655f

Na aba IOT, adicione um datasource:

Depois adicione panels e widgets conforme você preferir. Por exemplo:

Resultado:

Note que esta transferência de dados ocorreu via USB.

Link direto para o programa, com o dashboard incluído: https://bipes.net.br/beta2/ui/?lang=pt-br#9qwdh7

Mesmo sem a placa estar conectada na Internet, o BIPES oferece um recurso chamado EasyMQTT Bridge, que publica os dados da placa no servidor MQTT do BIPES. Para tanto, defina uma sessão (clicando na engrenagem) e ative o botão “EasyMQTT Bridge”:

Ao clicar no botão “View this EasyMQTT Session”, você terá acesso ao link:

http://bipes.net.br/easymqtt/?session=5001

Com o envio de dados ativado:

Você verá os dados no link mencionado:

O link http://bipes.net.br/easymqtt/?session=5001 pode ser compartilhado com qualquer pessoa, que terá acesso aos dados, a partir de qualquer lugar. O EasyMQTT também oferece uma API para integração com outros sistemas. Para detalhes, verifique a documentação do EasyMQTT aqui: https://bipes.net.br/wp/publications/

Gerenciador de arquivos

Você pode usar o BIPES para gerenciar arquivos na placa Franzininho WiFi. Além disso, o BIPES também oferece um editor em sua própria IDE no navegador Web. Basta utilizar a guia Arquivos. A partir dela é possível enviar arquivos para a placa, baixar arquivos da placa, apagar arquivos, editar arquivos pelo editor de textos e executar programas Python gravados em arquivos na placa. Todas estas operações ocorrem via USB.

Nota: Como os arquivos da placa estão em um sistema de arquivos compartilhado com dispositivo de armazenamento em massa USB, é preciso ejetar o dispositivo de armazenamento USB do seu PC para que o BIPES consiga gravar arquivos na placa.

Utilize o botão refreh para atualizar os arquivos:

Conectando na Internet

Você pode usar blocos do BIPES para listar redes WiFi disponíveis a partir dos blocos disponíveis em “Rede e Internet”:

E também conectar na Internet:

O resultado pode ser visto no Console:

Cliente HTTP Web

Uma vez conectado na Internet, você pode fazer requisições HTTP, acessando sites ou serviços web (webservices). Por exemplo:

Resultado:


Note que o texto exibido foi obtido da URL: http://bipes.net.br/test.txt

Servidor HTTP Web

O BIPES também oferece a opção de iniciar um servidor web (HTTP) no Franzininho WiFi:

Link direto para o programa: https://bipes.net.br/beta2/ui/?lang=pt-br#qckmaf

Verifique o IP obtido no Console e acesse por um navegador web:

Resultado, ao acessar pelo navegador web:

Também podemos criar links e ações em nosso servidor web:

Link direto para o programa: https://bipes.net.br/beta2/ui/?lang=pt-br#zu2sq2

E é possível acompanhar as requisições pelo Console:

EasyMQTT e dashboard IoT

Utilizando os blocos de requisições web (HTTP GET), podemos publicar dados de sensores para o servidor MQTT do BIPES e criar dashboards que podem ser compartilhados facilmente para acesso a partir de outros dispositivos, inclusive com tecnologia responsiva, para visualização em celulares.

Para tanto, usaremos a URL de publicação de dados no servidor EasyMQTT. Exemplo:

http://bipes.net.br/easymqtt/publish.php?session=5001&topic=Topic1&value=1

Como já mencionado, os dados publicados podem ser vistos em:

http://bipes.net.br/easymqtt/?session=5001

Agora podemos criar um programa que publica dados nestes servidor:

Link direto para o programa: https://bipes.net.br/beta2/ui/?lang=pt-br#wvkbim

Agora podemos configurar um datasource para este tópico do EasyMQTT:

Crie um componente widget -> Gauge:

Resultado:

Você pode acessar o programa completo já com o dashboard IoT por este link:

https://bipes.net.br/beta2/ui/?lang=pt-br#mwhsz9

Na aba IoT, também temos a opção “Share board”:

Este recurso permite compartilhar apenas o painel (dashboard) de visualização de dados, em tempo real, com qualquer usuário, mas sem o programa:

Um link deste tipo será gerado:

http://bipes.net.br/freeboard#fqngjd

Este QR-Code pode ser lido em um smartphone, possibilitando visualizar o dashboard:

Bugs

Algumas implementações ainda são beta e podem oferecer bugs. Por exemplo, o servidor web e cliente web podem dar erro de “Out of Sockets”. Este bug está relacionado com o código do CircuitPython. Estamos trabalhando para reduzir estes bugs.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s