
ããšãã°ãåçã®ãããªããã€ã¹ã 液æ¶ç»é¢ãšãµãŒãäžã®ãã€ã³ã¿ãŒããããŸãã è¿ãã«ã¯ãããã€ã¹äžã®WebãµãŒããŒã«æ¥ç¶ãããå®è¡äžã®ãã©ãŠã¶ãŒãåããé»è©±ããããŸãã ãã©ãŠã¶ã§ç¢å°ãã¯ãªãã¯ãããšããã€ã³ã¿ãŒãå³ãå·Šã«å転ãããããã¥ãŒãã©ã«ã«èšå®ãããŸãã å€ãèšå®ããåŸãå€ã¯ãã©ãŠã¶ã«æ»ãããå€ãšããŠè¡šç€ºãããŸãã ããã«ããã©ãŠã¶ã§ããã¹ãè¡ãèšå®ã§ããŸããããã¯ãããã¹ãèšå®ãã¿ã³ãæŒããåŸãLCDç»é¢ã«è¡šç€ºãããŸãã ãã¹ãŠã®å¯Ÿè©±ã¯Wi-Fiãä»ããŠè¡ãããŸãã ã©ãæããŸãããéçºã«ã©ããããæéãããããŸããïŒ
èããŠã¿ãã°ãããã¹ãããšããããããããŸãã ããã€ã¹ã§å®è¡ãããã»ã³ãµãŒãšå¯Ÿè©±ããWebãµãŒããŒãèµ·åããããã¯ãšã³ããããã³ããšã³ããå®è£ ããããããã¹ãŠãçµåããC / C ++ã³ãŒããèšè¿°ããŸãã å®éããã¹ãŠãã¯ããã«åçŽã§ãã ãããŠãç§ã¯ãã¹ãŠã«ã€ããŠãã¹ãŠã®ããã®ååãªæéããããšèšãããšãæ¢ããŠããŸãã ãªãã§ïŒ ã¯ããçµã¿åãããŠããã«ãããã¿ã€ããäœæã§ããæ¢è£œã®ãœãªã¥ãŒã·ã§ã³ãããããã§ãã Intel EdisonããŒããIntel XDK IoT Editionéçºç°å¢ãGrove Kitã»ã³ãµãŒã¹ã€ãŒããããã³ãã£ã1ã€ã®ããã°ã©ãã³ã°èšèªã§ããJavaScriptã䜿çšããŸãã ã¯ãããããŸããC / C ++ã ãã¹ãŠãã·ã³ãã«ã§ãç®±ããåºããŠããã§ãã
æºåãã§ããŠããªãéçºè ã§ãè¿·åã«ãªããªãããã«ãåºæ¬ããå§ããŠãã¹ãŠãé çªã«èª¬æããŸãã æåŸã«ãæåã«èª¬æããäŸãæ€èšããŸãã
Grove Starter Kit Plus-Intel IoT Edition Gen2

Grove Starter Kitã¯çŽ æŽããããã®ã§ãã äžéšã®ããã°ã©ããŒã¯ç¡ç·é»åæ©åšã䜿çšããããšãæããŠããããšãç¥ã£ãŠããŸãã ããããçš®é¡ã®ã¯ã€ã€ãæ¥ç¶ãã¯ãã ä»ããç¡ç·éšå...ãããããã®ã»ããã䜿çšãããšãäœæ¥ãç°¡çŽ åã§ããŸãã ãã¹ãŠã®ã»ã³ãµãŒã¯ãæšæºã³ãã¯ã¿ã䜿çšããŠæ®éçã«æ¥ç¶ãããŠãããå¿ èŠã«å¿ããŠèª€ã£ãŠæ¥ç¶ããããšã¯ã§ããŸããã æ¡åŒµããŒãäžã®ãã¹ãŠã®ã³ãã¯ã¿ã¯çœ²åãããŠããŸãã å¿ èŠãªã¯ã€ã€ãã»ã³ãµãŒã«æ¥ç¶ããã ãã§ååã§ãããã€ã¹ã®ãœãããŠã§ã¢éšåã«éäžã§ããŸãã
ãããã®å 容ïŒ
- ãã¹ãŠã®ã»ã³ãµãŒã®æšæºæ¥ç¶çšã®ã³ãã¯ã¿ãåããæ¡åŒµããŒãã
- LED
- ãã¶ãŒã
- ãªã¬ãŒ
- ãã¿ã³ã¯æ£åžžã§ãã
- ã¿ãããã¿ã³ã
- å転ã»ã³ãµãŒã
- 枩床èš
- ãã€ã¯
- å ã»ã³ãµãŒã
- ãµãŒããã©ã€ãã
- LCDã¹ã¯ãªãŒã³ã
- ã³ãã¯ã¿ä»ãã¯ã€ã€ã
- USBã³ãã¯ã¿
- KroneããããªãŒçšã®ã³ãã¯ã¿ãŒã
ãã¡ãããã»ã³ãµãŒãè³Œå ¥ããŠèªåã§æ¥ç¶ããããšãã§ããŸãã ã¯ããå®ããªããŸãããããã§ã¯ãã¹ãŠã®ã³ãã¯ã¿ãæšæºã§ããããã¹ãŠã®ã¯ã€ã€ããã§ã«å©çšå¯èœã§ãã ã¯ãã ä»ãã«æãã£ãŠã¯ãªããªãç§ã«ãšã£ãŠããã³ãã¯ã¿ã貌ãä»ããŠãã©ãã«é ç·ããããã§ã¯ãªããããã°ã©ã èªäœã«ã€ããŠèããæ¹ãã¯ããã«æ¥œããã§ãã ããã«ã ããã«ãœã³ã§ã¯ããã¢ã®åã«ã»ã³ãµãŒãæ¥ãã§æ¥ç¶ããã¯ã€ã€ãŒãæ··åããã»ã³ãµãŒåºåã«é»åãäŸçµŠããŠããç¶æ³ããããŸããã 幞ããªããšã«ãäœãçãå°œããŠããŸããã
Intel XDK IoT Editionéçºç°å¢

