U-BLOX NINA B112 e PlatformIO - BLE ARDUINO
O objetivo deste BLOG é demonstrar como é possível utilizar o PlatformIO para programar o módulo U-BLOX NINA B112 e acencer um LED via BLE.
1) Baixe e instale o Visual Studio Code
2) Execute o Visual Studio Code
3) Na opção EXTENSIONS (canto esquerdo), procure por PlatformIO e Instale. Aguarde!
5) No PLATFORMIO, abra o projeto que se encontra em 
C:\platform-nordicnrf52\examples\arduino-ble-led>
C:\platform-nordicnrf52\examples\arduino-ble-led>
Se o SDK não existir, levará um tempo para instalação do mesmo.
6) ALTERE
// LED pin
#define LED_PIN 8  //IO1 DO BREAKOUT
7) Compile (seja paciente), a primeira vez demora mais tempo.
9) Abra o BLE SCANNER em seu CELULAR
Escreva 01 e o LED vai acender! Escreve 00 que o LED vai apagar!
Se você gosta da IDE do ARDUINO, então instale os exemplos da ADAFRUIT em preferences 
PS: neste caso, o HEX gerado deve ser gravado manualmente no NINA B112, por não dispor do BOOTLOADER.
PS: requer mudanças nos arquivos variant.h e variant.cpp para ser compatível com GPIO do NINA B112.
const uint32_t g_ADigitalPinMap[] = {
  // D5 E D8 NC
  NC,  // xtal 1 //0
  NC,  // xtal 2 //1
  NINA_B1_GPIO_24,  // A0 SDA //2 **
  NINA_B1_GPIO_25,  // A1 SCL //3 **
  NINA_B1_GPIO_27,  // A2  //4 **
  NINA_B1_GPIO_23,  // D0 RXD //5 **
  NINA_B1_GPIO_22,  // D1 TXD //6 **
  NINA_B1_GPIO_21,  // D2 CTS     //7 **
  // D8 - D13
  NINA_B1_GPIO_1,      // D9 RED LED1 //8 **
  NINA_B1_GPIO_28,     // D6 NFC1     //9 **
  NINA_B1_GPIO_29,     // D7 NFC2     //10 **
  NINA_B1_GPIO_2, // D10 CS                 //11 **
  NINA_B1_GPIO_5, // D12 SCK                //12 **
  NINA_B1_GPIO_4, // D11 MOSI               //13 **
  NINA_B1_GPIO_3, // D13 MISO               //14 **
  NC,                                       //15 **
  NINA_B1_GPIO_7, // SW1 GREEN LED2         //16 **
  NC,                                   //17 **
  NINA_B1_GPIO_SWO , // D4              //18 **
  NC,                                   //19 **
  NC,                                   //20 **
  NINA_B1_GPIO_RESET, // Reset          //21 ???
  NC,                                   //22 **
  NC,                                   //23 **
  NC,                                   //24 **
  NINA_B1_GPIO_24, // SDA A0            //25  **
  NINA_B1_GPIO_25, // SCL A1            //26  **
  NC,                                   //27  **
  NINA_B1_GPIO_16, // A5                //28  **
  NINA_B1_GPIO_17, // A4                //29  **
  NINA_B1_GPIO_18, // A3  SW2 BLUE LED3 //30  **
  NINA_B1_GPIO_21, // D3  RTS           //31  **
};
// nRF52 pin names
#define p0  0
#define p1  1
#define p2  2
#define p3  3
#define p4  4
#define p5  5
#define p6  6
#define p7  7
#define p8  8
#define p9  9
#define p10  10
#define p11  11
#define p12  12
#define p13  13
#define p14  14
#define p15  15
#define p16  16
#define p17  17
#define p18  18
#define p19  19
#define p20  20
#define p21  21
#define p22  22
#define p23  23
#define p24  24
#define p25  25
#define p26  26
#define p27  27
#define p28  28
#define p29  29
#define p30  30
#define p31  31
#define NC  (int)0xFFFFFFFF
//NINA-B1 module pin names
#define NINA_B1_GPIO_1   p8
#define NINA_B1_GPIO_2   p11
#define NINA_B1_GPIO_3   p12
#define NINA_B1_GPIO_4   p13
#define NINA_B1_GPIO_5   p14
#define NINA_B1_GPIO_7   p16
#define NINA_B1_GPIO_8   p18
#define NINA_B1_GPIO_16  p28
#define NINA_B1_GPIO_17  p29
#define NINA_B1_GPIO_18  p30
#define NINA_B1_GPIO_19  p21
#define NINA_B1_GPIO_20  p31
#define NINA_B1_GPIO_21  p7
#define NINA_B1_GPIO_22  p6
#define NINA_B1_GPIO_23  p5
#define NINA_B1_GPIO_24  p2
#define NINA_B1_GPIO_25  p3
#define NINA_B1_GPIO_27  p4
#define NINA_B1_GPIO_28  p9
#define NINA_B1_GPIO_29  p10
#define NINA_B1_GPIO_BOOT  p23
#define NINA_B1_GPIO_CS1   p15
#define NINA_B1_GPIO_SWO   p25
#define NINA_B1_GPIO_RESET p21
// EVK-NINA-B1 board
#define NINA_LED1  NINA_B1_GPIO_1 // Red
#define NINA_LED2  NINA_B1_GPIO_7 // Green/SW1
#define NINA_LED3  NINA_B1_GPIO_8 // Blue
#define NINA_LED4  NC
#define NINA_SW1   NINA_B1_GPIO_7
#define NINA_SW2   NINA_B1_GPIO_18
#define NINA_D0   NINA_B1_GPIO_23
#define NINA_D1   NINA_B1_GPIO_22
#define NINA_D2   NINA_B1_GPIO_21
#define NINA_D3   NINA_B1_GPIO_20
#define NINA_D4   NINA_B1_GPIO_8
#define NINA_D5   NC // SWDIO
#define NINA_D6   NINA_B1_GPIO_28
#define NINA_D7   NINA_B1_GPIO_29
#define NINA_D8   NC // SWDCLK
#define NINA_D9   NINA_B1_GPIO_1
#define NINA_D10  NINA_B1_GPIO_2
#define NINA_D11  NINA_B1_GPIO_4
#define NINA_D12  NINA_B1_GPIO_3
#define NINA_D13  NINA_B1_GPIO_5
#define NINA_D14  NINA_B1_GPIO_24
#define NINA_D15  NINA_B1_GPIO_25
#define NINA_A0   NINA_B1_GPIO_25
#define NINA_A1   NINA_B1_GPIO_24
#define NINA_A2   NINA_B1_GPIO_27
#define NINA_A3   NINA_B1_GPIO_18
#define NINA_A4   NINA_B1_GPIO_17
#define NINA_A5   NINA_B1_GPIO_16
// Nordic SDK pin names
#define NINA_RX_PIN_NUMBER   NINA_B1_GPIO_23
#define NINA_TX_PIN_NUMBER   NINA_B1_GPIO_22
#define NINA_CTS_PIN_NUMBER  NINA_B1_GPIO_21
#define NINA_RTS_PIN_NUMBER  NINA_B1_GPIO_20
//i2c
#define NINA_I2C_SDA0  NINA_B1_GPIO_24
#define NINA_I2C_SCL0  NINA_B1_GPIO_25
// LEDs
#define PIN_LED1                NINA_LED1
#define PIN_LED2                NINA_LED2
#define PIN_LED3                NINA_LED3
#define LED_BUILTIN             PIN_LED1
#define LED_CONN                PIN_LED2
#define LED_RED                  PIN_LED1
#define LED_GREEN                PIN_LED2
#define LED_BLUE                 PIN_LED3
#define LED_STATE_ON            1         // State when LED is litted
// Buttons
// KEY
#define PIN_BUTTON1             NINA_SW1
#define PIN_BUTTON2             NINA_SW2
/*
 * Analog pins
 */
