segunda-feira, 14 de setembro de 2020

NINA B302 - DDNS - ATUALIZAÇÃO - WIFININA - 802.11

                                NINA B302 ATUALIZANDO DDNS (DuckDNS) - WIFININA


O objetivo deste BLOG é apresentar uma ideia geral de como o NINA B302 pode atualizar um tabela DDNS.

DDNS

Por que precisamos dessa biblioteca DDNS_Generic ?

Muitos de nós estão usando o serviço DNS dinâmico porque os endereços IP dinâmicos são muito mais baratos do que endereços IP estáticos caros.

Endereços de IP dinâmicos apresentam um problema se quisermos fornecer um serviço a outros usuários na Internet, como um serviço da web, servidor local Blynk, etc. Como o endereço de IP pode mudar com frequência (devido a queda de energia / oscilação, ligar / desligado, problemas de DSL / fibra, etc.), os nomes de domínio correspondentes devem ser rapidamente mapeados novamente no DNS, para manter a acessibilidade usando um URL conhecido.

Muitos provedores oferecem serviço de DNS dinâmico comercial ou gratuito para este cenário. A reconfiguração automática geralmente é implementada no roteador ou computador do usuário, que executa o software para atualizar o serviço DDNS. A comunicação entre o equipamento do usuário e o provedor não é padronizada, embora alguns métodos padrão de atualização baseados na web tenham surgido com o tempo.

Esta biblioteca é criada para atualizar automaticamente seus domínios DDNS com o endereço IP dinâmico mais recente, usando uma das muitas placas / escudos disponíveis. Veja Placa suportada.

O tempo entre as verificações para atualizar o Serviço DDNS é configurável para corresponder ao seu caso de uso e é definido nos exemplos em 10 minutos.

O código DDNS_Generic é muito curto, pode ser imerso em seus Projetos e ser chamado no código loop ().

Atualmente, ele suporta DuckDNS, No-ip, DynDNS, Dynu, enom, all-inkl, selfhost.de, dyndns.it, strato, freemyip, fear.org. A expansão para suportar mais provedores de serviços DDNS é muito fácil e pode ser feita por você.

Esta biblioteca DDNS_Generic é baseada e modificada da Biblioteca EasyDDNS de Ayush Sharma para adicionar suporte a muitas placas e escudos além de ESP32 e ESP8266.


WIFININA

Módulo com firmware WIFININA o qual permite colocar o NINA B302 na rede WIFI via SPI
U-BLOX NINA B302

Instalando Arduino Adafruit no NINA B302


Abaixo o roteiro para você seguir:

Baixe e instale o Arduino IDE 
Inicie o Arduino IDE, vá em Preferências e adicione 

https://www.adafruit.com/package_adafruit_index.json




como "URL adicional do gerenciador de pastas"

Abra o Boards Manager no menu Tools -> Board e instale o "Adafruit nRF52 by Adafruit"

Selecione sua placa nRF5 no menu Ferramentas -> Placa

Adafruit Bluefruit nRF52 Feather





OBSERVAÇÃO: Durante a instalação, o Arduino IDE leva alguns minutos para extrair as ferramentas após o download, por favor, seja paciente.

Gravando bootloader da Adafruit


Use o gravador SEGGER JLINK para gravar o BREAKOUT com módulo NINA B302, conecte nos pinos do SWCLK (pino 7) e SWDIO (pino 9) do SEGGER JLINK nos pinos  SWDCLK e SWDIO do BREAKOUT (pinos nas laterais, próximo à antena). Não esquecer de ligar os GND do BREAKOUT no GND do SEGGER JTAG, bem como alimentar o BREAKOUT com 3.3V.





Ligue os pinos SWD DIO e CLK ...



...nestes pinos da placa BREAKOUT


Você pode também usar o ST-LINK V2



Abra J-FLASH lite e grave o bootloader da Adafruit


Mudar NRF52840
 
O mesmo se encontra em 

....\packages\adafruit\hardware\nrf52\0.19.0\bootloader\feather_nrf52840_express

Compile depois para o NINA B302
https://github.com/adafruit/Adafruit_nRF52_Bootloader

Com ele, você poderá transferir programas via DFU USB. Maiores detalhes sobre este bootloader

https://learn.adafruit.com/introducing-the-adafruit-nrf52840-feather/update-bootloader

Segundo a documentação, se você pressionar o reset, o módulo aguardará por um certo tempo se há algo sendo enviado pelo Arduino, ou seja, o programa a ser gravado via DFU.

