ã¿ãªããããã«ã¡ã¯ã åœç¶ã®ããšãªãããèªåæ瞊ã¯ç®¡çäžã®æ±ºå®ãäžãã ãã§ãªãããããã®æ±ºå®ã«åŸãããã«è»ã匷å¶ããå¿ èŠããããŸãã ä»æ¥ã¯ãéåžžã«æé ãªäŸ¡æ Œã®æ段ã䜿çšããŠãå®å šã«é»åçãªã¹ãã¢ãªã³ã°ïŒã¹ãã¢ãã€ã¯ã€ã€ïŒã§éåžžã®è»ãæ¹é ããæ¹æ³ã説æããŸãã è»èªäœã¯éçºã«å®éã«ã¯å¿ èŠã§ã¯ãªããã»ãšãã©ã®æ©èœã¯èªå® ããªãã£ã¹ã§å¿«é©ã«ãããã°ã§ããããšãããããŸããã ãšã¬ã¯ãããã¯ã¹ãããŒã·ã§ããã®æåãªã³ã³ããŒãã³ããäž»æŒã
é»åå¶åŸ¡ã·ã¹ãã ã«å¿ èŠãªãã®ã¯äœã§ããïŒ è»èŒªãå転ãããããšãã§ãããµãŒããããã³ãµãŒããå¶åŸ¡ããã³ã³ãããŒã©ãŒã çªç¶ãããã¯ãã¹ãŠã»ãšãã©ã®è¿ä»£çãªè»ã«ãã§ã«æèŒãããŠãããããã¯ãŒã¹ãã¢ãªã³ã°ããšåŒã°ããŠããŸãã åŸæ¥ã®çŽç²ãªæ©æ¢°åŒïŒéåžžã¯æ²¹å§åŒïŒã¢ã³ãã¯åžå Žããæ¥éã«å§¿ãæ¶ãã€ã€ãããé»åå¶åŸ¡ãŠãããïŒECUïŒãåããããŒãã«åã£ãŠä»£ãããŸããã ãã®ãããã¿ã¹ã¯ã¯ããã«ç°¡çŽ åãããŸããå¿ èŠãªã³ãã³ãããµãŒããã©ã€ãã«çºè¡ããããã«ãæ¢åã®ã¢ã³ãECUãã説åŸãããããšãã§ããŸãã
2015幎ã¢ãã«ä»¥éã®KIA Cee'dã®æ¹è¯ã«éåžžã«äŸ¿å©ã§ããããšãå€æããŸããïŒKIA / Hyundaiã®ã³ãã©ãããã©ãŒã ã¯ã»ãŒåæ§ã§ãïŒã ããã€ãã®èŠå ãåæã«çããŸããã
- ãã¯ãŒã¹ãã¢ãªã³ã°ã¯å®å šã«é»ååŒã§ãããæ²¹å§è£ 眮ã«å€§éšãããããšã¯ãããŸãããå解ã«ãããè²»çšã¯ïŒæ¯èŒçïŒå°é¡ã§ãã å¿ èŠãªãã¹ãŠã®é ç·ãåŒãåºãããç°¡åã«ã¢ã¯ã»ã¹ã§ããŸãã
- ã¢ã³ãã¯ã¹ãã¢ãªã³ã°ã³ã©ã ãšçµ±åãããŠãããããè»ã§ç°¡åã«ã¢ã¯ã»ã¹ã§ããè¿œå ã®é»åæ©åšã¯æž©å®€ã®ç¶æ ã§ãã£ãã³ã«æ®ããŸãïŒã¢ã³ããã¹ãã¢ãªã³ã°ã©ãã¯ã«çµ±åãããŠããå Žåãšã¯ç°ãªããŸãïŒã
- éåžžã«éèŠã§ã-åæ§ã®KIAãœãŠã«ã®æŽç·Žã®æåäŸããããŸãã American PolySync㯠ãSoulããããŒã³åãã®å®å šãªãã©ã€ããã€ã¯ã€ã€ãã©ãããã©ãŒã ãžã®ã¢ããã°ã¬ãŒããéçºããŠããŸããGitHub㧠å€ãã®æçšãªãã®ãèŠãããšãã§ããŸãã
ãã®ãããã¹ãã¢ãªã³ã°ã³ã©ã ã¢ã»ã³ããªã®å»æ£æã«åãåããŸããã
ã¹ãã³ãããŸãã ãããè¡ãã«ã¯ãã³ã³ãããŒã«ãŠãããã
- 圌ã¯èµ°è¡äžã®ãšã³ãžã³ãæèŒããè»ã«ä¹ã£ãŠããŸãã
- ãã©ã€ããŒã¯ããã³ãã«ã«å転åãå ããŸãã
é çªã«è¡ããŸãããã
è»ã®ã·ãã¥ã¬ãŒã·ã§ã³
ã¢ã³ãã®é»åå¶åŸ¡ãŠãããïŒECUïŒãšè»ã®ä»ã®éšåãšã®éã®ã€ã³ã¿ãŒãã§ãŒã¹ãç解ããå¿ èŠããããŸãã é»æ°åè·¯ãã°ãŒã°ã«ã§èŠããšãç»åã衚瀺ãããŸãã
ãã®å³ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ãç©ççã«éåžžã«åçŽã§ããããšã瀺ããŠããŸãã
- E29ã³ãã¯ã¿çµç±ã®é»æºïŒDC12VïŒã
- ã³ãã¯ã¿M46ãä»ããç¹ç«ãªã³ä¿¡å·ïŒ12VïŒã
- ã³ãã¯ã¿M46çµç±ã®CANããŒã¿ãã¹ãã
åããµã€ãã§ã³ãã¯ã¿ã®å€èŠ³ãšãã³é 眮ã確èªããŸãã
é»æºãšã€ã°ããã·ã§ã³ã䜿çšãããšããã¹ãŠãç°¡åã«ãªããåŸæ¥ã®ã³ã³ãã¥ãŒã¿ãŒã®é»æºãã12VãååŸã§ããŸãã ãã ããé»æºãšç¹ç«ãäŸçµŠããã ãã§ã¯ãã¢ã³ãã¯å®å šã«ã¯ãªã³ã«ãªãããå¢å¹ ããŸããã ããã«ãè»ã®ä»ã®ãããã¯ããã®æ å ±ãå¿ èŠã§ãïŒãšã³ãžã³ãäœåããŠãããã©ããïŒãªãã«ãªã£ããšãã«ããããªãŒãšãã«ã®ãŒãç¡é§ã«ããªãããã«ïŒãçŸåšã®é床ïŒãã³ãã«ãã¹ããŒãã§ãéããããããïŒãããããäœãä»ã®ãã®ã
çŸä»£ã®èªåè»ã®é»åãŠãããéã®ããŒã¿äº€æã¯ã CANïŒã³ã³ãããŒã©ãŒãšãªã¢ãããã¯ãŒã¯ïŒãã¹ãä»ããŠè¡ãããŸãã ããã¯ãåãããã¯ããã®ããŒã¿ãå ¬éã§ãããã€ã¹ããã¢ã±ãŒãã«äžã®ãããŒããã£ã¹ãïŒãã±ããã«ã¯å®å ã¢ãã¬ã¹ããããŸããïŒLANã§ãã åããŒã¿åã«ã¯ç¬èªã®èå¥åããããŸãã ããšãã°ããã®äŸã§ã¯ããã¯ãŒã¹ãã¢ãªã³ã°ã¯ID 0x2B0ã®ã¹ãã¢ãªã³ã°è§åºŠã®å€ãéä¿¡ããŸãã ãã¯ãŒãŠã£ã³ããŠã³ã³ãããŒã©ãŒãªã©ã®ã»ã«ã³ããªãŠããããéèŠãªã³ã³ããŒãã³ãéã®äº€æã劚害ããªãããã«ãå€ãã®å Žåãç©ççã«åé¢ããããã¹ãããã€ããããŸãã Cee'dã¯ãC-CANãšB-CANã®2ã€ã®ãã¹ã䜿çšããŸãïŒãããŒã¿ãã£ãã«æ å ±ãã»ã¯ã·ã§ã³ã®å³ãåç §ïŒã C-CANã§ã¯ãã»ãŒãã¹ãŠã®ãããã¯ãããã³ã°ãããåäœããŸãã
CANãã¹ã¢ããã¿ãŒã®éžæ
ãŸã第äžã«ãã³ã³ãã¥ãŒã¿ãŒçšã®CANã€ã³ã¿ãŒãã§ãŒã¹ãå¿ èŠã§ãã å¯èœãªãœãªã¥ãŒã·ã§ã³ã®è©³çŽ°ãªæŠèŠã¯ããã§å ¥æã§ããŸã ã ããšãã° ãäŸ¡æ Œã¯æ°åãã«ããæ°çŸãã«ã®ç¯å²ã§ãã ããã€ã¹ããšã«ãæ¯èŒçæé ãªäŸ¡æ ŒããããŸãã
- aliexpressã§çµã¿ç«ãŠãããã¢ããã¿ã ç§ã¯ããããè©Šããããšã¯ãããŸããããå€ãã®æ¬ é¥ãããããœãããŠã§ã¢ã¯Windowsã§ããèŠããªããšããåããããŸãã
- MCP2515 / MCP2551ã®Arduinoã·ãŒã«ãã¯ãäž»ã«ArduinoãããŒãã«ããã¹ãã¢ãããã¶ã€ã³ã¯ããŒã³ãçºèŠããŸããã ãã ãããã®ãããªã·ãŒã«ããArduinoãšçµã¿åãããŠïŒå¿ èŠãªé床ã§åäœãããããšãã§ããŸããã§ããïŒãRaspberry Piãšçµã¿åãããå¿ èŠããããŸãã 以äžã®ä»é²ã«ã¯ã詳现ãªæé ãå«ãŸããŠããŸã ã
- Artemka86ã«ãã£ãŠéçºãããUSBã¢ããã¿ãŒCANHacker Baby ã éçºè ããã®åªããçŽæ¥ãµããŒããåããaliexpressãªãã·ã§ã³ãšæ¯èŒããŠå¥œæçã§ãïŒå人çã«ãã¹ããããArtyomã¯ãéã§åé¡ã«ã¢ãããŒãããŸãïŒã ãŸããå¹ åºããœãããŠã§ã¢ãšäºææ§ã®ããæšæºLAWICELãããã³ã«ã®ãµããŒãããã©ã¹ã§ãã
ããããã®ç°ãªããœãããŠã§ã¢ããããŸãïŒ ããã§ããäžåºŠã¬ãã¥ãŒããŸã ïŒã æãç°¡åãªãªãã·ã§ã³ã¯ãVolkswagenã®ãšã³ãžãã¢ã®ãããã§ã SocketCANã® can-utils
ã䜿çšãã Linuxã§ãã æšæºåã«ãããSocketCANã®å€§ããªå©ç¹ã¯ãLAWICELãããã³ã«ïŒpdfïŒããµããŒããã USBããã€ã¹ãã·ã¹ãã ããéåžžã®ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ãšããŠèªèãããããšã§ã ã ãããã£ãŠãç¹å®ã®ããã€ã¹ã®ãã³ããŒåºæã®ãœãããŠã§ã¢ãžã®ãã€ã³ããåé¿ããŸãã CANHackerã®çŸåšã®ããŒãžã§ã³ã«ã¯ãUSBãæäœããããã®æšæºã®can-utilsãšã®ããããªéäºææ§ãããããããããããããããŒãžã§ã³ãååŸããŸã ã CANã·ãŒã«ãä»ãRaspberry Piã¯ãRaspbian OSã®can-utilsã¹ããã¯ããã±ãŒãžã§åé¡ãªãåäœããŸãã
ãã¹æ¥ç¶ããã±ããèšé²
ã¹ã¿ã³ãäžã®åã ã®ããŒãã«æ¥ç¶ããããšã§ããã¹ãŠãç°¡åã«ãªããŸããã¢ããã¿ãŒã®CAN-Highæ¥ç¹ãšã«ãŒãŠãããã®CAN-HighãCAN-Low-CAN-Lowãæ¥ç¶ããŸãã æšæºã«ããã°ãCAN-HighãšCAN-Lowã®éã«ãããã120Ωã®çµç«¯æµæã2ã€ããã¯ãã§ããå®éã«ã¯ããã¹ãŠãéåžžããªãåºãç¯å²ã®æµæã§åäœããŸããããšãã°ã110Ωã®æµæããããŸãã
è»ã«ã¯çµç«¯æµæã¯å¿ èŠãããŸããïŒãã¹èªäœãæ©èœãããããã«æ¢ã«ååšããŠããŸãïŒã è»ã®ã¢ãã«ã«ãã£ãŠã¯ããã¹ã®é ç·ã«ç©ççã«ã¢ã¯ã»ã¹ããå¿ èŠãããå ŽåããããŸãã æã䟿å©ãªãªãã·ã§ã³ã¯OBD-IIïŒãªã³ããŒã蚺æïŒã³ãã¯ã¿ã§ãã2001-2004幎ã®åããããšãŒãããã§è£œé ããããã¹ãŠã®è»ã«å¿ èŠã§ãããã¹ãã¢ãªã³ã°ãã€ãŒã«ãã60 cm以å ã§ãã Cee'dã®å·ŠåŽã«ã¯ããã³ãã«ã®äžã®ãã¥ãŒãºããã¯ã¹ã®ãã©ã¹ããã¯ã«ããŒã®åŸãã«ã³ãã¯ã¿ããããŸãã
OBD-IIãã³é 眮ã¯æšæºåãããŠãããCANãã¹ïŒ6ãã³ã®CANHã14ãã³ã®CANLïŒãå«ãŸããŠããŸãã 幞éãªããšã«ãéåœäººã¯æµæãæãå°ãªãéããã©ãããã¹ãŠã®éèŠãªããŒããã¶ãäžãã£ãŠããC-CANã蚺æã³ãã¯ã¿ã«çŽæ¥åŒãåºããŸããã
ãã®çµæãè»å ã§äœããå解ããããšãªããCee'dã®ãã¹ãŠã®å éšãã©ãã£ãã¯ãèãããšãã§ããŸãã è»ãããªãã®ãã®ã§ã¯ãªããå人ãããªããæ··ä¹±ããããšã-倧ããªãã©ã¹ã ãããããã®ãããªæ¯åã¯ã©ãã«ããããŸããã ããšãã°ããã©ã«ã¯ã¹ã¯ãŒã²ã³ã®å ŽåããµãŒãã¹CANã¯OBDã²ãŒããŠã§ã€ããåé¢ãããŠããããã次ã®ããã«æ¥ç¶ããå¿ èŠããããŸãã
ãã¹ãŠã®é£çµ¡å ãæ¥ç¶ãããããããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ãäžããŸãã
$ sudo slcand -o -c -s6 -S 115200 ttyACM0 slcan0 && sleep 1 && sudo ifconfig slcan0 up
ãããã¯ãŒã¯ãæ©èœããããŒã¿ãåä¿¡ãããŠããããšã確èªããŸãïŒã€ã°ããã·ã§ã³ããªã³ã«ããŸãïŒã
$ cansniffer slcan0
ãããŠæåŸã«ããã¹ãŠãããŸãããã°ããã°ãæžãããšãã§ããŸãïŒ
$ candump -L slcan0 > real-car-can-log.txt
ããã§ããšã³ãžã³ãèµ·åããå¿ èŠããããŸãããªããªãã ãšã³ãžã³ã皌åããŠãããšãã®ã¿ãã¯ãŒã¹ãã¢ãªã³ã°ãå®éã®ã²ã€ã³ã§ãªã³ã«ãªããã¹ã¿ã³ãã§åŒ·åããå¿ èŠããããŸãã
ã¹ã¿ã³ãã§ãã¹é²é³ãåçãã
è»ããèšé²ããããã°ã䜿çšããŠãã¹ã¿ã³ãã«æ»ããç§ãã¡ã®å€ç¬ãªã¢ã³ãã欺ãããã«é²ãããšãã§ããŸãã ãŸããè»ã«ã¯å°çšã®ã¢ã³ãããããCANãã¹ã«ãããŒã¿ãéä¿¡ããããšãå¿ããªãã§ãã ããããããã®ãã±ããããã°ã«èšé²ãããŠããŸãã 競åãé¿ããããã«ãããããã£ã«ã¿ãªã³ã°ããŸãã ç§ãã¡ã¯ã¹ã¿ã³ãã®ã¢ã³ãã«æ¥ç¶ãããŠããããããäžãããã®ãèŠãŠãããŸãïŒ
$ $ candump slcan0 slcan0 2B0 [5] 00 00 00 00 00 slcan0 2B0 [5] FF 7F FF 06 F1 slcan0 2B0 [5] FF 7F FF 06 C2 slcan0 2B0 [5] FF 7F FF 06 D3 slcan0 2B0 [5] FF 7F FF 06 A4 slcan0 2B0 [5] FF 7F FF 06 B5 slcan0 2B0 [5] FF 7F FF 06 86 slcan0 2B0 [5] FF 7F FF 06 97 slcan0 2B0 [5] FF 7F FF 06 68 slcan0 5E4 [3] 00 00 00 slcan0 2B0 [5] FF 7F FF 06 79 slcan0 2B0 [5] FF 7F FF 06 4A ....
ãã±ãã2B0
ïŒçŸåšã®ã¹ãã¢ãªã³ã°è§åºŠïŒãšãããã»ã©é »ç¹ã§ã¯ãªããã 5E4
ïŒã¢ã³ãã®äžè¬çãªã¹ããŒã¿ã¹ïŒãéä¿¡ãããããšã2B0
ãŸãã äžè¬ãã°ãããããããã£ã«ã¿ãªã³ã°ããŸãã
$ cat real-car-can-log.txt | grep -v ' 2B0' | grep -v ' 5E4 ' > can-log-no-steering.txt
ãã£ã«ã¿ãªã³ã°ããããã°ã¯ãåçã®ããã«éä¿¡ã§ããŸãã
% sudo ifconfig slcan0 txqueuelen 1000 $ canplayer -I can-log-no-steering.txt
ãã¹ãŠãæ£åžžã«æ©èœããå Žåãã¢ã³ãã¯æ©èœããã¹ãã¢ãªã³ã°ã·ã£ãããæã§åãã®ãã¯ããã«ç°¡åã«ãªããŸãã ãã®ãããããŒããéåžžã¢ãŒãã§åäœããããã«åŒ·å¶ããã¹ãã¢ãªã³ã°ãã€ãŒã«ã®æäœã®ã·ãã¥ã¬ãŒã·ã§ã³ã«é²ãããšãã§ããŸãã
ã¹ãã¢ãªã³ã°ãšãã¥ã¬ãŒã·ã§ã³
ã¹ãã¢ãªã³ã°ã·ã£ããã®ãã«ã¯ãšå転è§ã¯ãå èµã»ã³ãµãŒãŠãããã«ãã£ãŠæž¬å®ãããããããã¢ã³ãã³ã³ãããŒã«ãŠããããžã®é ç·ããŒãã¹ããããŸãã
å¶åŸ¡ãŠãããã¯ã»ã³ãµãŒã®ä¿¡å·ãåŠçãããµãŒããã©ã€ãã«ã³ãã³ããçºè¡ããŠãã¹ãã¢ãªã³ã°ã·ã£ãããåãããã®è¿œå ã®åªåãçã¿åºããŸãã
ã»ã³ãµãŒä¿¡å·åœ¢åŒã®ç¢ºèª
PolySyncã«ãããš ãCee'dãšå ±éã®ãã©ãããã©ãŒã ãå ±æããSoulã«ã¯ã2ã€ã®ã¢ããã°ãã«ã¯ã»ã³ãµãŒããããŸãã åä¿¡å·ã¯ãããŒã¹2.5Vããã®DCé»å§ã¬ãã«ã®åå·®ã§ããããã³ãã«å ã®ã¯ã€ã€ã¯ç·ãšéã§ãã åãããšã確èªããŠãã ããã
- ã³ã³ãã¥ãŒã¿ãŒã®ã³ãã¯ã¿ãŒãéããå¿ èŠãªæ¥ç¹ããã¬ããããŒããéããŠè»¢éããarduinoã¢ããã°å ¥åãèµ·åããŸãã
- é»å§ã枬å®ããŠã¿ãŒããã«ã«åºåãããµã€ã¯ã«ã§ã ã¹ã±ãããèªã¿èŸŒã¿ãŸãã
- Arduino IDEã§ã·ãªã¢ã«ãããã¿ãŒãèµ·åããã¹ãã¢ãªã³ã°ã·ã£ãããå転ãããŸãã çµæãã°ã©ãã§èŠããšãã¹ããŒã ã¯SoulãšäžèŽããŠããŸãã
- ç¯çŽãããæéã§åã¶ã
ã»ã³ãµãŒä¿¡å·ãšãã¥ã¬ãŒã·ã§ã³
ã»ã³ãµãŒä¿¡å·ããšãã¥ã¬ãŒãããŸãã ãããè¡ãã«ã¯ãã¢ãžã¥ãŒã«ãã»ã³ãµãŒãšã³ã³ãã¥ãŒã¿ãŒã®éã®éåè·¯ã«çœ®ããã»ã³ãµãŒããã®å®éã®ä¿¡å·ããããŒããã£ã¹ãããã³ãã³ãã§åºå®ã¬ãã«ã«ã·ããããŸãïŒã¹ãã¢ãªã³ã°ã³ã©ã ã«å ããããåã瀺ããŸãïŒã 1ã€ã®Arduinoã®ãã¯ãŒã§ã¯ãããã¯æ©èœããŸãããå®é»å§ãçæã§ããæ¬æ Œçãªããžã¿ã«-ã¢ããã°ã³ã³ããŒã¿ãŒã¯ãããŸããã arduinoã¢ããã°å ¥åãç§ãã¡ã«ã¯ããŸãé©ããŠããŸãã-æ倧6ã€ã®ãã³ããããŸãããã³ã³ãããŒã©ãŒã«ã¯ADCãã£ã³ãã«ã1ã€ãããªãããã³éã®åãæ¿ãã«ã¯ããªãã®æéãããããŸãã
Arduinoã«å€éšDAC / ADCãè¿œå ããå¿ èŠããããŸãã PCF8591ãããã«åºã¥ããYL-40ã¢ãžã¥ãŒã«ïŒ pdfã®èª¬æ ïŒã«åºäŒããŸãããåã¢ãžã¥ãŒã«ã«ã¯ã4ãã£ãã«ã®8ãããADCãš1ã€ã®8ãããDACããããŸãã ã¢ãžã¥ãŒã«ã¯ãI2Cãããã³ã«ãä»ããŠarduinoãšéä¿¡ã§ããŸã ã ããã«ã¯å°ãæåéãã®ããŒãã³ã°ãå¿ èŠã§ãïŒæåéãïŒïŒäžåœã®åå¿ã¯ããŒãã«DACã®åºåã®é»å§ã瀺ãLEDã眮ããŸã-ããã¯åæãããªããã°ãªããŸããã ããããªããšããã€ãªãŒããæµããé»æµã«ãããDACãïŒæšæºã®5Vã§ã¯ãªãïŒ4.2V以äžã®åºåé»å§ãäžããããšãã§ããªããªããŸãã ããŒãã®èé¢ããæµæR4ãåãåºãããšã«ããããã€ãªãŒããåæããŸãã
ãŸããããã¡ãã®è² è·ïŒãµãŒãã¹ã¿ããã©ãã¬ãžã¹ã¿ããã®ä»ïŒãå ¥åã«ã¯ãã ä»ããããããããåæãããžã£ã³ããåãå€ããŠå¹²æžããªãããã«ããŸãã
arduinoãžã®ã€ã³ã¿ãŒãã§ãŒã¹ã«ã¯åŸ®åŠãªéãããããŸã-2ã€ã®DACãã£ãã«ããããã2ã€ã®ã¢ãžã¥ãŒã«ãå¿ èŠã§ããããããã¯åãI2Cã¢ãã¬ã¹ãæã£ãŠããŸãïŒãããã«é ç·ãããŠããŸãïŒã ãã®ãããã䜿çšãããšãI2Cã¢ãã¬ã¹ãå€æŽããŠãç¹å®ã®ã¬ãã°ãã°ã©ã³ãã§ã¯ãªã+ 5Vã«ããã¯ã§ããŸããããããã®ãžã£ã³ããŒã¯ããŒãäžã§åé¢ãããŠããŸããã ã¯ãã ä»ãã®ä»£ããã«ãarduinoäžã®2ã€ã®ç°ãªãI2Cã©ã€ãã©ãªïŒæšæºã®WireãšSoftI2CMaster ïŒã«æŸèæãåããŸããããããããã«ãã³ã®ãã¢ããããŸãã ç°ãªããã¹ã§ã¢ãžã¥ãŒã«ãååŸãããšã競åã¯ãªããªããŸãã
æ®ãã¯ç°¡åã§ã-ã¢ãžã¥ãŒã«ãã»ã³ãµãŒããåè·¯é®æã«å ¥ããarduinoã«æ¥ç¶ãã ã¹ã±ãããèªã¿èŸŒã¿ãŸãã æ¥ç¶ã®ãã³é åã®è©³çŽ°ã¯ãã¹ã±ããã®ã³ã¡ã³ãã«ãããŸãã ã¢ã»ã³ããªã«ãã¹ãŠãå«ããããšã¯æ®ã£ãŠããŸãããããã§ã®é åºã¯éèŠã§ãã
- arduinoããªã³ã«ããŠãã·ãªã¢ã«ã¢ãã¿ãŒãéããŸãã åæ¢ãŸãã¯äžæã§ã¯ãªããæåã«arduinoãéå§ããããšãéèŠã§ãã ããããªããšãDACã®åºåã®é»å§ããªã»ãããããã¢ã³ãECUãã»ã³ãµãŒããã®ä¿¡å·ãšã©ãŒãæ€åºããã»ãŒãã¢ãŒãã«ãªãããã¹ãŠãåèµ·åããå¿ èŠããããŸãã
- ã¢ã³ãã®é»æºãå ¥ããã€ã°ããã·ã§ã³ãæ¥ç¶ããŸãã
- CANãã¹ãã°ã®åçãéå§ããŸãã
- ããã§ãã·ãªã¢ã«ã¢ãã¿ãŒãä»ããã³ãã³ã
l
ããã³r
ã«ãããã¢ã³ãã¯ã¹ãã¢ãªã³ã°ã·ã£ãããå転ãããŸãã åå©ã宣èšãããŸãã
ä»æ¥ã§ã¯ããã¹ãŠããœãããŠã§ã¢ãå®æãããŸãïŒCANãã¹ãšã®çµ±åãããããçŸåšã®å転è§ãèªã¿åããå€éšã³ã³ãããŒã©ãŒãã¹ãã¢ãªã³ã°ãã€ãŒã«ã®åºå®å転è§ãèšå®ããã·ã¹ãã ãããã«èããããããã«ãã«ã¯ãåçã«å¶åŸ¡ããŸãïŒãè»ã§ã®äœæ¥ïŒæµæãã·ãã¥ã¬ãŒãããããšã¯ã§ããŸããïŒãã€ãŒã«ïŒã 8ãããDAC / ADCã10ãŸãã¯12ãããã«çœ®ãæããããšãã§ããŸãïŒæåã«æã«å ¥ãããã®ãåããŸããïŒã ã¿ãã·ã³ã°ãã¥ãŒã©ã«ãããã¯ãŒã¯ãé²è¡äžã§ããããã«æçš¿ããããšæã£ãŠããŸãã
CANã®äœ¿çšããã³æ©åšã®ãµããŒãã«é¢ãã貎éãªã¢ããã€ã¹ããã ãã£ãArtemka86ã«æè¬ããŸãã
ãããªãæ²¡å ¥ã®ããã®ãªãœãŒã¹
- ã«ãŒãããã³ã°ïŒæ±ºå®çãªãœãŒã¹ ã Pooriesã®Car Hackingããå§ããããšãã§ããŸããããã§ã¯ãåºæ¬ãååã«èª¬æãããŠããŸãã æ®ããèå³æ·±ãã§ãããäžæ£ã¢ã¯ã»ã¹ã«çŠç¹ãåœãŠãŠããŸãã
- ã«ãŒããã«ãŒãã³ãããã¯ïŒäŸµå ¥ãã¹ãã®ã¬ã€ã ã ã«ãŒãããã³ã°ããã詳现ïŒæ±ºå®çãªãœãŒã¹ã§ãããäžæ£ã¢ã¯ã»ã¹ã匷調ããŠããŸãã ãããã¯ã®æåã®çŽ¹ä»ãšããŠèªãã å Žåã倧ããªéšåãã¹ãããããããã«é©å¿ããå¿ èŠããããŸãã
- ã«ãŒãããã³ã°101ïŒååŒããŒã« ã MCDãœãããŠã§ã¢ -ããŒã«ã¬ãã¥ãŒã ç§ã®æèŠã§ã¯åºæ¬çã«é¢çœããªããšããŸããã¯ã§ãã
- Open Source Car Controlã¯ãKIA Soulãéçºäžã®ãªãŒãã³ãã©ãããã©ãŒã ã§ãã 圌ãã¯ããã·ã³ã®ããŒããŠã§ã¢ã®æ¹åïŒäž»ã«ãã¬ãŒãçš-è¿œå ã®ãã¬ãŒããã©ã€ãã®åãä»ãããã¬ãŒãæ²¹å§ã®å€æŽãªã©ïŒãå«ããå®å šãªæ±ºå®ïŒã¹ãã¢ãªã³ã°ãã€ãŒã«ãã¢ã¯ã»ã«ããã¬ãŒãïŒãè¡ããŸãã ãŸã ãªãªãŒã¹ã¯ãããŸããã§ããããå€ãã®ãã®ããã§ã«èŠåŒµãããŠããŸãã
ããŒãã¹ Raspberry PiãšArduino CANã·ãŒã«ãã®çµã¿åãã
ãŸã第äžã«ã泚æã CANã·ãŒã«ããšã©ãºããªãŒãã€ã¯çŽæ¥æ¥ç¶ã§ããŸãã ããããã¯é»å§ã«äºææ§ããããŸããã Arduino UNOäºæããŒãã§ã¯ãããžãã¯é»å§ã¯5Vã§ãããã©ãºããªãŒãã€ã§ã¯3.3Vã®ã¿ã§ãããããçŽæ¥æ¥ç¶ã§ã¯é¢ä¿ãããã³ã®ã¿ãçŒããŸãã
å¿ èŠãªãã®ïŒ
- Raspberry PiïŒããŒãžã§ã³3Bã§ãã¹ãæžã¿ïŒã
- MCP2515 / MCP2551ã®Arduino CANã·ãŒã«ãã
- 5ãã£ãã«ä»¥äžã®ããžãã¯ã¬ãã«ã³ã³ããŒã¿ãŒïŒ2ã4ãã£ãã«ãå¯èœã§ãããããå€ãã®æ¥ç¶ãå¿ èŠã«ãªããŸãïŒã ããã«åºäŒã£ã
CANã·ãŒã«ãã SPIããŒã¿ã€ã³ã¿ãŒãã§ã€ã¹æ¥ç¶ ïŒ4ãã³ïŒMOSIãMISOãSCLKãCSïŒããã³å²ã蟌ã¿ä¿¡å·ã®1ãã³ã§é»åïŒ5VïŒãååŸããå¿ èŠããããŸãã é»å以å€ã¯ãã¹ãŠã¬ãã«ã³ã³ããŒã¿ãŒãééããã¬ãã«ã³ã³ããŒã¿ãŒãé»æºãå ¥ããå¿ èŠããããŸãã
å³ã§ã¯ãå¿ èŠãªãã³ãæ¢ããŠããŸãã
ã©ãºããªãŒãã€ïŒ
CANã·ãŒã«ãïŒ
çµæãåŸãããŸãã
- raspberry pi 19ã21ã23ã24ïŒMOSIãMISOãSCLKãCSïŒã®SPIã¯ãCANã·ãŒã«ãã®D11ãD12ãD13ãD9ïŒãŸãã¯äžéšã®ããŒãžã§ã³ã®D10ïŒã«å¯Ÿå¿ããŠããŸãã
- ã·ãŒã«ãäžã®D2ããã®äžæã¯ãä»»æã®GPIOãã³ã©ãºããªãŒã§è¡ãããšãã§ããŸãããã³22ïŒGPIO 25ïŒããããŸãã èšå®äžã«ãœãããŠã§ã¢ã§ãã³çªå·ãæå®ããŸãã
ã³ã³ããŒã¿ãŒãä»ããŠæ¥ç¶ããã³ã³ããŒã¿ãŒã®äž¡åŽã§ç®çã®äŸçµŠé»å§ãéå§ãããšããã®éººãããããŸãã
5Vé»æºãšã·ãŒã«ããžã®æ¥å°ãé€ããã¹ãŠãã³ã³ããŒã¿ãééããŸãã
ãœãããŠã§ã¢ã®æ§æã«é²ã¿ãŸãïŒæšæºã®RaspbianïŒã
SPIããã³CANã¢ãžã¥ãŒã«ã®ãµããŒããå«ãŸããŠããŸãã
/boot/config.txt
è¿œå ããŸã
dtparam=spi=on dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25,spimaxfrequency=1000000 dtoverlay=spi0-hw-cs
ããã§ã
interrupt=25
ã¯ãã·ãŒã«ãããã®å²ã蟌ã¿ãå·»ãä»ãããããã³ã瀺ããŸãã ã€ã³ããã¯ã¹ä»ãã¯GPIOãã³ã«åºã¥ããŠãããããinterrupt=25
ã¯GPIO 25ã§ããããã¹ãŠã®ãã³ã®ãšã³ãããŒãšã³ãã®ã€ã³ããã¯ã¹ä»ãã§ã¯ãã³22ã§ãã SPIspimaxfrequency
ã€ã³ã¿ãŒãã§ãŒã¹ã®åšæ³¢æ°ãæå®ããããšãéèŠã§ãã ããã©ã«ãå€-10 MHz-ã¯ã·ãŒã«ãã«ã¯é«ããããããæ¥ç¶ã§ããŸããã
raspberry piãåèµ·åããã·ãŒã«ããžã®æ¥ç¶ã確èªããŸãã
$ dmesg ... [ 12.985754] CAN device driver interface [ 13.014774] mcp251x spi0.0 can0: MCP2515 successfully initialized. ...
can-utils
ãã€ã³ã¹ããŒã«ããŸãã
$ sudo apt install can-utils
ä»®æ³ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ãèµ·åããŸãã
$ sudo /sbin/ip link set can0 up type can bitrate 500000 $ sudo ifconfig can0 txqueuelen 1000
2çªç®ã®ã³ãã³ãã¯ãã©ãºããªãŒãã€ã䜿çšããŠå€§éã®ããŒã¿ãåçããå Žåãã€ãŸããè»ã«èšé²ãããå®å šãªCANãã¹ãã°ãã¹ã¿ã³ãäžã®åé¢ããŒãã§åçŸãããå Žåã«éèŠã§ãã ãããã¡ãå¢ããããšãªããééãçãè€æ°ã®CANãã±ããããã°ã«è¡šç€ºãããæ¥ç¶ãããªãŒãºãããšãã»ãšãã©ã®å ŽåãªãŒããŒãããŒããŸãã
- å®äºã
candump
ãcansniffer
ãªã©can-utils
ãã¹ãŠã䜿çšã§ããŸãã