ผู้เขียน หัวข้อ: งานครั้งที่ 42 [iot#17 Firebase] ส่งค่าตัวเลข,ความชื้น,อุณภูมิขึ้นบน Firebase  (อ่าน 3496 ครั้ง)

admin

  • Administrator
  • Hero Member
  • *****
  • กระทู้: 688
    • ดูรายละเอียด
    • อีเมล์
งานครั้งที่ 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 โดยไปทับค่าเก่าที่เคยส่งไปก่อนหน้านี้

โค้ดโปรแกรม
โค๊ด: [Select]
#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 »