● online
- Max7219 Led Dot Matrix 32x8 Display Module For Ard....
- TANG CRIMPING PRESS SKUN RATCHET YTH SN-48B....
- Compatible Arduino Pro Mini 5V 16Mhz - Atmega328 -....
- E18-D80NK Infrared Obstacle Avoidance Sensor Proxi....
- 10X RESISTOR 1K 1KOHM 1/4W 1% METAL FILM....
- LCD 16x2 / 1602 Display Arduino Raspberry LCD 16 x....
- LM2596 Module Step Down DC-DC Ultra compact in 3-4....
- Arduino Mega 2560 R3 - ATMEGA2560 Clone - CH340....
- 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
Telegram? ya dengan fitur robot chat di telegram kita bisa mengontrol device dengan mudah dan praktis. Misal kita kelupaan... selengkapnya
Motor servo adalah salah satu jenis motor listrik yang memiliki feedback berupa sensor posisi. Dengan adanya feedback tersebut, motor... selengkapnya
Hallo apa kabar pada artikel ini saya berbagi cara kontrol led menggunakan potensiometer pada NodeMCU. Jadi nanti akan mengatur... selengkapnya
Pada kesempatan kali ini kita akan belajar bersama mengenai 7 segment. Berbeda dengan tutorial sebelumnya yang membahas 1 digit... selengkapnya
Real Time Clock DS3231 adalah rangkaian elektronik yang berfungsi untuk menyediakan data waktu dan tanggal dengan tingkat presisi... selengkapnya
Pada postingan artikel kali ini akan mengupas tentang penggunaan LCD 20×4 pada Arduino. Maksud dari 20×4 adalah lcd ini... selengkapnya
Pada tutorial ini akan dijelaskan bagaimana memulai menggunakan NodeMCU Esp8266 pada Arduino IDE. Meskipun pada tutorial sebelumnya sudah menggunakan... selengkapnya
Sensor Inframerah atau infrared (IR) adalah sensor yang dapat mendeteksi hambatan menggunakan cahaya inframerah yang dipantulkan. Sensor ini memiliki... selengkapnya
Melanjutkan tutorial dari postingan sebelumnya tentang cara memulai menggunakan telegram pada NodeMCU, kali kita akan membahas cara membuat notifikasinya... selengkapnya
Ketemu lagi dengan sensor DS18b20, kali ini akan kita monitoring menggunakan aplikasi Blynk dan ESP-01. Langsung saja ya kita... selengkapnya
POTENSIOMETER LINEAR MONO 10K ohm
Rp 1.90011 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.000Dimmer AC 220 Volt 4000 Watt + Casing Aluminium Potensiometer untuk mengatur tegangan output min/max pada tegangan AC PLN 220V…. selengkapnya
Rp 52.500Clone of the highest version of the Arduino platform with the ATmega2560 processor. It fully works with Arduino IDE. A… selengkapnya
Rp 292.000Features: It is of high power density, high efficiency, high-reliability, small size and lightweight. It can isolate unsteady single-way voltage… selengkapnya
Rp 18.500Bagaimana jika mikrokontroler yang anda gunakan tidak memiliki port ADC. atau anda masih kurang dengan spesifikasi resolusi ADC yang disediakan… selengkapnya
Rp 65.000Kabel Jumper Dupont Pelangi 10 cm male to male 1 lembar = 40 kabel
Rp 13.000Kinerja Produk: Warnanya coklat (amber), Goldfinger tape sticky baik, patuh, suhu tinggi, pelarut, tidak ada rembesan timah dan tidak ada… selengkapnya
Rp 11.900Spesifikasi: Microcontroller : ATmega328 Architecture : AVR Operating Voltage : 5 V Flash Memory 32 KB of which 2 KB… selengkapnya
Rp 77.000Features: Brand new and high quality. Control the speed of a DC motor with this controller. High efficiency, high torque,… selengkapnya
Rp 25.400
Saat ini belum tersedia komentar.