sexta-feira, 10 de novembro de 2023

NINA B406 sendo programado com NRF Connect + ZEPHYR RTOS via Visual Code - Acessando BME680

NINA B406 sendo programado com NRF Connect +  ZEPHYR RTOS via Visual Code



O objetivo deste BLOG é demonstrar de forma resumida como é possível fazer com que o módulo NINA B406 possa se programado na plataforma Visual Code na qual é instalado nRF Connect  + Zephyr RTOS.


Atualmente tem-se utilizado muito o SEGGER STUDIO + nRF Connect.

Prefácio

Um Ambiente de Desenvolvimento Integrado (IDE) é um aplicativo de software que fornece um ambiente de programação para agilizar o desenvolvimento e depuração de software. Em vez de realizar todas as etapas necessárias para fazer um programa executável ou gerar um firmware binário como tarefas individuais não relacionadas, os IDEs trazem todas as ferramentas necessárias para um aplicativo e espaço de trabalho. Cada uma das ferramentas tem consciência do ambiente e funcionam em harmonia para fornecer uma experiência de desenvolvedor muito boa fora da caixa, tanto para desenvolvedores novatos quanto para os experientes.

Mundo sem IDEs

Sem IDEs, os desenvolvedores precisam usar um editor, compilador e vinculador instalado em sua máquina de desenvolvimento para criar arquivos de código, compilá-los e vinculá-los. Isso às vezes pode ser opressor para novos desenvolvedores que primeiro precisam instalar e configurar todos os conjuntos de ferramentas necessários e manter uma guia de vários comandos para gerar os binários executáveis ​​para atualizar os dispositivos, especialmente no mundo do desenvolvimento de sistemas embarcados.

O IDEs mais popular que a maioria de nós, desenvolvedores, usa diariamente é o Visual Studio Code da Microsoft. Um dos principais motivos pelos quais o VS Code assumiu o controle de outros IDEs é a capacidade de oferecer suporte a extensões de terceiros. Essas extensões permitem adicionar funcionalidades adicionais ao VS Code, permitindo o uso do VS Code para praticamente qualquer plataforma e linguagem de codificação. Atualmente, algumas das extensões populares do VS Code que existem para as plataformas incorporadas são PlatformIO, Particle Workbench e Arduino, entre outros.

No entanto, até o momento, uma extensão de código VS adequada ou, em outras palavras, uma extensão de código VS completa para configurar, build e debugar projetos usando Zephyr RTOS sem modificar o sistema operacional subjacente não foi desenvolvida. PlatformIO fez um trabalho muito bom, no entanto, ainda requer a instalação de um SDK personalizado para funcionar com o ecossistema PlatformIO, às vezes exigindo que os usuários instalem um SDK redundante e ocupem espaço de armazenamento extra, caso já o tenham instalado anteriormente. Por exemplo, um ZephyrRTOS estoque e um Zephyr RTOS baseado em PlatformIO modificado. Além disso, PlatformIO atualmente não oferece suporte aos dispositivos Nordic mais recentes ou ao SDK nRF Connect, dificultando o desenvolvimento de aplicativos usando os recursos PlatformIO nesses SoCs mais recentes do mercado.

Também tem havido discussões contínuas no tópico de problemas do Zephyr para criar tal extensão especificamente para Zephyr RTOS que simplificaria o processo de configuração enormemente, eliminando a necessidade de alguém aprender sobre os detalhes de configuração do VS Code ou dos conjuntos de ferramentas Zephyr subjacentes.

O que é nRF Connect for Visual Studio Code?

Nordic Semiconductor anunciou recentemente e lançou uma versão de amostra de seu nRF Connect for VS Code.

nRF Connect for VS Code é simplesmente uma extensão do Visual Studio Code. Ele permite que os usuários do nRF Connect SDK e Zephyr RTOS:

  • Desenvolva seu código de aplicativo
  • Build e gere o firmware do aplicativo
  • Flash a imagem para o dispositivo e
  • Depurar aplicativos

direto do ambiente do VS Code. 

Esta extensão utiliza o nRF Connect SDK e Zephyr RTOS pré-instalados, permitindo aos desenvolvedores alternar entre o código VS ou a linha de comando para o desenvolvimento do projeto. Quão legal é isso :)

Embora esta extensão seja direcionada para nRF Connect SDK e Zephyr RTOS, ela foi construída para fazer uma coisa, e fazer isso direito: tornar o desenvolvimento baseado em Zephyr uma brisa. Para uma experiência perfeita, a extensão fornece recursos extensivos de desenvolvimento e depuração para dispositivos da série Nordic nRF91, nRF53 e nRF52 no Windows, macOS e Linux. A extensão pode reconhecer nRF dev kits com a interface J-Link OB e mostrar seus nomes. Os desenvolvedores também podem usar dispositivos J-Link / Trace autônomos para programar e depurar os respectivos dispositivos.

Observe que a extensão ainda está em desenvolvimento, mas já fornece alguns recursos ricos e muito necessários que examinaremos neste tutorial.

Para o desenvolvimento e teste desta extensão, usaremos o módulo BREAKOUT NINA B406  baseado em NRF52833 personalizado conectado por meio da interface SWD e código VS para macOS com nRF Connect SDK v2.5.0. A razão para usar a interface SWD é tirar proveito do recurso de depuração que esta extensão oferece. Também seguiremos as diretrizes iniciais fornecidas pelo Nordic em seu blog para começar a usar o nRF Connect for VS Code. Aqueles que não querem ler podem ir diretamente ao YouTube playlist criada por Nordic que mostra como usar a extensão por meio de vídeos passo a passo.

Instalação

How to install the extension - nRF Connect for VS Code

  • nRF Connect for VS Code, a extensão principal desenvolvida pela equipe Nordic que contém uma interface para o sistema de compilação e nRF Connect SDK, bem como ferramentas externas como guiconfig. Guiconfig é uma interface de configuração gráfica para explorar as opções disponíveis do Zephyr Kconfig e fazer alterações temporárias. Além disso, Cortex-Debug é instalado automaticamente por esta extensão para fornecer suporte de depuração para microcontroladores ARM Cortex-M.
  • DeviceTree para o projeto Zephyr, que fornece suporte a idiomas DeviceTree.
  • Kconfig para o Projeto Zephyr, que fornece suporte ao idioma Kconfig.
  • Terminal nRF, um terminal serial e RTT integrado.

nRF Connect for Desktop - Downloads - nordicsemi.com











Enfim, instalando nRF Connect completo!

Testando o projeto  - BME680

Abra o exemplo BME680


Altere .overlay para o BME680


Adicione Build Configuration para EVK da B406


Veja o .overlay  configurado para o endereço 76H, mas pode também alterar para 77H, conforme a ligação do pino SDO do módulo BME680 em VCC ou GND.





Conexão do BME680 com o NINA B406

B406           BME680
IO4            SDA
IO3            SCL



Compilando (WEST)

Assim que o projeto for compilado com sucesso, no painel de navegação do projeto, você verá todos os arquivos gerados. Dê uma olhada nesses arquivos e estruturas.

Os arquivos de código principais estão localizados em um subdiretório chamado src , que é uma abreviatura de “fonte”. No painel esquerdo, você deve ver seu projeto listado e, abaixo dele, uma série de subdiretórios. Expanda o subdiretório src clicando nele e você deverá ver um arquivo main.c. Clique neste arquivo para abri-lo na janela do editor do VS.

A estrutura do arquivo e os arquivos de saída são semelhantes aos criados usando ferramentas de linha de comando no Zephyr RTOS. A única diferença é que, em vez de criá-los manualmente, a extensão faz tudo isso em seu nome. Essa é a beleza de trabalhar com IDEs. Além disso, agora também existe um DeviceTree para inspecionar as definições da placa.

No diretório do projeto, agora há também a guia ACTIONS que lista alguns dos botões de comando principais, como Build , Pristine build , Menuconfig , Flash e Debug .

Por trás da cena…

Vejamos o que realmente acontece quando a extensão invoca alguns dos comandos:

botão Build constrói o aplicativo Zephyr a partir da fonte e realmente invoca

west build -b <BOARD> --build-dir path/to/build/directory

onde o diretório fonte é automaticamente selecionado pela extensão, ou seja, o projeto ativo que o desenvolvedor pretende compilar.


Selecionar a Pristine Build gera um novo diretório de build e remove todos os subprodutos das construções anteriores.

west build --pristine -b <BOARD> --build-dir path/to/build/directory

Um dos comandos importantes que muitos de vocês podem não estar cientes é o menuconfig : uma interface baseada em curses que é executada no terminal para explorar as opções disponíveis do Zephyr Kconfig e fazer alterações temporárias. Clicar em “Menuconfig” trará a interface de configurações do kernel do Zephyr do seu projeto, permitindo que você altere diferentes configurações do terminal. Mais informações podem ser encontradas na documentação Projeto Zephyr.

Caso aconteça o seguinte erro: (WINDOWS)

"The terminal process failed to launch: Path to shell executable "cmd" is not a file or a symlink."

Vá em NRFCONNECT FOR DESKTOP ---> TOOLCHAIN MANAGER---> OPEN COMMAND PROMPT, então copie do TERMINAL do VISUAL STUDIO CODE, por exemplo:

C:\Windows\system32\cmd.exe /d /s /c "west build --build-dir c:/ncs/v2.5.0/zephyr/samples/sensor/bme680/build c:/ncs/v2.5.0/zephyr/samples/sensor/bme680

Flecha Esquerda "Volta"

Antes de passarmos para o flash do código no dispositivo, vamos dar uma olhada rápida no código-fonte do projeto.

/*
 * Copyright (c) 2018 Bosch Sensortec GmbH
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr/drivers/sensor.h>
#include <zephyr/kernel.h>
#include <zephyr/device.h>
#include <stdio.h>

int main(void)
{
    const struct device *const dev = DEVICE_DT_GET_ANY(bosch_bme680);
    struct sensor_value temp, press, humidity, gas_res;

    if (!device_is_ready(dev)) {
        printk("sensor: device not ready.\n");
        return 0;
    }

    printf("Device %p name is %s\n", dev, dev->name);

    while (1) {
        k_sleep(K_MSEC(3000));

        sensor_sample_fetch(dev);
        sensor_channel_get(dev, SENSOR_CHAN_AMBIENT_TEMP, &temp);
        sensor_channel_get(dev, SENSOR_CHAN_PRESS, &press);
        sensor_channel_get(dev, SENSOR_CHAN_HUMIDITY, &humidity);
        sensor_channel_get(dev, SENSOR_CHAN_GAS_RES, &gas_res);

        printf("T: %d.%06d; P: %d.%06d; H: %d.%06d; G: %d.%06d\n",
                temp.val1, temp.val2, press.val1, press.val2,
                humidity.val1, humidity.val2, gas_res.val1,
                gas_res.val2);
    }
    return 0;
}

}

O código quase não precisa de qualquer descrição, é basicamente o exemplo para ler o BME680 e mostrar os conteúdos das suas grandezas.

O próximo passo é fazer o upload para a placa, então vamos conectar nossa placa primeiro. Aqui, conectaremos o BREAKOUT U-BLOX NINA B406 que será usado para fazer o flash via interface JTAG SWD (Segger J-LINK). Assim que a placa for conectada e reconhecida, ela será listada na guia CONNECTED DEVICES, conforme mostrado.

Em seguida, clique no botão Flash . O nRF Connect for VS Code fará o upload do código compilado para a placa selecionada. Para piscar, primeiro, a extensão especifica o diretório de build, usando

 west flash --build-dir path/to/build/directory


Caso tenha o seguinte erro

ERROR: Unable to connect to a debugger.
ERROR: JLinkARM DLL reported an error. Try again. If error condition
ERROR: persists, run the same command again with argument --log, contact Nordic
ERROR: Semiconductor and provide the generated log.log file to them.
NOTE: For additional output, try running again with logging enabled (--log).
NOTE: Any generated log error messages will be displayed.
FATAL ERROR: command exited with status 33: nrfjprog --program 'c:\ncs\v2.5.0\zephyr\samples\sensor\bme680\build\zephyr\zephyr.hex' --sectoranduicrerase --verify -f NRF52 --snr 4294967295

Seu J-LINK não é oficial.

Então você terá que gravar pelo J-LINK FLASH LITE

C:\ncs\v2.5.0\zephyr\samples\sensor\bme680\build\zephyr\zephyr.hex

Em caso de sucesso, você deve ser capaz de ver os dados do BME680 sendo impressos como resultado após conectar-se ao terminal serial (TERATERM)

Depurando o Firmware (somente com J-LINK OFICIAL)

Vamos explorar um dos últimos recursos do nRF Connect for VS Code, ou seja, depuração de código. Como o Nordic nRF5340-DK inclui um probe de depuração integrado, podemos usar os recursos de depuração sem nenhuma configuração extra. Para iniciar a sessão de depuração, primeiro vamos definir um ponto de interrupção em nosso código e clicar no botão “Debug” na guia ACTIONS .

Uma vez que a sessão de depuração começa, pode-se percorrer o código usando botões de controle, definir pontos de interrupção e adicionar variáveis ​​ao Watch window mostrado abaixo.

Conclusão

A curva de aprendizado para nRF Connect for VS Code é curta e rápida. Com o editor de código VS e seu autocomplete de código poderoso, agora você pode escrever códigos mais rápido e melhor para seus projetos Zephyr.

Esperançosamente, na versão futura, todas as dependências necessárias para fazer o trabalho de extensão nRF Connect serão instaladas e gerenciadas automaticamente.

Resumindo, nRF Connect for VS Code é um grande passo em frente para o ecossistema de desenvolvimento Zephyr RTOS. Para mim, pelo menos, vai substituir completamente o meu ambiente de desenvolvimento do dia-a-dia. O sistema de gerenciamento de cadeia de ferramentas dentro da extensão é excelente e trará grandes aumentos de produtividade para o desenvolvimento embarcado.

Usarei nRF Connect for VS Code para muitos de meus próximos projetos e também revisitaremos nRF Connect for VS Code em um futuro próximo para aprender mais sobre os recursos avançados deste maravilhoso ambiente de desenvolvimento quando a versão completa for lançada por o Nordic Semi.

Se você tiver perguntas ou comentários, sinta-se à vontade para me enviar um e-mail ou postá-los no fórum de suporte técnico do Nordic.

Boa codificação!

Questões: suporte@smartcore.com.br

Outras referências

content.u-blox.com/sites/default/files/NINA-B40_DataSheet_UBX-19049405.pdf

开发你的第一个NCS(Zephyr)应用程序 - iini - 博客园 (cnblogs.com)

Uninstall visual studio code in windows - Stack Overflow

DEVICE_DT_GET_ONE - ERROR - Nordic Q&A - Nordic DevZone - Nordic DevZone (nordicsemi.com)

Hi @Miguel,

If I am correct, the nRF Connect extension currently only recognizes Nordic's nRF dev kits with J-Link OB IF and show their names. You can still use standalone J-Link/Trace devices for programming and debugging (as you have done), but the device name will not show as they are used for general purposes.

Nordic's nRF dev kits come with their own Vendor IDs which makes the extension recognize the names, similar to their NRF Connect Programmer. 

Hope this clarifies your question.

-Rajeev


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

terça-feira, 26 de outubro de 2021

NINA B302 - zephyr - Platformio - lendo BME280 e acessando via BLE

 

VEJA ISTO PRIMEIRO

How to install the extension - nRF Connect for VS Code

O objetivo deste BLOG é demonstrar de forma resumida como é possível fazer com que o módulo NINA B302 possa rodar o RTOS Zephry, mas utilizando o Framework NRF Connect +  RTOS via Visual Code. 

Neste projeto, construiremos um dispositivo BLE (Bluetooth Low Energy) que transmite dados de um sensor de temperatura / umidade BME280. Para isso, utilizaremos o Zephyr RTOS na placa EVK-NINA-B302 com base no Nordic nRF52840 SoC. Para programar o utilizaremos o J-LINK.

Você pode fazer "Advertising" de vários sensores




Sobre RTOS Zephyr

O sistema operacional Zephyr é baseado em um kernel de pequena dimensão projetado para uso em sistemas com recursos restritos e embarcados: de sensores ambientais incorporados simples e wearables de LED a sofisticados controladores embarcados, relógios inteligentes e aplicativos sem fio IoT.

O Projeto Zephyr RTOS é um esforço recente da Fundação Linux para fornecer ao mundo embarcado um Sistema Operacional em Tempo Real gratuito, seguro e completo. Ele foi projetado desde o início para ser um RTOS moderno, escalável, seguro e responsivo com um foco claro em protocolos e fundações de IoT. Este RTOS de código aberto é licenciado pelo Apache 2.0 e possui um modelo de desenvolvimento totalmente aberto

Recentemente, a Nordic contribuiu com portas para todos os CIs baseados em Cortex-M (nRF51, nRF52832  (NINA B1) e nRF52840 (NINA B3), bem como um Controlador BLE de fonte aberta (Link Layer + HCI) totalmente funcional, altamente otimizado para a família de ICs nRF5x. Isto significa que você pode clonar, construir e executar o Zephyr hoje e aproveitar todos os recursos que ele permite, incluindo muitos perfis BLE padrão, IPv6 sobre BLE e um conjunto rico de APIs e funcionalidades que se esperaria de um RTOS moderno. Além disso, todas as linhas de código, incluindo o Host e o Controlador BLE, são totalmente de código aberto, permitindo que você modifique e modifique seu comportamento ou até mesmo estenda isso à vontade. Você pode até mesmo construir seu próprio controlador e depois usá-lo para controlá-lo de uma pilha Host externa ou executar o resto do RTOS em seu computador utilizando o QEMU!

Características


O Zephyr oferece um grande e crescente número de recursos, incluindo:

Extenso conjunto de serviços do kernel

A Zephyr oferece vários serviços familiares para desenvolvimento:

Serviços de multiencadeamento para encadeamentos cooperativos, com base em prioridade, não preemptivos e preemptivos, com fatiamento de tempo round-robin opcional. Inclui suporte à API compatível com POSIX pthreads.
Serviços de interrupção para registro em tempo de compilação de manipuladores de interrupção.
Serviços de alocação de memória para alocação dinâmica e liberação de blocos de memória de tamanho fixo ou variável.
Serviços de Sincronização Inter-thread para semáforos binários, semáforos de contagem e semáforos mutex.
Serviços de transmissão de dados entre threads para filas de mensagens básicas, filas de mensagens aprimoradas e fluxos de bytes.
Serviços de gerenciamento de energia, como inatividade sem marcas e uma infraestrutura avançada inativa.

Algoritmos de Agendamento Múltiplos

O Zephyr fornece um conjunto abrangente de opções de agendamento de threads:

Programação Cooperativa e Preemptiva
Primeiro Prazo Primeiro (EDF)
Programação de meta-IRQ implementando o comportamento “interromper a metade inferior” ou “tarefa”
Timeslicing: permite a divisão de tempo entre encadeamentos preemptivos de prioridade igual
Várias estratégias de enfileiramento:
Fila pronta de lista vinculada simples
Fila pronta de árvore vermelha / preta
Fila pronta multi-fila tradicional

Altamente configurável / modular para flexibilidade

Permite que um aplicativo incorpore somente os recursos de que precisa, conforme necessário, e especifique sua quantidade e tamanho.

Arquitetura Cruzada

Suporta uma ampla variedade de placas suportadas com diferentes arquiteturas de CPU e ferramentas de desenvolvedor. Contribuições adicionaram suporte para um número crescente de SoCs, plataformas e drivers.

Proteção de Memória

Implementa proteção de estouro de pilha específica para arquitetura configurável, rastreamento de permissão de objeto de kernel e driver de dispositivo e isolamento de thread com proteção de memória em nível de encadeamento em arquiteturas x86, ARC e ARM, espaço de usuário e domínios de memória.

Para plataformas sem MMU / MPU e dispositivos com memória restrita, suporta a combinação de código específico de aplicativo com um kernel personalizado para criar uma imagem monolítica que seja carregada e executada no hardware de um sistema. Tanto o código do aplicativo quanto o código do kernel são executados em um único espaço de endereçamento compartilhado.

Definição de Recurso em Tempo de Compilação

Permite que os recursos do sistema sejam definidos em tempo de compilação, o que reduz o tamanho do código e aumenta o desempenho de sistemas com recursos limitados.

Modelo de driver de dispositivo otimizado

Fornece um modelo de dispositivo consistente para configurar os drivers que fazem parte da plataforma / sistema e um modelo consistente para inicializar todos os drivers configurados no sistema e permite a reutilização de drivers em plataformas que possuem dispositivos comuns / bloqueios de IP

Suporte a árvore de dispositivos

Uso de Device Tree (DTS) para descrever informações de hardware e configuração para placas. As informações do DTS serão usadas somente durante o tempo de compilação. Informações sobre o sistema são extraídas do DTS compilado e usadas para criar a imagem do aplicativo.

Rede Nativa Stack suportando vários protocolos

O suporte de rede é totalmente caracterizado e otimizado, incluindo suporte compatível com sockets LwM2M e BSD. O suporte a OpenThread (em chipsets NORDIC) também é fornecido - uma rede em malha projetada para conectar de forma segura e confiável centenas de produtos ao redor da casa.

Suporte para Bluetooth Low Energy 5.0


Compatível com Bluetooth 5.0 (ESR10) e suporte a controlador de baixa energia Bluetooth (LE Link Layer). Inclui BLE Mesh e um controlador BLE pronto para qualificação Bluetooth.

Perfil genérico de acesso (GAP) com todas as funções possíveis de LE.
GATT (Perfil de Atributo Genérico)
Suporte de emparelhamento, incluindo o recurso Conexões seguras do Bluetooth 4.2
Clara a abstração do driver de HCI
Interface HCI bruta para executar o Zephyr como um Controlador em vez de uma pilha Host completa
Verificado com vários controladores populares
Altamente configurável

Suporte de malha (MESH)

Recursos de relé, nó de amigo, nó de baixa potência (LPN) e proxy do GATT
Ambos os portadores de provisionamento suportados (PB-ADV e PB-GATT)
Altamente configurável, encaixando em dispositivos com pelo menos 16k de RAM

Linux nativo, macOS e Windows Development


Um ambiente de compilação CMake de linha de comando é executado em sistemas populares de sistemas operacionais de desenvolvedores. Uma porta POSIX nativa, permite criar e executar o Zephyr como um aplicativo nativo no Linux e em outros sistemas operacionais, auxiliando no desenvolvimento e nos testes.

Interface de sistema de arquivos virtual com suporte a NFFS e FATFS

Sistema de arquivos Flash Newtron (NFFS) e suporte a FATFS, FCB (Flash Circular Buffer) para aplicativos com restrições de memória e aprimoramentos do sistema de arquivos para criação de log e configuração.

Estrutura poderosa de log de vários back-ends

Suporte para filtragem de log, despejo de objetos, modo de pânico, múltiplos backends (memória, rede, sistema de arquivos, console, ..) e integração com o subsistema shell.

Interface amigável e cheia de recursos do Shell

Um subsistema de shell de várias instâncias com recursos fáceis de usar, como autocompletar, curingas, coloração, metacarys (setas, backspace, ctrl + u, etc.) e histórico. Suporte para comandos estáticos e subcomandos dinâmicos.


Configurações no armazenamento não volátil

O subsistema de configurações fornece aos módulos uma maneira de armazenar a configuração persistente por dispositivo e o estado de tempo de execução. Os itens de configurações são armazenados como sequências de pares de valores-chave.

Armazenamento não volátil (NVS)

O NVS permite o armazenamento de blobs binários, strings, inteiros, longs e qualquer combinação destes.

Porta POSIX nativa


Suporta rodar o Zephyr como um aplicativo Linux com suporte para vários subsistemas e redes.

O que é nRF Connect for Visual Studio Code?

Nordic Semiconductor anunciou recentemente e lançou uma versão de amostra de seu nRF Connect for VS Code.

nRF Connect for VS Code é simplesmente uma extensão do Visual Studio Code. Ele permite que os usuários do nRF Connect SDK e Zephyr RTOS:

  • Desenvolva seu código de aplicativo
  • Build e gerar o firmware do aplicativo
  • Flash a imagem para o dispositivo e
  • Depurar aplicativos

direto do ambiente do VS Code. 

Esta extensão utiliza o nRF Connect SDK e Zephyr RTOS pré-instalados, permitindo aos desenvolvedores alternar entre o código VS ou a linha de comando para o desenvolvimento do projeto. Quão legal é isso :)

Embora esta extensão seja direcionada para nRF Connect SDK e Zephyr RTOS, ela foi construída para fazer uma coisa, e fazer isso direito: tornar o desenvolvimento baseado em Zephyr uma brisa. Para uma experiência perfeita, a extensão fornece recursos extensivos de desenvolvimento e depuração para dispositivos da série Nordic nRF91, nRF53 e nRF52 no Windows, macOS e Linux. A extensão pode reconhecer nRF dev kits com a interface J-Link OB e mostrar seus nomes. Os desenvolvedores também podem usar dispositivos J-Link / Trace autônomos para programar e depurar os respectivos dispositivos.

BME280

- O Sensor de Pressão BME280 é um exclusivo modelo capaz de realizar a medição de pressão atmosférica, umidade e temperatura, também conhecido como barômetro é um módulo digital de alta capacidade e resolução, utilizado nas mais diversas aplicações junto a microcontroladores, entre eles, o Arduino.
- Utilizado em projetos de estações meteorológicas e aperfeiçoamento de navegação GPS, ele apresenta grande potencial e mostra ser um produto de grande auxílio para projetistas que procuram um exclusivo produto capaz de executar as três funcionalidades principais sem ocupar muito espaço.
- Através de seu padrão de conexão por I2C, o Sensor de Pressão BME280 aumenta a sua praticidade de utilização, além de contribuir na maior precisão da obtenção de resultados.
- Desenvolvido com base no sensor Bosh ME280, o Sensor possui design simplificado com pequenas dimensõe que tornam este pequeno módulo um produto de fácil adaptação nos mais diversificados projetos, além de contar com 2 exclusivos furos para melhorar a fixação do mesmo junto aos mais diversificados projetos.

CARACTERÍSTICAS:

- Sensor de Pressão BME280;
- Sensor de Umidade;
- Sensor de Temperatura;
- Produto pequeno de fácil utilização;
- Sistema de comunicação I2C;
- Compatível com diversos modelos de microcontroladores;
- Acompanha barra de pinos 180º;

ESPECIFICAÇÕES:

- Modelo:BME280;
- Tensão de operação: 1,8 a 3,6VDC;
- Faixa de Umidade: 0 a 100%;
- Faixa de Temperatura: -40 a 85ºC;
- Faixa de Pressão: 300 a 1100hPa;
- Precisão da umidade: 0,008%;
- Precisão da temperatura: 0,01ºC;
- Precisão da pressão: +/- 1Pa;
- Comunicação: I2C (até 3,4MHz) e SPI (até 10MHz);
- Dimensões (CxLxA): 15,5x11,5x2,5mm;
- Peso: 1,5g.


Resumo de Instalação (PLATFORMIO) e PROJETO ZEPHYR BLE

Ver BLOG

Abra o exemplo HELLO_WORLD (projeto será reaproveitado), configure para 52840_DK e então cole o exemplo abaixo

Não esquecer de alterar PRJ.CONF para

# nothing here
CONFIG_BT=y

##########
# for i2c
##########
CONFIG_I2C=y

##########
CONFIG_SENSOR=y
CONFIG_BME280=y





Código fonte
/* * Copyright (c) 2020 Nordic Semiconductor ASA * * SPDX-License-Identifier: Apache-2.0 */ #include <bluetooth/bluetooth.h> #include <bluetooth/hci.h> #include <drivers/sensor/ccs811.h> #include <drivers/gpio.h> #include <sys/printk.h> #include <zephyr/types.h> #define DEVICE_NAME "Smartcore" #define DEVICE_NAME_LEN (sizeof(DEVICE_NAME) - 1) static volatile unsigned char mfg_data[] = { 0x00, 0x00, 0xaa, 0xbb }; static const struct bt_data ad[] = { BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)), BT_DATA(BT_DATA_MANUFACTURER_DATA, mfg_data, 4) }; /* Set Scan Response data */ static const struct bt_data sd[] = { BT_DATA(BT_DATA_NAME_COMPLETE, DEVICE_NAME, DEVICE_NAME_LEN), }; static void bt_ready(int err) { if (err) { return; } /* Start advertising */ err = bt_le_adv_start(BT_LE_ADV_NCONN, ad, ARRAY_SIZE(ad), sd, ARRAY_SIZE(sd)); if (err) { return; } } const struct device *dev_bme280; const struct device *port0; //BME280 data void update_sensor_data() { // get sensor data struct sensor_value temp,humidity; sensor_sample_fetch(dev_bme280); sensor_channel_get(dev_bme280, SENSOR_CHAN_AMBIENT_TEMP, &temp); sensor_channel_get(dev_bme280, SENSOR_CHAN_HUMIDITY, &humidity); mfg_data[2] = (uint8_t) temp.val1; mfg_data[3] = (uint8_t) humidity.val1; } void main(void) { int err; dev_bme280 = device_get_binding("BME280"); /* Initialize the Bluetooth Subsystem */ err = bt_enable(bt_ready); if (err) { } while(1) { k_sleep(K_MSEC(4000)); update_sensor_data(); bt_le_adv_update_data(ad, ARRAY_SIZE(ad), NULL, 0); } }





















EDITANDO

COMPILANDO


TRANSFERINDO PARA NINA B302
C:\Users\Usuario\ncs\v1.7.0\zephyr\samples\hello_world\build\zephyr\zephyr.hex

GPIOS DO NINA B302 PARA I2C e PARA SERIAL (CONSOLE)
prj.conf

UTILIZANDO BLE SCANNER

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