#define PIN_A0               NINA_A0
#define PIN_A1               NINA_A1
#define PIN_A2               NINA_A2
#define PIN_A3               NINA_A3
#define PIN_A4               NINA_A4
#define PIN_A5               NINA_A5
static const uint8_t A0  = PIN_A0 ;
static const uint8_t A1  = PIN_A1 ;
static const uint8_t A2  = PIN_A2 ;
static const uint8_t A3  = PIN_A3 ;
static const uint8_t A4  = PIN_A4 ;
static const uint8_t A5  = PIN_A5 ;
static const uint8_t D0  = NINA_D0;
static const uint8_t D1  = NINA_D1;
static const uint8_t D2  = NINA_D2;
static const uint8_t D3  = NINA_D3;
static const uint8_t D4  = NINA_D4;
static const uint8_t D5  = NINA_D5;
static const uint8_t D6  = NINA_D6;
static const uint8_t D7  = NINA_D7;
static const uint8_t D8  = NINA_D8;
static const uint8_t D9  = NINA_D9;
static const uint8_t D10 = NINA_D10;
static const uint8_t D11 = NINA_D11;
static const uint8_t D12 = NINA_D12;
static const uint8_t D13 = NINA_D13;
static const uint8_t D14 = NINA_D14;
static const uint8_t D15 = NINA_D15;
static const uint8_t BOOT = NINA_B1_GPIO_BOOT; //OK
static const uint8_t CS1  = NINA_B1_GPIO_CS1; //OK
static const uint8_t SWO  = NINA_B1_GPIO_SWO; //OK
// Buttons
// KEY
#define PIN_BUTTON1             NINA_SW1
#define PIN_BUTTON2             NINA_SW2
//
#define ADC_RESOLUTION    14
// Other pins
#define PIN_NFC1           NINA_B1_GPIO_28
#define PIN_NFC2           NINA_B1_GPIO_29
/*
 * Serial interfaces
 */
