
ããã«ã¡ã¯ããããããã¹ã
ããã§éçºã«é¢ããèšäºãæåŸã«æžããŠããããªãã®æéãçµã¡ãŸãããããããä¿®æ£ããæãæ¥ãŸããã
ãã®èšäºã§ã¯ãSTM32F101ãã€ã¯ãã³ã³ãããŒã©ãŒäžã«å°ããªãããããçµã¿ç«ãŠãŠãã¡ã€ã³ã¯ãŒã³ã§ããArthasã楜ããŸããã©ã®ãããªåé¡ã«çŽé¢ããäœãåºãŠãããã«ã€ããŠã話ããŸãã
åé¡ã®èæ¯ãšèª¬æ
å幎åãç§ã¯ãã®é»ããã³ãµã ãªã¡ã€ã³ã¯ãŒã³ãæã«å ¥ããŸããããã®ã¡ã€ã³ã¯ãŒã³ã¯ãã³ã³ãã¥ãŒã¿ãŒã²ãŒã ã®æåãªããŒããŒã«æ¬æãè¡šããŠã¢ãŒãµã¹ãšåä»ããŸããã

ç«ã¯éåžžã«éã³å¿ããããèµ°ãã®ã奜ãã§ãåŸ ã¡äŒãããæ»æããç¬ã®ããã«ããŒã«ãæã£ãŠããŸãã ç§ã¯é·ãéäœãéããŠããªãã£ãã®ã§ãç«çšã®å°ããªããã¡ããéçºããããšã«ããŸããã
äž»ãªèŠä»¶ã¯æ¬¡ã®ãšããã§ãã
- ç«ã®æ¯ãšçªãçæ³çã«ã¯å®å šã«å¯éãããäœïŒããŒã«ïŒããã®æ§é ã®éèŠãªéšåã®ä¿è·
- åã®æ®µèœãããããã€ã¹ã®å°ããªå¯žæ³ã®èŠä»¶ã«åŸããŸãã ãµãã«ãŒããŒã«ã§ã¯ãªããå°ããªããŒã«ã§ããããšãæãŸããã§ãã
- æºåž¯é»è©±/ã¿ãã¬ããããã³ãã¹ã¯ãããã³ã³ãã¥ãŒã¿ãŒããå¶åŸ¡ããæ©èœ-è»èŒªãåçºæãããã¢ãã€ã«ããã€ã¹ãšã®äºææ§ã確ä¿ããã«ã¯ãBluetoothæ¥ç¶ãçæ³çã§ãã
- ããããã£ãšé¢çœãããããã«ãå°æ¥çã«ã¯ãããããå€ããå°ãªããèªåŸçã«ããããšãã§ãããå°ãªããšãäœããã®çš®é¡ã®ã»ã³ãµãŒãæã€ããšãæãŸãããåãªãã©ãžã³ã³ãã·ã³ã§ã¯ãããŸããã
- ã³ãã®æ³šæãåŒãããã«é³ãåŒãåºãæ¹æ³ãããã
ããã«ãèµ·ãã£ãããšã®çããããªããã¢ã³ã¹ãã¬ãŒã·ã§ã³ããŸããç«ãããã¯ãã¹ãã¢ãŒãã§å®è¡ãããŠããŸãïŒã³ã³ãã¥ãŒã¿ãŒããå¶åŸ¡ãããŸãïŒã
ç«ãããã¯å€æ®»ãªãã§ãã¹ããããç«ãåŒãä»ããé³ãåºããéããããŸãã ãã©ã€ãã®1ã€ãæ éããŸãã
ïŒèšäºã®æåŸã«ããã«ã€ããŠã®è©³çŽ°ïŒ
ç«ãããã¢ã»ã³ããª
ç«ã¯ããããã«ããŸãç©æ¥µçã«åå¿ããªãããã«æãããããããŸããããå®éã«ã¯ããã¹ãäžã«ã圌ã¯ãã§ã«100åãããã€ããã§ããããæã¡å»ã£ãŠãã€ãŸã¿ãŸããã ãã¡ãããç§ã¯ãããããéžæããŸããïŒçµäºãããŸã§ïŒã®ã§ãç«ã¯åºã«ãããããããèŠãªãããæ»æããŠããã«é£ãå»ãããªãããã«ãã°ããåŸ ã€ããšã«ããŸããïŒ
次ã«ãéçºããã»ã¹èªäœã«ã€ããŠèª¬æããŸãã
éçºïŒèŠçŽ ã®éžæãšæºå
æ¬äœ
ææ¡ãããèšèšã決å®ããã®ã§ãç§ã¯2ã€ã®ååããæããã©ã¹ããã¯ããŒã«ã®ãã¢ãè³Œå ¥ããŸãã-1ã€ã¯çŽåŸ60 mmããã1ã€ã¯80 mmãæåã®ãã®ãåãŸããªãå Žåã«åããŠã ãã®ãããªå¯žæ³ã«ããããšã³ãžã³ãšã»ã³ãµãŒã®éžæãå€§å¹ ã«å¶éãããŸããïŒããšãã°ãè¶ é³æ³¢ã»ã³ãµãŒãå¿ããŠããŸããããŒã«ã«åãŸãããããã«å¯éããã空éã§ã¯æ©èœããªããšããæå³ã§ïŒã

ãã€ã¯ãã³ã³ãããŒã©ãŒ
ãç®ããèŠèœãšããåŸãããŒã«ã¯èº«äœã®åœ¹å²ã®çæ³çãªåè£ã«ãªããŸããã ãµã€ãºãéãããŠãããããæãå°åã®ã±ãŒã¹ãã€ãŸãã»ãšãã©ã®å ŽåQFNã䜿çšããŠåè·¯å šäœãèšèšããããšã決å®ãããŸããã
STM32F101ã¯ã36 MHzã§åäœã§ãã64 KBã®ãã©ãã·ã¥ãš16 KBã®RAMãåããæãéèŠãªã®ã¯ã6x6 mm QFNã§å©çšã§ããäžæ¹ã§ãã¹ããªããããŠã³ãããM0ã§ã¯ãªãCortex M3ã³ã¢ã«åºã¥ããã€ã¯ãã³ã³ãããŒã©ãŒã§ãããããäžå€®ããã»ããµãšããŠéžæãããŸããè»å£
ã»ã³ãµãŒ
ã»ã³ãµãŒãšããŠãåãSTã®3軞å é床èšLIS331DLãéžæãããŸããããTerraelectronicsã®å²åŒããã£ãããã1åãããçŽ30ã«ãŒãã«ã®äŸ¡æ Œã§å ¥æã§ããŸããã
å é床èšã¯3x3 mmã®QFNã±ãŒã¹ã§äœ¿çšã§ããI2Cãã¹ã§éä¿¡ã§ããŸããããã¯ãéããã寞æ³ã®æ¡ä»¶ã§éåžžã«äŸ¿å©ã§ãã å é床èšã䜿çšãããšã3軞ã«æ²¿ã£ãããããã®åŸããå·®ãåŒãããšãã§ããŸãããŸããïŒå é床ãå€æŽããããšã«ããïŒãããããåããŠããã®ããé害ç©ã«ã¶ã€ãã£ãŠãããã«ã€ããŠã®æ å ±ãååŸããããšããããšãã§ããŸãã ããŠããããŠãã¡ãããç«ããããããã«åœŒã蹎ãç¬éã決å®ããŸã-ãã®ããã«ããŠç«ã¯ãããçããŠãããã®ãšèŠãªããŸãïŒ
ã³ãã¥ãã±ãŒã·ã§ã³
ã³ãã¥ãã±ãŒã·ã§ã³ã®æ段ãšããŠããã¡ãããå®çžŸã®ããå®äŸ¡ã§å°åã®äžåœèªHC-05ã¢ãžã¥ãŒã«ã䜿çšããŸã

ããã¯ãããããã§å¯äžã®æ¢è£œã®ã¢ãžã¥ãŒã«ã§ãã
é³æº
åœåã¯å°ããªã¹ããŒã«ãŒã䜿çšãããã£ãã®ã§ãããæ®å¿µãªããšã«ãå°ããªã¹ããŒã«ãŒã§ãéåžžã«å€§ããªãã®ã§ããã ããã«ã圌ãã¯å€ããæ¶è²»ããPWMã§ã¹ã€ã³ã°ããããã«ãå°ãªããšããã©ã³ãžã¹ã¿ãšãã£ã«ã¿ãŒãå¿ èŠãšããŸããã äžå®éã®ã°ãŒã°ã«ã®åŸãç§ã¯ãã®ãããªé¢çœãå§é»ããŒããŒãèŠã€ããŸããïŒ