ATENÇÃO, o bootloader usa USB para gravação do NINA 302, OU SEJA, CRIA UMA COMM VIRTUAL, TAMBÉM PARA SER A SERIAL PADRÃO DO ARDUINO

INSTALE OS DRIVERS
https://github.com/adafruit/Adafruit_Windows_Drivers

Conecte na USB + e USB - um cabo USB, AGUARDE INSTALAR OS DRIVERS


Futuramente altere arquivo variant.cpp para que as GPIOS sejam os mesmos do NINA B302, atualmente estão para o ADAFRUIT FEATHER EXPRESS.





ÓTIMA REFERENCIA PARA PINOS DO ARDUINO E PINOS (GPIOS) DO NINA B302


Consulte

TRANSFORMANDO NINA W102 EM WIFI COPROCESSOR

Grave o seguinte BIN no NINA W102, o qual será transformado em um SPI COPROCESSOR WIFI. Você pode usar o esptools para gravar.

A versão do BIN de maior ou igual à 1.4.0.



MONTAGEM


Conecte fisicamente o U-BLOX NINA B302 com o U-BLOX NINA W102 conforme circuito abaixo. Bom utilizar fios bem curtos. Os breakouts utilizados foram da Smartcore. 

 SINAIS

BREAKOUT B3

 Pino NRF52X

BREAKOUT W1

 Pino ESP32

CS

IO1

P0.13

IO28

5

READY

IO2

P0.14

IO7

33

RESET

IO21

P1.12

RESET

RESET

SCK

IO45

P0.07

IO29

18

MOSI

IO3

P0.15

IO31

14

MISO

IO8

P1.00

IO1

23

GPIO0

IO4

P0.16

IO27

0

 

 

 

 

 


Siga criteriosamente o Roteiro deste LINK

https://github.com/khoih-prog/DDNS_Generic





Código fonte NRF52_Ethernet_DuckDNS_Client.

/**************************************************************************************************************************** nRF52_WiFiNINA_DuckDNS_Client.ino For all Generic boards such as ESP8266, ESP32, SAM DUE, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1 with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266-AT, W5x00, ENC28J60, built-in Ethernet LAN8742A DDNS_Generic is a library to update DDNS IP address for DDNS services such as duckdns, noip, dyndns, dynu, enom, all-inkl, selfhost.de, dyndns.it, strato, freemyip, afraid.org Based on and modified from EasyDDNS https://github.com/ayushsharma82/EasyDDNS Built by Khoi Hoang https://github.com/khoih-prog/DDNS_Generic Licensed under MIT license Version: 1.0.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 1.0.0 K Hoang 11/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. *****************************************************************************************************************************/ #include "defines.h" int status = WL_IDLE_STATUS; // the Wifi radio's status void onUpdateCallback(const char* oldIP, const char* newIP) { Serial.print("DDNSGeneric - IP Change Detected: "); Serial.println(newIP); } void setup() { Serial.begin(115200); while (!Serial); Serial.print("\nStart nRF52_WiFiNINA_DuckDNS_Client on " + String(BOARD_NAME)); Serial.println(" with " + String(SHIELD_TYPE)); if (WiFi.status() == WL_NO_MODULE) { Serial.println(F("WiFi shield not present")); // don't continue while (true); } String fv = WiFi.firmwareVersion(); if (fv < WIFI_FIRMWARE_LATEST_VERSION) { Serial.println("Please upgrade the firmware"); } WiFi.begin(ssid, password); Serial.println("Connecting to WiFi SSID: " + String(ssid)); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.print(F("\nHTTP WebServer is @ IP : ")); Serial.println(WiFi.localIP()); server.begin(); DDNSGeneric.service("duckdns"); // Enter your DDNS Service Name - "duckdns" / "noip" /* For DDNS Providers where you get a token: DDNSGeneric.client("domain", "token"); For DDNS Providers where you get username and password: ( Leave the password field empty "" if not required ) DDNSGeneric.client("domain", "username", "password"); */ DDNSGeneric.client("xxxxxxxx.duckdns.org", "xxxxxxx-2102-4d96-xxxx-xx22d04597bd"); DDNSGeneric.onUpdate(onUpdateCallback); } void loop() { // Check for New Ip Every 10 mins. DDNSGeneric.update(600000); }


Compilação e Gravação


Execução




DÚVIDAS
suporte@smartcore.com.br

Referências:

Nenhum comentário:

Postar um comentário