Construa um Termômetro IoT com Python: Guia Completo
Componentes e materiais
| MikroE Flip & Click | × | 1 | |
![]() |
Arduino Due | × | 1 |
![]() |
Particle Photon | × | 1 |
![]() |
NodeMCU ESP8266 Breakout Board | × | 1 |
![]() |
SparkFun Photon RedBoard | × | 1 |
| MikroE Temp&Hum Click | × | 1 | |
| MikroE WiFi Plus Click | × | 1 | |
![]() |
Espressif Wemos D1 Mini | × | 1 |
![]() |
Arduino Zero | × | 1 |
Aplicativos e serviços online
![]() |
Zerynth Studio |
Sobre este projeto

O App Zerynth
O Zerynth App é um aplicativo móvel para Android e iOS que permite prototipagem rápida de interfaces gráficas para seus projetos IoT.
Com o Zerynth App, você pode transformar qualquer celular no controlador e display para objetos inteligentes e sistemas IoT! Em particular, você pode gerenciar e controlar dispositivos conectados programados com Zerynth, habilitando um canal de comunicação bidirecional entre eles e seu celular.
Neste tutorial, veremos como desenvolver um termômetro IoT simples mas poderoso, usando um microcontrolador de placa única alimentado por Zerynth e o Zerynth App como display remoto.
Materiais necessários
Primeiro, você precisa de uma placa. Pode selecionar um dos dispositivos de microcontrolador de 32 bits suportados pelo Zerynth. Escolhemos o Flip&Click da Mikroelektronika, que compartilha muitos atributos das populares plataformas Arduino, incluindo o AT91SAM3X8E de 32 bits da Microchip, o núcleo do Arduino Due.
Para medir a temperatura, escolhemos o Temp&Hum Click, que carrega um sensor de temperatura e umidade relativa HTS221.
Para conectar a placa à internet, escolhemos o WiFi PLUS Click, que possui o módulo MRF24WB0MA – 2.4GHz, compatível com IEEE std. 802.11 – da Microchip, bem como controlador companheiro MCW1001 com stack TCP/IP onboard e gerenciador de conexão 802.11.
Por fim, você precisa:
- Zerynth Studio, nossa poderosa IDE para programação embarcada em Python que habilita o IoT. Baixe aqui.
- Zerynth App. Baixe aqui.
Montando seu Termômetro IoT
O Flip&Click é o primo de dois lados do Arduino. De um lado é um Arduino. Do outro, você encontra quatro soquetes mikroBUS abertos para o que a empresa chama de "click boards". Essencialmente, são módulos add-on que se assemelham a shields Arduino, mas encolhidos para que você possa encaixar vários ao mesmo tempo no Flip & Click sem problemas. Basta adicionar os clicks Temp&Hum e WiFi Plus à placa, respectivamente nos slots A e B.
Como programar o Termômetro IoT usando Python
Clone o exemplo
Após instalar o Zerynth Studio e criar um usuário Zerynth, você pode clonar o exemplo "Zerynth App Oscilloscope". Veja aqui como clonar um exemplo.