Intel XDKéçºç°å¢ã䜿çšãããšãNode.jsã§JavaScriptã¢ããªã±ãŒã·ã§ã³ãäœæããIntel Edisonããã³Intel GalileoããŒãã§å®è¡ã§ããŸãã ããã«ããã以åã¯äž»ã«Webçšã®JavaScriptãäœæããéçºè ãæ°ããããšãè©Šãããšãã§ããŸãã å©ç¹ã¯ã以åã«ããã€ã¯ãã³ã³ãããŒã©çšã«æžãããã«C / C ++ãç¥ã£ãŠããªããã°ãªããªãã£ãå Žåããã¹ãŠãã¯ããã«ç°¡åã«ãªãããšã§ãã ãæ°ã«å ¥ãã®JavaScriptã§ããã°ã©ã ãèšè¿°ããã ãã§ããã¹ãŠãæ©èœããŸãã
JavaScriptã§èšè¿°ãããã¢ããªã±ãŒã·ã§ã³ã¯ãC ++ã§ã¯åãé床ã§å£ãããšããããŸãã ããããå®éã«ã¯ãã³ãŒãã®èšè¿°ãç°¡åã«ãªããã¯ããããŒããŠã§ã¢ã¯åŒ·åã«ãªããŸããã Intel XDKã®ãã1ã€ã®å©ç¹ã¯ãé¢é£ãããã¹ãŠã®ã©ã€ãã©ãªãšãã¡ã€ã«ãå«ãããŒãäžã®ã¢ããªã±ãŒã·ã§ã³ãããŠã³ããŒãããŠèµ·åããã«ã¯ãããã€ãã®ãã¿ã³ãæŒãããšã§å®è¡ã§ããããšã§ãã
åã³ãããã«ãœã³ã®äŸãæããŸãã ããŒã ã®1人ã¯ããããžã§ã¯ãã®å®è£ ã«é·ãéèŠããã ãšèšããŸããã PythonãšC ++ã®äž¡æ¹ã§åäœããããã«ããããšããŸããã ããããJavaScriptã«åãæ¿ããããšã§åããŠæåããŸããã
éçºäžã«ãã£ãå°é£
XDKãEdisonã«æ¥ç¶ã§ããªãå ŽåããããŸããã ãã®å ŽåãããŒãã¯ã·ãªã¢ã«ããŒãã§åäœããŸããïŒUSBçµç±ã®ãšãã¥ã¬ãŒã·ã§ã³ïŒã ããŒãäžã§WiFiãæ©èœããªãããšã確èªãããŸããã ããŒãã®ãã¡ãŒã ãŠã§ã¢ããŒãžã§ã³ã«ãã°ãããããšãããããŸããã D7ã³ãã¯ã¿ã䜿çšãããšãWi-Fiã®åäœãäžååã«ãªããŸãã ãã®åŸãããŒããæ£åžžã«åäœãããã®ã¯éåžžã«åé¡ã§ãã ããŒããåèµ·åãããšãããã°ã©ã ãèªåçã«èµ·åããããã§ãã ã·ãªã¢ã«ããŒããšãã¥ã¬ãŒã·ã§ã³ã§USBã«æ¥ç¶ããã ãã§æ±ºå®ããŸããã æ¥ç¶ããããD7ã«ã¢ã¯ã»ã¹ããŠããŒããåèµ·åããªãããã«ããã°ã©ã ãä¿®æ£ããŸããã
ããã«åé¡ã®èª¬æããããŸã
https://github.com/intel-iot-devkit/mraa/blob/master/docs/edison.md-WiFiã䜿çšããŠããå ŽåãArduinoãã³7ãWiFiæ©èœã«æªåœ±é¿ãäžããå ŽåããããŸãã
ãã®åé¡ã¯ææ°ãªãªãŒã¹ã§ä¿®æ£ãããŠããŸãã
http://download.intel.com/support/edison/sb/edison_rn_332032009.pdf
解決ãããåé¡ïŒ
EDISON-2356 Arduinoã®ãã³7ãåºåã«èšå®ãããšãWi-Fiæ¥ç¶ãäžå®å®ã«ãªããŸãã
ãã®åé¡ã¯ææ°ãªãªãŒã¹ã§ä¿®æ£ãããŠããŸãã
http://download.intel.com/support/edison/sb/edison_rn_332032009.pdf
解決ãããåé¡ïŒ
EDISON-2356 Arduinoã®ãã³7ãåºåã«èšå®ãããšãWi-Fiæ¥ç¶ãäžå®å®ã«ãªããŸãã
ããŒãæ¥ç¶
ãã§ã«Intel EdisonããŒããUSBãŸãã¯WiFiçµç±ã§ã³ã³ãã¥ãŒã¿ãŒã«æ¥ç¶ããŠãããšæããŸãã ããã§ãªãå Žåãããã€ãã®æ¹æ³ããããŸãã USBçµç±ã§ã·ãªã¢ã«ããŒãã®ãšãã¥ã¬ãŒã·ã§ã³ãæå¹ã«ã§ããŸããããã¯æ¥µç«¯ãªmicroUSBã³ãã¯ã¿ã§ãã USBçµç±ã§ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ãšãã¥ã¬ãŒã·ã§ã³ãæå¹ã«ã§ããŸããããã¯ãå¹³åçãªmicroUSBã³ãã¯ã¿ã§ãã WiFiã䜿çšã§ããŸãã é»æºã¯USBãŸãã¯é»æºã䜿çšããŠæ¥ç¶ã§ããŸãã
- Wi-Fiã䜿çšããŠIntel EdisonããŒããæ¥ç¶ãã
- Ethernet over USBã䜿çšããŠIntel EdisonããŒãã«æ¥ç¶ãã
- WindowsãæèŒããã·ã¹ãã ã§ã®ã·ãªã¢ã«ç«¯æ«ã®ã»ããã¢ãã
- Mac * OS XãæèŒããã·ã¹ãã ã§ã·ãªã¢ã«ç«¯æ«ãã»ããã¢ãããã
- Linuxã䜿çšããã·ã¹ãã ã§ã®ã·ãªã¢ã«ç«¯æ«ã®ã»ããã¢ãã
MRAAã©ã€ãã©ãª
JavaScriptã®ã»ã³ãµãŒã§ã®äœæ¥ãç°¡çŽ åããããã«ãç¹å¥ãªã©ã€ãã©ãªããããŸãã ãããã®1ã€ã¯MRAAã§ãã ããŒãã§ã®äœæ¥ã¬ãã«ã¯ããªãäœããªããŸãã
http://iotdk.intel.com/docs/master/mraa/index.html-MRAAããã¥ã¡ã³ã
ãã®äž»ãªã¿ã¹ã¯ã¯ãå ¥åãŸãã¯åºåçšã®ãã³ãæ§æãã0ãŸãã¯1ãçºè¡ããæ¥ç¹ããããžã¿ã«ãŸãã¯ã¢ããã°ä¿¡å·ã®å€ãèªã¿åãããšã§ãã PWMïŒPWMïŒã¢ãŒãã§åäœããããã«ãã³ãæ§æãããã®ãã©ã¡ãŒã¿ãŒãèšå®ã§ããŸãã ããã¯ãLEDãç¹æ» ããããã¿ã³ã®ç¶æ ãèªã¿åããã»ã³ãµãŒãã枩床å€ãååŸãããµãŒãããªã³ã«ããã®ã«ååã§ãã
ããã§ãããšãã°ãããŒãã«çµã¿èŸŒãŸããLEDããªã³ã«ããããã°ã©ã ïŒ
var mraa = require('mraa'); var myOnboardLed = new mraa.Gpio(13); // 13- myOnboardLed.dir(mraa.DIR_OUT); // myOnboardLed.write(1); //
ãã ããLCDç»é¢ãªã©ãããè€éãªãã®ã管çããå¿ èŠãããå Žåã¯ãããã§ååã§ã¯ãããŸããã
UPMã©ã€ãã©ãª
次ã®ã©ã€ãã©ãªã¯UPMã§ãã ããé«ãã¬ãã«ã®äœæ¥ãæäŸããŸãã
http://iotdk.intel.com/docs/master/upm/node/-Node.JSã® UPMããã¥ã¡ã³ã
ãã®ã©ã€ãã©ãªã¯ãã¹ã¯ãªãŒã³ããµãŒãã¢ãŒã¿ãŒãªã©ã®è€éãªããã€ã¹ãå¶åŸ¡ããã¢ã«ãŽãªãºã ãå®è£ ããŠããŸãããã以å€ã®å Žåã¯ãç¬ç«ããŠå®è¡ããå¿ èŠããããŸãã ããã䜿çšããŠãI2Cã·ãªã¢ã«ãã¹ã®LCDã¹ã¯ãªãŒã³ãå¶åŸ¡ããŸãã
LCDç»é¢ã«ããã¹ãã衚瀺ããããã°ã©ã ã®äŸïŒ
var jsUpmI2cLcd = require ('jsupm_i2clcd'); var lcd = new jsUpmI2cLcd.Jhd1313m1(0, 0x3E, 0x62); lcd.setCursor(1,5); lcd.write('Hello Edison!');
äœæ¥Node.JS
ã³ã³ãã¥ãŒã¿ãŒäžã®Intel XDKã§ã¢ããªã±ãŒã·ã§ã³ãäœæãããšããããŒãã«ã¢ããããŒãããŸãïŒ[ã¢ããããŒã]ãã¿ã³ïŒã ãã©ã«ããŒã«é 眮ãããŸãããèµ·åããŸããã ãããžã§ã¯ãã¯ããŒãäžã®/home/root/.node_app_slotãã©ã«ããŒã«ãããã«ãŒã/ node_app_slotããã®ãªã³ã¯ã¯ãã®ãã©ã«ããŒã§æ§æãããŸãã
ããŒãã«éä¿¡ãããã¢ããªã±ãŒã·ã§ã³ã¯ã2ã€ã®æ¹æ³ã§èµ·åã§ããŸãã ãŸãã¯ã[å®è¡]ãã¿ã³ã䜿çšããŠéçºç°å¢ããçŽæ¥ã ãŸãã¯ãããŒãäžã®ã³ã³ãœãŒã«ã§æåã§ããã®ããã«/ node_app_slotãã©ã«ããŒã«ç§»åããŠã³ãã³ããå®è¡ããå¿ èŠããããŸã
node main.js
EdisonããŒããåèµ·åãããšãã¢ããªã±ãŒã·ã§ã³ãèªåçã«èµ·åããŸãã ãããé²ãã«ã¯ãããŒã¢ã³ã®èµ·åãã¹ã¿ãŒãã¢ããããåé€ããããmain.jsãã¡ã€ã«ãåé€ãŸãã¯ååå€æŽããŸããããã¯ç°¡åã§ãã
次ã«ãæ¥ç¶ã®çš®é¡ããšã«ãGrove Starter Kit PlusïŒIntel IoT EditionïŒã«ä»å±ãããã¹ãŠã®ã»ã³ãµãŒãæ€èšããŸãã
LEDããã¶ãŒããªã¬ãŒ

