Pythonで始める自作キーボード入門 / Introduction to Self-Made Keyboard from Python

6a87c9bfc71c805c3f5f248b359365d3?s=47 mu2in
October 10, 2020

Pythonで始める自作キーボード入門 / Introduction to Self-Made Keyboard from Python

近年、安価な電子部品が簡単に調達できるようになり、自作キーボードというジャンルが流行り始めています。
今回はマイコン上で動作するMicroPythonから派生したCircuitPythonを使って、マイコン・ブレッドボード・スイッチを組み合わせた自作キーボードを作ってみた話をしたいと思います。

「PyCon mini Hiroshima 2020」でのLT資料です。 https://hiroshima.pycon.jp/2020/

6a87c9bfc71c805c3f5f248b359365d3?s=128

mu2in

October 10, 2020
Tweet

Transcript

  1. 1ZUIPOͰ࢝ΊΔ ࣗ࡞ΩʔϘʔυೖ໳ PyCon mini Hiroshima 2020 ΦϯϥΠϯ

  2. ͓લ୭Α ‣ @mu2in ‣ ;ͭ͏ͷJavaΤϯδχΞ ‣ ओͳίϛϡχςΟ׆ಈ ▹ ͍͢͝޿ౡ •

    ຖिਫ༵೔ʹ޿ౡͰ։࠵͍ͯ͠ΔIT΋͘΋͘ձ • 2017೥4݄͔Βຖ݄ʮ͍͢͝޿ౡ with PythonʯΛڞಉओ࠵ ▹ PyCon mini Hiroshima • 2018೥10݄͔Βελοϑͱͯ͠ࢀՃ ▹ PyCon JP • PyCon JP 2018: ͍͢͝޿ౡ with Python ίϛϡχςΟϒʔεग़ల • PyCon JP 2019: ͍͢͝޿ౡ with Python ίϛϡχςΟϒʔεग़ల • PyCon JP 2020: ޿ౡʹ͓͚Δ஍ҬPythonίϛϡχςΟͷ্ཱͪ͛ํͱଓ͚ํ
  3. ࠓ೔࿩͢͜ͱ • ϒϨουϘʔυͰ࡞Δࣗ࡞ΩʔϘʔυج൘ • CircuitPythonΛ࢖ͬͨࣗ࡞ΩʔϘʔυϓϩάϥϛϯά εΠον ϚΠίϯ ύιίϯ

  4. ࠓճ࡞Δ΋ͷɿແઢΩʔϘʔυ

  5. ϋʔυ΢ΣΞฤ

  6. • CherryMXޓ׵εΠον + ΩʔΩϟοϓ • KeyBread + SK6812MINI + Kailh

    PCBιέοτ • ࡉϐϯϔομ • Adafruit ItsyBitsy nRF52840 Express • ϩʔλϦʔΤϯίʔμʔ + DIPԽج൘ • ϒϨουϘʔυ • δϟϯύʔϫΠϠʔ • ϚάωοτmicroUSBέʔϒϧ ( ΋͛๷ࢭ༻ ) ༻ҙ͢Δ΋ͷ ؒʹ߹͍·ͤΜͰͨ͠
  7. ૊ΈཱͯΔ ճ࿏ʹ͍ͭͯ͸লུ

  8. ιϑτ΢ΣΞฤ

  9. CircuitPythonͱ͸ $JSDVJU1ZUIPOͱ͸.JDSP1ZUIPO͔Β೿ੜͨ͠ ڭҭ͓Αͼॳ৺ऀ޲͚ͷΦʔϓϯιʔεͷϓϩάϥϛϯάݴޠͰ͢ɻ .JDSP1ZUIPOͱಉ༷ʹϚΠίϯͷಈ࡞Λ1ZUIPOͰهड़͢Δ͜ͱ͕Ͱ͖ɺ ిࢠ޻࡞ͳͲͷ༻్ʹ࢖ΘΕ͍ͯ·͢ɻ νϡʔτϦΞϧ΍υΩϡϝϯτ͕ॆ࣮͓ͯ͠Γɺిࢠ޻࡞ॳ৺ऀͰ΋ͱͯ ΋ѻ͍΍͍͢Α͏ʹͳ͍ͬͯ·͢ɻ

  10. CircuitPythonͷ࢖͍ํ ϚΠίϯΛ64#Ͱ઀ଓ͢Δͱɺ64#ϝϞϦͱͯ͠Ϛ΢ϯτ͞Ε·͢ɻ ͦ͜ʹ͋ΔDPEFQZʢ΋͘͠͸NBJOQZʣΛฤू͢Δ͜ͱͰɺ ϚΠίϯ্Ͱ$JSDVJU1ZUIPOΛ࣮ߦ͢Δ͜ͱ͕Ͱ͖·͢ɻ

  11. εΠονͷLEDΛޫΒͤͯΈΑ͏ εΠονج൘ʹ࣮૷͞ΕͨNeoPixelΛޫΒͤͯΈ·͢ɻ Eϐϯ͔Β-&%ͷ੺৭ʹ͢Δ

  12. ༗ઢΩʔϘʔυΛ࡞ͬͯΈΑ͏ Eϐϯͷೖྗʹϓϧμ΢ϯΛࢦఆ EϐϯͷεΠον͕ೖྗΛݕ஌͢Δ ΩʔϘʔυΦϒδΣΫτͷੜ੒

  13. ແઢΩʔϘʔυΛ࡞ͬͯΈΑ͏ ༗ઢΩʔϘʔυͷίʔυʹBLE༻ͷimportΛ௥Ճ͠·͢ɻ

  14. ແઢΩʔϘʔυΛ࡞ͬͯΈΑ͏ νϡʔτϦΞϧΛࢀߟʹBLEσόΠεͷઃఆΛߦ͍·͢ɻ 32u4 #-&ͷ)*%σόΠεΛઃఆ͢Δ

  15. ແઢΩʔϘʔυΛ࡞ͬͯΈΑ͏ #-&ͷϖΞϦϯάΛ଴ػ͢Δ ແઢΩʔϘʔυΦϒδΣΫτͷੜ੒ #-&ʹ઀ଓ͞ΕͯEϐϯͷೖྗΛݕ஌͢Δ

  16. ·ͱΊ • ిࢠ޻࡞ॳ৺ऀͷࢲͰ΋؆୯ʹCircuitPythonͰແઢΩʔϘʔυΛ࡞Δ͜ͱ͕Ͱ͖ͨɻ • CircuitPythonͷֶशγεςϜͷνϡʔτϦΞϧ͕͘͢͝෼͔Γ΍͔ͬͨ͢ɻ • ࢀߟࢿྉ • Adafruit CircuitPython

    NeoPixel - Read the Docs https://circuitpython.readthedocs.io/projects/neopixel/en/latest/ • CircuitPython HID Keyboard | Adafruit Learning System https://learn.adafruit.com/adafruit-circuit-playground-express/ circuitpython-hid-keyboard • BLE HID Keyboard Buttons with CircuitPython | Adafruit Learning System https://learn.adafruit.com/ble-hid-keyboard-buttons-with-circuitpython