Android/iOSã§BLEãçŽã«äœ¿ã£ãŠtoioã³ã¢ ãã¥ãŒããåãããŠã¿ãŸã
ãtoioã³ã¢ ãã¥ãŒãã¯BLEéä¿¡ã§å¶åŸ¡ã§ãããšãŠãããããäºèŒªããããã§ãã
https://toio.github.io/toio-spec/
ãæ¬æ¥ãtoioã³ã¢ ãã¥ãŒãã¯toioã³ã³ãœãŒã«ãšã»ããã§åãããã®ã§ãããtoioã³ã¢ ãã¥ãŒãåäœã§ãã¹ããŒããã©ã³ããããŒãPCãã¯ããŸãRaspberry Piã®ãããªã·ã³ã°ã«ããŒãã³ã³ãã¥ãŒã¿ãªã©ã®BLEéä¿¡ã§åããããšãã§ããŸãã
ããã®èšäºã§ã¯ã¹ããŒããã©ã³ã®BLEéä¿¡ã䜿ã£ãŠtoioã³ã¢ ãã¥ãŒããåãããŠã¿ãŸãã
ã¹ããŒããã©ã³ã§toioã³ã¢ ãã¥ãŒããåãããã
ãäžçªç°¡åãªæ¹æ³ã¯web bluetoothã䜿ã£ãŠchromeãã©ãŠã¶ããURLãéãtoio.jsãåããæ¹æ³ã§ãã
ãtoio.jsããã©ãŠã¶ã§åãããŠã¿ãã
ãåããã ããªãããã§OKã§ãããããã¡ãã£ãšçã£ãœããšãããBLEéä¿¡ã®ãããã³ã«ãçŽã«äœ¿ã£ãŠåãããŠã¿ãŸãããã
BLEã®ç°¡åãªè§£èª¬
- BLEæ©åšã¯ã¯ã»ã³ãã©ã«ãããªãã§ã©ã«ã®ïŒçš®é¡ãããŸãã
- ã»ã³ãã©ã«ããPCãã¹ããŒããã©ã³ãããªãã§ã©ã«ãä»åã¯toioã³ã¢ ãã¥ãŒãã«ããããŸãã
- ã»ã³ãã©ã«ã¯ããªãã§ã©ã«ã®åºãã¢ããã¿ã€ãžã³ã°ãã±ãããã¿ãŠãã©ãããçŽ æ§ã®æ©åšããå€å¥ããããªãã§ã©ã«ã«æ¥ç¶ããŸãã
- ã»ã³ãã©ã«ã¯æ¥ç¶ããããªãã§ã©ã«ãããå€ãèªã¿/æžã/éç¥ããããšã®ã§ããããŒã¿ãã£ãŒã«ãã®æ å ±ãåŸãããšãã§ããŸãããã®ããŒã¿ãã£ãŒã«ãã®ããšããã£ã©ã¯ã¿ãªã¹ãã£ãã¯ãšãããŸãã
- ãã£ã©ã¯ã¿ãªã¹ãã£ãã¯ã¯ä»¥äžã®ïŒã€ã®æ§è³ªããã¡ãŸãã
- èªã¿(read)ã¯å€ãèªã¿èŸŒãããšãã§ãããã£ãŒã«ãã§ãã
- äŸãã°ããããªãŒæ®éããã¿ã³ãæŒãããã©ãããªã©ã§ãã
- æžã(write)ã¯å€ãæžã蟌ãããšã§ããªãã§ã©ã«ã®åäœã«å€åãäžããŸãã
- äŸãã°LEDã®è²ã®å€æŽãã¢ãŒã¿ãŒã®å転é床ã®å€æŽãªã©ã§ãã
- éç¥(notify)ã¯èªã¿(read)ã«äŒŒãŠããŸãããããŒã¿ãã£ãŒã«ãã®å€ã«å€åããã£ããšãã«ããªãã§ã©ã«ã«å€ãéç¥ããŸãã
- äŸãã°ãã¿ã³ãæŒãããã©ãããã¢ãŒã·ã§ã³ã»ã³ãµã«ããè¡çªæ€ç¥ãèªã¿åãã»ã³ãµã«ããtoioã³ã¢ ãã¥ãŒãã®çœ®ããŠãããããã®IDãã·ãŒã«ã®IDã®å€ãå€åãããšãã«ã©ãã©ãéç¥ãããŠããŸãã
- toioã³ã¢ ãã¥ãŒãã®å Žåãèªã¿(read)ã§ãããã£ã©ã¯ã¿ãªã¹ãã£ãã¯ã¯éç¥(notify)ã«ã察å¿ããŠããŸãã
- ã¢ãŒã¿ãŒãèšå®ã®ããã«writeãreadãnotifyã®å šéšã«å¯Ÿå¿ããŠãããã£ã©ã¯ã¿ãªã¹ãã£ãã¯ããããŸãã
- BLEã¯ã»ãã«ããããããããŸããããšããããããã ãç¥ã£ãŠãã°éã¹ãŸãã
- Android/iOSã¢ããªã®LightBlueã䜿ããšç°¡åã«ãã£ã©ã¯ã¿ãªã¹ãã£ãã¯ã®èªã¿(read)ãæžã(write)ãéç¥(notify)ã詊ãããšãã§ããŸãã
- Androidã¢ã㪠LightBlue
- iOSã¢ã㪠LightBlue
æºåãããã®
- ã¹ããŒããã©ã³(AndroidãiOSã®ãã®)
- LightBlueã¢ããªãã€ã³ã¹ããŒã«ãã åç« ã®URLããããããã®OSçšã®ã¢ããªãã€ã³ã¹ããŒã«ããŠãã ããã
- toioã³ã¢ ãã¥ãŒã 1å
- å¿ èŠã«å¿ããŠããã€ãªã»ã³ã¬ã¯ã·ã§ã³ãã®ããããã¹ããã«ãŒ
ãã£ãããã£ãŠã¿ãã
以äžã§ã¯Androidã¢ããªã®LightBlueã®ç»é¢ã䜿ã£ãŠèª¬æããŸããiOSã¢ããªçãã»ãŒå€ãããªãæäœã§ãã
LightBlueã¢ããªãèµ·åããŸãã
- èµ·åæã«bluetoothãžã®ã¢ã¯ã»ã¹èš±å¯ããããã¯äœçœ®æ å ±ãžã®ã¢ã¯ã»ã¹èš±å¯ã®ç¢ºèªç»é¢ãåºãå Žåã¯èš±å¯ããŸãã(èš±å¯ããªããšBLEéä¿¡ãã§ããªãã®ã§toioã³ã¢ ãã¥ãŒããšéä¿¡ã§ããŸãã)
- 以äžã®ç»é¢ãåºããããtoio Core Cubeããã¿ããããŠéžã³ãŸãã
- ãtoio Core Cubeãã®äžã«åºãŠãã16鲿°ã¯BLEæ©åšããšã«å²ãåœãŠãããŠããã¢ãã¬ã¹ã§ãããã®ã¹ã¯ãªãŒã³ã·ã§ããã§ã¯äžåå(3ãã€ãå)ãæ¶ããŠããŸãããå®éã«ã¯6ãã€ãåãããŸãããã®6ãã€ãã§åäœå€å¥ããããšãã§ããŸãã
toioã³ã¢ ãã¥ãŒããšç¹ãã£ãç¶æ
- toioã³ã¢ ãã¥ãŒããšã€ãªãããšãã®ç»é¢ã«ãªããŸãã
- ãã®ç»é¢ãäžã®æ¹ã«ã¹ã¯ããŒã«ããŠã以äžã®èµ€æ ã®ãšããã衚瀺ããŸãã
- ãããtoioã³ã¢ ãã¥ãŒãã®ãã£ã©ã¯ã¿ãªã¹ãã£ãã¯ã§ãããããã¿ãããããšãã£ã©ã¯ã¿ãªã¹ãã£ãã¯ã®éžæç»é¢ãåºãŸãã
- ãã®äžããèªã¿(read)/æžã(write)/éç¥ãåãã(notify)ããããã£ã©ã¯ã¿ãªã¹ãã£ãã¯ãéžã³ãŸãã
- ããŠãããã§toio ã³ã¢ ãã¥ãŒã æè¡ä»æ§ã®ããŒãžã®ãéä¿¡æŠèŠãã®ãšãããäžåºŠã¿ãŠã¿ãŸãããã
- ããã®ãåçš®æ©èœãã®ãšããã®èª¬æããã®ãã£ã©ã¯ã¿ãªã¹ãã£ãã¯ã«å¯Ÿå¿ããŠããŸãã以äžã«ãã£ã©ã¯ã¿ãªã¹ãã£ãã¯ã®éžæç»é¢ã®èšèŒãšæè¡ä»æ§ã®èª¬æã®å¯Ÿå¿ã瀺ããŸãã
- ãèªã¿åãã»ã³ãµãŒãID Information
- ãã¢ãŒã¿ãŒãMotor Control
- ãã©ã³ããLight Control
- ããµãŠã³ããSound Control
- ãã¢ãŒã·ã§ã³ã»ã³ãµãŒãSensor Information
- ããã¿ã³ãButton Information
- ãããããªãŒãBattery Informaiton
- ãèšå®ãConfigration
ããããªãŒæ®éãèªã
- åç« ã®ãã£ã©ã¯ã¿ãªã¹ãã£ãã¯éžæç»é¢ãããBattery Informationããããã³ãŸãã
- ããããªãŒã®ãã£ã©ã¯ã¿ãªã¹ãã£ãã¯ã«ã€ããŠã®èª¬æãåºãŸããèµ€æ ã§å²ã£ããšããã«Readableãšããããã§ãã¯ããŒã¯ããããŸãã®ã§ããèªã¿ããã§ããŸãããã®äžã«ã¯WritableãšãããŸããÃã«ãªã£ãŠããã®ã§ãæžããã¯ã§ããªãããšã瀺ããŠããŸããããã«äžã®Supports notifications/indicationsã«ã¯ãã§ãã¯ããŒã¯ãã€ããŠããã®ã§ãèªã¿ãã«å ããŠãéç¥ããã§ããããšãããããŸãã
- ãã®ç»é¢ãäžã®ã»ãã«ã¹ã¯ããŒã«ããŠREAD/INDICATED VALUEã®ãšãããŸã§ããããREAD AGAINããã¿ã³ãã¿ããããŸãã
- ããããªãŒæ®éã®å€ãèªã¿åºãããŠè¡šç€ºãããŸãã16鲿°ã§ã64ããªã®ã§100ã§ããã(ãããããªãŒãã®ä»æ§ã確èªããŠã¿ãŠãã ãã)
LED(ã©ã³ã)ãç¯ãã
- ä»åºŠã¯ãæžããã®ã»ãããã£ãŠã¿ãŸããæ»ããã¿ã³ã§äžæŠããã£ã©ã¯ã¿ãªã¹ãã£ãã¯éžæç»é¢ãŸã§æ»ã£ãŠä»åºŠã¯ãLight Controlããéžã³ãŸãã
- ä»åºŠã¯Writableã®ã¿æå¹ãªã®ã§ãæžããããã§ããŸããã
- ãã®ç»é¢ãäžã®æ¹ã«ã¹ã¯ããŒã«ããŠWRITTEN VALUEã®ãšãããŸã§ããããtoioã³ã¢ãã¥ãŒã仿§æžã®ãã©ã³ããã®ãšãããåç
§ãããæžãèŸŒã¿æäœãã®ãäŸãã®ããŒã¿ã03100101FF0000ããæžã蟌ãã§ã¿ãŸãã
- ãäŸãã§ã¯0.16ç§éLED(ã©ã³ã)ãèµ€ãç¹ç¯ããããŒã¿ã瀺ãããŠããŸãã
- 16鲿°ã§æžã蟌ãã§ãWRITEããã¿ã³ãã¿ãããããšãtoioã³ã¢ãã¥ãŒãã®åºé¢ã®LED(ã©ã³ã)ã0.16ç§éèµ€ãå ããŸãã0.16ç§ã¯äžç¬ã§ãã®ã§æ°ãã€ããŠããèŠãŠããŠãã ããã
ãã¿ã³ã®ç¶æ ãèªããå€åããéç¥ãããã
- ç¶ããŠä»åºŠã¯ãã¿ã³ã®æ å ±ãèªãã ããéç¥ãåãåããããã«ããŠã¿ãŸãã
- æ»ããã¿ã³ã§äžæŠããã£ã©ã¯ã¿ãªã¹ãã£ãã¯éžæç»é¢ãŸã§æ»ã£ãŠä»åºŠã¯ãButton Informationããéžã³ãŸãã
- ãã®ç»é¢ãäžã®æ¹ã«ã¹ã¯ããŒã«ããŠã[READ AGAIN]ã®ãã¿ã³ãã¿ãããããšãã¿ããããç¬éã®toio ã³ã¢ ãã¥ãŒãåºé¢ã®ãã¿ã³ã®ç¶æ (æŒããŠãããæŒããŠããªã)ãèªã¿åãããšãã§ããŸãã
- ãã®ã¹ã¯ãªãŒã³ã·ã§ããã§ã®å€ã¯01 00ãtoio ã³ã¢ ãã¥ãŒãã®ãã¿ã³ã¯æŒãããŠããŸããã
- toioã³ã¢ãã¥ãŒãã®ãã¿ã³ãæŒããç¶æ ã§ãããäžåºŠ[READ AGAIN]ã®ãã¿ã³ãã¿ãããããšãä»åºŠã¯01 80ã§ããå€ã®æå³ã¯toio ã³ã¢ ãã¥ãŒãæè¡ä»æ§æžã®ããã¿ã³ãã®ãšããã§èª¿ã¹ãŠã¿ãŸãããã
- [READ AGAIN]ã®ãã¿ã³ã®ãšãªãã®[SUBSCRIBE]ãã¿ã³ãã¿ãããããšãéç¥(notify)ãåããããã«ãªããŸããå€ãå€åãããšãã«éç¥ãããŸãã
- ãã®ç¶æ ã§toio ã³ã¢ ãã¥ãŒãã®ãã¿ã³ãæŒãããé¢ããããããšãç¶æ ãå€åããã¿ã€ãã³ã°ã§ä»¥äžã®ããã«å€ãéç¥ãããŠããŸãã
- éç¥ãããããšãã¯[UNSUBSCRIBE]ãã¿ã³ãã¿ããããŸãã
ãããã®äžã®åº§æšãªã©ãéç¥ããã
- ãããŸã§ããã°ããããããŸãããæ»ããã¿ã³ã§äžæŠããã£ã©ã¯ã¿ãªã¹ãã£ãã¯éžæç»é¢ãŸã§æ»ã£ãŠä»åºŠã¯ãID Informationããéžã³ãŸãã
- ãããŠç»é¢ã®äžã®æ¹ãŸã§ã¹ã¯ããŒã«ããŠãã[SUBSCRIBE]ãã¿ã³ãã¿ããããŸãã
- toio ã³ã¢ ãã¥ãŒãããããã«çœ®ããŠã¿ãŠãã ããããŸããäœçœ®ãå€ãããè§åºŠãå€ãããããŠã¿ãŠãã ããããã®ãããå¢ãã§äœçœ®ãè§åºŠããŒã¿ãéç¥ãããŠããã®ãããããŸãã
- éç¥ãããŠããå€ã®æå³ã¯toio ã³ã¢ ãã¥ãŒãæè¡ä»æ§ã®ãèªã¿åãã»ã³ãµãŒãã§ç¢ºèªããŠã¿ãŠãã ããã
ãããã«
ãã¹ããŒããã©ã³(Androido/iOS)ã®LightBlueã¢ããªã䜿ã£ãŠãtoio ã³ã¢ ãã¥ãŒããšçŽæ¥BLEéä¿¡ããŠåãããŠã¿ãŸãããããã¢ãŒã¿ãŒã¯ä»å䜿ã£ãŠãªãã®ã§ãåããŠãã¯ããªãã§ããã![]()
ããŸããtoioã³ã¢ãã¥ãŒãæè¡ä»æ§ã®ãã¢ãŒã¿ãŒããã¿ãŠããããããã£ãŠã¿ãŠãã ãããç¹ã«2.1.0ã«ãªã£ãŠããã¢ãŒã¿ãŒå¶åŸ¡ã³ãã³ãã§ã§ããããšãå¢ããŠããŸãã®ã§ãªããªãããããããããšæããŸãã
ããããŸã§ããã£ãŠããŸãã°BLEã§ã®toio ã³ã¢ ãã¥ãŒãã®ã³ã³ãããŒã«ã¯ãããªã«é£ãããããŸãããWindowsãLinuxãMacOSããã®ä»ãããããªç°å¢ã§ãã奜ã¿ã®ããã°ã©ãã³ã°èšèªã§toio ã³ã¢ ãã¥ãŒããåãããŠæ¥œãã¿ãŸãããã