Uma das vantagens de qualquer ferramenta de desenvolvimento é a conexão, ou via bluetooth ou wifi. Para isso a Raspberry Pi lançou a versão W para as placas Pi Pico, tanto para a primeira como para a segunda versão. A seguir temos um passo a passo de como conectar a sua Pi Pico 2 W numa rede WiFi.
Neste link temos o vídeo com a explicação do artigo - https://www.youtube.com/watch?v=I1BzaZ3iqd0
Scaneando as redes locais
Primeiro vamos escanear as rede que são detectáveis para a localização da aplicação. Para isso usamos o código abaixo:
import network # biblioteca responsável pela conexão
# Inicializa interface Wi-Fi
redew = network.WLAN(network.STA_IF)
redew.active(True)
# Função que escanea as Redes Wi-Fi
redes = redew.scan()
# Imprimir Nome e RSSI das Redes Wi-Fi
print("Redes WiFi disponiveis:")
for rede_info in redes:
print("Rede = ", rede_info[0], "RSSI = ",rede_info[3] )
Realizando a conexão
Para maior praticidade e segurança, vamos aqui criar 2 arquivos, sendo o secrets.py onde armazenaremos o nome da rede e senha. Isso ajuda muito quando temos diversos códigos que acessam a rede wifi, pois se precisarmos trocar a senha ou o nome da rede, faremos isso apenas uma vez, no arquivo secrets.py. No arquivo que irá executar a conexão chama este secrets.py como uma biblioteca cimu.
Abaixo o secrets.py
#Conteudo do programa secrets.py
login = {
'ssid' : 'coloque nome da sua rede',
'password' : 'coloque aqui sua senha'
}
Abaixo temos o programa principal com as devidas linhas comentadas.
Conexao.py
import network
import requests
import json
import secrets
from time import sleep
#Credenciais Wi-Fi
#arquivo secrets.py
ssid = secrets.login['ssid'] #Nome da rede
password = secrets.login['password'] #senha
# Inicializa interface Wi-Fi
redew = network.WLAN(network.STA_IF)
redew.active(True)
# Conectar na rede
redew.connect(ssid, password)
#arquivo secrets.py
# Espera por conexao Wi-Fi
connection_timeout = 10
while connection_timeout > 0:
if redew.status() >= 3:
break
connection_timeout -= 1
print('Aguarde para conexao Wi-Fi...')
sleep(1)
# Checar se conexao foi sucedida
if redew.status() != 3:
raise RuntimeError('Falha para estabelecer conexao na rede')
else:
print('Conexao com sucesso!')
rede_info = redew.ifconfig()
print('Endereco IP :', rede_info[0])
# Faz requisicao
resposta = requests.get("http://goweather.xyz/weather/Lima")
# Get response code
resposta_code = resposta.status_code
#print( "Codigo recebido = ",resposta_code)
# Conteudo recebito.
resposta_content = resposta.content
#print('Response content:', resposta_content)
dados = resposta.json()
for chave in dados:{
#print(chave,":", dados[chave])
}
print("Temperatura = ", dados["temperature"] )
"""
Json de data
{'forecast': [{'temperature': '25 \xb0C', 'day': '1', 'wind': '14 km/h'},
{'temperature': '+23 \xb0C', 'day': '2', 'wind': '14 km/h'},
{'temperature': '19 \xb0C', 'day': '3', 'wind': '24 km/h'}],
'wind': '9 km/h',
'temperature': '+32 \xb0C',
'description': 'Patchy rain nearby'}]}
"""