Acessando U-BLOX NINA B302 via BLE SERIAL
Transmitindo "e" Recebendo Dados
O
objetivo deste BLOG é mostrar um exemplo de CircuitPython que permite o
NINA B302 se comunicar com o celular via Bluetooth e mandar e receber Dados, conhecido como BLE SERIAL, uma das formas mais parecidas com a UART SERIAL, modo TERMINAL.
BLE serial também é comum no U-BLOX NINA W102
Foi utilizado um módulo U-BLOX NINA B302 para testes
Diferente
do NINA B1, o B302 tem uma USB a qual permite que você possa criar um
COM virtual e MSD e copiar os programas, graças ao bootloader do time da
Adafruit.
Adafruit Team
1) Montagem
Um cabo USB foi soldado em D+, D-, GND e VBUS do NINA B302
2) Com seu gravador SEGGER J-TAG, será necessário gravar o BOOTLOADER da Adafruit
Instale os drivers da Adafruit
Também copie o SoftDevice
3) Conecte a USB no seu PC e os drivers serão instalados. Uma MSD vai aparecer, copie para ele o arquivo abaixo.
Este arquivo é o python Engine!
Instale
adafruit_drivers_2.3.4.0.exe
Altere em Adafruity_usbser.inf, caso contrário, o Windows não vai detectar o CDC (Serial)
USB\VID_1B4F&PID_5289&REV_0100&MI_00
4)
Desconecte e conecte a USB no seu PC e os novos drivers serão
instalados. Uma COM virtual aparecerá, na figura abaixo, apareceu COM55 e
um MSD
A COM é para ser o terminal de comunicação serial com o PYTHON, o MSD (CIRCUITPY) é para transferir o SCRIPT PYTHON
5) Executando um script python
Execute o EMU, abra a COM e tecle CONTROL-D, você verá as boas vindas do Python.
Será necessário agora baixar os módulos (libraries) compilados para executar com programa BLE.
Entre no link
E baixe a última versão dos módulo.
adafruit-circuitpython-bundle-versao.x-mpy-20190426.zip
Crie uma pasta "lib" no drive CIRCUITPY e descompacte a pasta abaixo!
Agora é hora de testar o exemplo BLE passo a passo! Digite o programa a seguir:
# Basic example for using the BLE Connect UART
# To use, start this program, and start the Adafruit Bluefruit LE Connect app.
# Connect, and then select UART. Any text received FROM the connected device
# will be displayed. Periodically, text is sent TO the connected device.
import time
from adafruit_ble import BLERadio
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
from adafruit_ble.services.nordic import UARTService
SEND_RATE = 10 # how often in seconds to send text
ble = BLERadio()
uart_server = UARTService()
advertisement = ProvideServicesAdvertisement(uart_server)
count = 0
while True:
print("WAITING...")
# Advertise when not connected.
ble.start_advertising(advertisement)
while not ble.connected:
pass
# Connected
ble.stop_advertising()
print("CONNECTED")
# Loop and read packets
last_send = time.monotonic()
while ble.connected:
# INCOMING (RX) check for incoming text
if uart_server.in_waiting:
raw_bytes = uart_server.read(uart_server.in_waiting)
text = raw_bytes.decode().strip()
# print("raw bytes =", raw_bytes)
print("RX:", text)
# OUTGOING (TX) periodically send text
if time.monotonic() - last_send > SEND_RATE:
text = "COUNT = {}\r\n".format(count)
print("TX:", text.strip())
uart_server.write(text.encode())
count += 1
last_send = time.monotonic()
# Disconnected
print("DISCONNECTED")
Execute
em seu celular o BLE Scanner, procure por CIRCUITPY então se conecte a
ele. Digite novamente e veja que estará conectado.
Se você salvar com o nome code.py, toda vez que resetar o NINA B302, ele já vai executar.
Questões: suporte@smartcore.com.br
FONTES:
https://learn.sparkfun.com/tutorials/nrf52840-development-with-arduino-and-circuitpython/all
https://www.u-blox.com/sites/default/files/NINA-B3_DataSheet_%28UBX-17052099%29.pdf
https://forums.adafruit.com/viewtopic.php?f=60&t=148531&start=30
https://circuitpython.readthedocs.io/en/2.x/shared-bindings/microcontroller/__init__.html?highlight=microcontroller
https://www.youtube.com/watch?v=bserx54ZJPM&list=PLKGiH5V9SS1g90s9mHTMPJT1i8N4fXWNT&index=2&t=0s
https://codewith.mu/
https://circuitpython.org/
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.