A primeira opção que vamos ver de programação é o CircuitPython. Para minha surpresa, existe uma versão específica para esta placa e razoável documentação sobre ela.
- Conecte um botão entre o pino de Reset e o GND.
- Ligue a placa a um micro, via USB, e aperte duas vezes o botão.
- O micro vai reconhecer um drive; dentro dele tem o arquivo INFO_UF2.TXT.
- Neste arquivo tem a versão do bootloder, precisa ser 0.6.1 ou maior.
- Se for menor que 6, baixe a versão mais atual (procure update-nice_nano_bootloader-x.x.x_nosd em https://github.com/adafruit/Adafruit_nRF52_Bootloader/releases/latest) e copie para o drive.
- Após a placa reiniciar, aperte novamente o botão duas vezes e confira novamente a versão.
No caso da minha placa, ela se identificou inicialmente como o drive "NICENANO", com bootloader versão 0.6.0.:
Após atualizar com update-nice_nano_bootloader-0.9.2_nosd.uf2:
Estando o bootloader correto instalado, basta copiar o arquivo uf2 do CircuitPython para o drive. Instalado o CircuitPython, você deve conseguir conectar com a IDE Thonny (configurada para CircuitPython generic).
Entre outras coisas, o CircuitPython possui suporte a BLE. Para isto é preciso instalar no diretório lib da placa os arquivos que estão em adrafruit_ble e adrafruit_hid do Adafruit CircuitPython Bundle.
Mova o botão que foi usado para o reset para entre o pino 009 e GND, carregue e rode o programa abaixo (adaptação de um dos exemplos do CircuitPython):
import time import board from digitalio import DigitalInOut, Direction, Pull import adafruit_ble from adafruit_ble.advertising import Advertisement from adafruit_ble.advertising.standard import ProvideServicesAdvertisement from adafruit_ble.services.standard.hid import HIDService from adafruit_ble.services.standard.device_info import DeviceInfoService from adafruit_hid.keyboard import Keyboard from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS from adafruit_hid.keycode import Keycode button = DigitalInOut(board.P0_09) button.direction = Direction.INPUT button.pull = Pull.UP hid = HIDService() device_info = DeviceInfoService(software_revision=adafruit_ble.__version__, manufacturer="DQSoft Industries") advertisement = ProvideServicesAdvertisement(hid) # Advertise as "Keyboard" (0x03C1) icon when pairing # https://www.bluetooth.com/specifications/assigned-numbers/ advertisement.appearance = 961 scan_response = Advertisement() scan_response.complete_name = "Magic Button" ble = adafruit_ble.BLERadio() if not ble.connected: print("advertising") ble.start_advertising(advertisement, scan_response) else: print("already connected") print(ble.connections) k = Keyboard(hid.devices) kl = KeyboardLayoutUS(k) while True: while not ble.connected: pass print("Start typing:") while ble.connected: if not button.value: # pull up logic means button low when pressed print("Sending") kl.write("DQSoft") # use keyboard_layout for words time.sleep(0.4) ble.start_advertising(advertisement)
A placa vai se apresentar como um teclado BLE. Uma vez pareado e conectado a um micro, vai digitar DQSoft sempre que o botão for apertado.
Nenhum comentário:
Postar um comentário