ãRaspberry Pi 2ãWebãã¼ã¹ã®é éæä½ã©ã¸ã³ã³ãã¤ããï¼ï¼3. å¶å¾¡ãµã¼ãç·¨ï¼

ã©ãºãã¤ã®ã©ã¸ã³ã³ã®æçµåã§ããåã åãååã¨ãã¢ã¼ã¿é§åãWebUIã«ã¤ãã¦æ¸ãã¦ããã®ã§ãæçµåã®ä»åã§ã¯ããããã®ã¾ã¨ãå½¹ãå¶å¾¡ãµã¼ã(Node.js)ã«ã¤ãã¦æ¸ãã¦ããããã¨æãã¾ãã
Â
Â
å¶å¾¡ãµã¼ãã®ä½ç½®ã¥ã
ã¯ããã«å¶å¾¡ãµã¼ãã®ä½ç½®ã¥ãã確èªãã¾ããååã®ã·ã¹ãã æ§æã®å³ã§è¨ãã¨ãä»åã¯ä¸ã®ã©ãºãã¤é¨åã®ãå¶å¾¡ãµã¼ã(Node.js)ãã«å½ããã¾ããåã åã«ç´¹ä»ããã¢ã¼ã¿é§åã¯å®éã«ã¯ãã®å¶å¾¡ãµã¼ãå ã§åä½ããã¦ãã¾ãããååã®WebUIã¯å¶å¾¡ãµã¼ãã®Node.jså´ã§ä½æããejsã«ãããã®ã§ããã®ã§ãå¶å¾¡ãµã¼ãã¯ä»åã®ã©ãºãã¤ã©ã¸ã³ã³ã®ã¾ãã«å¿èé¨åã«ãããã¾ããå¶å¾¡ãµã¼ãã§ã¯å¤§ããï¼ã¤ã®ãã¨ãããã¦ãã¾ãã
Â
- WebUIç¨ã®ejsãèªã¿è¾¼ã¿ãWebä¸ã«è¡¨ç¤ºãã
- ejsã使ã£ã¦ãã©ãºãã¤å ã®ãã¼ã«ã«ã®ç»åï¼ãã®ã¼ãååã®è£å©ç·ï¼ã表示ããã
- Socket.ioã使ã£ã¦ãWebUIããã®å¶å¾¡æ å ±ï¼æ¹åãé度ï¼ãåä¿¡ããã¢ã¼ã¿é§åããã
Â
ã§ã¯ãGitHubã§å ¬éããã¦ãããã¨ã§ãããå®éã®ã½ã¼ã¹ã§èª¬æãã¦ããã¾ããã¾ãã¯ãå®éã«ejsãèªã¿è¾¼ãã§WebUIãä½ãåºãã¦ããrasp_server.jsããã
Â
<rasp_server.js>
Â
Â
 ããããæ¸ãã¦ãã¾ãããã¾ãã¯ã// Server Initializationãã¨ã³ã¡ã³ããã¦ããé¨åããã§ããããã§å¿ è¦ãªã¢ã¸ã¥ã¼ã«ããã¼ããããresponseãã¨ãããã®ã§WebUIã§ã®å¯¾å¿ãæ¸ããã¨å®£è¨ãããã¼ããæå®ãã¦WebUIã表示ããã¾ãããã®æããã¼ãçªå·ããµã¼ãèµ·åæã«ä»»æã«è¨å®ãããããargvã§å¼æ°æå®ãã¦ãã¾ããã¾ããSocket.ioãããã§å¾ æ©ç¶æ ã«ãã¦ããã¾ãã