Vamos ver o código original no arquivo "main.py": aqui é onde você desenvolve a lógica do seu script Python. Começaremos do código original e editaremos o script para desenvolver nosso projeto específico.
################################################################################
# IoT Thermometer
################################################################################
from wireless import wifi
# este exemplo é baseado no Particle Photon
# altere a linha abaixo para usar driver wifi diferente
from broadcom.bcm43362 import bcm43362 as wifi_driver
import streams
import adc
# Importa biblioteca Zerynth APP
from zerynthapp import zerynthapp
streams.serial()
sleep(1000)
print("STARTING...")
try:
# Device UID e TOKEN podem ser criados no painel ADM
zapp = zerynthapp.ZerynthApp("DEVICE UID", "DEVICE TOKEN", log=True)
# conecta à rede wifi (defina seu SSID e senha abaixo)
wifi_driver.auto_init()
for i in range(0,5):
try:
wifi.link("SSID", wifi.WIFI_WPA2, "PASSWORD")
break
except Exception as e:
print("Can't link", e)
else:
print("Impossible to link!")
while True:
sleep(1000)
# Inicia a instância do Zerynth app!
# Lembre-se de criar um template com os arquivos sob a pasta "template" que você clonou
# faça upload para o ADM e associe ao dispositivo conectado
zapp.run()
# Lê ADC e envia valores para o ADM
while True:
sleep(1000)
x = (adc.read(A4)*100)//4096
zapp.event({"data":x})
if x > 95:
# envia notificação móvel
# (limite de uma notificação por minuto por dispositivo no ADM sandbox)
zapp.notify("ALARM!", "The value is greater than 95!")
except Exception as e:
print(e)
Neste exemplo simples, um osciloscópio gráfico é visualizado pelo Zerynth App com dados vindos da placa conectada. Dados são adquiridos de um sensor analógico pelo pino "analog" A4.
Importe o driver WiFi correto e bibliotecas do sensor
Como visto nos comentários, este exemplo é baseado na placa Particle Photon e seu driver WiFi. Como queremos usar o WiFi Plus Click, devemos alterar as seguintes linhas:
from broadcom.bcm43362 import bcm43362 as wifi_driver
para
from microchip.mcw1001a import mcw1001a as wifi_driver
e
wifi_driver.auto_init()
para
wifi_driver.init(SERIAL2, D24) # slot B
Então, queremos usar o sensor de temperatura do Temp&Hum Click. Adicionamos as linhas para importar a biblioteca e configurar o sensor, conforme a documentação:
# Importa biblioteca HTS221
from stm.hts221 import hts221
temp_hum = hts221.HTS221(I2C0, D21) # slot A
Para ler o sensor, escreva a seguinte linha onde necessário:
tmp, hum = temp_hum.get_temp_humidity() # Lê tmp e hum
Configure o nome SSID e senha
Claro, você também deve editar o nome SSID e a SENHA da rede WiFi à qual deseja conectar a placa, editando esta linha:
wifi.link("SSID", wifi.WIFI_WPA2, "PASSWORD")
Crie e configure um dispositivo conectado
Agora precisamos criar um "dispositivo conectado" e vincular a instância "zerynthapp" a ele. Abaixo, capturas de tela com os passos necessários. Veja esta documentação para mais detalhes técnicos.

As credenciais do dispositivo (UID e TOKEN) podem ser copiadas e coladas diretamente do Zerynth Studio (painel ADM). "IP" é o endereço IP do Zerynth ADM. Este argumento é usado quando o driver de rede não suporta resolução de hostname, como neste caso.

Crie, faça upload e defina o template
Através do Zerynth App, você pode executar belas interfaces gráficas responsivas usando HTML, CSS e JavaScript. Não precisa de código Android ou iOS!
A interface gráfica de cada dispositivo é hospedada no sandbox Zerynth ADM e consiste em um conjunto de arquivos HTML5, Javascript, CSS e imagens carregados e exibidos no app. Adicionar a biblioteca Javascript ADM ao template permite que o app interaja com o dispositivo conectado, tanto recebendo quanto enviando mensagens.
Templates podem ser adicionados clicando no ícone "mais" respectivo.

Depois, faça upload do template da pasta dedicada. Note que o arquivo onde o template é definido chama-se "index.html" e você pode editá-lo como quiser. Neste caso, pode deixá-lo como está.

