CodeIQ MAGAZINECodeIQ MAGAZINE

ジンジャー、ハンダ付けを初めて目にする―にゃんてっく☆やせないアイツとESP8266【vol2】

2016.12.13 Category:【連載】にゃんてっく☆やせないアイツ Tag: ,

  • 50
  • このエントリーをはてなブックマークに追加

猫を愛する全てのエンジニアに捧げるIoT実践レポート!前回の記事でメタボ診断を受けたデブ猫「ジンジャー」の健康を守るため、「猫用IoT体重計トイレ」の開発に着手したエンジニア夫婦はとね&きょろ。今回は手始めにESP8266を使ったLチカに挑戦します! by 大内 孝子

いよいよ電子工作開始

きょろ
「猫たちもお腹いっぱいになったようだし、さっそく再開しよう!」

▲満足そうなバジル(左)と、お腹を出して熟睡しているジンジャー(右)

こんにちは、はとね(@hatone)ときょろ(@kyoro353)です。

前回はパーツを並べたところであっけなく終わってしまいましたが(おなかを空かせた猫が大騒ぎだったので)、いよいよ電子工作の開始です。

今回使うESP-WROOM-02は、Arduinoと同じ開発環境&コードが動くスグレモノのW-Fi内蔵マイコンモジュールですが、この子はあくまでWi-Fiモジュール。

Arduinoのように買ってきてUSBケーブルでさくっとPCと繋いでスケッチ(Arduinoのプログラムコードのこと)を転送!というわけにはいきません。

PCとUSB経由でシリアル接続する部分や、電源周りなんかを簡単に用意してあげる必要があります。

ということで、必要な回路をブレッドボード上に組んでいきましょう。

使用するパーツは以下のとおり。

▲秋月電子のESP-WROOM-02+DIP化キット、LED(青)、USBシリアル変換モジュール、ジャンプワイヤー(オス-オス)、ブレッドボード

ブレイク
ブレッドボードはあらかじめ縦、横の穴が内部で配線されており、パーツの足を穴に差し込むことで回路を組むことができる試作用の基板だ。はんだ付けが不要で、簡単に試行錯誤しながら回路が組めることから、電子工作によく使われる。

きょろ
「ESP-WROOM-02のキットにピンヘッダが同梱されているので、まずはこのピンヘッダをESP-WROOM-02モジュールに取り付けて、ブレッドボードに差し込めるようにしよう」

▲ESP-WROOM-02とピンヘッダ

きょろ
「ブレッドボードをハンダ付けの補助に使おう。先に長い方のピンをブレットボードに差してから、上からモジュールを短い方のピンに挿す。その状態でハンダ付けをすると楽だよ!」

▲ブレッドボードにピンを差し込む(足の長いほうをブレッドボード側に)

ピンヘッダの高さの分、ブレッドボードとESP-WROOM-02に隙間ができるので、何か隙間を支えるものを挟むと更に安定してハンダ付けがやりやすくなります。

ここでは、同封されていた乾燥剤の袋を添えてみました。

▲ブレッドボードを使ってESP-WROOM-02にピンヘッダをハンダ付けする

きょろ
「ハンダ付けが終わったら、モジュールを外し、続いて同じ要領でUSBシリアル変換DIP化キットにもピンヘッダを取り付けよう」

▲同様にUSBシリアル変換DIP化キットにピンヘッダをハンダ付けする

きょろ
「ハンダ付けのコツは、先に部品に温める事だよ。1秒程度コテ先を当てて部品を温め、1秒でハンダを流し込み、最後にハンダを離して1秒ほど温める。こうすることで、溶けたハンダがパターンに馴染み、綺麗なハンダ付けができるよ。部品を温めすぎて壊さないように、全工程を3秒程度で終わるように気をつけよう」

いち(コテ先を温めて)、にー(ハンダを流し込んで)、さーん(ハンダから手を離す)

…ん、何か背後から視線を感じるような…?

▲ちょっと不機嫌そうなジンジャー

どうやらジンジャーはハンダ付けのにおいが嫌いなご様子。

でも、だからって、そんなに睨まなくても…!><(笑)

部品を組み上げて、いざLチカ!

きょろ
「ここまで来たら、次の配線図のように部品を実装していくよ。先ほどピンヘッダを取り付けたパーツは、ハンダが固まれば簡単にブレッドボードから取り外すことができるので、適切に再配置してね。まずは手始めに『Lチカ』だ!」