// Serial
#define PIN_SERIAL_RX       NINA_B1_GPIO_23
#define PIN_SERIAL_TX       NINA_B1_GPIO_22
/*
 * SPI Interfaces
 */
#define SPI_INTERFACES_COUNT 1
#define PIN_SPI_MISO         NINA_B1_GPIO_3
#define PIN_SPI_MOSI         NINA_B1_GPIO_4
#define PIN_SPI_SCK          NINA_B1_GPIO_5
#define PIN_SPI_CS           NINA_B1_GPIO_2
static const uint8_t SS   = PIN_SPI_CS;
static const uint8_t MOSI = PIN_SPI_MOSI ;
static const uint8_t MISO = PIN_SPI_MISO ;
static const uint8_t SCK  = PIN_SPI_SCK ;
/*
 * Wire Interfaces
 */
#define WIRE_INTERFACES_COUNT 1
#define PIN_WIRE_SDA         NINA_B1_GPIO_24
#define PIN_WIRE_SCL         NINA_B1_GPIO_25
10) Questões: suporte@smartcore.com.br
FONTES: 
https://github.com/platformio/platform-nordicnrf52
https://www.u-blox.com/sites/default/files/NINA-B1_DataSheet_%28UBX-15019243%29.pdf
https://learn.adafruit.com/bluefruit-nrf52-feather-learning-guide/arduino-bsp-setup
https://www.u-blox.com/sites/default/files/NINA-B1_DataSheet_%28UBX-15019243%29.pdf
https://learn.adafruit.com/bluefruit-nrf52-feather-learning-guide/arduino-bsp-setup
Sobre a SMARTCORE
A SmartCore fornece módulos para comunicação wireless, biometria, conectividade, rastreamento e automação.Nosso portifó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