Faça uplink do script
Após algumas edições, o código deve ficar assim:
################################################################################
# IoT Thermometer
################################################################################
from wireless import wifi
from microchip.mcw1001a import mcw1001a as wifi_driver
import streams
import adc
streams.serial()
# Importa biblioteca Zerynth APP
from zerynthapp import zerynthapp
# Importa biblioteca HTS221
from stm.hts221 import hts221
temp_hum = hts221.HTS221(I2C0, D21) # slot A
sleep(1000)
print("STARTING...")
try:
# Device UID e TOKEN podem ser criados no painel ADM
zapp = zerynthapp.ZerynthApp("DEVICE UID", "DEVICE TOKEN", ip="178.22.65.123", log=True)
# conecta à rede wifi (defina seu SSID e senha abaixo)
wifi_driver.init(SERIAL2, D24) # slot B
for i in range(0,5):
try:
wifi.link("SSID", wifi.WIFI_WPA2, "PASSWORD")
break
except Exception as e:
print("Can't link", e)
else:
print("Impossible to link!")
while True:
sleep(1000)
# Inicia a instância do Zerynth app!
zapp.run()
# Lê o sensor e envia valores para o ADM
while True:
sleep(1000)
tmp, hum = temp_hum.get_temp_humidity() # Lê tmp e hum
print("Temp is:", tmp, "Humidity is:", hum)
try:
zapp.event({"data": tmp})
except Exception as e:
print(e)
if tmp > 30:
# envia notificação móvel
try:
zapp.notify("ALARM!", "High Temperature!")
except Exception as e:
print(e)
except Exception as e:
print(e)
Lembre-se que "DEVICE UID", "DEVICE TOKEN", "SSID" e "PASSWORD" devem ser editados para corresponder aos seus parâmetros.
Neste ponto, você pode fazer uplink do script para seu dispositivo.
Como ver o dashboard do Termômetro IoT no Zerynth App
Como você pode ler neste breve tutorial, basta abrir o Zerynth App, fazer login e selecionar o dispositivo específico para ver o dashboard do seu Termômetro IoT. Por fim, o Zerynth App também pode receber push notifications dos dispositivos conectados. Neste caso, uma notificação aparecerá quando a temperatura for maior que o limite!

Se tiver dúvidas, não hesite em abrir uma discussão no fórum da comunidade Zerynth.
Divirta-se!
Código
IoT Thermometer
################################################################################
# Zerynth App Oscilloscope
################################################################################
from wireless import wifi
from microchip.mcw1001a import mcw1001a as wifi_driver
import streams
import adc
streams.serial()
# Importa biblioteca Zerynth APP
from zerynthapp import zerynthapp
# Importa biblioteca HTS221
from stm.hts221 import hts221
temp_hum = hts221.HTS221(I2C0, D21) # slot A
sleep(1000)
print("STARTING...")
try:
# Device UID e TOKEN podem ser criados no painel ADM
zapp = zerynthapp.ZerynthApp("DEVICE UID", "DEVICE TOKEN", ip="178.22.65.123", log=True)
# conecta à rede wifi (defina seu SSID e senha abaixo)
wifi_driver.init(SERIAL2, D24) # slot B
for i in range(0,5):
try:
wifi.link("SSID", wifi.WIFI_WPA2, "PASSWORD")
break
except Exception as e:
print("Can't link", e)
else:
print("Impossible to link!")
while True:
sleep(1000)
# Inicia a instância do Zerynth app!
zapp.run()
# Lê o sensor e envia valores para o ADM
while True:
sleep(1000)
tmp, hum = temp_hum.get_temp_humidity() # Lê tmp e hum
print("Temp is:", tmp, "Humidity is:", hum)
try:
zapp.event({"data": tmp})
except Exception as e:
print(e)
if tmp > 30:
# envia notificação móvel
try:
zapp.notify("ALARM!", "High Temperature!")
except Exception as e:
print(e)
except Exception as e:
print(e)
Esquemáticos
Processo de manufatura
- O Termômetro: Do Termoscópio de Galileo aos Sensores Digitais Modernos
- Sensor de Temperatura Infravermelho TMP006 com Raspberry Pi: Biblioteca Python e Guia de Configuração
- Construa um Sensor de Temperatura Remoto com Raspberry Pi e Python – Guia Passo a Passo
- Dominando a Placa PSoC 6 Pioneer com Shield IoT Add-On: Guia do Desenvolvedor
- Como a IoT Está Revolucionando a Vida Cotidiana
- Instalar Python e PyCharm no Windows: Guia Passo a Passo
- Como Renomear Arquivos e Diretórios em Python com os.rename() – Guia Passo a Passo
- Automatizando Login no Facebook com Python e Selenium: Guia Passo a Passo
- Calculando Médias em Python: Guia Prático
- Enviando E-mail em Python com SMTP: Guia Rápido






