Thursday, October 3, 2019

បង្ហាញក្រាហ្វទិន្ន័យសីតុណ្ហភាពពី ESP8266 នៅលើ ThingSpeak តាមរយៈអិនធើណែត (IoT)


ThingSpeak ជាលក្ខណៈវែបសាយដែលអាចអោយយើងបង្ហាញនូវក្រាហ្វ ឫតម្លៃលេខ ឫអក្សរដើម្បីអោយអ្នកប្រើប្រាស់អាចឃើញទិន្ន័យតាមរយៈអិនធើណែតពីចម្ងាយ ដោយមិនចាំបាច់ចំនាយ ក៏ដូចជាតម្លើងវែបសាយខ្លួនឯង។​ ខាងក្រោមនេះជាគន្នឹះខ្លីមួយដែលអាចអោយបង្ហាញទិន្ន័យនៅលើ ThingSpeak តាមរយៈ ESP8266។

១. ចុះឈ្មោះលើ Thingspeak

      ចូលទៅកាន់ https://thingspeak.com/ ដើម្បីចុះឈ្មោះប្រើប្រាស់(សម្រាប់អ្នកមិនទាន់ធ្លាប់ប្រើពីមុនមក)។ ចុចលើ Sign Up ដើម្បីចូលទៅទំព័រចុះឈ្មោះ។


នៅពេលចូលទៅទំព័រចុះឈ្មោះ ធ្វើការបំពេញអ៊ីម៉ែល ឈ្មោះ និងប្រទេស រួចចូលទៅកាន់អ៊ីម៉ែលដើម្បីបញ្ជាក់ជាកា​ស្រេច។



២. បង្កើតគម្រោង និងយក Key ពី Thingspeak

នៅពេលអ្នកអាចចូលទៅកាន់ Thingspeak បាន ចូលទៅកាន់ Channels >> My Channels >> New Channel ដើម្បីបង្កើតគម្រោងថ្មីមួយ។


ជាធម្មតាអាចប្រើឈ្មោះអ្វីក៏បានទៅតាមគម្រោងរបស់យើង ហើយក៏អាចបង្ហាញទិន្ន័យច្រើនជាមួយបានដែរ (Field) ដែលអាចបើកអោយប្រើបានដោយគូសសញ្ញានៅខាងស្តាំវា។

បន្ទាប់មក ចុច Save Channel


ចូលទៅកាន់ API Keys ដើម្បីយកពាក្យសម្ងាត់សម្រាប់ដាក់ទៅក្នុង ESP8266។



នៅក្នុងនោះយើងមាន 
- Write API Key សម្រាប់បញ្ចូលទិន្ន័យទៅក្នុងក្រាហ្វ
- Read API Keys សម្រាប់ទាញយកតម្លៃពីក្រាហ្វមកប្រើវិញ
ក្នុងករណីនេះយើងប្រើតែការបញ្ចូលទិន្ន័យទៅក្នុងក្រាហ្វដើម្បីបង្ហាញ ដូច្នេះត្រូវការចម្លង Write API Key ទុក បញ្ចូលទៅក្នុងកូដរបស់ ESP8266។


បញ្ជាក់ផងដែរ ក្រាហ្វដែលទើបតែធ្វើរួចមិនមាននរណាម្នាក់អាចចូលមើលបានឡើយ លុះត្រាតែម្នាក់ចែករំលែងដល់អ្នកដទៃ។ ជ្រើសរើសយក Share channel view with everyone។


នោះវានឹងបង្ហាញនៅ Public View ដែលអាចអោយអ្នកទាំងឡាយណាដែលមានតំណ(Link) អាចចូលមើលបានដោយសេរី។ ចុចត្រង់ចំណុច "Link" ដើម្បីចូលទៅការមើលជាសាធារណៈ ដែលយើងអាចចែករំលែកទៅកាន់អ្នកដទៃបាន។

ឧទាហរណ៍ គម្រោងមួយនេះមាន Link : https://thingspeak.com/channels/878295/charts/1?bgcolor=%23ffffff&color=%23d62020&dynamic=true&results=60&type=line&update=15


នេះជាតំណាក់កាលទាំងអស់ដែលត្រូវធ្វើនៅលើ Thingspeak បន្ទាប់មកទៀត ការរៀបចំសម្រាប់ ESP8266 ដើម្បីអាចបញ្ជូនទិន្ន័យទៅកាន់ Thingspeak បាន។

