Raspberry Pi Pico com Wi-Fi: Integração com ESP8266 e Sistemas IoT na Prática

Após consolidar todos os pilares de sistemas embarcados — leitura, processamento, controle, comunicação e persistência — o passo final é a conectividade com rede.

Neste contexto, o Raspberry Pi Pico pode ser integrado ao mundo IoT utilizando um módulo externo de comunicação Wi-Fi.


Limitação de Hardware

O Raspberry Pi Pico (RP2040) não possui conectividade Wi-Fi nativa.

Solução prática

Utilizar o módulo:


Arquitetura do Sistema

Cliente ⇄ Rede Wi-Fi ⇄ ESP8266 ⇄ UART ⇄ Raspberry Pi Pico ⇄ Dispositivos

Comunicação com ESP-01

O módulo é controlado via comandos AT.

AT+RST
AT+CWMODE=1
AT+CWJAP="SSID","SENHA"
AT+CIPSTART

Configuração UART no Pico

from machine import UART, Pin

uart = UART(0, baudrate=115200, rx=Pin(1), tx=Pin(0))

Projeto 1: Controle Remoto de LED via Wi-Fi

Sistema mínimo funcional de IoT.


Inicialização

from machine import Pin, UART
import utime

uart = UART(0, baudrate=115200, rx=Pin(1), tx=Pin(0))

LED = Pin(16, Pin.OUT)
LED.value(0)

Conexão com a Rede

def connect_wifi():
    uart.write("AT+RST\r\n")
    utime.sleep(5)

    uart.write("AT+CWMODE=1\r\n")
    utime.sleep(1)

    uart.write('AT+CWJAP="SSID","SENHA"\r\n')
    utime.sleep(5)

    uart.write("AT+CIPMUX=0\r\n")
    utime.sleep(3)

    uart.write('AT+CIPSTART="UDP","0.0.0.0",5000,5000,2\r\n')
    utime.sleep(3)

Loop de Controle

connect_wifi()

while True:
    buf = uart.readline()

    if buf:
        data = buf.decode("utf-8")

        if "LON" in data:
            LED.value(1)

        if "LOFF" in data:
            LED.value(0)

Comportamento

  • Recebe comandos via rede
  • Realiza parsing simples de strings
  • Atua diretamente no hardware

Projeto 2: Telemetria de Temperatura

Sistema bidirecional.


Função de Leitura

from machine import ADC

adc = ADC(4)
conv = 3.3 / 65535

def get_temp():
    v = adc.read_u16() * conv
    return 27 - (v - 0.706) / 0.001721

Envio de Dados

def send_temp():
    T = get_temp()
    msg = "T=" + str(T)
    length = str(len(msg))

    uart.write("AT+CIPSEND=" + length + "\r\n")
    utime.sleep(2)
    uart.write(msg)

Loop de Resposta

while True:
    buf = uart.readline()

    if buf:
        data = buf.decode("utf-8")

        if "T?" in data:
            send_temp()

Fluxo de Comunicação

  • Cliente envia: T?
  • Pico responde: T=valor

Testes do Sistema

Ferramentas possíveis:

  • Aplicativos UDP/TCP (mobile)
  • Softwares como PacketSender
  • Scripts em Python

Comandos de Controle

LON   → Liga saída
LOFF  → Desliga saída
T?    → Solicita leitura

Conceitos Relevantes

UDP vs TCP

  • UDP → menor overhead, sem confirmação
  • TCP → confiável, porém mais pesado

Parsing de Comandos

if "LON" in data:

Modelo simples e eficiente.


Controle de Tempo

utime.sleep(5)

Necessário para estabilidade do ESP8266.


Boas Práticas

  • Validar buffer antes de processar
  • Garantir encoding correto
  • Evitar envio contínuo sem controle
  • Sincronizar comunicação UART

Arquitetura Completa de Sistema IoT

Sistema final integra:

  • Entrada → sensores
  • Processamento → lógica
  • Saída → atuadores
  • Persistência → logs
  • Comunicação → rede

Evolução para Sistemas Profissionais

A partir deste ponto, é possível evoluir para:

  • MQTT (mensageria IoT)
  • APIs REST
  • Dashboards web
  • Integração com cloud (AWS, Azure, etc.)

Insight Técnico Final

A conectividade transforma um sistema isolado em um sistema distribuído.

Com Wi-Fi, o dispositivo passa a:

  • Compartilhar dados
  • Receber comandos remotos
  • Integrar arquiteturas maiores

Encerramento Geral

Este capítulo fecha o ciclo completo de desenvolvimento com Raspberry Pi Pico:

  • GPIO, ADC, PWM
  • UART, I2C, SPI
  • Data logging
  • Comunicação em rede

O resultado é uma base completa para desenvolvimento de sistemas embarcados conectados.