ESP-WROOM-02で鉄道模型を遠隔制御（第１回）

#はじめに
　Qiitaへの記事投稿は初めての綾瀬です。これまでツイッターや雑誌記事、同人誌等で鉄道模型の制御装置を中心に電子工作の紹介記事を執筆してきましたが、体型的にまとめられていないこともあって、徐々に、まとめていこうという試みの第１回目となります。まずは、ESP-WROOM-02を使って作った鉄道模型の制御装置を紹介していきたいと思います。

#寄稿記事の紹介
　まず最初に、これまで執筆・公開してきた鉄道模型のマイコン制御関係の記事を以下に紹介しておきます。参考にしてください。

- [日経Linux 2015年5月号特集記事「Arduinoで鉄道模型を自動運転」 - Kindle版](http://www.amazon.co.jp/dp/B00W0WRDLA/)
- [FlashAir同人誌２ 寄稿「共有メモリを使い倒せ」](https://flashair-developers.com/ja/documents/books/#second)
- [FlashAir Developersユーザーチュートリアル 寄稿「FlashAirによる鉄道模型制御-GPIO編」](https://flashair-developers.com/ja/documents/tutorials/users/2/)
- [FlashAir Developersユーザーチュートリアル 寄稿「FlashAirによる鉄道模型制御-共有メモリ編」](https://flashair-developers.com/ja/documents/tutorials/users/3/)

#遠隔制御装置の概要
　今回作るものの概要を最初に紹介します。
　制御対象となる鉄道模型は、Gゲージという縮尺1/22.5、線路幅45mmというものです。鉄道模型として一般的なNゲージ（縮尺1/150〜1/160、線路幅9mm）と比較すると約７倍の大きさのものです。
　今回は車両の遠隔制御とともに、ポイント制御、給電制御を行う装置を作ってみます。車両の遠隔制御では、ESP-WROOM-02とモータドライバを組み込み、車両に搭載されたモータを駆動させて、無線LANで遠隔制御できるようにします。ポイント制御、給電制御では、ESP-WROOM-02とIOエキスパンダ、モータドライバを組み込み、ポイント制御用モータや給電制御用リレーモジュールを駆動させて、無線LANで遠隔制御できるようにします。

ESP-WROOM-02を組み込んだGゲージの小型電気機関車
![image1.jpg](https://qiita-image-store.s3.amazonaws.com/0/89137/6bd5c2b4-adf1-7d3f-5788-4db8e31f2095.jpeg)

ESP-WROOM-02でポイント制御・給電制御するコントローラアプリ
![Simulator Screen Shot 2015.11.01 23.54.37.png](https://qiita-image-store.s3.amazonaws.com/0/89137/443669f2-a4bf-42aa-10f0-8fa29be3609e.png)


#鉄道模型の制御
　鉄道模型の制御は、アナログ制御方式とデジタル制御方式の大きく二つに分けることができます。これはNゲージでも縮尺の大きいGゲージでも共通しています。鉄道模型は世界各国でさまざまなメーカーで製造・販売されていますが、比較的規格が整備されており、メーカー間で互換性があります。（互換性がないものもあります）
　アナログ制御方式とは、簡単に説明すると、線路に流す直流電気の電圧を調整し、車両のモータの回転数を制御することで、車両の運転を行うものです。線路の左右のレールの極性を変えることで、前進・後進を切り替えます。なかには電圧調整をPWM方式としているものもあります。
　これに対して、デジタル制御方式とは、車両個々にマイコンを搭載し、個々のマイコンに識別子（アドレス）を割り当て、個々のマイコンに制御信号を送信して、個々のマイコンで車両に搭載されたモータを制御することで、車両の運転を行うものです。またポイントにマイコンを組み込むことで、ポイント制御も同じように行うことができます。さまざまな製品がありますが、DCC方式が一般的です。
　市販されている鉄道模型車両やポイントは、おおくはアナログ制御方式に対応したもので、専用マイコンを別途購入して搭載するとデジタル制御方式にも対応できるというものです。アナログ／デジタルの両方の制御方式にあらかじめ対応した製品も発売されていますが、日本国内では少数派です。
　専用マイコンは１つ2,000〜4,000円程度することもあり、デジタル制御方式を導入するにはコスト的な障壁があることから、日本国内においては広く普及しているとは言いがたい状況です。

#Gゲージ鉄道模型とは
　先に記した通り、今回はGゲージ鉄道模型車両やポイント制御用コントローラにESP-WROOM-02を搭載して遠隔制御をしてみます。
　Gゲージ鉄道模型では、特に車両は縮尺が大きいことから車両内部空間が広く、組み込む装置を小さくしなくても搭載できるという利点があります。
　今回搭載する車両は、凸型の電気機関車です。車体長約300mm、車体幅約65mmという大きさです。屋根を外すと、運転席部分に空間がありますので、ここに遠隔制御装置の基板を内蔵させることができます。

小型電気機関車の屋根を外すと組み込んだ基板が見えます
![image2.jpg](https://qiita-image-store.s3.amazonaws.com/0/89137/04a7ad7e-bb32-8641-ff10-fd6707b0e9b8.jpeg)

　ところで、なぜGゲージなのかというと、約10年前から自宅の庭に庭園鉄道の建設をGゲージで始めたということもあり、自宅に多くの車両を保有していたためです。我が家の庭園鉄道の建設記録は、以下のサイトで読むことができます。
　[秋ヶ瀬軽便鉄道 Gゲージ庭園鉄道建設記](http://www14.big.or.jp/~ayase/rail/)

#ESP-WROOM-02を選んだ理由
　鉄道模型の遠隔制御装置を作るにあたって、前述したような鉄道模型のデジタル制御方式を取り巻く環境から、市販のマイコン制御ではコスト的な課題があることから、安価に自作することが求められます。そんな検討の折に、ちょうど国内で発売になったのがWi-FiモジュールのESP-WROOM-02でした。
　とにかく安価であること。そして、Arduino IDE for ESP8266を利用することで、単体でマイコンとして動作し、GPIOやPWM出力、I2C接続等もできます。Arduino IDEで開発できるため、これまでArduinoで試していた鉄道模型制御のノウハウを活かすことができます。さらに、Wi-Fiで制御できるため、手持ちのタブレット端末を車両運転用のコントローラにすることもできます。
　これらの利点・応用性からESP-WROOM-02を使ってみました。

#今後の予告
　これから以下の記事を書いていきたいと思います。

- ESP-WROOM-02でPWM制御
- ESP-WROOM-02にWebサーバ構築
- ESP-WROOM-02にFlashAir共有メモリAPIを実装
- Xamarin.Formで鉄道模型制御用のiOSアプリを作る
- ESP-WROOM-02でIOエキスパンダを使う
- ESP-WROOM-02で鉄道模型のポイント制御と給電制御

#最後に宣伝
　コミックマーケット89において、ESP-WROOM-02とFlashAirの電子工作における比較記事を掲載した電子工作（と酒）の同人誌を頒布します。ESP-WROOM-02とFlashAirで比較製作したGゲージ鉄道模型車両の遠隔制御装置の回路図も掲載しています。冬コミにお越しの際は、ぜひお寄りください。また、冬コミ後には通販でも入手できると思います。
**12/31(木) ３日目 東メ－08a「空と月」**
![sora_lua.png](https://qiita-image-store.s3.amazonaws.com/0/89137/52f6e962-825b-e39b-7395-5938f1f1b429.png)