Hi BDx-ian!
Tutorial ini menunjukkan cara nak hantar data jarak dari ultrasonic sensor ke ThingSpeak menggunakan NodeMCU ESP8266. Sebelum ThingSpeak disambungkan ke board, kita akan belajar cara nak setup akaun ThingSpeak terlebih dahulu.
Apa itu ThingSpeak?
ThingSpeak ialah IoT Cloud Platform yang membolehkan user mengumpul dan menyimpan data di dalam cloud dan mencipta aplikasi IoT. Ia juga membenarkan user untuk visualize dan analyze live data stream di dalam cloud. User juga boleh menghantar data ke ThingSpeak, membina visual data dalam bentuk graf dan menghantar notifikasi amaran. ThingSpeak juga menyediakan API untuk mengakses data yang berada dalam cloud tersebut.
ThingSpeakjuga terkenal di kalangan inovator dan industri untuk membuat prototaip dan projek IoT.
ThingSpeak
1. Cipta akaun
Pergi ke ThingSpeak -> Tekan Create
Isikan maklumat akaun anda -> Tekan Continue -> Verify Email
Pilih lokasi web site
Setelah akaun anda berjaya create, tekan Ok
2. Cipta channel
Pergi ke Channels -> Tekan New Channel
Isikan maklumat -> Enable Field -> Save Channel
Anda boleh enable Field mengikut berapa banyak data sensor yang anda ingin hantar. Jadi dalam tutorial ini menggunakan satu Field bertujuan untuk tunjuk data jarak yang dihantar dari ultrasonic sensor ke ThingSpeak.
3. Setup Field & Chart
Isikan maklumat anda seperti di bawah-> Tekan Save
API key
Untuk mendapatkan API key, pergi ke API keys -> Copy API key -> Paste pada code
Channel ID
Anda juga perlu copy Channel ID dan paste pada code.
Arduino IDE
Install library ThingSpeak
Pergi ke Sketch -> Include library -> Manage Libraries -> Buat carian “ThingSpeak by MathWorks” -> Tekan Install.
Komponen
Komponen yang diperlukan
- Ultrasonic Sensor
- NodeMCU ESP8266 dan USB
- Breadboard
- Jumper wire
Litar
Ultrasonic sensor
- VCC → pin Vin ESP8266
- TRIG → pin D7 ESP8266
- ECHO → pin D8 ESP8266
- GND → GND ESP8266
Code
#include <ESP8266WiFi.h> #include "ThingSpeak.h" #include "WiFiClient.h"
const char* ssid = "Nama Wifi anda"; const char* password = "Password wifi anda";
WiFiClient client;
unsigned long myChannelNumber = XXXXX; //Channel ID const char * myWriteAPIKey = "API KEY";
// Timer variables unsigned long lastTime = 0;
// Variable to hold distance readings int distance; long duration;
#define triggerPin 13 #define echoPin 15
void setup() { Serial.begin(115200); //Initialize serial pinMode(triggerPin, OUTPUT); pinMode(echoPin, INPUT);
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client); // Initialize ThingSpeak }
void loop() { if (millis() - lastTime > 15000) {
// Connect or reconnect to WiFi if(WiFi.status() != WL_CONNECTED){ Serial.print("Attempting to connect"); while(WiFi.status() != WL_CONNECTED){ WiFi.begin(ssid, password); // Connect to WPA/WPA2 network. Change this line if using open or WEP network Serial.print("."); delay(5000); } Serial.println("\nConnected."); }
getDistance();
//Tukarkan 1 kepada nombor field yang anda nak publish data //Untuk tutorial ini, kita akan menulis nombor untuk field 1 int x = ThingSpeak.writeField(myChannelNumber, 1, distance, myWriteAPIKey);
if(x == 200){ Serial.println("Channel update successful."); } else{ Serial.println("Problem updating channel. HTTP error code " + String(x)); } lastTime = millis(); } }
void getDistance(){ digitalWrite(triggerPin, HIGH); delayMicroseconds(10); digitalWrite(triggerPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration/2)/29.1;
Serial.print(distance); Serial.println(" cm"); } |
Peringatan
Jangan lupa tukarkan maklumat di bawah.
const char* ssid = "Nama Wifi anda"; const char* password = "Password wifi anda";
unsigned long myChannelNumber = XXXXX; //Channel ID const char * myWriteAPIKey = "API KEY"; |
Output
Setelah code diupload, output pada Serial Monitor dan Thingspeak menunjukkan data jarak.
Output Serial Monitor
Output ThingSpeak
Jika anda suka dengan perkongsian tutorial dalam blog kami ni, jangan lupa untuk follow Facebook dan Instagram kami, kat situ ada bermacam info dan update terkini yang akan kami kongsikan kepada anda. Itu sahaja untuk tutorial kami. Stay update dan selamat mencuba!