● online
- Wemos D1 Mini ESP8266 - IoT Board....
- Arduino Mega 2560 R3 ATMEGA2560 clone 16u2 Plus Ka....
- Breadboard 400 titik lubang Bread board Projectboa....
- Kabel Jumper 10cm Dupont Pelangi 10 cm Female to F....
- LM35DZ Sensor Suhu - LM35....
- Motor Servo MG995 TowerPro Metal Gear....
- PWM DC 10A Motor 12V-40V Pulse Width Modulation Sp....
- Max7219 Led Dot Matrix 32x8 Display Module For Ard....
- Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
- Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
NodeMCU, Kontrol GPIO LED Via Internet Menggunakan ThingsBoard MQTT
Thingsboard merupakan sebuah platform IoT open-source yang memungkinkan anda untuk mengontrol ataupun memonitoring berbagai perangkat. Penggunaanya mudah, gratis dan bisa kita gunakan kapan dan di mana saja. Di dalamnya sudah disediakan beberapa contoh-contoh seperti kontrol GPIO Arduino, ESP8266, Raspberry Pi, monitoring suhu dan masih banyak lainnya.
Kali ini kita akan mencoba untuk mengontrol GPIO dengan Output LED dan nantinya bisa juga digunakan untuk relay.
Alat dan bahan
- NodeMCU CH340, BELI
- Lampu LED, BELI
- Resistor 330 Ohm, BELI
- Kabel Jumper secukupnya
- Library ArduinoJson versi 5.8.0, download
- Library PubSubClient, download
Masukkan libary pada Arduino IDE.
Rangkaian
Sketch Program
#include <ArduinoJson.h> #include <PubSubClient.h> #include <ESP8266WiFi.h> #define WIFI_AP "xxxx" #define WIFI_PASSWORD "xxxxx" #define TOKEN "bIJb6y59MR36Qfkdd" #define GPIO0 0 //D3 #define GPIO2 2 //D4 #define GPIO0_PIN 3 #define GPIO2_PIN 5 char thingsboardServer[] = "demo.thingsboard.io"; WiFiClient wifiClient; PubSubClient client(wifiClient); int status = WL_IDLE_STATUS; // We assume that all GPIOs are LOW boolean gpioState[] = {false, false}; void setup() { Serial.begin(115200); // Set output mode for all GPIO pins pinMode(GPIO0, OUTPUT); pinMode(GPIO2, OUTPUT); delay(10); InitWiFi(); client.setServer( thingsboardServer, 1883 ); client.setCallback(on_message); } void loop() { if ( !client.connected() ) { reconnect(); } client.loop(); } // The callback for when a PUBLISH message is received from the server. void on_message(const char* topic, byte* payload, unsigned int length) { Serial.println("On message"); char json[length + 1]; strncpy (json, (char*)payload, length); json[length] = '\0'; Serial.print("Topic: "); Serial.println(topic); Serial.print("Message: "); Serial.println(json); // Decode JSON request StaticJsonBuffer<200> jsonBuffer; JsonObject& data = jsonBuffer.parseObject((char*)json); if (!data.success()) { Serial.println("parseObject() failed"); return; } // Check request method String methodName = String((const char*)data["method"]); if (methodName.equals("getGpioStatus")) { // Reply with GPIO status String responseTopic = String(topic); responseTopic.replace("request", "response"); client.publish(responseTopic.c_str(), get_gpio_status().c_str()); } else if (methodName.equals("setGpioStatus")) { // Update GPIO status and reply set_gpio_status(data["params"]["pin"], data["params"]["enabled"]); String responseTopic = String(topic); responseTopic.replace("request", "response"); client.publish(responseTopic.c_str(), get_gpio_status().c_str()); client.publish("v1/devices/me/attributes", get_gpio_status().c_str()); } } String get_gpio_status() { // Prepare gpios JSON payload string StaticJsonBuffer<200> jsonBuffer; JsonObject& data = jsonBuffer.createObject(); data[String(GPIO0_PIN)] = gpioState[0] ? true : false; data[String(GPIO2_PIN)] = gpioState[1] ? true : false; char payload[256]; data.printTo(payload, sizeof(payload)); String strPayload = String(payload); Serial.print("Get gpio status: "); Serial.println(strPayload); return strPayload; } void set_gpio_status(int pin, boolean enabled) { if (pin == GPIO0_PIN) { // Output GPIOs state digitalWrite(GPIO0, enabled ? HIGH : LOW); // Update GPIOs state gpioState[0] = enabled; } else if (pin == GPIO2_PIN) { // Output GPIOs state digitalWrite(GPIO2, enabled ? HIGH : LOW); // Update GPIOs state gpioState[1] = enabled; } } void InitWiFi() { Serial.println("Connecting to AP ..."); // attempt to connect to WiFi network WiFi.begin(WIFI_AP, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("Connected to AP"); } void reconnect() { // Loop until we're reconnected while (!client.connected()) { status = WiFi.status(); if ( status != WL_CONNECTED) { WiFi.begin(WIFI_AP, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("Connected to AP"); } Serial.print("Connecting to ThingsBoard node ..."); // Attempt to connect (clientId, username, password) if ( client.connect("ESP8266 Device", TOKEN, NULL) ) { Serial.println( "[DONE]" ); // Subscribing to receive RPC requests client.subscribe("v1/devices/me/rpc/request/+"); // Sending current GPIO status Serial.println("Sending current GPIO status ..."); client.publish("v1/devices/me/attributes", get_gpio_status().c_str()); } else { Serial.print( "[FAILED] [ rc = " ); Serial.print( client.state() ); Serial.println( " : retrying in 5 seconds]" ); // Wait 5 seconds before retrying delay( 5000 ); } } }
Langkah-langkah
- Silahkan buat akun terlebih dahulu di thingsboard DISINI
- Isi nama dan email anda lanjut isi password.
- Kemudian Sign Up, nnti ada pesan masuk ke email untuk mengaktifkan thingsboard.
- Login menggunakan email dan password
- Masuk ke Device > Esp8266 Demo Devic > Manage Credentials> Copy Acces token dan pastekan pada sketch program di atas. lengkapnya lihat gambar di bawah.
- Kemudian upload sketch program di atas jangan lupa untuk mengisi nama wifi dan passwordnya.
- Jika sudah lanjut ke Thingsboard menu dashboard > Esp8266 Demo
Silahkan coba untuk menekan tombol kontrolnya, jika berhasil LED akan menyala/mati.
Anda juga bisa membagikan dashboard Control ini ke teman-teman anda dengan menjadikannya public.
Copy link public dan kirim ke temen anda. Dan sekarang silahkan coba pada jarak yang jauh, karena ini menggunakan jaringan internet maka jarak tidak mempengaruhi. Kontrol tetap bisa berfungsi. Semoga bermanfaat.
NodeMCU, Kontrol GPIO LED Via Internet Menggunakan ThingsBoard MQTT
Halo semuanya, pada kesempatan kali ini Saya ingin membahas tentang simulasi penggunaan sensor LDR (sensor cahaya) menggunakan Arduino untuk... selengkapnya
Blynk menawarkan beragam fungsi ya, salah satunya untuk mengontrol perangkat. Penggunaan Blynk ini bisa kapan dan dimana saja ya,... selengkapnya
Motor servo adalah salah satu jenis motor listrik yang memiliki feedback berupa sensor posisi. Dengan adanya feedback tersebut, motor... selengkapnya
Blynk merupakan sebuah platform aplikasi android yang diperuntukan untuk berbagai kontroler hardware seperti arduino, esp8266, raspberry dsb untuk mengendalikan,... selengkapnya
Selamat datang di indomaker.com, pada pembahasan kali ini admin akan mengupas tentang penggunaan ESP32-CAM. Module ini merupakan sebuah module... selengkapnya
Seorang web programmer agar dapat mengembangkan website agar lebih menarik dan nyaman saat digunakan serta memenuhi kebutuhan user wajib... selengkapnya
Hari ini kita akan mencoba untuk menampilkan data sensor ldr ke web server dengan koneksi WIFI menggunakan board NodeMCU.... selengkapnya
Potensiometer adalah salah satu jenis resistor yang nilai resistansinya dapat diatur sesuai dengan kebutuhan rangkaian elektronika ataupun kebutuhan pemakainya.... selengkapnya
Hallo apa kabar pada artikel ini saya berbagi cara kontrol led menggunakan potensiometer pada NodeMCU. Jadi nanti akan mengatur... selengkapnya
Pada artikel sebelumnya kita sudah belajar untuk mendaftar ke thingspeak, jika belum silahkan bisa di lihat DISINI. Oke sip... selengkapnya
Support terus UKM indonesia dengan membeli produk-produk dalam negeri. Untuk kualitas tidak usah diragukan, udah kita tes QC dengan sangat… selengkapnya
Rp 8.500Spesifikasi : – 16×2 – Warna Biru – Tegangan kerja : 5v – Sudah include module I2C Backpack dan tersolder… selengkapnya
Rp 30.0001 X LDR Sensor 5mm Cahaya 5528 Light Dependent Resistor LDR
Rp 4.000Arduino Uno adalah board mikrokontroler yang berbasis ATmega328P. Arduino Uno memiliki 14 pin input/output digital (6 di antaranya dapat digunakan… selengkapnya
Rp 144.000Wemos D1 mini PRO adalah modul minsys berbentuk kecil dan compact, yang menggunakan modul WIFI ESP8266 yang saat ini sangat… selengkapnya
Rp 109.000Mini Solderless Breadboard 400 Tie Points adalah breadboard 400 titik lubang, dengan ukuran yang compact sangat cocok untuk anda yang… selengkapnya
Rp 7.800Kabel Jumper Dupont Pelangi 10 cm.. male to female 1 lembar isi 40 kabel
Rp 9.000Modul sensor tegangan AC bolak balik 3 fasa ini menggunakan optocoupler sehingga tegangan input (AC) tidak akan mengganggu/membahayakan tegangan output… selengkapnya
Rp 57.000Dual Volt Amp Meter Digital Ampere Meter Voltmeter 10A 0-100V Ammeter Dilengkapi dengan pengukuran Voltmeter dan Amperemeter dalam 1 display… selengkapnya
Rp 26.500POTENSIOMETER LINEAR MONO 10K ohm
Rp 1.900
Saat ini belum tersedia komentar.