Comunicação P2P entre 2 NINA B302 via IPV6 - Rádio
O objetivo deste BLOG é demonstrar como é possível utilizar o RIOT para programação do NINA B302. Foi utilizado o BREAKOUT para o teste. O exemplo mostrará como é possível utilizar RIOT para envio de mensagens IPV6 via linha de comandos.
Este exemplo mostra como testar as comunicações entre instâncias DE RIOT com protocolos de camada MAC com duty-cycled (GoMacH e LWMAC) para dispositivos IEEE 802.15.4.
Este exemplo é geralmente baseado em 'gnrc_networking', mas incorpora o GoMacH (ou LWMAC) para suportar a operação de duty-cycled baixos para economizar energia. Além disso, ele pretende mostrar que o protocolo MAC com ciclo de serviço pode suportar protocolos populares de camada superior, como UDP e RPL.
Testado no MSYS2 (WINDOWS - MSYS2)
RIOT: O sistema operacional amigável para a Internet das Coisas.
O RIOT alimenta a Internet das Coisas, como o Linux alimenta a Internet. O RIOT é um sistema operacional gratuito e de código aberto desenvolvido por uma comunidade de base que reúne empresas, universidades e entusiastas, distribuídos em todo o mundo.
O RIOT é um sistema operacional de IoT com recursos em tempo real. Foi desenvolvido por um consórcio de universidades na Alemanha e na França, que incluía a Universidade Livre de Berlim, o Instituto Francês de Pesquisa em Ciência da Computação e Automação e a Universidade de Ciências Aplicadas de Hamburgo. É lançado sob a Licença Pública Geral Menor GNU (LGPL).
É baseado na arquitetura de microkernel e é executado em microcontroladores de 8 a 32 bits. O RIOT suporta multithreading e toda a pilha de rede IoT.
O RIOT suporta a maioria dos dispositivos IoT de baixa potência e arquiteturas de microcontroladores (32 bits, 16 bits, 8 bits). O RIOT tem como objetivo implementar todos os padrões abertos relevantes que suportam uma Internet das Coisas conectada, segura, durável e amiga da privacidade.
O RIOT é um desenvolvimento amigável
Programe como você está acostumado. Não perca tempo com ambientes novos ou complexos.
Programação padrão em C ou C ++
Ferramentas padrão como gcc, gdb, valgrind
Código dependente de hardware minimizado
Zero curva de aprendizado para programação incorporada
Codifique uma vez, execute em plataformas de 8 bits (por exemplo, Arduino Mega 2560), plataformas de 16 bits (por exemplo, MSP430) e em plataformas de 32 bits (por exemplo, ARM)
Conformidade parcial com POSIX. Rumo à conformidade total com POSIX.
Desenvolva no Linux ou Mac OS usando a porta nativa, implemente no dispositivo incorporado
O RIOT é favorável aos recursos
Beneficie-se de uma arquitetura de microkernel e de um agendador sem marcação em dispositivos muito leves.
Robustez e flexibilidade da footprint de código
Permitindo a máxima eficiência energética
Capacidade em tempo real devido à latência de interrupção ultra baixa (~ 50 ciclos de clock) e agendamento com base em prioridades
Multiencadeamento com sobrecarga de encadeamento ultra baixo (<25 bytes por encadeamento)
O RIOT é amigável à Internet das coisas
Prepare seus aplicativos para as coisas menores da Internet com suporte comum ao sistema.
6LoWPAN, IPv6, RPL e UDP
CoAP e CBOR
Alocação de memória estática e dinâmica
Temporizadores de alta resolução e longo prazo
Ferramentas e utilitários (shell do sistema, SHA-256, filtros Bloom, ...)
Estrutura do RIOT
NINA B302 E RIOT
Como o módulo NINA B302 é baseado no chip NRF52840 (cpu), será possível rodar o RIOT sem problemas. O usuário deve dar atenção ao mapeamento de GPIOS da U-BLOX.
O link abaixo, é roteiro Básico para que você possa preparar o ambiente para programar o NINA B302 com o RIOT.
Durante o processo você "deverá" instalar
git, J-link, Arm Toolchain, gcc, make, python3, pip3, pyocd (caso use ST-LINK), putty
Se você tem python 2 instalado
echo "alias python=python3" >> ~/.bashrc
Clone RIOT OS do repositorio
mkdir test
cd test
git clone github.com/RIOT-OS/RIOT.git
TESTANDO NO NINA B302
Compile
Não esqueça (msys2)
pacman -S mingw-w64-x86_64-arm-none-eabi-gcc
e no arquivo /etc/profile MSYS2_PATH="/usr/local/bin:/usr/bin:/bin:/mingw64/bin"
$ make BOARD=feather-nrf52840 Building application "tests_driver_sx127x" for "feather-nrf52840" with MCU "nrf52". "make" -C /home/Usuario/test/RIOT/boards/feather-nrf52840 "make" -C /home/Usuario/test/RIOT/core "make" -C /home/Usuario/test/RIOT/cpu/nrf52 "make" -C /home/Usuario/test/RIOT/cpu/cortexm_common "make" -C /home/Usuario/test/RIOT/cpu/cortexm_common/periph "make" -C /home/Usuario/test/RIOT/cpu/nrf52/periph "make" -C /home/Usuario/test/RIOT/cpu/nrf52/radio/nrf802154 "make" -C /home/Usuario/test/RIOT/cpu/nrf52/vectors "make" -C /home/Usuario/test/RIOT/cpu/nrf5x_common "make" -C /home/Usuario/test/RIOT/cpu/nrf5x_common/periph "make" -C /home/Usuario/test/RIOT/drivers "make" -C /home/Usuario/test/RIOT/drivers/netdev "make" -C /home/Usuario/test/RIOT/drivers/netdev_ieee802154_submac "make" -C /home/Usuario/test/RIOT/drivers/periph_common "make" -C /home/Usuario/test/RIOT/sys "make" -C /home/Usuario/test/RIOT/sys/auto_init "make" -C /home/Usuario/test/RIOT/sys/auto_init/usb "make" -C /home/Usuario/test/RIOT/sys/div "make" -C /home/Usuario/test/RIOT/sys/event "make" -C /home/Usuario/test/RIOT/sys/evtimer "make" -C /home/Usuario/test/RIOT/sys/fmt "make" -C /home/Usuario/test/RIOT/sys/isrpipe "make" -C /home/Usuario/test/RIOT/sys/luid "make" -C /home/Usuario/test/RIOT/sys/malloc_thread_safe "make" -C /home/Usuario/test/RIOT/sys/net/crosslayer/inet_csum "make" -C /home/Usuario/test/RIOT/sys/net/gnrc "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/link_layer/gomach "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/link_layer/mac "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/netapi "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/netif "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/netif/hdr "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/netif/ieee802154 "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/netif/init_devs "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/netif/pktq "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/netreg "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/network_layer/icmpv6 "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/network_layer/icmpv6/echo "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/network_layer/ipv6 "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/network_layer/ipv6/hdr "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/network_layer/ipv6/nib "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/network_layer/ndp "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/network_layer/sixlowpan "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/network_layer/sixlowpan/ctx "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/network_layer/sixlowpan/frag "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/network_layer/sixlowpan/frag/fb "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/network_layer/sixlowpan/frag/rb "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/network_layer/sixlowpan/iphc "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/network_layer/sixlowpan/nd "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/pkt "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/pktbuf "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/pktbuf_static "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/pktdump "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/priority_pktqueue "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/routing/rpl "make" -C /home/Usuario/test/RIOT/sys/net/gnrc/transport_layer/udp "make" -C /home/Usuario/test/RIOT/sys/net/link_layer/csma_sender "make" -C /home/Usuario/test/RIOT/sys/net/link_layer/eui_provider "make" -C /home/Usuario/test/RIOT/sys/net/link_layer/ieee802154 "make" -C /home/Usuario/test/RIOT/sys/net/link_layer/l2util "make" -C /home/Usuario/test/RIOT/sys/net/netif "make" -C /home/Usuario/test/RIOT/sys/net/network_layer/icmpv6 "make" -C /home/Usuario/test/RIOT/sys/net/network_layer/ipv6/addr "make" -C /home/Usuario/test/RIOT/sys/net/network_layer/ipv6/hdr "make" -C /home/Usuario/test/RIOT/sys/net/network_layer/sixlowpan "make" -C /home/Usuario/test/RIOT/sys/net/transport_layer/udp "make" -C /home/Usuario/test/RIOT/sys/newlib_syscalls_default "make" -C /home/Usuario/test/RIOT/sys/od "make" -C /home/Usuario/test/RIOT/sys/ps "make" -C /home/Usuario/test/RIOT/sys/random "make" -C /home/Usuario/test/RIOT/sys/random/tinymt32 "make" -C /home/Usuario/test/RIOT/sys/shell "make" -C /home/Usuario/test/RIOT/sys/shell/commands "make" -C /home/Usuario/test/RIOT/sys/trickle "make" -C /home/Usuario/test/RIOT/sys/tsrb "make" -C /home/Usuario/test/RIOT/sys/usb/usbus "make" -C /home/Usuario/test/RIOT/sys/usb/usbus/cdc/acm "make" -C /home/Usuario/test/RIOT/sys/xtimer text data bss dec hex filename 98980 196 23532 122708 1df54 C:/msys64/home/Usuario/test/RIOT/examples/gnrc_networking_mac/bin/feather-nrf52840/gnrc_networking_mac.elf Usuario@DESKTOP-SCSSFIF MSYS ~/test/RIOT/examples/gnrc_networking_mac $
Grave nos dois NINA B302 (WINDOWS) o bin e execute, esta na pasta
/home/Usuario/test/RIOT/examples/gnrc_networking_mac/bin/feather-nrf52840
Conecte na USB os dois NINA B302, abra a COM VIRTUAL (USB)
DÚVIDAS
suporte@smartcore.com.br
REFERÊNCIAS
https://www.riot-os.org/#features
Sobre a SMARTCORE
A SmartCore fornece módulos para comunicação wireless, biometria, conectividade, rastreamento e automação.
Nosso portfólio inclui modem 2G/3G/4G/NB-IoT/Cat.M, satelital, módulos WiFi, Bluetooth, GNSS / GPS, Sigfox, LoRa, leitor de cartão, leitor QR code, mecanismo de impressão, mini-board PC, antena, pigtail, LCD, bateria, repetidor GPS e sensores.
Mais detalhes em www.smartcore.com.br
Nenhum comentário:
Postar um comentário