Lチカというのは「LEDチカチカ」の略で、プログラミングで言うところの「Hello World」的な儀式のことです。

新しいハードウェアに出会ったとき、とりあえずLEDをチカチカさせるところまで動かすことができれば、後は努力と根性でなんとかすることができます。

ハードウェアの動作確認と、プログラミングの環境のセットアップを含むので最初の一歩としては最適なんです。

▲ESP-WROOM-02でLチカの配線

ん、ちょっと待って! この黒い部品…3端子レギュ―ターって何? 

USBの電源をそのままESP-WROOM-02につなぐほうが簡単じゃないかな……?

きょろ
「ああ、それはESP-WROOM-02の電圧レベルが3.3Vだからだよ。USBの電源電圧は5Vだからそのままじゃ使えないんだ。3端子レギュレータは文字通り、電源電圧をレギュレーション(標準化)してくれる部品なんだ。USBからの電源入力にレギュレータをかませることで、5Vから3.3Vを作り出しているんだよ。今回は手元にあったLD1117V33という部品を使ったんだけど、3.3Vに変換できるならなんでもOK。秋月電子だとTM48M033Fとかがオススメかな!」

なるほど……。
じゃあ、この抵抗の役割は何?

きょろ
「それはプルアップ抵抗、プルダウン抵抗と呼ばれていて、繋がったマイコンのピンの入力をHIGHにしたり、LOWにしたりするために使うんだ。直接電源に繋ぐと、壊れちゃうことがあるからね」

ブレイク
マイコンは特定のピンの入力状態がHIGH(電源電圧)かLOW(グラウンド-0V)かを判別して動作を切り替えるため、HIGHまたはLOWの入力は、常に安定していることが必要となる。しかし、入力が不安定な電圧の状態だったり、入力端子がどこにも接続されていない状態では、周囲の静電気や誘導電流によって値が変化してしまったり、マイコンに電流が流れすぎて壊れてしまうことがある。プルアップ抵抗やプルダウン抵抗は、こうした誤動作や危険を回避するために用いられる。プルアップは入力を電源電圧に引き上げる(pull-up)すること、逆にプルダウンは入力をグランドに引き下げる(pull-down)すること。

なるほど!この回路ではEN、IO2がプルアップで、IO15、IO0がプルダウンということになるのね。

もう1つ、ESP-WROOM-02のVCCがジャンパーケーブルになっているのはどうして?

きょろ
「それは、電源スイッチ代わり。ジャンプワイヤーの抜き差しでESP-WROOM-02を簡単に再起動できるようにしたんだ。まぁ今回はテストなので、これで」

▲実際に回路を組み上げてみました。これで回路側のLチカ準備は完了!

Arduino IDEの準備とプログラミング

次はプログラミングですが、まずはArduinoにESP8266の開発環境を導入します。

最近のArduino IDEは、Arduino以外のボードやCPU向けの開発も行えるようなプラグインをサポートしており、Arduinoのエディタや環境、言語をそのまま使って、さまざまなデバイスの開発を行うことができるようになっています。

きょろ
「ESP8266のボード情報や開発用ライブラリもオープンソースで開発されていて、簡単に導入することができるんだよ」

最新のArduino IDEをこちらのURLからダウンロードして、インストールします。Windows 、macOS、Linuxとあるので、自分の環境に合ったものを選んでください。

Arduino IDEを起動したら、[Arduino]→[Prefarences]で「Prefarences」画面を開いて、「Additional Board Manager」にESP8266のボード情報を取得できるようにURL「http://arduino.esp8266.com/stable/package_esp8266com_index.json」を追加します。

▲Arduino IDE 1.6.9のPreferences画面

設定が済んだら、[Tools]→[Boad]→[Boads Manager]と選択して、ボードマネージャーを起動してみましょう。

リストの一番下に「esp8266 by ESP8266 Community」という名前のボードが追加されているはずです。

そこでインストールボタンを押して、ESP8266のボード情報をインストールします。

▲「esp8266 by ESP8266 Community」が追加されている

きょろ
「いよいよLチカのプログラミングを始めよう! といっても、今回書いたコードはこれだけなんだけどね(笑)」

void setup() {
 pinMode(4, OUTPUT);
}

void loop() {
 digitalWrite(4, LOW);
 delay(1000);
 digitalWrite(4, HIGH);
 delay(1000);
}

▲今回書いたスケッチ