ãããã®ããã€ã¹ã¯ãã¹ãŠããžã¿ã«åºåã«æ¥ç¶ãããŠããŸãã D2-D8ã䜿çšã§ããŸãã ãŠããããäŸçµŠãããšããããã¯ãªã³ã«ãªãããŒãã§ã¯ãªãã«ãªããŸãã
LED
ãããã«ã¯ãèµ€ãéãç·ã®3ã€ã®LEDããããŸãã ãããããéžæããŸãã LEDããã€ã¹ã¯æ¥µæ§ããããããæ£ããæ¥ç¶ããããšãéèŠã§ãã é·ãèïŒã¢ããŒãïŒãã+ãèšå·ã®ä»ããã³ãã¯ã¿ã«åãŸãããã«ãLEDãæ¿å ¥ããå¿ èŠããããŸãã ããããééã£ãæ¹æ³ã§å·®ã蟌ããšãå ããŸããã

D2ã«æ¥ç¶ããŠç¹æ» ããŸãã
ãœãŒã¹ã³ãŒãmain.js
/*jslint node:true, vars:true, bitwise:true, unparam:true */ /*jshint unused:true */ // mraa var mraa = require('mraa'); // D2 var myOnboardLed = new mraa.Gpio(2); // myOnboardLed.dir(mraa.DIR_OUT); var ledState = true; // // 100 setInterval(periodicActivity,100); function periodicActivity() { myOnboardLed.write(ledState?1:0); // ledState = !ledState; // }
ãã¶ãŒ
ãã¶ãŒãŸãã¯ããã¿é³ã é»å§ãå°å ããããšãããåšæ³¢æ°ã§ããã¿å§ããŸãã ããžã¿ã«åºåã«æ¥ç¶ããŸãã LEDã®å Žåãšåãããã«ã³ãŒãã䜿çšã§ããŸãã
ãªã¬ãŒ
ãªã¬ãŒã¯ãä¿¡å·ã«ãã£ãŠå¶åŸ¡ãããã¹ã€ããã§ãã ãŠããããäŸçµŠãããšããåè·¯ãã¬ãŒã«ãŒã¯æ¥ç¹ãéãããŒããäŸçµŠãããšããããã¯éããŸãã 5Vãè¶ ããé»å§ããã³0.5Aãè¶ ããé»æµçšã«èšèšãããããã€ã¹ãå¶åŸ¡ããããã«äœ¿çšã§ãããããå€éšé»æºã«æ¥ç¶ãããŸãã ããšãã°ãé»æ°ã¹ã¿ã³ãããªã³ã«ããããšãã§ããŸãã Groveãããã«ä»å±ã®ãªã¬ãŒã«ã¯ã10A x 250Vã®ãã©ã¡ãŒã¿ãŒããããŸãã ããã¯2.5 kWã§ãã ããããããã究極ã®åã§ãã ãã®ããã«ã±ãã«ããªã³ã«ããªãã§ãã ããã 220 Vã®äŸçµŠé»å§ã§ããã€ã¹ãåãæ¿ããå Žåã¯ãæåã«é»å§èªäœãå¥åº·ã«å±éºã§ããããšã«æ³šæããŠãã ããã次ã«ãããŒãã«ä¹ã£ãå Žåãã»ãšãã©ã®å Žåçãå°œããŸãã
PWMããã³LEDèŒåºŠèª¿æŽ
ãããããŒããš1ã ãã§ãªããäžéã¬ãã«ã®ã¢ããã°ä¿¡å·ãçæããå Žåã¯ã©ãã§ããããã ãŸãã¯ã2ã€ã®ç¶æ ãããªãå Žåã«LEDãååã®æããã§ãªã³ã«ããæ¹æ³ã¯ïŒ ããã¯ãPWM-ãã«ã¹å¹ å€èª¿ïŒPWMïŒã䜿çšããŠå®çŸã§ããŸãã 䜿çšãããšãä¿¡å·ã¯å®æçã«1ãã0ã«å€ãããŸãã

