まずはMKZ4の仕組みをおさらい、モーターをWi-Fiで制御するための仕掛け まず初めに、MKZ4の仕組みを解説します。ブロック図を見てください。 MKZ4は、図のようにCPU搭載Wi-Fiモジュールを中心に、さまざまなデバイスが接続されて動作しています。CPUで制御している内容は大きく分けて4つの機能があります。 1）モータードライバー DRV8830の制御：I2C

2）ステアリング、サーボモーター制御機能：PWM

3）スマートフォンとの通信機能：無線LAN（Wi-Fi）

4）ソフトウェア書き込み機能：UART 1）モータードライバー ワイルドミニ四駆を含むミニ四駆は、通常は前に進むことしかできませんが、MKZ4で改造したワイルドミニ四駆は前進に加えて後退もできるようになります。この前進・後退をコントロールするのが「モータードライバー」です。MKZ4では基板からモータードライバーを通じてモーターを制御することで、ミニ四駆を動作させています。モータードライバーとは文字通り、モーターをドライブさせる（動かす）回路のことです。 モータードライバーとCPUはI2Cという通信方式で、CPUが決められたコマンドを送ることで、モータードライバーが解釈して前後など任意のモーター動作をします。 2）ステアリング、サーボモーター制御 モータードライバーを搭載することでMKZ4は前進と後退ができるようになりますが、さらに左右へ曲がるための制御に使うのが「サーボモーター」です。サーボモーターとは一定の角度範囲（0～180度など）で正確に回転させたいときに使うモーターで、一定の周期でサーボモーターに送る信号の幅を調整することで、サーボモーターの角度を制御できます。この、信号の幅を変えることで対象をコントロールすることを「PWM（Pulse Width Modulation）制御」と言います。 ESP8266からはPWM制御で任意の信号を送り、サーボモーターに付いているサーボホーンを左右に回転させることでステアリングを切ります。 I2Cと異なり、コマンドではなく、PWMで直接ステアリングが動作します。 3）Wi-Fiモジュール「ESP8266」 Wi-Fiとは、パソコンやスマートフォンなどに搭載されているワイヤレスの通信規格です。正確には「Wireless LAN（無線LAN）」という呼び名が正しく、Wi-Fiという名称は「Wi-Fi Alliance」という団体による認定を受けた製品のみが名乗ることができるのですが、最近では無線LANそのものが「Wi-Fi」と呼ばれるケースが増えています。そのため、本記事でも無線LANについては「Wi-Fi」と記述していますが、本章では「無線LAN」として説明します。 MKZ4では、ESP8266は無線のウェブサーバーとして機能させて、ブラウザーに表示させる文字（HTML文書）はESP8266が出力します。スマートフォンはクライアントとなり、受け取ったHTMLに応じて画面にUI（ユーザーインターフェース）を表示し、ユーザーが画面をタップした値をESP8266に返します。ESP8266は、受け取った値に応じて、モータードライバーとサーボモーターを制御して、ミニ四駆を走らせます。 4）ソフトウェア書き込み機能 CPUの内蔵メモリに、ソフトウェアを書き込まないと何も動きせん。MKZ4では専用ライター「MKZ4WK」を用意しており、UART（Universal Asynchronous Receiver-Transmitter 、日本語では汎用非同期送受信回路経路）で書き込みを行います。 UARTは、非常に多くのデバイスでサポートされており、現状では世界標準と言えるでしょう。 UARTには、電源、GNDの他にTXD（送信）、RXD（受信）の専用線があり、4本で通信します。今回使用しているESP8266の電源は3.3Vなので、UARTシリアル変換モジュールの電圧も3.3Vにしてあります。TXD、RXDはCPU側から見ての送信・受信なのか、UART変換モジュール側から見ての送信・受信か向きが分かりにくいので、信号を追う場合は注意が必要です。 MKZ4WKでは、内蔵のUSB-UART変換モジュールによって、USBに接続することでPCとCPUを通信することができています。オリジナルのArduinoでも、PCからUART通信でスケッチを書き込んだり、コンソールにCPUからメッセージを表示したりすることに使っています。