Murata PKLCS1212E4001ã®äŸ¡æ Œã¯48ã«ãŒãã«ã§ã寞æ³ã¯11x11 mmïŒããŒãäžã§æ倧ã®èŠçŽ ã§ãïŒïŒã§ãããæšæºçãªããšãŸãµãŠã³ããŒã§ããå§é»å¹æã§èãæ²ããããšã«ããé³ãåºãããã€ã¹ã§ãã ãããŠããã¯ãåãé³éã§ã¹ããŒã«ãŒãããããããæ¶è²»é»æµãæ¡éãã«å°ãªãããšãæå³ããŸãã
ããããã¹ããŒã«ãŒãšã¯ç°ãªããéåžžã«å·§åŠã§äžåäžãªåšæ³¢æ°å¿çãæã£ãŠããããããããæ¹æ³ãç¥ã£ãŠããããšãæåã§ãã ãããŠæã倧ããªããšã¯ã圌女ã4KHzã®åšæ³¢æ°ã§ãããè¡ãããšãã§ãããšããããšã§ãïŒããããããã¯ããªããä»ã®äººã«ãããããšãã§ããªãããšãæå³ããŸããïŒïŒ
ãã©ã€ã
æãéèŠãªèŠçŽ ã¯ããããããåãããã©ã€ãã§ãã æ®å¿µãªãããç§ãã¡ãæãã»ã©ãã¹ãŠãã¹ã ãŒãºã§ã¯ãªãã£ããããã«ã€ããŠã¯èšäºã®æåŸã§è©³ãã説æããŸãã ãã©ã€ããšããŠãç§ã¯èŠã€ããããšãã§ããæå°ã®ãµãŒããåããäžå®ã®å転ã®ããã«ããããäœãçŽãããšã«ããŸããã
ç§ãéžãã ã®ã¯ããµãŒããåãããšã§ã15x20x8 mmçšåºŠã®å Žåã«ã¢ãŒã¿ãŒ+ã®ã¢ããã¯ã¹+å¶åŸ¡ããŒããæã«å ¥ããšããäºå®ã«ãããã®ã§ãã ãã¹ãŠã®æ¬²æ±ã§ãç§ã¯ãã®ãããªå¯žæ³ã®ã®ã¢ã¢ãŒã¿ãŒãèŠã€ããããšãã§ããŸããã§ããã
ãã®çµæã187 ãã€ã¯ãã«ãŒãã«ã®äŸ¡æ Œã§ã ãµããã€ã¯ããµãŒããéžæãããŸããã

æ é€
ãã¹ãŠã®èŠçŽ ãéžæãããã·ã¹ãã ã«é»åãäŸçµŠããæ¹æ³ãšæ¹æ³ã決å®ããŸãã æããã«ãæãå°ããæé©ãªãœãŒã¹ã¯ãå°åã®ãªããŠã ããªããŒããããªãŒã§ãã ãã©ã€ãã«ã¯4.8Vãå¿ èŠãªãããMAXIM Semiconductorsã®å°åDC-DCã³ã³ããŒã¿ãŒã䜿çšããŠé»å§ã5Vã«äžããŸãã MAX8815ã¯3x3mmã±ãŒã¹ã®åªãããããã§ããã97ïŒ ã®å¹çã®è² è·ã§æ倧1Aã転éããããšãã§ããŸãïŒãã¡ãããããªã³ãåè·¯åºæ¿ã®æ£ããã¬ã€ã¢ãŠããåäœã¢ãŒããããã³ã¹ãã©ããã®éžæã«åžžã«äŸåããŸãïŒã
ãã©ã€ãã¯ãããŒã¯æã§ãåèšã§600 mAããæ¶è²»ããªããããããã§ååã§ãã
æ®ãã®é»åæ©åšã«é»åãäŸçµŠããã¢ãŒã¿ãŒã«ããå¹²æžããä¿è·ããããã«ãDC-DCããŒã¹ãã³ã³ããŒã¿ãŒã®åŸãåºå®3.3Våºåã®TIã®å°åãªãã¢ã¬ã®ã¥ã¬ãŒã¿ãŒLP2985ãé 眮ããŸãã
åè·¯ãšå°ãã®æ§é
ãŸããããããã®èšèšã«é¢ããããã€ãã®èšèã 寞æ³ãšã³ã¹ããæå°éã«æããããã«ãæ§é èŠçŽ ãšããŠããªã³ãåè·¯åºæ¿ã䜿çšããããšã«ããŸããã ã€ãŸãããã©ã€ãã¯ãããžã§åºå®ããã2ã€ã®ããªã³ãåè·¯åºæ¿ã®éã«åºå®ãããŠããŸãã ã¢ã»ã³ããªïŒããã³ããŒãã®ãããã°ä¿®æ£åŸãåŸã»ã©ïŒã§ã¯ããã¹ãŠæ¬¡ã®ããã«ãªããŸãã

ãã©ã€ããå€ã«åºãªãããã«ããããã«ãããŒããšãã®è¡šé¢ã®éã«çŽ æŽãããçŽ æãå ¥ããŸãã-Torresãšãã¹ãã³ããŒããã®ã©ããã¯ã¹

å®éã®ãšãããäžåœã§ããã³ã³ãè²·ã£ãããšããããŸãã ããŒã³èªäœã¯ãã¿ã³åéã§äœãããéåžžã«å¿«é©ã§ãããããŽã ã¯å°çã§ã¯ãããŸããã§ããã ã€ã³ã¿ãŒãããã§ã¯ãããã³ã³ã®å°é家ã¯ãããã«ãããæšãŠãŠããã®åããšãã¹ãã³ããŒãè³Œå ¥ããããããããŒãã¹ãåãåã£ãŠäº€æããããšãå§ããŸããã çµæã¯ç§ã®æåŸ ããã¹ãŠäžåããããã³ã³ã¯éåžžã«åŒ·åã«ãªããŸããã ãããŠä»¥æ¥ ãšãã¹ãã³ããŒã¯å€§ããªãã®ã§ãçŽ æã®å€§éšåã¯æä»ããã®ãŸãŸã§ãåŒãåºãã®äžã«æšªããããç¿Œã§åŸ ã£ãŠããŸããã
ãã©ã€ããšããŒãã®éã®ã¬ã¹ã±ãããšããŠãã®ã©ããã¯ã¹ã䜿çšããåŸããã©ã€ãã¯æè¢ã®ããã«ç«ã¡ãããªã¡ãŒãã«ç§»åããŸããã§ããã
ãããã£ãŠããã®ãããªèšèšãå®è£ ããã«ã¯ããã¹ãŠã®ã³ã³ããŒãã³ããå€åŽã«éäžããŠãã2ã€ã®ããŒããå¿ èŠã§ãã
䜿çšå¯èœãªé åãæ¥æ¿ã«å¢å ããŠãããããäžåŽã®ããŒãã«ããããªãŒå é»åšãããUSBã³ãã¯ã¿ãå é»ã瀺ãLEDãé 眮ããåæã«BTã¢ãžã¥ãŒã«ãé 眮ããŠãããããªãŒããããèŠãããéä¿¡ã劚ããªãããã«ããŸãã
ãããã£ãŠãTOPãšBOTTOMã®2ã€ã®ããªã³ãåè·¯åºæ¿ãéçºãããŸããã äžçªäžã¯æ¢ã«èšã£ãããšã§ãäžçªäžã¯ããããã®æ¶ååšç³»ãã€ãŸããã€ã¯ãã³ã³ãããŒã©ãŒãå é床èšãã³ã³ããŒã¿ãŒãé»æºããŒãã¹ããããŠãã¡ããããšãŸãã£ãŒã¿ãŒã§ãã
倩æ¿ã®ã¬ã€ã¢ãŠãã¯æ¬¡ã®ããã«ãªããŸãã

é»æºã¹ããŒã