ããã¯ãã¬ãŒã ããšã«çºçããŸãã äž¡æ¹ã®ã¬ãã«ã®æéãåãå Žåãå¹³åã§0.5ã®å€ãååŸããŸãã åäœãæéã®25ïŒ ã§ãã£ããšä»®å®ãããšãä¿¡å·ã¯åãã§ãæ倧å€ã®0.25ã§ãã ãã®ããã«LEDãå¶åŸ¡ãããã¬ãŒã ãååã«å°ããéžæãããšãèŠèŠã®æ £æ§ã«ããããã®å¹³åèŒåºŠå€ã衚瀺ãããŸãã
ããŒãäžã®ããžã¿ã«ã³ãã¯ã¿ã®äžéšã¯PWMã¢ãŒãã§åäœã§ããã·ãŒã«ãã§ã¯D3ãD5ãD6ã§ãã ïŒãšãžãœã³ããŒãèªäœã«ã¯ããããã®ããŒã¯ãä»ããŠããŸããïŒ
PWMãæå¹ã«ããã«ã¯ãããã€ãã®ãã©ã¡ãŒã¿ãŒãèšå®ããå¿ èŠããããŸãã æåã¯ãä¿¡å·ã®ç¹°ãè¿ãåšæãã€ãŸããã¬ãŒã ã®ãµã€ãºã§ãã 2çªç®ã®ãã©ã¡ãŒã¿ãŒã¯ããŠããããååšããæéã§ãã 0ã1ã®ä¿æ°ãšããŠããŸãã¯ãã€ã¯ãç§åäœã®æéã®å€ãšããŠèšå®ã§ããŸãã
LEDãç¹æ» ããåŸã ã«æãããå€åããäŸã次ã«ç€ºããŸãã
ãœãŒã¹ã³ãŒãmain.js
/*jslint node:true, vars:true, bitwise:true, unparam:true */ /*jshint unused:true */ var mraa = require("mraa"); var pwm3 = new mraa.Pwm(5); var frameSize = 2000; pwm3.enable(true); pwm3.period_us(frameSize); var value = 0; var step = 0.04; setInterval(proc, 20); function proc() { value += step; if( value < 0 ) { value = 0; step = -step; } else if( value > 1 ) { value = 1; step = -step; } pwm3.write(value); }
éåžžããã³ã¿ãããã¿ã³