៣. តសៀគ្វីជាមួយ  NodeMCU ESP8266

មុននឹងធ្វើការសរសេរកូដបាន តម្រូវអោយមានការតសៀគ្វីបានត្រឹមត្រូវសិន។ អាចធ្វើតាមរយៈការណែនាំខាងក្រោម៖

៤. សរសេរកូដ

នៅក្នុងការសរសេរកូដ តម្រូវអោយមាន Library ចំនួនពីរគឺ 
- DHT.h សម្រាប់ DHT11 : Download
- ESP8266WiFi.h សម្រាប់ភ្ជាប់ទៅ Wifi : Download

ហើយក៏ត្រូវបញ្ចូលនូវ Key ដែលយកបានពី Thingspeak ជាក់ស្តែងគម្រោងនេះគឺ 0ZY1ZMVN9BC2DWCH ។
ត្រូវកែតម្រូវឈ្មោះ Wifi ដែលអោយ ESP8266 ភ្ជាប់ទៅ និង Password ផងដែរ។

  1. #include <DHT.h>  // Including library for dht  
  2.   
  3. #include <ESP8266WiFi.h>  
  4.    
  5. String apiKey = "0ZY1ZMVN9BC2DWCH";     //  Enter your Write API key from ThingSpeak  
  6.   
  7. const char *ssid =  "Wifi Name";     // replace with your wifi Name  
  8. const char *pass =  "Wifi Password"; // replace with your wifi password         
  9. const char* server = "api.thingspeak.com";  
  10.   
  11. #define DHTPIN D5          //pin where the dht11 is connected  
  12.    
  13. DHT dht(DHTPIN, DHT11);  
  14.   
  15. WiFiClient client;  
  16.    
  17. void setup()   
  18. {  
  19.        Serial.begin(115200);  
  20.        delay(10);  
  21.        dht.begin();  
  22.    
  23.        Serial.println("Connecting to ");  
  24.        Serial.println(ssid);  
  25.    
  26.    
  27.        WiFi.begin(ssid, pass);  
  28.    
  29.       while (WiFi.status() != WL_CONNECTED)   
  30.      {  
  31.             delay(500);  
  32.             Serial.print(".");  
  33.      }  
  34.       Serial.println("");  
  35.       Serial.println("WiFi connected");  
  36.    
  37. }  
  38.    
  39. void loop()   
  40. {  
  41.       
  42.       float t = dht.readTemperature();  
  43.         
  44.               if (isnan(t))   
  45.                  {  
  46.                      Serial.println("Failed to read from DHT sensor!");  
  47.                       return;  
  48.                  }  
  49.   
  50.                          if (client.connect(server,80))   //   "184.106.153.149" or api.thingspeak.com  
  51.                       {    
  52.                               
  53.                              String postStr = apiKey;  
  54.                              postStr +="&field1=";  
  55.                              postStr += String(t);    
  56.                              postStr += "\r\n\r\n";  
  57.    
  58.                              client.print("POST /update HTTP/1.1\n");  
  59.                              client.print("Host: api.thingspeak.com\n");  
  60.                              client.print("Connection: close\n");  
  61.                              client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");  
  62.                              client.print("Content-Type: application/x-www-form-urlencoded\n");  
  63.                              client.print("Content-Length: ");  
  64.                              client.print(postStr.length());  
  65.                              client.print("\n\n");  
  66.                              client.print(postStr);  
  67.    
  68.                              Serial.print("Temperature: ");  
  69.                              Serial.print(t);  
  70.                              Serial.println(" degrees Celcius");  
  71.                         }  
  72.           client.stop();  
  73.    
  74.           Serial.println("Waiting...");  
  75.     
  76.   // thingspeak needs minimum 15 sec delay between updates  
  77.   delay(1000);  
  78. }  

៥. សាកល្បងដំណើរការ

នៅពេលបញ្ចូលកូដរួចរាល់ហើយ យើងអាចមើលតំណើរការតាម Serial Monitor បាន ក៏ដូចជាក្រាហ្វនៅលើ ThingSpeak ផងដែរ។ 



បើមានបញ្ហាណាមួយ អាចសរសេរទុកនៅខាងក្រោមបាន។