quinta-feira, outubro 06, 2022

Usando o WiFi da Raspberry Pi PIco W (Parte 3)

Continuando o meu estudo de uso do WiFi na Pico W com o SDK C/C++, fiz a implementação de um cliente SNTP. De quebra liguei um display alfanumérico I2C para ter uma foto legal do projeto.


Compilando para a Pico W no Visual Code

Perdi um pouco de tempo com isso, então vou documentar. Eu fiz o teste sob Windows, mas acho que deve funcionar também no Linux. O "Getting Started" fala apenas em compilação por linha de comando, com algumas variáveis de ambiente sendo setadas antes de executar o CMake.

  1. No CMakeLists.txt, colocar "set(PICO_BOARD pico_w)"
  2. Também no CMakeLists.txt, colocar o diretório atual na lista de diretórios de include "target_include_directories(projeto PRIVATE ${CMAKE_CURRENT_LIST_DIR} )"
  3. Ainda no CMakeLists.txt, coloque pico_cyw43_arch_lwip_poll na lista de bibliotecas (target_link_libraries)
  4. Copie o arquivo lwipopts_examples_common.h de pico_examples\pico_w para o seu diretório com o nome lwipopts.h
Acidentalmente eu gerei a versão de Debug, várias mensagens interessantes são apresentadas na serial.

Ligando o Display

Nada de muito especial por aqui. Mais uma vez ignorei o meu próprio conselho e liguei direto a Pico W que opera a 3.3V no I2C do display que opera a 5V. Façam isso por sua própria conta e risco!

O código foi adaptado de um projeto antigo. Os detalhes sobre esse display podem ser vistos aqui e aqui.

O Cliente SNTP

Eu parti do código que eu fiz antes, mas a parte de comunicação é bem diferente no Pico W. O meu objetivo era fazer algo mais legível que o exemplo do SDK. O meu código original usava funções "síncronas", ou seja, que bloqueavam até completar. Para o Pico W o código é "assíncrono" com a necessidade de chamar continuamente a função SNTPupdate().

O DNS é consultado antes de cada acesso ao servidor SNTP, como no exemplo do SDK. O cache local evita que seja feita uma comunicação a cada consulta.

O resultado final pode ser visto no meu github: https://github.com/dquadros/SNTP_PicoW





Um comentário:

Anônimo disse...

Ótimo seu blog professor, obrigado por toda dedicação.