è³
USBãäžèŠãª5ãã«ããé§åããªãããã«ãã³ã³ããŒã¿ãŒU1ãšã¬ã®ã¥ã¬ãŒã¿ãŒU2ã®ONå ¥åãæ¥ç¶ããé»æºã«ãã«ã¢ããããããŒãã®ç«¯ã®ãã³J1ã«æ¥ç¶ããŸã-ããã«GNDã¬ãã«ãäŸçµŠãããšãã³ã³ããŒã¿ãŒã®å ¥åãšåºåãé«ã€ã³ããŒãã³ã¹ç¶æ ã«ãªããæ¬è³ªçã«åè·¯ãç Žå£ãããŸãUSBé»æµãæ¬æ¥ããã¹ãå Žæã«æµããŸã-ããããªãŒå é»åè·¯ãžã ã³ã³ããŒã¿ã®æ¥ç¶å³ã®æ®ãã®éšåã¯ãããŒã¿ã·ãŒãããã®å žåçãªãã®ã§ãã
U4å é床èšã¯ããã«ã¢ããæµæãªãã§ã³ã³ãããŒã©ãŒã®I2Cãã¹ã«æ¥ç¶ãããŠããŸã-ã¯ãããã¹ãåäœããããã«å¿ èŠã§ãããããŒã¿ã·ãŒãã§ã¯ãäž¡æ¹ã®ã©ã€ã³ãLIS331DLå ã«åã蟌ãŸãããã«ã¢ããæµæãä»ããŠVdd_IOã«æ¥ç¶ãããŠãããšè¿°ã¹ãŠããŸã å¥åŠãªããšã«ããããã«é¢ããæ å ±ã¯ãããããŸããããç§ã¯ãŸã å€ãèªèããŠããŸããã§ããïŒãããŠããªãã«ãªã£ãŠãããšããã©ã³ãžã¹ã¿ã«ãã£ãŠãã¹ããåæãããŠããããã§ãïŒã ã ããç§ã¯ç²ç®çã«ããŒã¿ã·ãŒãã«é ŒããããåŸãªãã£ãã ç§ã¯èšããªããã°ãªããªããç§ã¯ããã倱ããŸããã§ãã-å é床èšã¯å®éã«è¿œå ã®æµæãªãã§å®å šã«åäœããŸãã
ãã ããå¥ã®äž»èŠãªèŠå ãé¢é£ããŠããããããã¹ããšFAXã®ã»ã¯ã·ã§ã³ã§ç¢ºèªã§ããŸãã
å é床èšã«å ããŠãç«ã®æ³šæãèŠèŠçã«æ¹ãã€ããŠæ瀺ããŒã«ãšããŠæ©èœããããã«èšèšãããD1 LEDãã³ã³ãããŒã©ãŒã«æ¥ç¶ãããŠããã»ããå¹³æ»ã³ã³ãã³ãµãŒC5ãä»ããŠã³ã³ãããŒã©ãŒã®ADCã®å ¥åã«æ¥ç¶ãããŠããæµæåšR4ããã³R5ã®åå§åšããããŸãã ãã®åå§åšã¯ãADCã枬å®ã§ããç¯å²ã«ããããªãŒé»å§ããããããããããªãŒã¬ãã«ãå€æããæ©äŒãäžããŸãã
ã¡ãªã¿ã«ããããã®æµæåšã«ã¯ããFAXãæ¥ç¶ãããŠããŸããã å®éã«ã¯ãå€ãã¢ãã«ã®ããã«ãã³ã³ãããŒã©ãŒã«çµ±åãããåºæºé»å§ïŒçŽ1.2ãã«ãïŒããããšä»®å®ããŸããã ããããå€æããããã«ãQFN36ããã±ãŒãžã®ã¢ãã«ã«ã¯çµã¿èŸŒã¿ãœãŒã¹ããªããã±ãŒã¹å ã®REFå ¥åã¯é»æºé»å§ïŒ3.3VïŒã«è¿ãããã4.2Vã¢ãã¥ã ã¬ãŒã¿ã§1Vãäžããæµæã3Vãäžããæµæã«å€æŽããå¿ èŠããããŸããã
LS1ã¹ããŒã«ãŒã¯ããã®ããšãŸãšãã»ã³ã¹ã«ãããã³ã³ãããŒã©ãŒãã³ã«çŽæ¥æ¥ç¶ã§ããŸãããã®æ¶è²»ã¯éåžžã«å°ãããå ±æ¯åšæ³¢æ°ã§ã®ã€ã³ããŒãã³ã¹ã¯æ°çŸãªãŒã ã§ãã å¯äžã®æœåšçãªåé¡ã¯ãå察æ¹åã«æ©èœããããšãã€ãŸããå€åœ¢äžã«å¿åãçºçããå¯èœæ§ãããããšã§ãïŒè¡æïŒãéåžžãä¿è·ãã€ãªãŒããŸãã¯æµæãåãä»ããããŠããŸãã ããããå®éšã®çµæã«ãããšãå¹³ååã®è¡ææã®é»å§ã¯ãã³ã³ãããŒã©ã®ä¿è·åºåãã€ãªãŒããåŠçã§ãã1.5Vãè¶ ããŠããªãã£ãã®ã§ãäœåãªä¿è·ããããªãããã«ææŠããŸããã
ã³ã³ãããŒã©ãŒã®çµã¿èŸŒã¿PWMãžã§ãã¬ãŒã¿ãŒããã®åºåã¯ããã©ã€ããå¶åŸ¡ããããã«ãã³J8ããã³J9ã«åºåãããŸãã éã¢ã¯ãã£ããªæ¶è²»ãåæžããããã®è¿œå ã®ïŒãããŠäžèŠãªãã®ã§ã¯ãªãïŒå¯ŸçãšããŠãGNDãã©ã€ããæ¥ç¶ãããŠããæ¥ç¹J11ããã³J12ã¯ããã¯ãŒãã©ã³ãžã¹ã¿Q1ã«ãã£ãŠã°ã©ã³ãããåãé¢ãããŠããŸã-ã²ãŒãã«é«ã¬ãã«ãäŸçµŠãããšããã©ã€ãã«ã°ã©ã³ãé»åãäžããããé»æµãå éšãæµããŸãã å€æããããã«ããŒãPWMä¿¡å·ã§ãã£ãŠãããã©ã€ãã®å¶åŸ¡åè·¯ã¯äŸç¶ãšããŠäœããã®é»å§ããã©ã€ãã«äŸçµŠããå®å šã«åæããããã®ãšæ¯èŒããŠæ¶è²»é»åã¯10 mAå¢å ããŸãã
éèŠãªãã€ã³ãã¯ããããã°ã€ã³ã¿ãŒãã§ã€ã¹ã®éžæã§ãã ãã¡ããã寞æ³ãéåžžã«éãããŠããç¶æ³ã§ã¯ãæå°éã®ã¯ã€ã€ã§ãããããšæã£ãŠããŸããã ãããããããã®æ å ±ã¯æå°éã®ççŸã§ããã ææ ®æ·±ãã°ãŒã°ã«ãšå®éšã®åŸãç§ã¯SWDã€ã³ã¿ãŒãã§ã€ã¹ã«èœã¡çãããã³SWDIOãšSWCLKã®ã¿ã衚瀺ããŸããã ããã«é¢é£ããå¥ã®ãã¡ã¯ãã¢ããããããŸããããã«ã€ããŠã¯ãããã¹ããšãã¡ã¯ãã¢ãããã»ã¯ã·ã§ã³ã§èª¬æããŠããŸãã ããããèŠããã«ãã¯ãããããã®2ã€ã®ãã³ã¯ã»ãšãã©ã®å Žåãããã°ã«æ¬åœã«ååã§ãã
åºæ¿ã¯éåžžã«ç°¡åã«é 眮ãããŠããŸãã

