1キーキーボード
Suns & Moon Laboratory
2020-05-28
Seeeduino XIAO+CircuitPython
LEDは未実装
動画
写真
固定はホットメルト
作り方
Seeeduino XIAO
自作PCB(白い基板)
ケースは3Dプリンタで作成 Flashforge Adventurer3
Arduinoで作ろうかと思ったのですが、XIAOのArduinoはHID対応していないっぽい
(keyboardのファーム焼くと、USB認識で失敗する)
★★★最新版に関しては↓参照★★★
Seeduino XIAO CircuitPythonメモ
なのでCircuitPythonを使いました。
CircuitPythonはこちらを参考にしました。
Build a simple USB HID Macropad using Seeeduino Xiao & CircuitPython
- CircuitPythonを落とす https://circuitpython.org/board/seeeduino_xiao/ 今回は5.3.0
- CircuitPythonをXIAOのドライブに書き込む
- ライブラリを落とす https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases 今回はadafruit-circuitpython-bundle-5.x-mpy-20200528.zip
- zip展開してadafruit_hidの中の__init__.mpy,keyboard_layout_us.mpy,keyboard.mpy,keycode.mpyをCUIRCUITPYドライブのlibへコピーする。この時lib\afafruit_hidに入れる。libに直接入れて動かなくてはまった。
- CUIRCUITPYドライブのルートにmain.pyをコピーする。
# Import the libraries
import time
import board
from digitalio import DigitalInOut, Direction, Pull
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode
from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS
import usb_hid
# define output LED
led = DigitalInOut(board.D13)
led.direction = Direction.OUTPUT
# flash the LED when booting
for x in range(0, 5):
led.value = False
time.sleep(0.2)
led.value = True
time.sleep(0.2)
# configure device as keyboard
kbd = Keyboard(usb_hid.devices)
layout = KeyboardLayoutUS(kbd)
d2 = DigitalInOut(board.D2)
d2.direction = Direction.INPUT
d2.pull = Pull.UP
# loop forever
while True:
if not d2.value:
# mute video on bluejeans
led.value = False # led on
#kbd.send(Keycode.V)
layout.write('Hello!')
time.sleep(0.3) # debounce delay
led.value = True # led off
neopixel
neopixel光らせるのにちょっと苦労しました
- libに入れるファイル
- 半田不良
で、問題なのがlibに入れるファイルなんですが、neopixel.mpyだけ入れていたんですが、どうもimportで失敗してうごいていないっぽい。
teratermでPEPLモードで1行づつ実行してみるとエラーが出る。
ので、それを見ながら足りないファイルをlibに追加していきました。
今回PEPLでわかったのはこれ
lib/adafruit_pypixelbuf.mpy
それ以外にも入れる必要あれば適宜入れていく。
半田不良は情けない話で、部品が後で入手できたので、コネクタとかよけてはんだ付けしたらいも半田でしたorz
久しぶりに、オシロのプローブあてると動く???んんん???という事やりました。
光らせるソース
元はこちらを改造Adafruit CircuitPython NeoPixel
# Import the libraries
import time
import board
from digitalio import DigitalInOut, Direction, Pull
import neopixel
# define output LED
led = DigitalInOut(board.D13)
led.direction = Direction.OUTPUT
# flash the LED when booting
for x in range(0, 5):
led.value = False
time.sleep(0.2)
led.value = True
time.sleep(0.2)
num_pixels = 1
#pixels = neopixel.NeoPixel(board.D0, num_pixels, brightness=0.3, auto_write=False, pixel_order=(1, 0, 2, 3))
pixels = neopixel.NeoPixel(board.D0, 1)
RED = (255, 0, 0)
pixels[0] = (255, 255, 0)
def wheel(pos):
# Input a value 0 to 255 to get a color value.
# The colours are a transition r - g - b - back to r.
if pos < 0 or pos > 255:
return (0, 0, 0)
if pos < 85:
return (255 - pos * 3, pos * 3, 0)
if pos < 170:
pos -= 85
return (0, 255 - pos * 3, pos * 3)
pos -= 170
return (pos * 3, 0, 255 - pos * 3)
def rainbow_cycle(wait):
for j in range(255):
rc_index = 256 + j
pixels[0] = wheel(rc_index & 255)
pixels.show()
time.sleep(wait)
while True:
rainbow_cycle(0)
リンク
1%キーボードのリンク集
seeed studio PCB assembly XIAO作ったところのPCBAサービス
end.
2024-08-14 11:00:26 32400