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