Labels:
App Inventor
,
Arduino
,
Esp8266
,
Nodemcu
於
5月 21, 2018
使用Nodemcu連接Firebase database
透過App Inventor 2製作遙控軟體
(107.12.16更新:範例檔載點、如何節省數據用量)
讓手機能透過網路(非區網)控制nodemcu
從外地控制家中的電器再也不是問題
使用器材:Arduino IDE、Nodemcu、App Inventor 2
關於IDE的設定可以參考佑來了的這部影片
如果你還不會使用區往讓手機控制nodemcu
建議你先看看這部影片
當你會了基本的區網控制後
壹、Firebase
一、首先,你先登入Google的Firebase
二、接著點擊右上角的"前往控制台"
三、點選"新增專案"並輸入專案名稱(自訂)
同時也請選擇您所在的地區
四、點選"建立專案
五、點擊Database"開始使用"
六、點選"以測試模式啟動"、"啟用"
七、新增資料( 標籤:test;值:0 )
八、複製資料庫的網址及資料庫密鑰
貳、Nodemcu
一、設定開發版及安裝函式庫
開發版的配置在這裡不做贅述
請至GitHub下載最新函式庫:
(107.12.16更新:為確保能順利運作,請確認所用之
所有函示庫皆為最新版本(Arduino IDE>草稿碼>
匯入程式庫>管理程式庫),且不要使用beta版函示庫)
二、程式碼部分
1.setup()部分
#include
#include #define FIREBASE_HOST "xxxxxxxxxxxxxxxx.firebaseio.com"
//資料庫網址 勿包含”http://"和"/"
#define FIREBASE_AUTH "xxxxxxxxxxxxxxxxxxxxxxxxxx" // 資料庫密鑰 #define WIFI_SSID "xxxxxx" //wifi ssid #define WIFI_PASSWORD "xxxxxx" //wifi password void setup() { Serial.begin(115200); //啟用通訊 pinMode(LED_BUILTIN,OUTPUT); //設置腳位 WiFi.begin(WIFI_SSID,WIFI_PASSWORD); //連線至wifi Serial.print("connecting"); while (WiFi.status()!=WL_CONNECTED){ //尚未連接成功 Serial.print("."); delay(500); } Serial.println(); Serial.print("connected:"); Serial.println(WiFi.localIP()); //輸出ip位址 Firebase.begin(FIREBASE_HOST,FIREBASE_AUTH); //連線至資料庫 Firebase.set("test","0"); //設置資料庫中標籤為test的值為0 } |
2.loop()部分
void loop() {
if (Firebase.failed()) {//連線至資撩庫失敗 Serial.print("setting number failed:"); Serial.println(Firebase.error()); firebasereconnect();//呼叫重新連接 return; } int r=Firebase.getString("test").toInt();//讀取資料庫中標籤為test的值 delay(100); Serial.print("get:"); Serial.println(r); digitalWrite(LED_BUILTIN,r);//nodemcu板上LED 1為暗燈0為亮燈 } |
3.其他函式
void firebasereconnect(){//重新連接
Serial.println("Trying to reconnect"); Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); } |
4.注意事項
Nodemcu板上的LED燈 1為暗燈0為亮燈
5.如何節省數據用量?(107.12.16更新)
//已下放setup(在Firebase.begin()之後)
Firebase.stream(""); //事件監聽器 //以下放loop void Firebase_check(){ //(檢查Firebase是否又事件(數據改變)) while(Firebase.available()>0){ FirebaseObject event = Firebase.readEvent(); String eventType = event.getString("type"); eventType.toLowerCase(); //在這裡作當Firebase發生事件(數據改變)時要做的事,例如抓取資料... } } |
叁、App inventor
一、介面配置
1.元件包括:1個標籤、2個按鈕及Firebase
2.”Firebase憑證”不用做任何更動
3."Firebase URL網址"請填寫您的資料庫網址
4."使用預設值"不勾選;"保持"請勾選
5."專案"請留白
二、程式碼部分
三、打包程式
肆、心得與示範影片
了解了基本架構後,就有能力做ㄧ些IoT專案了
相信大家都能舉一反三,做出更進階的作品
而對於連線速度,我相當滿意(可見示範影片)
~感謝大家閱讀本文章
訂閱:
張貼留言
(
Atom
)
請問nodemcu跟uno板結合後
回覆刪除這個方法也行得通嗎
原則上UNO版上能做的事nodeMCU都能做,但NodeMCU腳位較少
刪除您指的"nodemcu跟uno板結合"我不太清楚事甚麼意思,不過可以利用softwareSerial的方式讓NodeMCU跟UNO溝通,把NodeMCU當作一個連網的媒介
希望這樣的回答能幫助到您
利用softwareSerial的方式讓NodeMCU跟UNO溝通,把NodeMCU當作一個連網的媒介,请问这要如何呢?因为我也是用这样的方式,但失败。
刪除FirebaseArduino.h: No such file or directory
回覆刪除請問一下 是要去程式庫載什麼??
您好,小弟想用MQ2+NodeMCU上傳數據上Firebas,但將上述的Code打進arduino compiler時卻在void firebasereconnect(){}出現'Firebase' was not declared in this scope'的問題,想請問是我有函式庫沒安裝好嗎?
回覆刪除請問一下可以給函式庫的下載地址嗎?
回覆刪除https://github.com/FirebaseExtended/firebase-arduino
刪除