åºæ¿
Li-PolïŒLi-IonïŒããããªãŒçšã®2ã€ã®äžŠåç·åœ¢å é»ããããLinear Technologyã®LTC4054ãå«ãŸããŠããŸãã ããã¯ãåã»ã«ãªããŠã ããªããŒãšãªããŠã ã€ãªã³ãå é»ããæãç°¡åãªæ¹æ³ã§ããããªãäœãå¹çïŒè¶ å°ååè·¯ãç·åœ¢ã§ããããïŒãã²ã©ããªããã©ããã¯ããããŸãã
ãããã¯å®å šã«å¹³è¡ã«äžŠãã§ãããããã€ãã®äžåœã®èšç»ã§ã¯ãæ倧4ã€ã®é¡äŒŒããmikruhiã䞊åã«èŠãŠã倧ããªå é»é»æµãæäŸããŸããã åå¥ã«ãããããæ倧800 mAãåºåã§ããŸãããããã¯ç®ççŒããæãããå Žåã®ã¿ã§ãã è² è·ã500 mAãè¶ ããããããªãŒãå®å šã«æŸé»ãããšããã€ã¯ãåè·¯ãæž©ãŸãå§ããæãä¿æããããšãã§ããªããªããŸãã ãªããªã 枩床ä¿è·åè·¯ãçµã¿èŸŒãŸããŠããŸãããããã¯ååãšããŠæããã®ã§ã¯ãããŸããã120床ãŸã§æãŸããšèªåçã«è² è·é»æµãäžãããŸãã ããããããã¯ããŸãå¿«é©ã§ã¯ãªãã®ã§ãèš±å¯ãããå Žæã®å©çã®ããã«ã2ã€ã®ããŒã¹ã眮ãããšã奜ã¿ãŸããã å é»é»æµã¯ã2ã€ã§çŽ500 mAïŒã€ãŸãããããã250 mAïŒã«ãªãããã«ç§ãéžæããæµæR4ãšR5ã«ãã£ãŠèšå®ãããããã§ã¯å ç±ãããŸããã
ããã«ããã®ããŒãã«ã¯ããUSBã³ãã¯ã¿ïŒJ2ïŒãQ1ãã©ã³ãžã¹ã¿ããããUSBãæ¥ç¶ãããŠããå ŽåããããããŒãã®é»æºåè·¯ã®ONå ¥åãã°ã©ã³ãã«ãã«ããBluetoothéä¿¡ã¢ãžã¥ãŒã«ãåããŠããŸãã
Resoniteã§ã«ãŒãã泚æããŸããããäºç®å ã§åºãŠããŸããã2æã®ãã¶ãŒããŒãã«ãŒããæèŒããã6çš®é¡ã®ããŒãã®ããã«ã«2000ræªæºã§æ¯æããŸããã
äžäžã®ããŒãã¯32x26 mmã§ãã çµã¿ç«ãŠåŸïŒããã³ä¿®æ£ã®ä¿®æ£åïŒããããããŒãã¯æ¬¡ã®ããã«ãªããŸãã

ãããŠãäžçªäžã¯æ¬¡ã®ãããªãã®ã§ãã

