p.1 | å ¬éæ¥ïŒ2026/6/20
1. ðã¹ããã®ã¿ããã§ãæ£æ³çªã人圢ããæ£æ³ãç¹°ãåºããŸã§ãåºç«
1. ðã¹ããã®ã¿ããã§ãæ£æ³çªã人圢ããæ£æ³ãç¹°ãåºããŸã§ãåºç«
<p>ã¹ãããPCã®ãã©ãŠã¶ã«äžŠãã ãã¿ã³ããã²ãšã€æŒãã</p>
<p>ãããšæ°ã¡ãŒãã«é¢ããæºã®äžã§ã人圢ããã·ã¥ãããšæ£æ³çªããç¹°ãåºãããç»é¢ã®ã«ãŠã³ã¿ãŒã <code>+1</code> ãããã</p>
<p><img src="/api/article/09aeb399-48c4-420f-9344-59d85921faae/file/demo.gif" alt="ãã©ãŠã¶æäœã§æ£æ³çªã"></p>
<p>èŠãç®ã¯ããããã人圢ãã§ãäžèº«ã¯ãé»ååè·¯ã»ãã¡ãŒã ãŠã§ã¢ã»Webã¢ããªã»ãããã¯ãŒã¯ãäžæ¬ã«ã€ãªãã£ãããã£ããšããã·ã¹ãã ã ããã®èšäºã§ã¯ããã®äžå°ãåããŸã§ââç»é¢ã®ã²ãšæŒããæ£æ³çªãã«ããããŠã«ãŠã³ãã«å€ãããŸã§ããHWããNWãŸã§èŸ¿ã£ãŠããã</p>
<h2>ãããªäººã«èªãã§ã»ãã</h2>
<p>ãããé販ã§ããã£ãååãç¿æ¥ã«ã¯å±ãç©æµãé§
ã®æ¹æã話ãããããšçããã¹ããŒãã¹ããŒã«ãŒââæ®æ®µããããŸãã«äœ¿ã£ãŠãããã®ã»ã©ãããããäžã§ã¯ã©ãåããŠãããã ããããšæ°ã«ãªãããšã¯ãªãã§ãããããç§ã¯ããæããŸãã</p>
<p>ãšã¯ããããããªãæ¹æã¯äœããŸãããããã§ãããäœããåãããŠã¿ããããã¹ããã§æäœãããããããŒã¿ãèšé²ããåæããããââãããªæããããã®ãããžã§ã¯ãã®åºçºç¹ã§ãã</p>
<p>ããŒããŠã§ã¢ãçµã¿ããã¡ãŒã ãŠã§ã¢ã§åããããããã¯ãŒã¯ã§ãœãããŠã§ã¢ãšã€ãªãã§ããã£ãšäŸ¿å©ã«ããŠããã<strong>HWã»FWã»SWã»NW ãçµ±åããŠãã²ãšã€ã®ã·ã¹ãã ãšããŠåããã®</strong>ããäœããªããäžç·ã«åŠãã§ããââããããã®é£èŒã§ãã</p>
<blockquote>
<p>ð¡ <strong>ãããªäººãšäžç·ã«èŸ¿ããã</strong>
èªåã®å°éã®å€ã«ãäžæ©èžã¿åºããŠã¿ãã人ããWebã¯ãããã©é»åå·¥äœã¯æªç¥ããçµã¿èŸŒã¿ã¯ãããã©ãµãŒããŒåŽã¯è§Šã£ãããšããªããââãã®å¢çããå®éã«åãããã€ã¹1å°ã§äžæããŠã¿ãŸãã</p>
</blockquote>
<p>ãã®æåã®äžå°ããåé ã®æ£æ³çªã人圢ã§ãããã©ãŠã¶ã®ã²ãšæŒããåœä»€ãšãªã£ãŠäººåœ¢ã«å±ããç¹°ãåºããã<strong>æ£æ³</strong>ãã©ãºãã€ã®ã«ã¡ã©ãç»åèªèã§æ°ããââæå
ã®ã²ãšæŒããç»é¢ã®ã«ãŠã³ãã«å€ãããŸã§ãä¿¡å·ãå±€ããå±€ãžã©ãæž¡ã£ãŠããã®ããããã®ããšå®ç©ã§è¿œããããŸãã</p>
<h2>ãã®ãããžã§ã¯ãã®å°å³</h2>
<h3>ãŸãã身è¿ãªã·ã¹ãã ã®ã圢ã</h3>
<p>ããã»ã©æããã¹ããŒãã¹ããŒã«ãŒãæãåºããŠãã ããããææ¥ã®å€©æ°ã¯ïŒããšèããšçããè¿ã£ãŠãããã§ããã®è¿äºã¯ãæã®ã²ãã®ã¹ããŒã«ãŒã®äžã ãã§äœãããŠããããã§ã¯ãããŸãããããªãã®å£°ã¯ãããè¶ãã«<strong>é ãã®ãµãŒããŒ</strong>ãžéãããããã§åŠçãããŠããŸãæ»ã£ãŠããŸãã</p>
<p>ã€ãŸããã®ã·ã¹ãã ã¯ã<strong>æå
ã®ã¢ã ââ ãããã¯ãŒã¯ ââ é ãã®ãµãŒããŒ</strong> ã®3ç¹ã§ã§ããŠãããçŸå Žã§å
¥åã»æ€ç¥ãããµãŒããŒãåŠçã»èšé²ãããŸãçŸå Žãžè¿ããç§ãã¡ãæ®æ®µã䟿å©ããšæããŠãããã®ã®å€ãã¯ãã ããããã®åœ¢ãããŠããŸãã</p>
<h3>ãã®ã圢ãããèªåã§ã€ãã</h3>
<p>ã ã£ãããåã圢ãèªåã§ãäœããã¯ãã§ãã</p>
<p>èªåã§çµãã ããã€ã¹ããããè¶ãã«ãµãŒããŒãžã€ãªãããã©ãŠã¶ããåãããããåããåæ°ãèšé²ããŠã°ã©ãã«ãããããããŠãããã€ã¹ãå¢ããŠããããåãåå°ã«ã©ãã©ãæ¿ããŠãããââãããªã<strong>èªåå°çšã®åå°</strong>ããã€ãããããããã®ãããžã§ã¯ãã®äžå¿ã«ãããŸãã</p>
<p>ãã®åãã<strong>seikenã·ã¹ãã </strong>ãããã£ãã®ã¹ããŒãã¹ããŒã«ãŒãšã圢ã¯ãŸã£ããåãã§ããéãã®ã¯ãã€ãªãã£ãŠããã®ãåžè²©åã§ã¯ãªããèªåã§äœã£ãããã€ã¹ã ãšããããšã</p>
<table>
<thead>
<tr>
<th style="text-align:left">ãã£ãã®3ç¹</th>
<th style="text-align:left">seikenã·ã¹ãã ã§ã¯</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">æå
ã®ã¢ã</td>
<td style="text-align:left"><strong>ããã€ã¹</strong>ïŒæ£æ³çªãäººåœ¢ãæ°ŽããããããâŠïŒ</td>
</tr>
<tr>
<td style="text-align:left">ãããã¯ãŒã¯</td>
<td style="text-align:left">ã€ã³ã¿ãŒãããè¶ãã®éä¿¡</td>
</tr>
<tr>
<td style="text-align:left">é ãã®ãµãŒããŒ</td>
<td style="text-align:left"><strong>seikenãµãŒããŒ</strong>ïŒãã©ãŠã¶ããã®é éæäœïŒããŒã¿ã®èšé²ã»å¯èŠåïŒ</td>
</tr>
</tbody>
</table>
<p><img src="/api/article/09aeb399-48c4-420f-9344-59d85921faae/file/kousou.png" alt="seikenã·ã¹ãã "></p>
<p>ãã©ãŠã¶ã®ããã·ã¥ããŒãã«ã¯ç»é²ããæ©åšãã«ãŒãã§äžŠã³ãéžã¶ãšé éæäœã»ã«ã¡ã©æ åã»ã°ã©ããèŠãããŸãã</p>
<p>ããŸã¯ãŸã ããã¹ãŠãã©ãºãã€1å°ã®äžã§åããããŒã«ã«å®çµåããåå°ã«ä¹ã£ãŠããã®ã¯ã第äžå·ã®æ£æ³çªã人圢ã ãã§ããæ¬¡ã®ç« ã§ã¯ãã¹ããŒãã¹ããŒã«ãŒãšåããã®ã圢ãããæ£æ³çªã人圢ã§ã¯å
·äœçã«ã©ãå®çŸãããŠããã®ãââHWããNWãŸã§çžŠã«èŸ¿ããŸãã</p>
<h2>ãå®äŸãæ£æ³çªã人圢ãåããŸã§ãã瞊ã«èŸ¿ã</h2>
<p>ãããããæ¬é¡ã§ããåé ã®ããã¿ã³ãæŒã â äººåœ¢ãæ£æ³ â ã«ãŠã³ããããHWã»FWã»SWã»NW ã®4å±€ã«åè§£ããŠãäžããäžãžèŸ¿ã£ãŠã¿ãŸãã</p>
<h3>HWïŒããŒããŠã§ã¢ïŒâ åãäœãã€ãã</h3>
<p>人圢ã®äœã¯ã3Dããªã³ããããã¬ãŒã ã«ã2åã®ãµãŒãã¢ãŒã¿ãŒïŒSG90ïŒãšãã¹ã©ã€ãã¯ã©ã³ã¯æ©æ§ããä»èŸŒãã ãã®ããµãŒãã®å転ãè
ã®çŽç·éåã«å€ãããæ£æ³çªãã«ãªããŸããé è³ã¯æã®ã²ããµã€ãºã®ãã€ã³ã³ <strong>ATtiny402</strong>ïŒ1å80åïŒãããã«å§åã»ã³ãµã»ææŒããã¿ã³ã»é³å£°ã¢ãžã¥ãŒã«ïŒDFPlayer MiniïŒã¹ããŒã«ãŒïŒãã€ãªãããå3黿± 3æ¬ïŒ4.5VïŒã ãã§åããæ£é¢ã®å§åã»ã³ãµã«ããŒã«ãåœãããšããããåå³ã«æ£æ³çªããé£ã³åºããŸãïŒææŒããã¿ã³ã§ãåãïŒã黿ºãå
¥ããã°åäœã§å®çµãããã¹ã¿ã³ãã¢ãã³ã®ããã¡ããããããã§äžæŠå®æããŸãã</p>
<h3>FWïŒãã¡ãŒã ãŠã§ã¢ïŒâ äœã«åãæ¹ãæãã</h3>
<p>ATtinyã«æžã蟌ãããã°ã©ã ããã¡ãŒã ãŠã§ã¢ã§ãããã£ãŠããããšã¯ã·ã³ãã«ã§ãã<strong>ããªã¬ãŒãæ¥ãããé³ã鳎ãããŠãã¯ã³ããŒãã³ãã3å</strong>ããããã»ã©ã®ããŒã«ïŒããã¿ã³ïŒããã®åå³ãåãåããšããµãŒããåŒãäœçœ®(150°)âçªãäœçœ®(30°)ãšæ¯ãã1ã»ããçŽ2.4ç§ã®ãã³ããç¹°ãåºããŸãããããŸã§ã¯ããŸã ãµãŒããŒããããã¯ãŒã¯ããããªãäžçã§ãã</p>
<h3>SWïŒãœãããŠã§ã¢ïŒâ ã¹ããããåãããèšé²ãã</h3>
<p>ããã§ seikenã·ã¹ãã ãç»å ŽããŸãããã©ãŠã¶åŽïŒVue.jsïŒã«ã¯é éæäœãã¿ã³ãæ£æ³åæ°ã¢ãã¿ãŒïŒä»æ¥ã»çޝèšã»ã°ã©ãïŒãã«ã¡ã©æ åã䞊ã¶ããµãŒããŒåŽïŒFlaskïŒãæç€ºãåããŠçµæãããŒã¿ããŒã¹ã«èšé²ããã©ãºãã€äžã®ããã°ã©ã ãã«ã¡ã©æ åã <strong>OpenCVã§ç»åèªè</strong>ããŠã人圢ãå®éã«ãã³ãããåæ°ãæ°ããŸãã<strong>é éã¢ãŒãã§åæ°ãæ°ããã®ã¯ã人圢ã®ã»ã³ãµãŒã§ã¯ãªããèŠãŠããã«ã¡ã©</strong>ã§ãã</p>
<h3>NWïŒãããã¯ãŒã¯ïŒâ 4å±€ãã²ãšã€ã«ã€ãªã</h3>
<p>æåŸã«ããããã1æ¬ã®ç·ã§ã€ãªãã®ããããã¯ãŒã¯ã§ãããã©ãŠã¶ã®ã²ãšæŒã㯠<strong>Socket.IO</strong> ãšããä»çµã¿ã§ããµãŒããŒãžããããŠã©ãºãã€ãžãšãªã¢ã«ã¿ã€ã ã«äŒãããŸãã</p>
<p>ãããŠããã¡ã°ãé¢çœã"ã€ãªãç®"ãããã«ãããŸããã©ãºãã€ã¯ã人圢㮠<strong>å§åã»ã³ãµãšåã端å</strong> ã«ãæŒããããã®ãšåã黿°ä¿¡å·ïŒLOWãã«ã¹ïŒãéã蟌ãã ããATtinyããèŠãã°ãããŒã«ãåœãã£ãã®ãšåºå¥ãã€ããŸããã<strong>ã ããé éæäœã®ããã«ããã¡ãŒã ãŠã§ã¢ã¯1è¡ãæžãæããŠããªã</strong>ããããŒã«æ€ç¥ã§èµ·åãããWebããèµ·åããã人圢ã«ãšã£ãŠã¯åãããšãã¹ã¿ã³ãã¢ãã³ã®ããã¡ãããé
ç·äžæ¬ã§<strong>ãããã¯ãŒã¯æ©åšã«å€§å€èº«ïŒïŒ</strong></p>
<p><img src="/api/article/09aeb399-48c4-420f-9344-59d85921faae/file/flow.png" alt="seikenã·ã¹ãã "></p>
<p>ã¿ããã²ãšã€ãããµãŒããŒãéãã黿°ä¿¡å·ã«ãªã£ãŠäººåœ¢ãåããããã®åããã«ã¡ã©ãèŠãŠæ°ãããŸãç»é¢ã«æ»ã£ãŠãããHWã»FWã»SWã»NW ããããããŠã²ãšã€ã®ã«ãŒãã«ãªããŸããæ¬¡ã®ç« ããã¯ããã®äžåšãæ¯ããæè¡ããé£èŒã§é çªã«æãäžããŠãããŸãã</p>
<h2>ããããã®éã®ã</h2>
<p>æ£æ³çªã人圢ã¯ããã®é·ãæ
ã®ãæåã®äžå°ãã§ããããããå
ããã®ãããžã§ã¯ãã¯2ã€ã®æ¹åã«åºãã£ãŠãããŸããããã»ã©ã®å°å³ã§ããã<strong>åå°ïŒseikenïŒãè²ãŠã軞</strong>ãšã<strong>ããã€ã¹ãå¢ãã軞</strong>ã§ãã</p>
<h3>ð åå°ãè²ãŠãïŒseikenã·ã¹ãã ã®éã®ã</h3>
<p>ããŸã® seiken ã¯ããã¹ãŠã1å°ã®ã©ãºãã€ã«åå±
ãããããŒã«ã«å®çµåãããããããæ¬ç©ã®ã·ã¹ãã ãããäžæ©ãã€è²ãŠãŠãããŸãã</p>
<table>
<thead>
<tr>
<th style="text-align:left">éã®ã</th>
<th style="text-align:left">ããããš</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><strong>â ããŒã«ã«ã§å®æããã</strong>ïŒâããŸããïŒ</td>
<td style="text-align:left">ãŸãæå
ã§ã1å°ã«åå±
ãã圢ããã£ããåãããã</td>
</tr>
<tr>
<td style="text-align:left"><strong>â¡ ã¯ã©ãŠãã«èŒãã</strong></td>
<td style="text-align:left">ã€ã³ã¿ãŒãããè¶ãã«ãã©ãããã§ã䜿ããããã«ãã</td>
</tr>
<tr>
<td style="text-align:left"><strong>⢠ããããªããã€ã¹ãèŒããããåå°ãž</strong></td>
<td style="text-align:left">ç¹å®ã®ããã¡ãå°çšã§ã¯ãªããäœã§ãæ¿ããããã©ãããã©ãŒã ãã«ãã</td>
</tr>
</tbody>
</table>
<p>ã¹ããããé²ããã³ã«ãæ°ããæè¡ã®"ã€ãªãç®"ãåºãŠããŸãããã®éœåºŠãã®é£èŒã§ãã€ãŸãããæãå«ããŠèŸ¿ã£ãŠãããŸãã</p>
<h3>ð€ åå°ã«ä¹ããããã€ã¹ãã¡</h3>
<p>åå°ãè²ãŠãã®ãšäžŠè¡ããŠãããã«ä¹ããããã€ã¹ãäœã£ãŠãããŸãã</p>
<table>
<thead>
<tr>
<th style="text-align:left">ããã€ã¹</th>
<th style="text-align:left">ããŸ</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">æ£æ³çªã人圢</td>
<td style="text-align:left">ð¢ seikençµ±åæžã¿ã»éçšäž</td>
</tr>
<tr>
<td style="text-align:left">æ°Žãããããã</td>
<td style="text-align:left">ð¬ 詊äœäžïŒESP32ïŒã次ã®seikençµ±ååè£</td>
</tr>
<tr>
<td style="text-align:left">ã©ã€ã³ãã¬ãŒãµãŒ</td>
<td style="text-align:left">ð¡ æ§æ³äž</td>
</tr>
<tr>
<td style="text-align:left">ã»ã°ãŠã§ã€é¢šã®ä¹ãç©</td>
<td style="text-align:left">ð¡ æ§æ³äž</td>
</tr>
</tbody>
</table>
<p>ãããããã®ã¯ãããã€ã¹ããšã«"ã€ãªãæ¹"ãå€ããããšãããšãã°æ°Žãããããã㯠Wi-Fi å
èµã® ESP32 ãªã®ã§ãæ£æ³çªã人圢ã®ããã«ã©ãºãã€ãæãŸãããµãŒããŒãžçŽæ¥ã€ãªããŸããåãåå°ã§ããããã€ã¹ãéãã°éã®ããå€ããââãã®ããªãšãŒã·ã§ã³ãããããã玹ä»ããŠãããŸãã</p>
<h2>ã©ãèªãã§ã»ããã</h2>
<p>æåŸã«ããã®é£èŒã®æ©ãæ¹ãå°ãã ãã</p>
<p>ãã®èšäºã¯ããã®é£èŒå
šäœã®å
¥å£ã§ãããããã Step ãããã€ã¹ããšã«èšäºãå¢ããŠãããŸãããã©ãã仿¥èŠããã¿ãã â åã â æ°ãããã«ãŒãã®ã©ãããæãäžãããã®ãã ãããé ããé ã«èªãå¿
èŠã¯ãããŸãããæ°ã«ãªã£ãå±€ã»æ°ã«ãªã£ãããã€ã¹ãããã€ãŸã¿é£ãããŠãã ããã</p>
<p>åé ã§ãè§Šãããšãããããã¯ãæãããé£èŒã§ã¯ãªããã€ãŸãããå«ããŠäžç·ã«èŸ¿ã£ãŠããèšé²ã§ããæ°è»œã«é£ã§èŠããŠãããããã®è·é¢æã§èªãã§ãããããå¬ããã§ãã</p>
<p>çºä¿¡ã¯ã2ã€ã®åœ¢ã§ãã£ãŠãããŸãã</p>
<ul>
<li>ð¬ <strong>ã·ã§ãŒãåç»</strong> âŠ å®æããããã€ã¹ãåãæ§åãããµã¯ããšæ¥œãã</li>
<li>ð <strong>ãã®é£èŒïŒZennïŒ</strong> ⊠ãã®è£åŽãHWãNWã®"ã€ãªãç®"ããã£ãã</li>
</ul>
<p>ãåããŠãïŒããå
¥å£ã«ããã©ããã£ãŠåãã®ïŒããŸã§ä»ãåã£ãŠãããããæé«ã§ããæ¬¡ã®èšäºããã¯ããã®å°å³ãäžãã¹ãã€æ©ããŠãããŸãã</p>