ãã¿ã³ã¯ããžã¿ã«å ¥åD2ãD8ã«æ¥ç¶ãããŠããŸãã ã¯ãªãã¯ãããå ŽåããŠããããçºè¡ããŸãã çžäºã®éãã¯ãã¿ãããã¿ã³ãéé»å®¹éã»ã³ãµãŒã§ããããã軜ãã¿ããã§æ©èœããçŽã®å±€ã§ãæ©èœããããšã§ãã
ãã¿ã³ã®ç¶æ ã衚瀺ããã¢ããªã±ãŒã·ã§ã³ãäœæããŸãã
ãã¿ã³ãD8ã«æ¥ç¶ããŸãã
ãœãŒã¹ã³ãŒãmain.js
/*jslint node:true, vars:true, bitwise:true, unparam:true */ /*jshint unused:true */ var mraa = require('mraa'); // D8 var myButton = new mraa.Gpio(8); // myButton.dir(mraa.DIR_IN); // getButton(); // 20 function getButton() { var b = myButton.read(); console.log('button='+b); setTimeout(getButton,20); }
èµ·ååŸã«ãã¿ã³ãæŒããšãåæ§ã®ãã®ã衚瀺ãããŸãã

å転ã»ã³ãµãŒã枩床èšããã€ã¯ãå ã»ã³ãµãŒ

ãããã®ã»ã³ãµãŒã¯ãã¹ãŠãå€éšããã®åœ±é¿ã«å¿ããŠç°ãªãã¬ãã«ã®ã¢ããã°ä¿¡å·ãçæããŸãã ã¢ããã°å ¥åA0ãA3ã«æ¥ç¶ããŸãã ã·ã°ãã«å€0-1023ã
å転ã»ã³ãµãŒ
å転è§åºŠãè¿ããŸãã å€ã®ç¯å²ã¯0ã1023ã§ãã
A0ã«æ¥ç¶ããŸãã

ãœãŒã¹ã³ãŒãmain.js
/*jslint node:true, vars:true, bitwise:true, unparam:true */ /*jshint unused:true */ var mraa = require('mraa'); //require mraa // A0 var myRotary = new mraa.Aio(0); getRotary(); function getRotary() { var b = myRotary.read(); console.log('rotary='+b); setTimeout(getRotary,20); }
ããã°ã©ã ãèµ·åããŠãããåããšã次ã®ããã«è¡šç€ºãããŸãã

枩床ã»ã³ãµãŒ
ãæ³åã®ãšããã枩床å€ãè¿ããŸãã ãã ããå€ãèªã¿åãã ãã§ã¯ååã§ã¯ãããŸãããããã¯ãµãŒãã¹ã¿ã®çžå¯Ÿæµæã«ãªãããã§ãã 床ã«å€æããã«ã¯ãUPMã©ã€ãã©ãªã䜿çšããããšããå§ãããŸãã ãã®ãããã»ã³ãµãŒãA0ã«æ¥ç¶ããŸãã
ãœãŒã¹ã³ãŒãmain.js
/*jslint node:true, vars:true, bitwise:true, unparam:true */ /*jshint unused:true */ var mraa = require('mraa'); var groveSensor = require('jsupm_grove'); // A0 var temp = new groveSensor.GroveTemp(0); setInterval(getTemp,100); function getTemp() { var celsius = temp.value(); console.log('temp='+celsius); }
ã©ã€ãã©ãªé¢æ°ã¯æŽæ°å€ã®ã¿ãè¿ããŸãã ããæ£ç¢ºãªå€ãå¿ èŠãªå Žåã¯ãã»ã³ãµãŒããçŽæ¥å€ã䜿çšãã次ã®ã³ãŒãã䜿çšã§ããŸãã
ãœãŒã¹ã³ãŒãmain.js
/*jslint node:true, vars:true, bitwise:true, unparam:true */ /*jshint unused:true */ var mraa = require('mraa'); //require mraa var temp = new mraa.Aio(0); setInterval(getTemp,100); function getTemp() { var sens = temp.read(); var celsius = convertTemp(sens); console.log('temp='+celsius); } function convertTemp(sensorValue) { var resistance=(1023-sensorValue)*10000/sensorValue; // var temperature=1/(Math.log(resistance/10000)/3975+1/298.15)-273.15;//convert by datasheet ; return temperature; }
ãã€ã¯
ãã€ã¯ããé³ãåºãŸãã A1ã«æ¥ç¶ããŸãã å€ã¯ãéåžžã®ã¢ããã°å ¥åã®å Žåã0ã1023ã®ç¯å²ã§ãã
ãœãŒã¹ã³ãŒãmain.js
/*jslint node:true, vars:true, bitwise:true, unparam:true */ /*jshint unused:true */ var mraa = require('mraa'); var myMic = new mraa.Aio(1); getLevel(); function getLevel() { var lev = myMic.read(); console.log('level='+lev); setTimeout(getLevel,20); }
ãµãŒãé§å