ãã¹ããã¡ãŒã ãŠã§ã¢ãäœæããŸãã
ãã¡ãŒã ãŠã§ã¢ã®ãã¹ã
FreeRTOSã«åºã¥ããŠæçµçãªãã¡ãŒã ãŠã§ã¢ãäœæããäºå®ã§ãïŒéåžžã®ãã«ãã¿ã¹ã¯ãããããã³ã°ãã¥ãŒãªã©ã®å®è£ ã«æéãç¡é§ã«ããªãããã«ïŒãããã¹ãã®ããã«ããã¹ãŠã®åšèŸºæ©åšãåæåããã³ã³ãã¥ãŒã¿ãŒããã®ç°¡åãªã³ãã³ãã§ç®¡çã§ããå°ããªãã¡ãŒã ãŠã§ã¢ãã¹ã±ããããŸããã åæåãèŠãŠã¿ãŸãããã
ã¯ãããã³ã°ãšGPIO
ã³ãŒã
void InitRCC() { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2|RCC_APB1Periph_TIM3,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); } void InitGPIO() { GPIO_InitTypeDef GPIO_InitStructure; //LED GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_Init(GPIOB, &GPIO_InitStructure); //ADC GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; GPIO_Init(GPIOA, &GPIO_InitStructure); //Buzzer GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_WriteBit(GPIOA, GPIO_Pin_2, Bit_RESET); //Servo GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; GPIO_Init(GPIOA, &GPIO_InitStructure); //Servo On/Off GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_RESET); GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_Init(GPIOA, &GPIO_InitStructure); //Accel GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD; GPIO_Init(GPIOB, &GPIO_InitStructure); //UART & BT Control GPIO_WriteBit(GPIOA, GPIO_Pin_8, Bit_RESET); GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_Init(GPIOA, &GPIO_InitStructure); }
ããã§ã¯ãã¹ãŠãç°¡åã§ã-å¿ èŠãªãã¹ãŠã®åšèŸºæ©åšãã€ãŸãå ¥åºåããŒããADCãUARTã2ã€ã®ã¿ã€ããŒïŒãã€ãŒã¿ãŒçšãPWMãã©ã€ãçšïŒããã³I2Cã«ã¯ããã¯ãäŸçµŠããŸãã 次ã«ããã¹ãŠã®GPIOãæ§æããŸãã
ã¹ã¯ã€ãŒã«ãŒ
ã³ãŒã
void InitBuzzer() { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; TIM_TimeBaseStructure.TIM_Period = 4; TIM_TimeBaseStructure.TIM_Prescaler = 1800; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 0; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC3Init(TIM2, &TIM_OCInitStructure); TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM2, ENABLE); TIM_Cmd(TIM2, ENABLE); }
ã»ããã¢ããã¯ãåºåãããŒãé³ã«æ¥ç¶ãããŠããã¿ã€ããŒãåæåããããšã«èŠçŽãããŸãã PWMã調æŽããŸãããå®éã«ã¯ããã«ã¹å¹ ãå€æŽãããåžžã«50ïŒ ã«èšå®ããŸãã 代ããã«ãååšåšãå€æŽããŠãã¿ã€ããŒã«ãã«ã¹ã®åšæ³¢æ°ãå€æŽãããç°ãªãããŒã³ã§ããã¿é³ã鳎ãããŸãã
ã·ã¹ãã åšæ³¢æ°ã¯36 MHzãªã®ã§ãåšæã4ã«èšå®ãïŒãã¹ãŠåãã§ã倧éã®PWMæŸé»ã¯å¿ èŠãããŸããïŒãã¹ããªãã¿ãŒ1800ã¯4 KHzã®åšæ³¢æ°ãåä¿¡ããŸããã
ãã©ã€ã
ã³ãŒã
void InitServo() { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; TIM_TimeBaseStructure.TIM_Period = 0xFFF; TIM_TimeBaseStructure.TIM_Prescaler = 0xB0; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 0; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1Init(TIM3, &TIM_OCInitStructure); TIM_OC2Init(TIM3, &TIM_OCInitStructure); TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM3, ENABLE); TIM_Cmd(TIM3, ENABLE); }
ã¹ã¯ã€ãŒã«ãŒãšåãããšãããŸãããé§åã«å¿ èŠãªãã©ã¡ãŒã¿ãŒãã€ãŸãçŽ50 Hzã®åšæ³¢æ°ãããã³é床ãéåžžã«æ£ç¢ºã«å¶åŸ¡ããããã«ååãªæ°ã®æŸé»ã䜿çšããŠãPWMã®åºåã§æ¢ã«ã·ã£ãŒãã«ããŸãã ãããã£ãŠãããªã»ã¬ã¯ã¿ãŒã¯176ã«èšå®ãããåšæã¯4096ã§ããããã«ãããçŽ50 Hzãš12 PWMããããåŸãããŸãã
å é床èšãšBluetooth
ã³ãŒã
void InitAccel() { I2C_InitTypeDef I2C_InitStructure; I2C_InitStructure.I2C_Mode = I2C_Mode_I2C; I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2; I2C_InitStructure.I2C_OwnAddress1 = 0x00; I2C_InitStructure.I2C_Ack = I2C_Ack_Enable; I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; I2C_InitStructure.I2C_ClockSpeed = 200000; I2C_Init(I2C1, &I2C_InitStructure); I2C_Cmd(I2C1, ENABLE); } void InitBT() { USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); }
ããã§ã¯ãã¹ãŠãç°¡åã§ã-å é床èšã«ã€ããŠã¯ã200KHzã®é床ã§I2Cããªã³ã«ããã ãã§ãïŒã¢ã¯ã»ã©ã¬ãŒã¿ã¯ã ããã䜿çšå¯èœã§ããïŒãBluetoothã¯éåžžã®UARTã§ãããæšæº9600ããªã³ã«ããåæã«ã³ãã³ããåŠçããåä¿¡å²ã蟌ã¿ãèšå®ããŸãã
次ã«ãUARTå²ã蟌ã¿åŠçã³ãŒããèšè¿°ããŸãã ãã¡ãããããã¯æãæåããŠããããã§ã¯ãªãããã§ãã¯ãµã ããã§ãã¯ããããšãã害ã«ãªããŸãããããã¹ãã«ã¯åœ¹ç«ã¡ãŸãã ããŒã ã®ãã¥ãŒã§æéãç¡é§ã«ããªãããã«ã1ã€ã®ããŒã ã«çããããŸããããã¯ãã³ã³ãããŒã©ãŒã«ããŒã ãæããããšãã§ããé »åºŠã«ã®ã¿åœ±é¿ãã圌ãããŒã ãèŠéãããšãæããŸããã
ã³ãã³ãåä¿¡ã³ãŒã
ã³ãŒã
#define OPCODE 0 #define LENGTH 1 #define PAYLOAD 2 enum CommandStates {CS_DONE, CS_RECEIVING, CS_EXECUTING}; enum CommandCodes {CC_TEST=0x01, CC_SERVO_STATE, CC_SET_SERVO1_DS, CC_SET_SERVO2_DS, CC_GET_ACCEL_REG, CC_SET_ACCEL_REG, CC_GET_BATTERY, CC_LED_STATE, CC_BUZZER, CC_INVALID}; enum ErrorCodes {EC_NONE, EC_INVALID_CMD, EC_MAX_LEN_EXCEEDED}; enum ReplyCodes {RC_NONE, RC_EXECUTED, RC_TEST, RC_ACCELREG, RC_ERROR}; typedef struct { unsigned char Command; unsigned char State; unsigned char Length; unsigned char Payload[CMD_BUFFER_LEN]; }CommandDescriptor; CommandDescriptor Cmd; void InitCmd(CommandDescriptor *Comm) { Comm->Command=0; Comm->Length=0; unsigned char i; for(i=0;i<CMD_BUFFER_LEN;i++) Comm->Payload[i]=0; Comm->State=CS_DONE; //Init state at the end, to prevent interrupt from interfering } void SetInvalidCmd(CommandDescriptor *Comm, unsigned char ErrorCode) { Comm->Command=CC_INVALID; Comm->Length=3; Comm->State=CS_EXECUTING; //Just send back error Comm->Payload[0]=ErrorCode; } void USART1_IRQHandler(void) { char data; if ((USART1->SR & USART_FLAG_RXNE) != (u16)RESET) { data = USART_ReceiveData(USART1); switch(Cmd.State) { case CS_DONE: if(data>=CC_INVALID) { SetInvalidCmd(&Cmd, EC_INVALID_CMD); return; } Cmd.Command=data; Cmd.Length=0; Cmd.State=CS_RECEIVING; return; case CS_RECEIVING: if(Cmd.Length==0) { if(data>CMD_BUFFER_LEN) { SetInvalidCmd(&Cmd, EC_MAX_LEN_EXCEEDED); return; } Cmd.Length=data; BufPtr=0; return; } if(BufPtr<Cmd.Length-2) //Including opcode and length fields { Cmd.Payload[BufPtr]=data; BufPtr++; } if(BufPtr>=Cmd.Length-2) { Cmd.State=CS_EXECUTING; return; } case CS_EXECUTING: return; } } }
ãŸããã³ãã³ãã®æ§é ãçºè¡šããŸããå®éã«ã¯ãã³ãã³ãèªäœãç¶æ ïŒå®è¡äžãåä¿¡äžãåŠçäžïŒããã±ããé·ïŒæ¢ã«ãªã¹ããããŠãã2ã€ã®ãã£ãŒã«ããå«ãïŒãããã³ãã€ããŒãïŒ0ã8ãã€ãïŒã§æ§æãããŸãã ã
ãã®æ§é ãåæåããããã®ãã«ããŒé¢æ°ãšãç¡å¹ãªã³ãã³ãå€ãå ¥åããããã®ãã1ã€ã®é¢æ°ã«ã€ããŠèª¬æããŸãã
次ã«ãå²ã蟌ã¿ã«ã€ããŠèª¬æããŸãã UARTã§1ãã€ããåä¿¡ãããšãçŸåšã®ã³ãã³ãïŒããã¥ãŒãå ã®åãã³ãã³ãïŒã§äœãèµ·ããããããããŸã-
ãã®ã¹ããŒã¿ã¹ãå®è¡ãå®äºããããšã瀺ããŠããå Žåãæ£ãããªãã³ãŒããåä¿¡ãããã©ããã確èªããããã§ãªãå Žåã¯ãšã©ãŒãå ±åããŸããããã§ããã°ãæ°ããã³ãã³ããåä¿¡ãå§ãã CS_RECEIVINGã«èšå®ããŸã ã
åä¿¡äžã®å Žåã¯ã10ãã€ãïŒããããŒãšãã€ããŒãã®2ãã€ãïŒãšããããŒã®2çªç®ã®ãã€ãã§å®£èšãããé·ããè¶ ããªãããã«ãååŸããé·ããå¶åŸ¡ããŸãã äœããééã£ãŠããå Žå-ãšã©ãŒãå ±åããããã§ãªãå Žå-ã³ãã³ããåä¿¡ãã CS_EXECUTINGç¶æ ã«ãªã£ããšèšããŸãã ãã以éã誰ãããã®ã³ãã³ãã«CS_DONEç¶æ ãèšå®ãããŸã§ãç§ãã¡ã«æ¥ããã¹ãŠãç¡èŠããŸãã
å®éã®ã©ã€ã³ããããããã°ãåãåã£ãã³ãã³ãããã®äžã«æã蟌ã¿ãä»ã®ãšãã以äžãåãå ¥ããããšãã§ããŸãã
å®éãããã¯ãã¹ãŠã§ã-ãã¡ãŒã ãŠã§ã¢ã®äž»ãªæ©èœã¯ãåã«åšèŸºæ©åšãåæåããBluetoothããªã³ã«ããŠãã³ãã³ãã®ã¹ããŒã¿ã¹ãCS_EXECUTINGã«ãªããŸã§åŸ æ©ããŸãã ãã®åŸã圌女ã¯ã³ãã³ããåŠçãïŒãã®ã³ãŒãã¯æž¡ãã ããã€ããŒãããã¬ãžã¹ã¿ãŒãžã®ãã€ãã®ãªãã³ãŒãã«å€§ããªã¹ã€ããããããŸãïŒã CS_DONEã¹ããŒã¿ã¹ãããã«èšå®ããŸãã
void mainïŒïŒ
ã³ãŒã
int main(void) { InitCmd(&Cmd); InitHardware(); DisableServos(); EnableBT(); EnableLED(); while(1) { if(Cmd.State==CS_EXECUTING) { ProcessCmd(&Cmd); InitCmd(&Cmd); } } }
äžå®ã®å転ãšèšèšã®åé¡ã®ããã®ãã©ã€ãã®å€æŽ
ãã©ã€ãã¯ããšããš170床ã®ç¯å²å ã§å転ããããã«èšèšãããŠããããããããããšã³ãžã³ãšããŠäœ¿çšããã«ã¯ãããã«ã¢ããã°ã¬ãŒãããå¿ èŠããããŸãã ãµã€ãºãå°ãããããããã¯æåã¯ããã»ã©åçŽã§ã¯ãªããããããŸããã
äžè¬ã«ããã¹ãŠã®ãã©ã€ãã¯ãµã€ãºã«é¢ä¿ãªãåãããã«æ§ç¯ãããŸã-ã¢ãŒã¿ãŒãã®ã¢ããã¯ã¹ãããããã®åºå軞ã¯å¯å€æµæåšãšåã軞äžã«ãããå¶åŸ¡åè·¯ã¯ã·ã£ããã®çŸåšäœçœ®ã«é¢ããæ å ±ãåé€ããŸãã

æµæã¯ãé»æºãšã°ã©ã³ãã®éã®åå²åšãšããŠå«ãŸããŠããŸãã åºå軞ã®ã®ã¢ã®1ã€ã«ã¹ããããŒããããŸããããã«ããããµãŒããå¿ èŠä»¥äžã«å転ã§ããªããªããããã³ã·ã§ã¡ãŒã¿ãŒèªäœããã®ãããªã¹ããããŒãšããŠæ©èœããŸãã å ·äœçã«ã¯ããããã®ãã©ã€ãã§ã¯ãã¹ãŠãéåžžã«ç°¡åã§ã-ã¹ããããŒã¯åºåã·ã£ããã®æé·ç©ã§ãããååã«å€§ãããããåæããã®ã§ã¯ãªãããã©ã€ãã«ããŒå ã®çªèµ·ãåæããã®ãç°¡åã§ã

ãã®çªèµ·ã¯ã¯ãã ããŠã§ç°¡åã«æº¶ããã®ã§ãäž»ãªããšã¯å転ã劚ãããã©ã¹ããã¯çãæ®ã£ãŠããªãããšã確èªããããšã§ãã
ããã³ã·ã§ã¡ãŒã¿ã·ã£ããã«ã¯ãåºåã·ã£ããã®ã®ã¢ã§å転ããªãããã端ã«å°ããªåã蟌ã¿ããããŸãã ã¡ãªã¿ã«ããã®ã®ã¢ãå ¥ãå°ããªçªªã¿ã«ãããŸãã ãããã£ãŠããã®åæã®çè·¡ããªããªããŸã§ãã¯ãã ããŠã§åçŽã«åæ/èçããŸãã ãã¹ãŠãã®ã¢ã¯å¯å€æµæåšã«è§Šããããšãªãéãã«å転ããŸãã

ããã«ãã¹ãŠã«æ³šæ²¹ããŠãã ããã äžåœã®ã¹ãã£ã³ã°ã°ãªãŒã¹ããããã«ããŒãéããŸãã æ®ãã¯ã»ãšãã©ãããŸããã
åºéšã«ããŒãéãããšãã¢ãŒã¿ãŒãšããã³ã·ã§ã¡ãŒã¿ãŒã«æ¥ç¶ãããå¶åŸ¡åè·¯ãèŠããŸãã

ããã³ã·ã§ã¡ãŒã¿ããã¯ã€ã€ãç¡æ æ²ã«åæããå¹²æžããªãããã«ãµãŒãããåãå€ããŸãã 圌ããè¡ã£ãã³ã³ã¿ã¯ããããã«ã2KOã®SMDæµæãã¯ãã ä»ãããåèšæµæã5KOhmçšåºŠã«ããŸãïŒå°ãã§ãå°ãã§ã-æããªãïŒãäžå®ã®ãã£ãã€ããŒã圢æããŸãã 2.4Kã§2åãã¯ãã ä»ãããŸããã
ã¢ãŒã¿ãŒã¯çžäºã«é¡åé¢ä¿ã«ãããããã¢ãŒã¿ãŒã®1ã€ã¯ã¢ãŒã¿ãŒã«åããã¯ã€ã€ã亀æããŸãã ãã¡ããããã®ãœãããŠã§ã¢ãå®è¡ã§ããŸãããããå¿«é©ãªã¢ã€ãã³ã§ãã
ããã§ããµãŒããŒã¯åžžã«ã·ã£ãããã¡ããã©çãäžã«ãããšèŠãªããŸãã ãããŠããã¥ãŒãã£ãµã€ã¯ã«ãå¹³åããã倧ããPWMä¿¡å·ãäžãããšãåºåã·ã£ããã¯äžæ¹ã®æ¹åã«å転ãå§ããããäžæ¹ã®æ¹åã«å転ãå§ããŸãã ãããŠãäŸçµŠãããå€ãå¹³åãããã匷ãã»ã©ãã·ã£ããã¯ããéãå転ããŸãã
ãã¹ããšãã¡ã¯ã¢ãã

顧客ããããã¿ã€ãããã€ã¹ããã¹ããã
äžèšã®ããã€ã¹ã®ãããªãšåçããã§ã«ç€ºããã®ã§ããã®ã»ã¯ã·ã§ã³ã§ã¯äž»ã«ãèžãã ã¬ãŒãã®ããã¹ãã«ãã説æãå«ã¿ãŸãã ãããã®ããã€ãã¯ç§ã®ããã§çºçããããã€ãã¯ç§ã«äŸåããŸããã§ããã
ãã¡ãã¯ã¹é§å
ã¹ããŒã ã§æãæ¹åãããæåã®äºå®ã ããŒã¹ãã³ã³ããŒã¿ãŒãšæ¥ç¶ãããŠããŸãã ããã€ã¹ãæåã«èµ·åãããšãïŒãããŸã§ã®ãšãããã©ã€ããªãïŒãäœãæ°ä»ãããã³ã³ãããŒã©ãŒãå·»ãäžããããŠç¹æ» ããŸããã 5Bã¯ã³ã³ããŒã¿ãŒã®åºåã«ãããŸããã ãã©ã€ãããã§ãã¯ããæãæ¥ãŸãããããã§çæãåºãŸããã ãã©ã€ããæ¥ç¶ããããšãã³ã³ããŒã¿ãŒã¯å³åº§ã«åæãããŸãã-å èµä¿è·ãããªã¬ãŒãããåºåé»å§ãæå®å€ïŒ5VïŒã10ïŒ ä»¥äžäžåããšããã€ã¯ãåè·¯ãç¡å¹ã«ãªããŸãã ãããã°ã«ã¯ããªã·ãã¹ã³ãŒãã«åº§ã£ãããã³ã³ããŒã¿ãŒãããèªäœãåæ§ã®ãã®ã«äº€æããããç°ãªããã§ãŒã¯ããã¹ãããããããªã©ãéåžžã«é·ãæéãããããŸããã
èå³æ·±ãããšã«ããã©ã€ãã®è¿ãã«ãã容éã§ãããå©ãã«ã¯ãªããªãã£ãã®ã§ãåé¡ã¯ããŒãã®é ç·ãŸãã¯ã¹ãããã«ã«ãããšå€æããŸããã 枬å®ã«ãããè² è·ã90 mAãè¶ ãããšãçŽç²ãªæµæè² è·ã®å Žåã§ããã³ã³ããŒã¿ã¯åäœãåæ¢ããããšã瀺ãããŸããã ããã«ãå¹çã¯çŽ40ããŒã»ã³ãã§ããããã¡ãããã€ã³ãã«ã¹ã³ã³ããŒã¿ãŒã®å Žåãããã¯åãå ¥ããããŸããã
ãã®çç±ã¯éåžžã«å¹³å¡ã§ããããšãå€æããŸãã-10ÎŒFã®åºåã»ã©ããã¯ã³ã³ãã³ãµã®ä»£ããã«ã1ÎŒFã§èª€ã£ãŠåããã®ãã¯ãã ä»ãããããã§ãã ãã®ãããªåºå容éã§ã¯ããã€ã¯ãåè·¯ã¯ã¢ãŒãã«å ¥ãããšãã§ãããããºã«ã«åãä»ãããã倧ããªã³ã³ãã³ãµã¯åœŒå¥³ããŸã£ããå©ããŸããã§ããã
ããŒãããã¹ã¯ãã軜ãæŽæµããåŸã2ã€ã®22ãã€ã¯ããã¡ã©ããã®ã»ã©ããã¯ã³ã³ãã³ãµãã³ã³ããŒã¿ãŒã®åºåããã®å ¥åãããã³ãµãŒããŒã®æ£é¢ã«ã¯ãã ä»ãããŸããã
åæã«ã2Açšã«èšèšãããã³ã³ããŒã¿åºåãšãµãŒãBLM41PG471SN1ã®éã«å¹³æ»ã€ã³ãã¯ã¿ïŒããæ£ç¢ºã«ã¯ãã§ã©ã€ãããŒãºïŒãåãä»ããŸããã
ããã«ãããŒãäžã®å Žæãããã³ã³ããŒã¿ãŒåºåã®ããé£ã«ãã150ãã€ã¯ããã¡ã©ããã§ããAãã±ãŒã¹ã«1ã€ã®ã¿ã³ã¿ã«ã³ã³ãã³ãµãŒãæŒã蟌ãããšãã§ããŸãã
å®éãæ£åžžã«åäœããã«ã¯ãåºåã«1åãå ¥åã«1åã®22ãã€ã¯ããã¡ã©ããã³ã³ãã³ãµã§ååã§ãããå Žæãèš±ãããã®ã§ãå®å šã«ãã¬ã€ããããšã«ããŸããã
çµæã¯åçŽã«åªããŠãããè² è·ãããã£ãŠããŠã5Våºåã¯ã»ãšãã©ãã€ãºãå€ãã枬å®å€ïŒå ¥åããã³åºååè·¯ã«é»æµèšãå«ããïŒã«ããã³ã³ããŒã¿ãŒã®å¹çã¯93ããŒã»ã³ãã«éããããèªäœãéåžžã«è¯ãææšã§ãã
ãŸãšãããã®çµè«ïŒããŒãã«ã¯ãã ä»ãããèŠçŽ ã確èªããŸãã ãã«ã¹ã³ã³ããŒã¿ãŒã¯ææã§ãæèã®æ¹åïŒåºå容éãäžååïŒãæ£ããå Žåã§ããããºã«ã«åãä»ããããã³ã³ããŒãã³ãã¯ç¶æ³ãæ¹åããŸããã
ãããŒãã®æµæãšãã«ãã¡ãŒã¿ãŒã®ã·ã£ã³ããã¢ãã¯ã¢ããã®éé»å®¹éãšã€ã³ãã¯ã¿ã³ã¹ã¯ç»åãæªããããã錻ã§ã¯ãªãæçµæ§æã§ãã®ãããªããšããã¹ãããå¿ èŠããããŸãã
å é床èšã«ãããã¡ãã¯ã¹ã¢ãã
äžæ³šæã«ããHeæ žã®åœè£ ã åšèŸºæ©åšããã¹ããããšãå é床èšãå¿çããªãããšãå€æããŸããã ãªããªã 圌ã¯I2Cãã¹ã«åº§ã£ãŠãããã€ã¹ã¢ãã¬ã¹ã®éä¿¡ã§éä¿¡ãéå§ããŸãïŒéå§ãã«ã¹ã¯ã«ãŠã³ãããŸããïŒã ãã®åŸãã¢ãã¬ã¹ãäžèŽããå Žåã確èªãã«ã¹ã§å¿çããå¿ èŠããããŸãã è¡åã¯ãããŸããã§ããã
å é床èšã®ã±ãŒã¹ã¯ã¯ãã ä»ãã«æãæªãã£ãã®ã§ïŒ3x3 mmã§ããã€ã¯ããµãŒãããã«ãã¢ãŒã¹ããã©ãããã©ãŒã ã¯ãããŸããã§ããããããã¯ããããããã»ã©äžå¿ã«ãã£ãããïŒãã¯ãã ä»ãã«åé¡ããããšå€æããäœåºŠãã¯ãã ä»ãããŸããã å©ãã«ã¯ãªããŸããã§ãã
ãã®åŸãçŽæãããå èµæµæåšã§ã¯äžååã§ãããšå€æããããŒããæŽæµããŠé±å±±ãã¯ãã ä»ãããŸããã å©ãã«ã¯ãªããŸããã§ãã
ã³ãŒããäœåºŠã確èªããããŒã¿ã·ãŒãã§äœæã確èªããŸããã å©ãã«ã¯ãªããŸããã§ãã
ãã®çµæãããå¥è·¡ã«ãã£ãŠã圌ã¯1ã€ãã€ïŒã¢ãã¬ã¹ã®ãã€ããªè¡šçŸã®ãããã®1ã€ã§ïŒã»ãããšã¯ç°ãªãã¢ãã¬ã¹ãäžããŸããã å©ããã
ããã€ã¹ãå¥ã®ã¢ãã¬ã¹ã«å¿çããããã«ããããäžå¯èœãªãããããŒã¿ã·ãŒããæãå§ããŸããã ãããŠçŽ æŽãããããšãèŠã€ããŸããã
å é床èšã«ã¯ã LIS331DLãšLIS331DLHã® 2ã€ã®å€æŽããããŸãã
åãäœå® ã åäžã®ããŒã¿ã·ãŒãã åãã¬ãžã¹ã¿ãããã åçŽãª2ç§ç®ã§ã¯2g / 4g / 8gã§ã¯ãªããæåã®2g / 4gãã枬å®ã§ããŸããã
ãããŠããããã®ã¢ãã¬ã¹ã¯1ã€ç°ãªããŸãã è¯ãGoogleãLIS133ãå ¥åãå§ãããšããèªåçã« "LIS133DLH"ã«ä¿ãããŸããããããã«ããŒã¿ã·ãŒãã®éããèŠããªãã£ãã®ã§ãä»ã®äººã®äœæã§ã¢ã¯ã»ã«ãéé£ããŸããã
fac-upããã®çµè«ïŒããŒã¿ã·ãŒãã®èŠçŽ åã確èªããŠãã ãã äºæ³ããããã®ãšå°ãªããšã1æåç°ãªãå Žåã¯ããã®æåã®åå ã確èªããŠãã ããã ã»ãšãã©ã®å Žåãæ«å°Ÿã®æåã¯éçºã«ãšã£ãŠéèŠã§ã¯ãªããã³ã³ããŒãã³ãã®é ä¿¡ã®çš®é¡ã«é¢é£ããŠããŸããããã®å é床èšã§ãçºçããŸãã
Bluetoothã¢ãžã¥ãŒã«ã䜿çšãããã¡ãã¯ã¹ã¢ãã
ããããã®phak-upã¯äžåœäººã®è¯å¿ã«ããå€ããããŸãã HC-04ãHC-05ãHC-06ããã®ã¢ãžã¥ãŒã«ã®ããã€ãã®å€æŽãçæããããšãå€æããŸãã-ãããã¯éãç°ãªããããã¡ãŒã ãŠã§ã¢ãç°ãªããŸãã å¿ èŠã«å¿ããŠãå¥ã®ãã®ãå€æŽã§ããŸãã
HC-04ã¯HC-05ã®ä»£ããã«ç§ã«æ¥ãŸããã04ã®ã»ãããã¡ãŒã ãŠã§ã¢ãç°¡åã§ã05ãGPIOã®1ã€ã«ä¿¡å·ãé©çšããããšã§ã³ãã³ãã¢ãŒãã«åãæ¿ãããã05ããã¹ã¿ãŒãŸãã¯ã¹ã¬ãŒããšããŠæ©èœã§ããå Žåã04ã¯åžžã«ç°ãªããŸããã¹ã¬ãŒããšããŠã®ã¿æ©èœããŸãïŒãŸãã¯ãã¹ã¿ãŒãšããŠã®ã¿æ©èœããŸããã販売äžã®ã¢ãžã¥ãŒã«ã¯ãŸã èŠãŠããŸããïŒãæåã¯ã³ãã³ããåä¿¡ããã¢ãŒãã§ããããã¹ã¿ãŒãšã®éä¿¡ã確ç«ããåŸãã³ãã³ããžã®å¿çãåæ¢ããŸãã
ããã«ããããã®ã¢ãžã¥ãŒã«ã¯ãããããšãã«ã®ãŒå¹çã®é«ãã¹ãªãŒãããµããŒãããŠããŸããã
ãããã£ãŠãã¢ãžã¥ãŒã«ãã³ãã³ãã¢ãŒãã«ããããã«ç§ããæã£ãŠããä¿¡å·ã¯åœ¹ã«ç«ããããŸãããã¹ã¿ãŒãæ¢ããŠããéãã¢ãžã¥ãŒã«ã¯åžžã«20ã40 mAãæ¶è²»ããŠããããšãããããŸããã
解決çã¯ããã®ç¶æ³ã§ã¯åœ¹ã«ç«ããªãå¶åŸ¡ä¿¡å·ãRESETã¢ãžã¥ãŒã«ã®ãã³ã«æããããšã§ããã ããã§ãäœã¬ãã«ãããã«é©çšããããšãã¢ãžã¥ãŒã«ã¯RESETç¶æ ã«ãªããæ¶è²»ãåæ¢ããŸãã
ãŸãšãããã®çµè«ïŒæ±æŽã¯åŸ®åŠãªåé¡ã§ãã äžåœã®ã¢ãžã¥ãŒã«ã¯å®ããã§ããããŒã¿ã·ãŒãã泚ææ·±ãèªã¿ãããããããªãã«éä¿¡ãããã®ã確èªããŠãã ããã
ãããã°ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããFAXã¢ãã
ãã®äºå®ã§ã¯ãªããæ€èšã®ããã®æ å ±ã ã¯ãããã¡ãŒã ãŠã§ã¢ãšãããã°ã«ã¯ãå®éã«ã¯2ã€ã®SWDä¿¡å·ãã³ïŒã¯ããã¯ãšããŒã¿ïŒã§ååã§ãã ãã ãã VAPPããã°ã©ããã³ãã³ã³ãããŒã©ãŒã®é»æºã«çŽæ¥æ¥ç¶ãããŠããªãå Žåã¯ããŸã£ããæ¹æ³ããããŸããïŒãããã®å ŽåãST-LINKïŒã ããã°ã©ããŒã¯åœŒãã®ããã«é»å§ããã¹ãããŸãããäžè¬çã«åœŒã«ã¯ããããã§ããäœããã®çç±ã§ãããã3.3Vã®é»æºã«éããŠãæ©èœããŸããã§ããã ãã ããããã¯ããã»ã©æããã®ã§ã¯ãããŸãããã¹ã ãŒãžã³ã°ã³ã³ããŒã®1ã€ã«ã¯ãã ä»ããããŠããŸãã
ä»ãããã¯ããã«æªãã ãã¡ãããã³ã³ãããŒã©ãŒã®ãªã»ãããæ åœããNRSTãã³ããããŸãã å®éãSWDã¯ã³ã³ãããŒã©ãŒãœãããŠã§ã¢ããªã»ããã§ãããããååãšããŠãæ¥ç¶ããããšã¯ã§ããŸããã ãããã
ã¹ãªãŒãã¢ãŒãããã¹ããããšãããããå¿ã³å¯ã£ãŠããŸããã æ®å¿µãªããã äœé»åã¢ãŒãã®ãããã°ãµããŒãã»ã¯ã·ã§ã³ã§ããCTM32 refmanãããããã®éèŠãªçšèªãèªã¿ãŸããã§ããããããã°ã»ãã·ã§ã³äžã«ã³ã¢ã§FCLKãŸãã¯HCLKããªãã«ããããšã¯ã§ããŸããã ãããã¯ãããã¬ãŒæ¥ç¶ã«å¿ èŠãªã®ã§ããããã°äžã¯ã¢ã¯ãã£ãã®ãŸãŸã«ããŠããå¿ èŠããããŸãã
æãæ·±ãã¹ãªãŒããã¹ã¿ã³ãã€ã¢ãŒãã§ã¯ããããã°ãšå ±ã«ã¿ã€ãã³ã°ãç¡å¹ã«ãªããŸãã ãããŠä»¥æ¥ æ¶è²»ãã¹ãã®ããã«ãã¡ã€ã³ã®ã¹ã¿ã³ãã€ãžã®å ¥ãå£ã«å ¥ã£ããšãããæåŸã«é瞫補ã³ã³ãããŒã©ãŒãå ¥æããŸããã
rezetãšãã®äºå®ã®éã®æ¥ç¶ã¯ç°¡åã§ã-ã¹ã¿ã³ãã€ããŸã ã¢ã¯ãã£ãã«ãªã£ãŠããªããšãã«ããã°ã©ããŒã¯rezetã®äžããçž«ãããšãã§ããŸãïŒãããŠããã¡ãŒã ãŠã§ã¢ã§ãªã³ã«ãããšããã«ã¢ã¯ãã£ãã«ãªããŸãïŒãããã®ããã«ã®ã¿ã NRSTãã³ãªãã§ã³ã³ãããŒã©ãŒãåèµ·åã§ããŸã圌ã¯ã§ããŸããã§ããã
å¥åŠã«æãããããããŸããããããã°ã©ããŒã絶ããããã°ã©ããã«ã³ã³ãããŒã©ãŒãæ€åºããããšãã壮倧ãªèªåã¢ãŒãããã£ãSTã®æšæºãŠãŒãã£ãªãã£ã¯ç§ãæã£ãŠãããŸããã ãã®ã¢ãŒãããªã³ã«ããŠãGNDãéã«ã¯ãã ä»ãããŠé ç·ãéå§ããã³ã³ãããŒã©ãŒã®äžãããããããŠçªãåºãŠããåæé åãçªãããã«ããŸããã ããã°ã©ããŒãã³ã³ãããŒã©ãŒãæŸãäžããŠããåã³ç ãã«èœã¡ããã¡ãŒã ãŠã§ã¢ãæ¶å»ããããšãã§ããŸããã
ãŸãšãããã®çµè«ïŒç ã£ãŠãã©ããã£ãŠç®èŠããããèããŠãã ããã ãŸããããªãã¯éãåºãããšããã§ããããã«ãå°ãªããšãäœãã1ããªã¡ãŒãã«é¢ããã«ããã衚瀺ããå¿ èŠããããŸãã
ãã©ã€ãã§FAXãéä¿¡
æãæ²ããäºå®ã§ãããããã¯ç§ã®è¯å¿ã§ã¯ãããŸããã ãã©ã€ããç³ãèš³ãããŸããããããããšã ãµãŒãã¢ãŒãå°çšã«èšèšãããŠãããããã»ãšãã©ã®æéãéçãªäœçœ®ã§éããããšãã§ããŸãã è² è·ãããããšã圌ãã¯å®¹èµŠãªã济ããŸãã ããã«ãäœãåãä»ããããŠããªããŠãå ç±ãããã·ã£ãããå転ããã ãã§ãã ãã®ãããäžå®å転ã¢ãŒãã§ã¯åäœããŸããã2ååŸãé床ãäœäžããå éšã®æœ€æ»æ§ãåªããŠããŠãïŒã¹ãã£ãã¯ããªããã¹ãããŒã¯ãã¹ã ãŒãºïŒãèªç¶ã«æº¶ãå§ããŸãã

