Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BLEでロボットトイを制御しよう/Control-your-robot-toy-with-BLE

sandfish03
August 29, 2020

 BLEでロボットトイを制御しよう/Control-your-robot-toy-with-BLE

STEAM教育が流行る中、教材として様々なモノが増えてきています。

これらの教材にはGUIを用いたプログラミング環境や開発者向けのAPIが公開されています。 しかし、これらの教材はおもちゃのように動くモノが多く、低いレイヤーの制御が必要なので、Webアプリケーション開発者には取っつきづらいこともあります。

このトークでは、教材が公開している技術仕様をもとにpythonでBLE制御するユースケースを共有します。

OSSで公開されているライブラリを用いた2つの方法でBLEを制御する方法が理解できます。

sandfish03

August 29, 2020
Tweet

Other Decks in Programming

Transcript

  1. ͍΍ɺ଴ͯɺٕज़࢓༷͸ެ։͞Ε͍ͯΔ Original document by Sony Interactive Entertainment Inc., is licensed

    under CC BY 4.0. https://github.com/toio/toio-spec https://creativecommons.org/licenses/by/4.0/
  2. ͦ΋ͦ΋BLEͬͯʁ • Bluetooth Low Energy (Bluetooth LE, BLE)ͱ͸ɺແઢPANٕज़Ͱ͋Δ Bluetooth ͷҰ෦Ͱɺόʔδϣϯ

    4.0 ͔Β௥Ճʹͳͬͨ௿ফඅిྗͷ ௨৴Ϟʔυ • BLEͰ͸ɺσόΠεͱσόΠε͕௨৴Λ͓͜ͳ͏ํ๏ͱͯ͠ɺϒϩʔ υΩϟετͱίωΫγϣϯͱ͍͏2ͭͷํ๏Λఆ͍ٛͯ͠·͢ ʮBluetooth Low EnergyʯʰϑϦʔඦՊࣄయɹ΢ΟΩϖσΟΞ೔ຊޠ൛ʱɻ2019೥12݄2೔ (݄) 00:25ɹUTCɺURL: https://ja.wikipedia.org
  3. toioΩϡʔϒͷػೳͷར༻ Type Primary Service Service UUID 10B20100-5B3B-4571-9508-CF3EFCD7BBAE Characteristics ID Information

    / ಡΈऔΓηϯαʔ Sensor Information / Ϟʔγϣϯηϯαʔ Button Information / Ϙλϯ Battery Information / όοςϦʔ Motor Control / Ϟʔλʔ Light Control / ϥϯϓ Sound Control / α΢ϯυ Configuration / ઃఆ Original document by Sony Interactive Entertainment Inc., is licensed under CC BY 4.0. https://github.com/toio/toio-spec https://creativecommons.org/licenses/by/4.0/
  4. ݸਓతʹջ͔͍͠ϦτϧΤϯσΟΞϯ Original document by Sony Interactive Entertainment Inc., is licensed

    under CC BY 4.0. https://github.com/toio/toio-spec https://creativecommons.org/licenses/by/4.0/
  5. όΠτΦʔμΛҙࣝͯ͠όΠφϦσʔλΛѻ͏ • ॻࣜจࣈྻͰσʔλΛύοΫͨ͠ΓɺΞϯύοΫ͢Δ࣌ͷظ଴͞ΕΔ ϨΠΞ΢τΛࢦఆ͢Δ จࣈ όΠτΦʔμ < ϦτϧΤϯσΟΞϯ > ϏοάΤϯσΟΞϯ

    ϑΥʔϚοτ Cͷܕ Pythonͷܕ ඪ४ͷαΠζ B unsigned char ੔਺ 1 H unsigned short ੔਺ 2 I unsigned int ੔਺ 4 ॻࣜจࣈྻ ॻࣜࢦఆจࣈ https://docs.python.org/ja/3/library/struct.html#format-strings
  6. ηϯτϥϧࢹ఺Ͱͷେ͖ͳྲྀΕ 1. Scan • पғʹ͍ΔϖϦϑΣϥϧΛ୳͢ 2. Connect • ݟ͚ͭͨϖϦϑΣϥϧͱ઀ଓ͢Δ 3.

    ReadʗNotifyʗWrite • ϖϦϑΣϥϧͷαʔϏεʹඥͮ͘ಛੑʹରͯ͠σʔλΛಡΈॻ͖͢Δ 4. Disconnect • ϖϦϑΣϥϧͱͷ઀ଓΛղআ͢Δ BLEͷ࣮૷͸OSʹ ґଘ͢ΔՕॴ͕͋Δ ͷͰେมͦ͏
  7. BLEΛૢ࡞͢ΔϥΠϒϥϦ • PythonͰBLEΛૢ࡞͢ΔϥΠϒϥϦΛ୳ͯ͠ΈΔ "EBGSVJU1ZUIPO#MVFGSVJU-& #MFBL 63- IUUQTMFBSOBEBGSVJUDPNCMVFGSVJUMFQZUIPO MJCSBSZPWFSWJFX IUUQTCMFBLSFBEUIFEPDTJPFOMBUFTU ର৅04

    w NBD04 w -JOVY w 8JOEPXT w NBD04 w -JOVY උߟ w ϥΠϒϥϦࣗମ͸EFQSFDBUFEʹͳΔखલͷες ʔλεͰͨ͠ w $JSDVJU1ZUIPOΛ஌ͬͨͷ͸গ͠ޙͰͨ͠ɻɻɻ w ֤04Ͱಁաతʹར༻Ͱ͖Δͷ͸ྑͦ͞͏
  8. Objective-CΫϥεͷΠχγϟϥΠβ • ΠχγϟϥΠβ͸ init ͰҾ਺ͳ͠ • Ҿ਺͋ΓͷΠχγϟϥΠβ͸श׳తʹinitWithʙͰ࢝ΊΔʢΒ͍͠ʣ • initWith ʴʢ

    Ҿ਺໊ ʴ _ ʣ✖ Ҿ਺ͷ਺෼ • લͷαϯϓϧͩͱotherVariableͱ͍͏Ҿ਺͕͋ΔͷͰ initWithOtherVariable_ɹͱ͍͏ϝιουΛఆٛ͢Δ