初心者向けガイド:NodeMCU DevKitとFirebaseで作るIoTプロジェクト

著者:Jibin Thomas
「インターネットはやがて消えてなくなるだろう。IPアドレス、デバイス、センサー、身につけるもの、やり取りするあらゆるモノがあまりにも増え、その存在すら意識しなくなるはずだ。それは常にあなたの存在の一部となる。部屋に入ると、その部屋自体が動的であることを想像してみてほしい。あなたの許可のもと、部屋の中で起きていることと自然にやり取りできるのだ。」
IoTとは何か
現在、テレビ、スマートスピーカー、冷蔵庫など、私たちが日常的に使う多くの機器がインターネットに接続されています。これらのデバイスは本来の機能に加えて、ネットワーク上の他のデバイスと連携したり、離れた場所から遠隔操作したりできる点が大きな特徴です。
実は、こうしたIoTデバイスは、いくつかのセンサーとマイクロコントローラーがあれば自分でも作ることができます。Arduino、NodeMCU、Raspberry Piなど、IoT開発の入門に最適な開発ボードは数多く存在し、これらを組み合わせればスマートホームの自動化も実現できます。
この記事では、NodeMCU開発キットとFirebaseを使って、LEDをリモートで点灯・消灯する仕組みを構築します。NodeMCUは低価格でありながらWi-Fi機能を内蔵し、Firebaseも無料プランで十分に試せるため、IoTプロジェクト入門に最適な組み合わせです。
開発環境のセットアップ
コードの記述とデバイスへの書き込みにはArduino IDEを使用します。公式サイトから最新版をダウンロードしてください。
NodeMCUはArduino IDEに正式対応していないため、ボード情報をJSONファイルとして追加する必要があります。[ファイル] > [環境設定] > [追加のボードマネージャーのURL] に以下のURLを入力します。
https://arduino.esp8266.com/stable/package_esp8266com_index.json
[ツール] > [ボード] > [NodeMCU 1.0] を選択します。
NodeMCUからFirebaseデータベースを利用するには、FirebaseのREST APIを抽象化してくれる「firebase-arduino」ライブラリが必要です。GitHubなどからダウンロードしましょう。
ダウンロードしたZIPファイルをArduino IDEに読み込みます。
[スケッチ] > [ライブラリをインクルード] > [.ZIP形式のライブラリをインストール] > ZIPファイルを選択
さらに「ArduinoJson」ライブラリも必要です。こちらはArduino IDEのライブラリマネージャーから直接インストールできます。
[スケッチ] > [ライブラリをインクルード] > [ライブラリを管理] > 「ArduinoJson by Benoit Blanchon」を検索
注意: ライブラリのバージョンは6.x.xではなく、必ず最新の5.x.xを使用してください。
Firebaseデータベースのセットアップ
Firebaseコンソールで新しいプロジェクトを作成し、データベースのセクションへ移動します。「Realtime Database(リアルタイムデータベース)」を選択してください。
認証に使用するデータベースシークレットをコピーします。[設定パネル] > [サービスアカウント] から確認できます。

データベースシークレット
データベースに「led」というノードを追加します。この値がLEDのオン・オフを切り替える判定に使われます。

Arduino IDEとFirebaseを連携させる
すべての準備が整ったら、いよいよコーディングを始めましょう。
まず、手順8でコピーしたデータベースのURLとシークレットを、それぞれマクロとして定義します。
#define FIREBASE_HOST "yourfirebasedatabase.firebaseio.com"
#define FIREBASE_AUTH "*"
ここでは簡単のため、LEDをリモートで点灯・消灯させるだけのシンプルなコードを書きます。
LEDのアノード(プラス側)をNodeMCUのD1ピンに、カソード(マイナス側)をGNDピンに接続します。

Arduino IDEからコードをアップロードします。
[スケッチ] > [マイコンボードに書き込む]
データベースの値をtrueやfalseに変更してみてください。LEDが点灯・消灯するはずです。さらに発展させたい場合は、データベースの値を手動で書き換える代わりに、LEDをワンタップで切り替えられるWebアプリを作成すると、より実用的なシステムになります。
まとめ
これで、NodeMCUをインターネットに接続し、遠隔から操作するための基本的な流れを理解できたはずです。今回の仕組みは温度センサーやスマート家電制御など、さまざまなプロジェクトへ応用できます。ぜひこの知識をベースに、オリジナルのIoTプロジェクトづくりに挑戦してみてください。
なお、freeCodeCampのオープンソースカリキュラムでは無料でプログラミングを学ぶことができ、これまでに4万人以上の人々が開発者としてのキャリアを手にする際に役立てています。
-
生産性を高めるために知っておきたいDuckDuckGoの便利な検索テクニック12選
DuckDuckGoは、Googleと並んで人気のある検索エンジンで、最大の特徴はユーザーのプライバシーを最優先している点です。すでに使ったことがある方なら、その利便性を実感されていることでしょう。これから使い始めようとしている方も、すでに愛用している方も、この検索エンジンの隠れた検索テクニックを知っておけば、日々の作業効率がぐっと向上します。本記事では、覚えておくと便利なDuckDuckGoの検索ワザを12個紹介します。1. ソーシャルメディアアカウントを直接検索する特定のサービスや人物のSNS情報を調べたいときは、SNSの記号に続けて検索ワードを入力するだけでOKです。例えば「@maket
-
FirefoxのサイドバーにWebページを表示して2画面同時閲覧する方法
ネットを閲覧しながらToDoリストを確認したい、あるいは為替レートのようなリアルタイム情報を常にチェックしつつ作業を進めたい——そんな経験はありませんか?そんなときにおすすめなのが、2つのWebページを並べて表示する方法です。従来のようにブラウザウィンドウを2つ開いて画面半分ずつにサイズを調整するのではなく、Firefoxに標準搭載されている「サイドバーにWebページを表示する機能」を活用してみましょう。Firefoxでは、左側にWebページを開いたまま右側で通常どおり閲覧できるため、情報を見逃すことなく快適にブラウジングできます。この記事では、この便利な機能の使い方を詳しく解説します。注意: