NinaSense Wiki

Guia de desenvolvimento

Instalação no Arduino IDE, configuração do ambiente, programação via SWD, exemplos de sketches e referências para desenvolver aplicações BLE, LoRa e sensores de ultra baixo consumo com o NinaSense.

1. Visão geral

O NinaSense utiliza o Nordic nRF52832 e integra Bluetooth Low Energy e rádio LoRa baseado no LLCC68. A placa foi projetada para aplicações alimentadas por bateria, eliminando circuitos desnecessários que aumentariam a corrente de repouso.

Recursos principais
  • nRF52832 ARM Cortex-M4F.
  • Bluetooth Low Energy.
  • LoRa / FSK com LLCC68.
  • XTAL de 32,768 kHz para operação low power.
  • 8 GPIOs, sendo 3 com capacidade analógica.
  • Interface dedicada para DS18B20.
  • Conector FPC para Hall Sensor na versão especial.
  • LIS2DH12 opcional.
  • Programação e debug via SWD.

2. Instalação no Arduino IDE

O NinaSense pode ser desenvolvido com o ecossistema Arduino para nRF52. O procedimento abaixo utiliza o BSP Adafruit nRF52 como base.

2.1 Adicionar o BSP nRF52

  1. Abra o Arduino IDE.
  2. Acesse Preferências.
  3. Em URLs adicionais para Gerenciadores de Placas, adicione:
https://adafruit.github.io/arduino-board-index/package_adafruit_index.json
  1. Abra o Gerenciador de Placas.
  2. Procure por Adafruit nRF52 by Adafruit.
  3. Instale o pacote e reinicie o Arduino IDE.
Perfil NinaSense: quando o pacote específico NinaSense estiver instalado no BSP, selecione o perfil correspondente em Tools → Board. Em instalações de desenvolvimento, um perfil nRF52832 compatível pode ser usado como base, desde que pinagem, SoftDevice e método de gravação estejam configurados corretamente.

2.2 Bibliotecas recomendadas

  • Bluefruit52Lib para Bluetooth LE no BSP Adafruit.
  • Driver LoRa compatível com o LLCC68 utilizado no seu firmware.
  • OneWire e DallasTemperature para DS18B20.
  • Biblioteca LIS2DH12 quando a versão da placa possuir acelerômetro.

3. Programação via SWD

O NinaSense possui header de programação e debug SWD. A sequência do conector H1, da esquerda para a direita, é:

PinoSinalFunção
1SWDIODados SWD
2SWCLKClock SWD
3VDDNRFReferência de tensão do alvo
4GNDTerra

Podem ser utilizados programadores/debuggers compatíveis com SWD, como SEGGER J-Link e ferramentas suportadas pelo ecossistema Nordic.

Atenção: confirme sempre a tensão de referência do alvo antes de conectar o programador. O pino VDDNRF é referência de tensão e não deve ser tratado automaticamente como uma entrada de alimentação de alta corrente.

4. Pinagem principal

InterfaceDescrição
VBAT / GNDEntrada principal de alimentação.
+3VSaída regulada de 3 V para periféricos externos, até 300 mA conforme projeto.
GPIO8 GPIOs de uso geral.
ADC3 GPIOs com capacidade analógica.
DS18B20Interface dedicada para sensor de temperatura digital.
FPCInterface para Hall Sensor de baixo consumo na versão especial.
BLE U.FLConector para antena Bluetooth externa.
LoRaConexão SMA ou antena helicoidal, conforme versão.

5. Exemplos de sketches

5.1 Blink sem LED permanente

Como a placa não possui LED permanente por projeto, use um GPIO conectado externamente a um LED com resistor para testes.

const int TEST_PIN = 11; // ajuste para o GPIO usado void setup() { pinMode(TEST_PIN, OUTPUT); } void loop() { digitalWrite(TEST_PIN, HIGH); delay(200); digitalWrite(TEST_PIN, LOW); delay(800); }

5.2 Leitura analógica

const int ADC_PIN = A0; // ajuste conforme o mapeamento da placa void setup() { Serial.begin(115200); } void loop() { int value = analogRead(ADC_PIN); Serial.println(value); delay(1000); }

5.3 BLE Advertising

#include <bluefruit.h> void setup() { Bluefruit.begin(); Bluefruit.setName("NINASENSE"); Bluefruit.Advertising.addFlags(BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE); Bluefruit.Advertising.addName(); Bluefruit.Advertising.setInterval(3200, 3200); // 2 s em unidades de 0,625 ms Bluefruit.Advertising.start(0); } void loop() { delay(1000); }

5.4 DS18B20

#include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 5 // ajuste ao GPIO da interface DS18B20 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup() { Serial.begin(115200); sensors.begin(); } void loop() { sensors.requestTemperatures(); Serial.println(sensors.getTempCByIndex(0)); delay(2000); }

6. Desenvolvimento Low Power

Para obter o menor consumo possível, mantenha periféricos desligados quando não estiverem em uso, reduza a frequência de advertising e transmissões LoRa, utilize o XTAL de 32,768 kHz e coloque o processador em modos de sleep adequados ao firmware.

  • Evite polling contínuo.
  • Prefira interrupções e wake-up por evento.
  • Desligue sensores externos entre medições.
  • Use a saída +3 V apenas quando o periférico precisar estar energizado.
  • Meça a corrente pelos test points da placa durante a otimização.
  • Considere os picos de corrente do rádio LoRa ao selecionar CR2032 ou outras baterias pequenas.

7. LoRa / LLCC68

O LLCC68 permite operação LoRa e FSK com potência, spreading factor e outros parâmetros configuráveis. A configuração deve respeitar a frequência autorizada para a região e a implementação específica do firmware.

O exemplo exato de inicialização LoRa depende do driver utilizado no projeto. Esta Wiki pode receber uma seção específica para a biblioteca oficial do NinaSense quando o pacote Arduino for publicado.

8. Bluetooth Low Energy

O nRF52832 permite utilizar advertising, conexões GATT, serviços personalizados e comunicação local com smartphones e gateways BLE. Para aplicações de bateria, o intervalo de advertising tem grande impacto no consumo médio.

9. Sensores e periféricos

A versão especial pode integrar acelerômetro LIS2DH12 e interface FPC para Hall Sensor de baixo consumo. O NinaSense também oferece interface dedicada ao DS18B20 e GPIOs para sensores digitais ou analógicos.

10. Debug e troubleshooting

A placa não aparece como porta serial

O NinaSense não utiliza conversor USB/Serial permanente. Para depuração, utilize SWD/J-Link, RTT ou uma UART externa, conforme a configuração do firmware.

Consumo acima do esperado

Verifique periféricos ativos, pull-ups, GPIOs flutuantes, sensores alimentados, rádio LoRa, advertising BLE, debugger conectado e eventuais caminhos de corrente pelo programador.

Falha ao programar via SWD

Confira SWDIO, SWCLK, VDDNRF e GND, tensão do alvo, velocidade do debugger e se o chip está protegido contra leitura/gravação.