« เมื่อ: เมษายน 22, 2018, 10:24:12 PM »
งานครั้งที่ 42 [iot#17 Firebase] ส่งค่าตัวเลข,ค่าความชื้น,ค่าอุณภูมิขึ้นบน Firebase Firebase สามารถรับค่าที่ส่งมาจากบอร์ดเข้ามาเป็นตัวเลขได้ทั้งที่เป็นตัวเลขจำนวนเต็มและที่เป็นตัวเลขทศนิยม การทดลองในงานนี้เป็นการส่งค่าตัวเลขที่อ่านได้จากพอร์ตแอนะล็อกและค่าอุณหภูมิ, ความชื้น ซึ่งการเขียนโค้ดที่บอร์ดควบคุมจำเป็นต้องมีไลบรารี่สำหรับอ่านค่าจากโมดูลอ่านค่าอุณหภูมิและความชื้น ท่านใดยังไม่ได้ดำเนินการให้ศึกษาขั้นตอนได้ในงานครั้งที่ 8 การเขียนโปรแกรมอ่านค่าอุณหภูมิและความชื้นด้วย DHT11 เบื้องต้น
คอนเซ็ปต์หลักของงาน
บอร์ดส่งค่าตัวเลขทั้งที่เป็นเลขจำนวนเต็มและเลขทศนิยมขึ้น Firebase
[ขั้นตอนการดำเนินการ]
-สร้างโปรเจคงานใน Firebase
-นำรหัสลับของโปรเจคงานใน Firebase มาใส่ในโค้ดโปรแกรม
-นำค่าโฮสต์ของโปรเจคมาใส่ในโปรแกรม
-เขียนโค้ดเพื่อใช้งาน
ซึ่งรายละเอียดเป็นดังนี้
1. วงจรที่ใช้ทดลอง ทั้งที่เป็นบอร์ด NodeMCU และ WeMOS D1 mini
ส่วนจัดการ Firebase
1. เริ่มขั้นตอนสร้างโปรเจค โดยเข้าไปที่ https://firebase.google.com
(1) ล็อกอินด้วยอีเมล์ gmail (หากไม่มีให้สมัครใช้งาน gmail ก่อน)
(2) คลิกที่ปุ่ม "ไปที่คอนโซล"
2. การใช้งานโปรเจค มี 2 ทางเลือกสำหรับผู้ที่เคยสร้างโปรเจคมาแล้ว
(1) โดยคลิกที่คำว่า "เพิ่มโครงการ" สำหรับผู้ที่ต้องการสร้างโปรเจคงานใหม่
(2) คลิกเลือกชื่อโปรเจคสำหรับผู้ที่ต้องการใช้โปรเจคเก่าที่เคยสร้างมาแล้ว
*งานนี้ใช้โปรเจคเก่าที่เคยสร้างมาแล้ว สำหรับท่านใดที่ต้องการสร้างโปรเจคใหม้ให้ย้อนกลับไปดูวิธีการในงานครั้งที่ 41
3. ขั้นตอนไปหา รหัสลับ โดยเริ่มจาก
(1) คลิกที่รูปเฟือง
(2) คลิก "การตั้งค่าโครงการ"
4. ดำเนินการต่อโดย
(1) คลิกที่แท็ป "บัญชีบริการ"
(2) คลิกที่ "ข้อมูลลับฐานข้อมูล"
(3) เลื่อนเมาส์มาลอย ๆ ในส่วนท้ายข้อความที่เป็น ........ แล้วคลิกที่คำว่า "แสดง" ทำการคลิกที่รูปสี่เหลี่ยมเพื่อคัดลอกนำไปใช้งาน
5. คัดลอกตำแหน่งโฮสต์ โดยคลิกที่ (1) Database แล้วคลุมดำที่ตำแหน่งโฮสต์ (2) คัดลอกเอาเฉพาะข้อความที่อยู่หลัง // และอยู่ก่อน /
ฟังก์ชั่นหลัก ๆ ที่ใช้งาน Firebase งานครั้งนี้เป็นตัวอย่างการใช้คำสั่ง 2 คำสั่ง
.setInt
.setFloat
เป็นฟังก์ชั่นที่ส่งค่าตัวเลขขึ้นยัง Firebase โดยไปทับค่าเก่าที่เคยส่งไปก่อนหน้านี้
โค้ดโปรแกรม
#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>
#include <DHT.h>
#define DHTPIN D1 //pin connect DHT
#define DHTTYPE DHT11 //DHT11, DHT22 type of Sensor
#define WIFI_SSID "wifi_name"
#define WIFI_PASSWORD "wifi_password"
#define FIREBASE_HOST "host_firebase"
#define FIREBASE_AUTH "secret_code"
const String deviceNumber = "Device-001";
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
Serial.println(WiFi.localIP());
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("connecting");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println();
Serial.print("connected: ");
Serial.println(WiFi.localIP());
dht.begin();
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
int adc=analogRead(A0);
if (isnan(t) || isnan(h))
{
Serial.println("Error reading DHT!");
}
else
{
digitalWrite(D0,LOW);
Serial.print("Analog value: ");
Serial.print(adc);
Serial.print("\t");
Serial.print("Humidity: ");
Serial.print(h);
Serial.print("\t");
Serial.print("Temp: ");
Serial.println(t);
Serial.println("...............................");
Firebase.setInt(deviceNumber + "/Analog value", adc);
Firebase.setFloat(deviceNumber + "/Humidity", h);
Firebase.setFloat(deviceNumber + "/Temperature", t);
}
delay(5000);
}
6. แก้ไขค่าต่าง ๆ ในโปรแกรม
(1) ชื่อไฟไวและพาสเวิร์ดไวไฟ
(2) โฮสต์ของโปรเจคที่ได้จากคัดลอกในข้อ 9
(3) รหัสลับของโปรเจคที่ได้จากคัดลอกในข้อ 6
7. ฟังก์ชั่นใช้งาน Firebase เป็นฟังก์ชั่นส่งค่าขึ้น Firebase โดยเพิ่มหัวข้อรับค่าในแต่ละค่าไปพร้อมกับคำสั่งส่ง
ทดสอบการทำงาน
8. หลังจากการ upload โค้ด สังเกตผลที่เกิดขึ้นที่เวป firebase
9. ผู้ใช้งานสามารถเพิ่มบอร์ดในการส่งค่าขึ้นได้โดยแยกหัวข้อในการส่งทำให้ Firebase สามารถแสดงค่าจากบอร์ดหลายบอร์ดได้ในโปรเจคเดียว
« แก้ไขครั้งสุดท้าย: เมษายน 22, 2018, 10:25:44 PM โดย admin »
บันทึกการเข้า