Â
WebUIã®å¯¾å¿ãresponceã§ã¨è¨ãã¾ããããããã¯å°ãä¸ã®ã// POST Handlerãã«ããã¾ããmakeHTMLã§ã¯ejsã®æå®ããã®ä»ã¯WebUIå´ããã®urlè¦æ±ã«å¿ãã¦ãã®ã¼ã®ç»åãååã®è£å©ç·ã¨ããã¼ã«ã«ã®ç»åã渡ãã¦WebUIå´ã§è¡¨ç¤ºãã¦ãã¾ãï¼ã³ã¡ã³ãã¢ã¦ããã¦ããããæ¸ãã¦ã¾ããã試è¡é¯èª¤ã®å¾ã§ããããï¼ã
Â
ããã«å°ãä¸ã«è¡ãã¨ãã// socket.io Handlerãã¨ãããããã§Socket.ioé¢ä¿ã®å¦çãæ¸ãã¦ãã¾ããããã¯ãååã®WebUIã®é¨åã§socket.ioã«æ¸¡ããã¼ã¿ã¨ãã®IDãªããã®ãæå®ãã¦ãã®ã§ããã®IDã«å¿ãã¦å¦çãåãã¦æ¸ãã¦ãã¾ãããdirectionãã§ããã°æ¹åãã¿ã³ããspeedãã§ããã°é度ãã¿ã³ããmoveãã§ããã°ãã®ã¼ç»åã«ãããã©ãã°ã³ã³ããã¼ã«ï¼æ¹åãé度ï¼ã§ããããã§ãããããã¢ã¼ã¿é§åã®å¦çãã¨æãããããã¾ããããã½ã¼ã¹ãè¦ã¦åããããã«ãã¢ã¼ã¿é§åé¢ä¿ã®å¦çã¯ãã¹ã¦ãctrlã¨ããã¯ã©ã¹ãã¨ãããå¥ã®jsã§ããrasp_control.jsã®é¢æ°ã«æ¸¡ãã¦ãã¾ããã§ããã ããªãã¸ã§ã¯ãæåã§æ¸ãããã£ããã¨ããã£ã¦ããããªé¢¨ã«æ¸ãã¦ã¿ã¾ããã
Â
ã§ã¯ã次ã¯ãã®rasp_control.jsã§ãã
<rasp_control.js>Â
Â
Â
ãã£ã¡ãã¾ãããããã¨ãã£ã¦ãããã§ããã ã¯ããã«ã// Raspberry Pi Motor Controlãã¨ãããã¨ã§ã第ä¸åã§æ¸ããã¢ã¼ã¿é§åã®è¨å®å¤ãããã§æå®ãã¦ãã¾ãããã®å¾ã¯ãå ã»ã©ã®socket.ioã®IDã«å¿ããå¦çãæ¸ãã¦ãã¾ããã½ã¼ã¹ãèªãã§ãããã°ã ãããã®ãã¨ã¯åããã¨ã¯æãã®ã§ãããã§ã¯ãã以ä¸è¿°ã¹ã¾ãããã工夫ããç¹ã¨ãã¦ã¯ã
Â
- ãµã¼ãå´ãCtrl+Cã§çµããããã¨ããéä¿¡ç°å¢ãæªããªã£ã¦WebUIããã®æ¥ç¶ãé絶ããæãªã©ãéä¸ã§å¦çãæ¢ã¾ã£ãæã¯ã©ã¸ã³ã³ã©ã¸ã³ã³ã«ã¯åæ¢ãã¦æ¬²ãããããã§ããããã£ãããããã®çµäºæã«ã¯exitProc()é¢æ°ãç¨æãã¦å¿ ãåæ¢ãããã
- ã¢ã¼ã¿é§åã®æå¾ã®å¦çã¯shellã®ã³ãã³ãã ãããªã®ããã³ãã³ãã®å¨æãæ©ãã¨å¦çã追ãã¤ãããåä½ãã¢ã¿ãã¯ãã¨ããã£ãããã®ãããã³ãã³ããå®è¡ããåã«ç¾å¨ã®é度ãæ¹åã¨æ¯è¼ããå·®ãããå ´åã®ã¿ã³ãã³ããå®è¡ããããã«ããã
Â
ã§ããçµäºæã®å¦çã«ã¤ãã¦ã¯ãrasp_server.jså ã®ã¯ããã®æ¹ã// Exit Handlerãã§è¨å®ãæ¸ãã¦ãã¾ãã
Â
èµ·åæ¹æ³
æå¾ã«èµ·åæ¹æ³ã§ããnode.jsã使ãã®ã§ãäºåã«ããã±ã¼ã¸ãã¤ã³ã¹ãã¼ã«ãã¦ããã¦ãã ãããnode.jsã®ããã±ã¼ã¸ï¼ãã¼ã¸ã§ã³é¢ä¿ï¼ã¯åä»ã§ããããã¡ãã®ãµã¤ãã®æ¹æ³ã§ããã¨ããããããã¨æãã¾ãã
Â
Â
ã¤ã³ã¹ãã¼ã«ãã§ãããããã¨ã¯å®è¡ããã ãã§ãã
sudo node rasp_server.js [PORT]
ããã§ãhttp://ã©ãºãã¤ã®IPã¢ãã¬ã¹:[PORT]ã¨æå®ãã¦ãã©ã¦ã¶ã§éãã¨ãååãä¼ããããããªWebUIã表示ããã¾ãã
Â
ã¾ã¨ã
ããã«ã¦ãã©ãºãã¤ã©ã¸ã³ã³ã®ä½æã«ã¤ãã¦ããã¹ã¦ãä¼ããããã¨ãã§ãã¾ãããã©ã¸ã³ã³ã¨ããã¨ãä»åã¯ãã®ã¼ã§ããã¾ããããèµ°ãããè»ä½ãWebUIã®ã¬ã¤ã¢ã¦ããã©ããã£ã¦å¶å¾¡ããããªã©ãä½ãæã®èªç±åº¦ãã¨ã¦ãé«ãããã¤ãæ§ã ãªã¢ã¸ã¥ã¼ã«ãæ±ããã¨ãã§ããç·åçãªã·ã¹ãã ã ã¨ç§ã¯æã£ã¦ãã¾ãããã®ãããã·ã¹ãã å ¨ä½ãèªåã®æã§çµããèããåå¼·ã§ãããã¼ã«ã¨ãã¦ã¯ããã®ã©ãºãã¤ã¨ã©ã¸ã³ã³ã®çµã¿åãããã¨ã¦ãããããããé©ãã¦ããããã«æãã¾ããLinuxãåå¼·ãã¦ã¿ãããã·ã¹ãã ãçµãã§ã¿ããã¨æã£ã¦ããæ¹ã¯ãã¾ãã¯ãããã£ãç°¡åãªã·ã¹ãã ãå®éã«èªåã®æã§çµãã§ã¿ã¦è©¦ãã¦ã¿ã¦ã¯ã©ãã§ããããï¼çµæ§æ¥½ããã§ããï¼
Â
Â
ã§ã¯ã§ã¯ã