Este projeto utiliza um Raspberry Pi Pico para monitorar dois botões, a posição de um joystick e a temperatura interna do microcontrolador. Os dados são enviados periodicamente para a nuvem (ThingSpeak), permitindo visualização em tempo real por meio de gráficos e painéis personalizados.
- Leitura dos botões (GPIO 5 e 6): Captura o estado (pressionado/solto).
- Leitura do joystick (ADC 0 e 1): Interpretação de direção (rosa dos ventos).
- Leitura da temperatura interna (ADC 4): Conversão para °C.
- Envio de dados para o ThingSpeak(versão nuvem): Via requisição HTTP GET a cada 15 segundos.
- Servidor Web local (versão local): Exibição dos dados em HTML via rede local a cada 1 segundo.
- Exemplo de aplicação real: Simulação de monitoramento industrial.
| Função | Pino do Pico |
|---|---|
| Botão A | GPIO 5 |
| Botão B | GPIO 6 |
| Joystick X | ADC 1 (GPIO 27) |
| Joystick Y | ADC 0 (GPIO 26) |
| Sensor de Temperatura | ADC 4 |
| LED Indicador | GPIO 20 |
⚠️ Importante: Antes de compilar, edite o código e preencha suas informações de Wi-Fi e chave da API do ThingSpeak:
#define WIFI_SSID "SEU_SSID_AQUI"
#define WIFI_PASSWORD "SUA_SENHA_AQUI"
#define THINGSPEAK_API_KEY "SUA_API_KEY_AQUI"
#define THINGSPEAK_HOST "api.thingspeak.com"O joystick retorna valores analógicos nos eixos X e Y, de 0 a 4095. Esses valores são mapeados para direções de uma rosa dos ventos, com base em limites definidos no código.
Norte
↑
Noroeste ↑↑↑ Nordeste
↑
Oeste ←── Centro ──→ Leste
↓
Sudoeste ↓↓↓ Sudeste
↓
Sul
| Direção | X | Y |
|---|---|---|
| Norte | ~2000 | >3500 |
| Sul | ~2000 | <1000 |
| Leste | >3500 | ~2000 |
| Oeste | <1000 | ~2000 |
| Nordeste | >3000 | >3000 |
| Noroeste | <1000 | >3000 |
| Sudeste | >3000 | <1000 |
| Sudoeste | <1000 | <1000 |
| Centro | 1800–2300 | 1800–2300 |
⚙️ Ajuste os limites conforme o comportamento real do seu joystick.
Os dados dos sensores são enviados a cada 15 segundos (limite da conta gratuita no ThingSpeak) usando uma requisição HTTP GET.
GET /update?api_key=SUA_API_KEY&field1=BOTAO_A&field2=BOTAO_B&field3=TEMP&field4=JOY_X&field5=JOY_Y HTTP/1.1
Host: api.thingspeak.com
Connection: close- SDK do Raspberry Pi Pico configurado
- Pilha LWIP funcional
- Acesso à internet via Wi-Fi
Edite no código:
#define WIFI_SSID "SEU_SSID"
#define WIFI_PASSWORD "SUA_SENHA"
#define THINGSPEAK_API_KEY "SUA_CHAVE_THINGSPEAK"mkdir build
cd build
cmake ..
make- Use o
picotool, ou - Copie o arquivo
.uf2gerado para o Raspberry Pi Pico via USB
- Acesse ThingSpeak
- Veja os campos atualizados em tempo real com:
- Botões A e B (pressionado ou solto)
- Temperatura em °C
- Eixos X e Y do joystick
Este projeto pode ser usado em:
- 🏭 Monitoramento remoto de máquinas e ambientes
- 🧪 Testes educacionais com sensores e IoT
- 🚀 Prototipagem de sistemas embarcados
O projeto nasceu com o objetivo de explorar o uso do Raspberry Pi Pico (BitDogLab) em aplicações de IoT. A proposta era:
- Monitorar botões físicos e joystick
- Medir a temperatura interna
- Exibir os dados via servidor local
- Como desafio extra: enviar os dados para a nuvem foi escolhido o (ThingSpeak) por ser grátis e fácil de usar
Além da leitura bruta dos sensores, foi implementado um sistema de interpretação de direção (rosa dos ventos) com o joystick, e visualizações gráficas em tempo real.
O código foi escrito todo em C, sem bibliotecas de alto nível, utilizando diretamente o SDK oficial do RP2040 e a pilha TCP/IP LWIP.
A primeira versão do projeto implementa um servidor local. A cada 1 segundo, os dados dos sensores são atualizados e exibidos em uma página HTML acessível via navegador.
- 🟢 Botões físicos (estado pressionado ou solto)
- 🌡️ Temperatura interna (°C)
- 🎮 Joystick (X, Y e direção interpretada)
A segunda versão envia os dados para a nuvem usando o serviço ThingSpeak. A cada 15 segundos, os sensores são lidos e os dados são enviados via HTTP GET.
- field1: Botão A
- field2: Botão B
- field3: Temperatura
- field4: Eixo X do Joystick
- field5: Eixo Y do Joystick
- 📈 Temperatura em tempo real
- 🧭 Direção do joystick com rosa dos ventos (via Math Visualization)
- 🔴 Estado dos botões em gráfico digital
Este projeto pode simular um sistema de monitoramento remoto de máquinas industriais:
- ⚙️ Botões = estados da máquina (ligado/desligado, emergência)
- 🌡️ Temperatura = sobreaquecimento
- 🎮 Joystick = controle ou ajuste remoto
- Visualização em tempo real
- Sem necessidade de hardware adicional
- Possível integração com alertas e dashboards
O projeto atendeu todos os objetivos e desafios:
✔️ Conexão estável à rede Wi-Fi
✔️ Visualização dos dados localmente (HTML)
✔️ Integração com a nuvem (ThingSpeak)
✔️ Conversão da entrada do joystick para rosa dos ventos
✔️ Gráficos em tempo real
Resultado: um sistema de IoT completo, funcional e com potencial de uso real.
📧 Email: jonielmendes237@gmail.com 🔗 LinkedIn: linkedin.com/in/joniel-mendes