äœã溶ãããããŠäœããææªãªã®ã¯ã®ã¢ãç¹ã«åºåã§ãã ãã®åŸããã©ã€ããããã³ç¶ã«ãªãã亀æã®ã¿ã圹ç«ã¡ãŸãã ãã®ãããåçãšãããªã«è¡šç€ºãããŠãã圢åŒã®ç«ãããã¯ãäžæãããŠ1ã2åéããæ©èœããŸããã ãã®ãããç§ã¯ãããå解ãããã©ã€ãããããé·ãããã£ãããšå転ããéå±ã®ã¢ãåãããããå¥åº·çã§ãããé ããããã¬ãºãªã³ã°ããMG90ã«äº€æããªããã°ãªããŸããã§ããã
ãã®ããã圌ã¯ããŒã«ã«åãŸããïŒå°ããªããŒã«ã¯ãã¡ãã倧ããªããŒã«ã«ãïŒãéåžžã«ãã£ãããšèµ°ããŸãã
ããããã³ãã¯ãŸã é¢çœãã§ãã
äºå®ããã®çµè«ïŒããŠãã©ã®ãããªçµè«ãåŸãããã®ããããã¯ãã¹ããµã³ãã«ã§ããããã®ãããªããšãæããã«ããã ãã§ãã ãã©ã€ãã«é¢ããçµè«-å°ããªãã©ã€ãã¯çŽ°å¿ã®æ³šæãæã£ãŠäœ¿çšããŠãã ããããããã圌ãã¯è¶ 軜éã§è¶ 埮现ãªå è§åœ¢ãŸãã¯å足åç©ãåŒã£åŒµãã§ããããç§ã¯æéããããšãã«ãããéããããšããŸãã
äœæ¥ã«é¢ããäžè¬çãªçµè«ïŒäžè¬çã«ãçµéšã¯åœ¹ã«ç«ã¡ãŸãããããŠãç«ã¯ãæ°ãããããããã£ãããããã®ãµã€ãºãšé床ãé ããªã£ãã«ããããããããããæ°ã«å ¥ã£ãŠããŸããç¹ã«åœŒãããããšãïŒ
ãã®ãããªããšãåéããŠãã人ã«ãšã£ãŠããã1ã€èšããããšã§ã-å転ã»ã³ãµãŒïŒã¢ã¯ã»ã«ã¯é©çšãããŸããïŒã¯å¿ é ã§ãããªããªãããã£ãªãã¬ãŒã·ã§ã³ãšäžå®ã®å€ããªããšã2ã€ã®ç°ãªããã©ã€ããšãã€ãŒã«ã®åãé床ãéæããããšã¯äžå¯èœã ããã§ããããã£ãŠãããããã¯èŒªã«ãªããŸãããã£ãªãã¬ãŒã·ã§ã³ãè¯å¥œãªå Žå-éåžžã«å€§ããªåã®åšãã«ãããããããã¯å£ããå£ãžç§»åããå Žåã«ã®ã¿é¡èã«ãªããŸããæªãå Žåã¯ãããªãæ©ããªããŸãããã®ããã次ã®ããŒãžã§ã³ã§ã¯ãããè€éãªã»ã³ãµãŒãèšçœ®ããäºå®ã§ãããã¡ãããããé©åãªãã©ã€ãã§ãã
å°ãããã©ã€ãã§ã¢ãŒã¿ãŒã®å·åŽãæŽçããããšããèãã¯ãŸã ãããŸãããé床ãèœãšãããšã§æ£ããåäœã«ååãªå ŽåããããŸãïŒçŸåšããããããã®ããŒãã·ã³ã¯ã¯å«ã§ãïŒãããŸãããã°ãå·åŽãã©ã€ããšFreeRTOSã«é¢ããcat-bot v1.5ã«é¢ãã次ã®èšäºãåŸ ã£ãŠãã ããïŒ
ãããããéããŠãã³ãã楜ããŸããŠãããŸãïŒ
