Arduino+ESP-WROOM-02で遠隔再起動装置を作った

 IoT流行りの昨今、大学でもArduinoを扱う授業を履修したりしてArduinoをひとつ所有していました。
Arduinoとは何ぞや?という疑問をお持ちの方はGoogleで検索していただくとして、今回はこのArduinoと、スイッチサイエンス社が発売しているWi-Fiモジュール「ESP-WROOM-02」を組み合わせて、インターネット経由でパソコンの物理的な再起動が出来るような装置を作ってみたいと思います。

ESP-WROOM-02とは?

手持ちのArduinoはArduino UNO R3です。
USB接続でコンピュータとやり取りは出来ますが、LANへの接続にはWi-FiシールドやEthernetシールドを組み合わせる必要があります。
しかし、こういったシールドは3000円~4000円ほどするのでチョットお高いです。

そんな中、大変面白いのがスイッチサイエンス社が発売しているESP-WROOM-02というモジュール。
ESP8266というWi-Fiチップを搭載したモジュールで、国内の技適認証もあるしっかりとした製品ですが、価格が驚きの600円。
ブレッドボード等で利用できるようにピッチ変換されたモジュールですら、わずか909円です。

それで何作るの?

今回は、このESP-WROOM-02を使ってArduinoをネットワークに接続し、ネットワーク経由でArduinoを操作することを目指します。
具体的には、Arduino上に設置したWebサーバーにESP-WROOM-02経由でアクセスし、該当ページを操作することでArduinoに接続したリレーを駆動させ、リレーに接続したサーバー用PCのリセットスイッチを操作するというものです。

これは、長期的に自宅を離れた際に、サーバー機が何らかの形でフリーズしてしまった際に強制的に再起動を行う目的の装置です。
リレーの接続を変更することで、PC再起動以外の用途にも使えるはずです。

下準備をする

下準備として、まずは必要物資を揃えます。
電子工作になるので、電子部品を取り揃える他、ハンダゴテや半田も用意します。
函館市内には電子部品を取り揃えた一般商店はないので、マルツオンラインで買いました。

商品名個数金額(税抜)説明
ESP-WROOM-02(ピッチ変換済み・シンプル版)1個909円ESP-WROOM-02本体。スイッチサイエンス通販で購入。
基盤用ピンヘッダ(2.54mmピッチ)1個50円ESP-WROOM-02用
整流用ダイオード1個20円リレーの逆起電力保護用
5V小型リレー1個55円スイッチ操作用リレー
3端子レギュレータ 3.3V出力1個120円ESP-WROOM-02は3.3V動作ですが、
Arduinoの3.3Vでは駆動しないので5Vから降圧して使用する
アルミ電解コンデンサ100μF1個40円3端子レギュレータの出力安定化用
セラミックコンデンサ0.1μF1個20円3端子レギュレータの入力安定化用
1/4W 10KΩカーボン抵抗 100本入り1個113円3本あれば足りる

この他に、ブレッドボードやジャンパワイヤーなどは元から所持していたものを使用します。

回路設計

自分は電気工学系の人間ではないので、回路設計等は間違いがあるかもしれません。

目指す回路はこのようなものになります。
ESP-WROOM-02には、Arduinoの5V出力から3端子レギュレータを用いて降圧した3.3V電源を入力します。
ArduinoとESP-WROOM-02との通信にはシリアル通信を用います。
Arduinoとリレーはデジタルピンで接続することによって操作ができます。

はんだ付けが必要なのは、ESP-WROOM-02にヘッダピンを取り付ける部分だけです。
それ以外は全てブレッドボードに直挿ししていきます。
安定動作等を求めるなら、ユニバーサル基板に配線したほうが良いのでしょうけど・・・。

Arduinoスケッチ

Arduino上で動作させるプログラムのことをスケッチと呼びます。
今回はWebサーバーを動かすのですが、Webサーバーを動かすサンプルはありません。
なので、ESP8266用サンプルスケッチにある「TCPServer」を改変して利用します。


この改変済みTCPWebServer.inoでは、受信したリクエストがGETメソッドであれば常に「reboot」リンクを表示するHTMLを返します。
そして、rebootディレクトリを指定した場合のみ、リレーを動作するようにしています。
すなわち、rebootリンクへのリクエストが行われると、リレーが動作します。

完成

 だいたい回路図と同じ感じに回路を組みました。
実際にローカルネットワーク内のPCやスマートフォンからArduinoのページへアクセスし、リンクをクリックしてリレーがカチカチなることを確認します。

動作が確認できたらサーバー機のケース内へ押し込みます。
リレーからはオス-メスのジャンパワイヤーを使用して、マザーボードのフロントパネルコネクタのRESET SW端子へと接続します。
一般的なマザーボードであれば、フロントパネルコネクタも2.54mmピッチなので市販のジャンパが使用可能です。

Arduinoの電源元は、当初はサーバー機自身のUSBポートを使用していましたが、PC側の動作が不安定になることがあったため、PCケース外にスマートフォン用充電器を設置し、そこに接続をしています。
5V500mA出力ができるACアダプタであればなんでも大丈夫だと思います。

動かしてみる

動きました。

感想

結構面倒だったかなと思います。
製作期間とかプログラムの部分はともかく、電子部品の取り寄せが面倒くさすぎです。
やはり電子工作は都会の遊びですね。
マルツパーツや秋月電子に日帰りで買い物に行ける地域の人間じゃないと辛いです。

コメント