短っ!? これ、そのまんまArduinoのコードじゃない?

きょろ
「その通り!いつものArduinoのコーディングと一緒だよ(笑)」

Setupで4番ピンをOutputに設定して、Loopで1秒ごとにON/OFFしてるだけ。
ちなみに、コード内のピン番号とESP8266のピン番号が一致するように作られているので、ESP8266のIO4をそのまま4番ピンとしてArduinoから使うことができてしまうのだ!

Wi-Fi内蔵の新しいマイコンモジュールと聞いて少し身構えていたけど、Ardiunoとして扱えると思うと、なんだか本当に簡単な気がしてきた……。

きょろ
「じゃあ最後にスケッチ(プログラム)をアップロードしてみよう」

ここで、いくつか気をつけることがあります。
先ほど組み上げたブレットボードの回路とパソコンをMicro USBケーブルで接続したあと、以下の設定変更を忘れないでください。

  1. [ツール]→[ボード]を「ESP8266 Generic」に変更する
  2. Upload Speedを115200に変更する
  3. [ポート]を「/dev/cu.usbserial-DJ***」表示のものに変更する

▲スケッチをアップロードする前に必ず設定する!

きょろ
「設定が終われば、あとは転送するだけ。念のため、IO0がLOWになっていることを確認して、ESP8266の電源のジャンパーケーブルを抜き差しして再起動しよう。これでプログラムを書き込めるはずだ。操作が終わったら、いつもどおりにスケッチの転送ボタンを押してごらん」

おお! コンパイルが始まった。ドキドキ……

コンパイルが終わったら転送が開始され、赤い文字でUploading… というのが進み始めるはず。ただ、Arduinoよりスケッチが大きいので、転送には少し時間がかかります。

▲転送が完了!

書き込みが終わると、自動的に再起動してプログラムが実行されます。

おおー!LEDがチカチカ光ってるよ!!!

▲Lチカ成功!!!

きょろ
「ね?簡単でしょ! ESP8266を使えば、Arduinoでサクッと電子工作を作るような感じで、Wi-Fiやインターネットに繋がるIoTデバイスを簡単に開発することができるんだよ」

こうして、無事にESP8266でLチカをさせることができました。次回からは、今回作った回路を元に『猫用IoT体重計トイレ』の開発を進めていきたいと思います!

ん…?

▲「おなかすいたにゃ~」

ジンジャー……お腹空くの早くない?(笑)


ジンジャーの体重:現在6.8kg



執筆:はとね(大島 孝子)
きょろ(井上 恭輔)
協力:どーじん先生(宮本 道人)
編集:大内 孝子

著者プロフィール

はとね(大島 孝子)
アメリカ西海岸で日々奮闘するバックエンド寄りのエンジニア。
高校時代パソコン研究部に所属し、NHK BS2 高校生ITキング決定戦というTV番組で全国3位、Web教材開発コンテストThinkQuest@JAPAN 2004で最優秀賞を受賞。2011年に、情報処理推進機構が主催する「未踏ソフトウェア創造事業」に採択される。2012年にインターネット広告代理店へ入社して米国駐在員として渡米し、2014年にAT&T Internet of Things Hackathon and Accelerator SeriesというIoTでは最大級のハッカソンでFooDrawというプロダクトを制作して全米1位を獲得。現在もソフトウェアエンジニアとして働きながら、US事業の拡大に努めている。

きょろ(井上 恭輔)
Webやアプリの開発に留まらず、ハードウェアの設計や量産まで幅広く手がけるエンジニア。高専在学中の2006年に情報処理推進機構が主催する「未踏ソフトウェア創造事業」に採択され、スーパークリエータ/天才プログラマーの認定を受ける。
2008年にミクシィ入社。iOS/Android向けテスト配信サービス「DeployGate」の立ち上げにを行い、2014年に寿退職ののち渡米。
日経BP主催のAndroid Application Award(A3)において優秀賞および特別賞、高専プロコン最優秀賞&文部科学大臣賞、AT&T IoT Hackathon 全米部門優勝など。
現在の趣味はドローン撮影とダイエット。

  • 50
  • このエントリーをはてなブックマークに追加

■関連記事

今週のPickUPレポート

新着記事

週間ランキング

CodeIQとは

CodeIQ(コードアイキュー)とは、自分の実力を知りたいITエンジニア向けの、実務スキル評価サービスです。

CodeIQご利用にあたって
関連サイト
codeiq

リクルートグループサイトへ