iOS とペアリングできたので、次はiPadとペアリングさせた。iPadをどこかに立てかけて、Kindleアプリで本を読んでるとページめくりが面倒なので、BLE接続のページめくりボタンを作ってみた。ソースは以下
(iOS上でKindleが動いている前提での) Kindleページめくり用ボタンの例
# original source: # https://github.com/adafruit/Adafruit_CircuitPython_BLE/blob/main/examples/ble_hid_periph.py # # SPDX-FileCopyrightText: 2020 ladyada for Adafruit Industries # SPDX-License-Identifier: MIT """ This example acts as a keyboard to peer devices. """ import sys import time import board from digitalio import DigitalInOut, Direction, Pull from adafruit_hid.keyboard import Keyboard from adafruit_hid.keyboard import Keycode 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 #setup User button on board btn = DigitalInOut(board.SWITCH) btn.direction = Direction.INPUT btn.pull = Pull.UP # Use default HID descriptor hid = HIDService() device_info = DeviceInfoService( software_revision=adafruit_ble.__version__, manufacturer="Adafruit Industries" ) advertisement = ProvideServicesAdvertisement(hid) advertisement.appearance = 961 scan_response = Advertisement() ble = adafruit_ble.BLERadio() if ble.connected: for c in ble.connections: c.disconnect() print("advertising") ble.start_advertising(advertisement, scan_response) kbd = Keyboard(hid.devices) while True: while not ble.connected: pass print("Start typing:") while ble.connected: if not btn.value: # if pushed kbd.send(Keycode.LEFT_ARROW) print("<-") time.sleep(0.5) # to avoid chattering time.sleep(0.1) ble.start_advertising(advertisement)
Git上のAdafruit_CircuitPython_BLEのble_hid_periph.pyをベースに、nRF52840上のユーザボタンが押されたら、ARROW_LEFTのコードを送信するよう改修した。何が悪いのか分からないが、時々ボタン操作したのに反応しない。ポーリング方式だから?
上記コードをファイル名: code.py としてFlashに書き込むと、nRF52840の電源をOnした際に、自動的に実行される。
■追記
目的と手段がワケ分からずと言いながら、AdafruitのnRF52840を買いましたが、、いざ買ってみると、BLEデバイスがさくっと作れるのでこれはこれで面白い。CircuitPythonを使うことで、スマフォとペアリングできない!!といった悩みもなくなった。自力ではBLEペアリングの問題が解決できず他力なのだが。。
■ご参考
参考にしたソースは以下
https://github.com/adafruit/Adafruit_CircuitPython_BLE/blob/main/examples/ble_hid_periph.py