ããã«èå³æ·±ãã®ã¯ããµãŒããã©ã€ãã§ããããã¯ãæå®ã®è§åºŠïŒ0-180床ïŒã§å転ãããã®äœçœ®ãç¶æããããšããã¢ãŒã¿ãŒã§ãã
è§åºŠãèšå®ããã«ã¯ãç¹å®ã®æéïŒãã¥ãŒãã£ãµã€ã¯ã«ïŒã®ã€ã³ãã«ã¹ãé©çšããå¿ èŠããããŸãã ãã®ãããªãã«ã¹ã¯ãéåžžã¯1ç§éã«50åïŒ20ããªç§ïŒé£ç¶ããŠéãããŸãã ããããå°çæéã¯ããã»ã©éèŠã§ã¯ãªããæéã¯éèŠã§ãã 500ã2000ÎŒsã®ç¯å²ã§æå®ã§ããŸãã ã€ã³ãã«ã¹ã®æå°å€ã§ã¯ã0床ã®è§åºŠãèšå®ãããæ倧å€ã¯180床ã«èšå®ãããŸãã

ç°ãªããµãŒããã©ã€ãã§ã¯ããã«ã¹å¹ ã®å¶éå€ãç°ãªãå ŽåããããŸãã ãããã¯å®éšçã«éžæã§ããŸãã ãããã泚æããå¿ èŠããããŸãã æç¶æéã®å€ã蚱容ç¯å²å€ã«ããå ŽåããµãŒãã¯ãããã³ã°ãéå§ããéåžžã«ç±ããªããŸãã ããã«ã³ãã¯ã¿ããåãå€ããŠãã ããïŒ é©åãªæäœã§ã圌ã¯æå®ã®è§åºŠãåããŠåæ¢ããé»ã£ãŠå·ããããªããã°ãªããŸããã
PWMä¿¡å·ãåºåã§ããããžã¿ã«åºåã䜿çšããŸãã ãããã¯D3ãD5ãD6ã®çµè«ã§ãã
PWMã¯å ¥åã«256ã®å€ããåãå ¥ããããšãã§ããããã¹ãŠã®å€ã䜿çšããŠå¡ãã€ã¶ãããšã¯ã§ããŸããããããäžéšãã䜿çšã§ããªããšããäºå®ã«ããããµãŒãã«ã¯ããã»ã©å€ãã®åºå®è§åºŠããªãããšãããããŸãã
ãœãŒã¹ã³ãŒãmain.js
var mraa = require('mraa'); // var frameSize = 20000; // D3 var pwm3 = new mraa.Pwm(3); pwm3.enable(true); pwm3.period_us(frameSize); // var minServoTime = 420; // var maxServoTime = 2000; // 0-1 var value = 0.5;// , 90 // var servoVal = Math.floor(minServoTime + (maxServoTime - minServoTime) * (1-value)); pwm3.pulsewidth_us(servoVal);
液æ¶ç»é¢

ã¹ã¯ãªãŒã³ããã€ã¹ã¯LEDãããè€éãªã®ã§ãç¹å¥ãªã·ãªã¢ã«I2Cãã¹ã«æ¥ç¶ããŸãã
å16æåã®2è¡ã§ããã¹ãã衚瀺ã§ããŸãã RGBããã¯ã©ã€ãããããŸãã ããã¥ã¡ã³ãã«ã¯ãè±èªãšæ¥æ¬èªããµããŒããããŠãããäžå®éã®ãã£ã©ã¯ã¿ãŒãè¿œå ã§ããããšãèšèŒãããŠããŸãã
ããã€ã¹ã¯I2Cãã¹ã«äžŠåã«æ¥ç¶ãããŠãããããããŒãäžã®ãã¹ãŠã®ã³ãã¯ã¿ã¯åçã§ãããç»é¢ã¯ã©ã®ããã€ã¹ã«ãæ¿å ¥ã§ããŸãã

UPMã©ã€ãã©ãªã䜿çšããŸãã
http://iotdk.intel.com/docs/master/upm/node/classes/jhd1313m1.html-ãã®ç»é¢ã§äœæ¥ããŸãã
var jsUpmI2cLcd = require ('jsupm_i2clcd'); var lcd = new jsUpmI2cLcd.Jhd1313m1(0, 0x3E, 0x62); lcd.setColor(100, 127, 53); lcd.setCursor(1,1); lcd.write('Hello Edison!');
ãã¹ãŠããŸãšãã
ããã§ãGrove Starter Kit Plusã®ã»ããã«å«ãŸãããã¹ãŠã®ããã€ã¹ã確èªããŸããã è€æ°ã®ã¢ãžã¥ãŒã«ãåæã«äœ¿çšãããããèå³æ·±ããã®ãåéããŠã¿ãŸãããã
å転ã»ã³ãµãŒïŒA0ïŒãããããã®å転äžã«ãµãŒããã©ã€ãïŒD3ïŒãé©åãªè§åºŠã§å転ããŸãã ãã®è§åºŠã§å転ããããã«èŠã€ãã£ãPWMãã«ã¹å¹ ã¯ãLCDç»é¢ïŒI2CïŒã«è¡šç€ºãããŸãã

