● online
- Max7219 Led Dot Matrix 32x8 Display Module For Ard....
- Motor servo MG996R TowerPro Metal Gear....
- Micro SD MicroSD Card Shield For WeMos D1 Mini TF ....
- Arduino Mega 2560 R3 ATMEGA2560 clone 16u2 Plus Ka....
- Raspberry Pi 4 Model B 4GB Original UK E14 Raspi 4....
- WEMOS D1 MINI PRO BOARD IoT ESP8266 WIFI PAKET LEN....
- Kabel Jumper 10cm Dupont Pelangi 10 cm Female to F....
- LM2596 Module Step Down DC-DC Ultra compact in 3-4....
- 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
Flow meter yaitu sebuah sensor yang berfungsi untuk menghitung aliran air (debit) dan volume air dalam suatu alur dan... selengkapnya
Ketemu lagi dengan sensor DS18b20, kali ini akan kita monitoring menggunakan aplikasi Blynk dan ESP-01. Langsung saja ya kita... selengkapnya
Sensor ultrasonik merupakan sensor yang dapat mendeteksi suatu benda yang ada di depannya dengan jarak tertentu. Prinsip kerja dari... selengkapnya
Siapa yang kenal dengan modul SIM? dengan modul ini kita bisa berkomunikasi dengan SIM GSM baik untuk mengirim... selengkapnya
RTC DS3231 merupakan sebuah jenis modul yang dapat menghasilkan waktu digital secara realtime dengan tambahan sebuah baterai tipe kancing... selengkapnya
Mari kita belajar lagi, kali ini membahas sensor LDR. Dimana sensor ini nilainya akan berubah menyesuaikan cahaya yang diterima... selengkapnya
Android checkbox adalah tipe dari button yang ada di android. Tipe checkbox ini terdiri dari checked or unchecked. Fungsi... selengkapnya
Keypad 4×4 merupakan sebuah komponen berisi tombol-tombol dan disusun secara matrix yang berfungsi sebagai inputan kedalam suatu sistem tertentu.... selengkapnya
Sensor suhu lagi? Gpp ya disini kita belajar semua sensor suhu, nah tinggal sensor mana nih yang akan digunakan,... selengkapnya
LoRa merupakan singkatan dari Long Range, dimana module ini menggunakan frekuensi radio dengan jarak yang jauh dan konsumsi daya... selengkapnya
Specifications: Operating voltage: DC3-5V Operating current: less than 20mA Sensor Type: Analog Detection Area: 40mmx16mm Production process: FR4 double-sided HASL… selengkapnya
Rp 3.000Dual Volt Amp Meter Digital Ampere Meter Voltmeter 10A 0-100V Ammeter Dilengkapi dengan pengukuran Voltmeter dan Amperemeter dalam 1 display… selengkapnya
Rp 26.500Support terus UKM indonesia dengan membeli produk-produk dalam negeri. Untuk kualitas tidak usah diragukan, udah kita tes QC dengan sangat… selengkapnya
Rp 8.500Micro SD Card Shield For WeMos D1 Mini TF WiFi ESP8266 Compatible SD Wireless Module For Arduino For WeMos D1… selengkapnya
Rp 8.900Features – Calibrated directly in Celsius (Centigrade) – Linear + 10.0 mV/C scale factor – 0.5C accuracy guaranteeable (at +25C)… selengkapnya
Rp 8.000Microcontroller ATmega2560 chip usb : CH340 Operating Voltage 5V Input Voltage (recommended) 7-12V Input Voltage (limit) 6-20V Digital I/O Pins… selengkapnya
Rp 245.000sg90 towerpro penggerak pada robot-robot kecil, dan bisa digunakan sebagai alat untuk hobi membuat robot dsb, dengan berat sekitar 9g… selengkapnya
Rp 15.500Harga untuk 10pcs Resistance: 1K Ohm Wattage Rating: 0.25 Watt Tolerance: 1% Metal Film
Rp 1.500Kabel Jumper Dupont Pelangi 30cm female to Female 1 lembar = 40 kabel
Rp 13.50011 digital input/output pins, all pins have interrupt/pwm/I2C/one-wire supported(except D0) 1 analog input(3.2V max input) a Micro USB connection Compatible… selengkapnya
Rp 28.000
Saat ini belum tersedia komentar.