ãœãŒã¹ã³ãŒãmain.js
/*jslint node:true, vars:true, bitwise:true, unparam:true */ /*jshint unused:true */ var mraa = require('mraa'); var jsUpmI2cLcd = require ('jsupm_i2clcd'); var lcd = new jsUpmI2cLcd.Jhd1313m1(0, 0x3E, 0x62); lcd.setColor(100, 127, 53); var myRotary = new mraa.Aio(0); var pwm3 = new mraa.Pwm(3); pwm3.enable(true); var frameSize = 20000; pwm3.period_us(frameSize); setInterval(proc, 100); function proc() { // var maxRotary = 1023; var valueRate = value / maxRotary ; // var minServoTime = 420; var maxServoTime = 2000; var servoVal = Math.floor(minServoTime + (maxServoTime - minServoTime)*valueRate); // pwm3.pulsewidth_us(servoVal); // lcd.setCursor(0,0); lcd.write('Time=' + servoVal + ' us '); }
WebãµãŒããŒã®äœæ
IoTïŒã¢ãã®ã€ã³ã¿ãŒãããïŒã®éçºãæ€èšããŠãããããã€ã³ã¿ãŒããããä»ããŠããã€ã¹ãæäœã§ããããã«ããå¿ èŠããããŸãã 次ã®äŸã§ã¯ã枩床ã»ã³ãµãŒã«çŸåšã®æž©åºŠã衚瀺ããWebãµãŒããŒãäœæããŸãã ãµãŒããŒã¯ããŒã1337ã§ãªãã¹ã³ãããµã€ãã«ãŒããžã®èŠæ±ã«å¿çããŸãã 枩床ã»ã³ãµãŒã¯A0ã«æ¥ç¶ãããŠããŸãã ããŒãã®ã¢ãã¬ã¹ã192.168.0.105ã®å Žåããã©ãŠã¶ã§192.168.0.105:1337ãæå®ããŸãã
ãœãŒã¹ã³ãŒãmain.js
var mraa = require('mraa'); var groveSensor = require('jsupm_grove'); var temp = new groveSensor.GroveTemp(0); var lastSetVal = 0; var app = require('express')(); var http = require('http').Server(app); var url = require("url"); var numCalls = 0; app.get('', function (req, res) { 'use strict'; res.writeHead(200, {"Content-Type": "text/html"}); res.write('Intel Edison Sensor temperature ' + temp.value() + '<sup>o</sup>C'); res.end(); }); http.listen(1337, function () { 'use strict'; console.log('listening on *:1337'); });
äœæ¥äŸïŒ

ãã¶ãŒã-ãã©ãŠã¶ãŒã³ã³ãããŒã«

ã ãããæåã«çŽæããã ãµãŒããã©ã€ããšç»é¢äžã®ç¢å°ã䜿çšããŠããã©ãŠã¶ãŒå¶åŸ¡ã®ããã€ã¹ãäœæããŸãã ãŸããã¯ã©ã€ã¢ã³ãããã®åå転ã³ãã³ãã§ã¯ã極端ãªäœçœ®ã§ã¯å転ãçºçããªããããèšå®å€ãJSON圢åŒã§è¿ãããŸãã ãŸããã¡ãã£ãšããããŒãã¹ãšããŠãããã¹ããæ¥ç¶ãããLCDã¹ã¯ãªãŒã³ã«éä¿¡ã§ããŸãã
ããã°ã©ã ã¯2ã€ã®éšåã§æ§æãããŠããŸãã ãããã®1ã€ã¯Edisonããã€ã¹ã«ãããŸãã ããã¯WebãµãŒããŒã®ãã¡ã€ã«main.jsã§ãã ã¯ã©ã€ã¢ã³ãããã®ãªã¯ãšã¹ãã«å¿çãããµãŒããšã¹ã¯ãªãŒã³ãæäŸããŸãã Expressããã³HTTPã©ã€ãã©ãªã䜿çšããŸãã
2çªç®ã®éšåã¯ããã©ãŠã¶ãŒã®ã¯ã©ã€ã¢ã³ãã«ãããŸãã 圌女ã¯ãŠãŒã¶ãŒããã³ãã³ããåãåãããµãŒããŒã«éä¿¡ããŸãã JSON圢åŒã§WebãµãŒããŒããããŒã¿ãåä¿¡ããŠââ衚瀺ããŸãã jQueryã©ã€ãã©ãªã䜿çšããŸãã
ãã®ã¢ããªã¯ããå°ãè€éã«ãªããŸãã ãããžã§ã¯ãã§ããããªãã¯ãã©ã«ããŒãäœæãããã®äžã«éçã³ã³ãã³ããé 眮ããŸãã ç§ãã¡ã®å Žåããããã¯ãã¿ã³ã®3ã€ã®ç»åã§ã-rotate_ccw.pngãrotate_cw.pngãrotate_center.pngãhtmlãã¡ã€ã«index.htmlãããã¯ã¯ã©ã€ã¢ã³ãã®ãã©ãŠã¶ã«è¡šç€ºãããjquery-1.11.3.min.jsã©ã€ãã©ãªïŒããŠã³ããŒãããå¿ èŠããããŸãïŒå ¬åŒãµã€ãjquery.com/download ïŒ

ã¯ã©ã€ã¢ã³ãã§ã¯ãã¹ã¯ãªããã¯ç¢å°ç»åã®ã¯ãªãã¯ãç£èŠãããã®ãããªã€ãã³ããçºçãããšã察å¿ããã¢ãã¬ã¹/å³ã/å·Šã/ã»ã³ã¿ãŒã®ãµãŒããŒã«ãªã¯ãšã¹ããéä¿¡ããç¢å°ã®äœçœ®ã«é¢ããæ å ±ãå«ãJSONããŒã¿ãåä¿¡ããããšãæåŸ ããŸãã ãããã¹ãã®èšå®ããã¿ã³ãã¯ãªãã¯ãããšãå ¥åãã£ãŒã«ãã®ããã¹ãããµãŒããŒã«éä¿¡ãããŸãã
Index.htmlãã¡ã€ã«ã®å
容
<html><body> <title>Rotation</title> <script src="jquery-1.11.3.min.js"></script> <script> function showVal(val) { $("#val").text('Value='+val); } function left() { $.getJSON( "/left", function( data ) { showVal(data['value']); } ) ; } function right() { $.getJSON( "/right", function( data ) { showVal(data['value']); } ); } function center() { $.getJSON( "/center", function( data ) { showVal(data['value']); } ); } function setText() { $.get("/text/"+$("#text").val()); } </script> <a onclick="left();"> <img src="rotate_ccw.png"/> </a> <a onclick="center();"> <img src="rotate_center.png"/> </a> <a onclick="right();"> <img src="rotate_cw.png"/> </a> <br/> <h1 id="val">Value=0</h1> <input id="text" type="text" name="data" value=""> <input type="submit" value="Set text" onclick="setText();" /> </body></html>
ããŒãã§ã¯ãç»é¢ãI2Cã«æ¥ç¶ãããŠããŸãã ãµãŒãã¯D3ã«æ¥ç¶ãããŠããŸãã ãµãŒããŒã¯ããŒã1337ã§ãªãã¹ã³ããŸãã ã¢ããªã±ãŒã·ã§ã³ã¯ã/å³ãžã®åŒã³åºããåŸ ã£ãŠããŸãã ãã®ãªã¯ãšã¹ãã§ã¯ãå¯èœã§ããã°ãå³ãžã®ã¿ãŒã³ãå®è¡ãããç¢å°ã®äœçœ®ã«é¢ããæ å ±ãšãšãã«ã¬ã¹ãã³ã¹ãJSON圢åŒã§éä¿¡ãããŸãã / leftããã³/ centerãžã®åŒã³åºããåæ§ã«åŠçãããŸãã / text / abcdefã®ãããªããã³ããã衚瀺ããããšãæååabcdefãLCDç»é¢ã«è¡šç€ºãããŸãã ãµãŒããã©ã€ããšã¹ã¯ãªãŒã³ã®æäœã«ã€ããŠã¯ãåã«èª¬æããŸããã
Main.jsã³ã³ãã³ã
var mraa = require('mraa'); //----- PWM ----- var value = 0.5; var step = 0.05; var frameSize = 20000; var pwm3 = new mraa.Pwm(3); pwm3.enable(true); pwm3.period_us(frameSize); setTime(value); //---------- LCD ---------- var jsUpmI2cLcd = require ('jsupm_i2clcd'); var lcd = new jsUpmI2cLcd.Jhd1313m1(0, 0x3E, 0x62); var express = require('express'); var http = require('http'); var app = express(); // app.use(express.static(__dirname + '/public')); // app.get('/left', function (req, res) { value = fitValue(value-step); setServoValue(res,value); }); // app.get('/right', function (req, res) { value = fitValue(value+step); setServoValue(res,value); }); // app.get('/center', function (req, res) { value = 0.5; setServoValue(res,value); }); // LCD app.get('/text/:text', function (req, res) { var text = req.params.text; var t = text.toString().substring(0, 16); var vs = t + ' '.substring(0,16-t.length); lcd.setCursor(0,0); lcd.write(vs); console.log('value='+vs+'='); res.writeHead(200, {"Content-Type": "text/html"}); res.end(); }); // http.createServer(app).listen(1337); // JSON function setServoValue(res,v) { res.writeHead(200, {"Content-Type": "text/json"}); var text = '{"value":"'+value.toFixed(2)+'"}'; res.write(text); console.log(text); setTime(value); res.end(); } // function setTime(valueRate) { var minServoTime = 420; var maxServoTime = 2000; var servoVal = Math.floor(minServoTime + (maxServoTime - minServoTime)*(1-valueRate)); pwm3.pulsewidth_us(servoVal); } // function fitValue(v) { if( v > 1 ) { v = 1; } if( v < 0 ) { v = 0; } return v; }
Package.jsonã³ã³ãã³ã
{ "name": "PWM", "description": "", "version": "0.0.0", "main": "main.js", "engines": { "node": ">=0.10.0" }, "dependencies": { "express" : "latest", "http" : "latest" } }
ç»årotate_ccw.png

ç»årotate_cw.png

ç»årotate_center.png

ããã ãã§ãã èµ·åããŠç¢ºèªããŸãã
æªéNode.JS
Intel EdisonããŒãã§ããŒã¢ã³ãã©ã®ããã«æ©èœãããã«ã€ããŠã®ããã€ãã®èšèã
ã·ã¹ãã ã¯xdk-daemonããŒã¢ã³ãå®è¡ããŸãã ã³ãã³ãã§åæ¢ããå ŽåïŒ
systemctl stop xdk-daemon
äœæ¥äžã®Node.JSã¢ããªã±ãŒã·ã§ã³ã¯åæ¢ããŸãã 次ã®ã³ãã³ãã§åèµ·åã§ããŸãïŒ
systemctl start xdk-daemon
ãŸãã¯åèµ·åïŒ
systemctl restart xdk-daemon
ããã°ã©ã ã¯ããŒãäžã§çŽæ¥ç·šéããããšãã§ããŸãïŒviïŒãå€æŽåŸã¯å¿ ãåèµ·åããŠãã ããã ãŸãã¯ïŒ
systemctl restart xdk-daemon
ãŸãã¯ãã³ãã³ãã䜿çšããŠã³ã³ãœãŒã«ã§ããã°ã©ã ãèµ·åããå ŽåïŒ
cd /node_app_slot node main.js
ãã®åŸã<Ctrl> + <C>ã§åæ¢ã§ããŸã
圹ã«ç«ã€
» Advanced Audio Distribution ProfileïŒA2DPïŒã䜿çšããŠãBluetoothçµç±ã§Intel Edisonã§ãªãŒãã£ãªãåçããŸã
» OpenCV 3.0.0-rc1ïŒIPPããã³TBBã䜿çšïŒãIntel Edison Yoctoã«ã€ã³ã¹ããŒã«ããŸãã OpenCVã®USBã«ã¡ã©
» Intel Edison Boardã䜿çšããŠãæ°ãããã€ãŒãã§Orbotix SpheroããŒã«ã®è²ãå€æŽãã
» Bluetooth LEïŒBLEïŒã䜿çšããŠAndroidçµç±ã§Intel Edisonã«æ¥ç¶ãã