Untuk para pemula yang baru mempelajari konsep IoT disarankan mencoba tutorial ini sebagai langkah awal mempelajari IoT karena Arduino adalah salah satu tools termudah yang dapat dipelajari.
Pada tutorial ini, kita akan mencoba mengirimkan dummy data yang akan di-generate oleh button trigger, kemudian data dikirimkan ke geeknesia melalui protokol MQTT.
Koneksi Arduino dengan Internet dilakukan melalui kabel LAN, pastikan koneksi anda stabil.
1. Registrasi dan menambahkan device :
- Lakukan registrasi untuk device baru berdasarkan petunjuk di link ini Register, Create New Project, Create New Gateway dan"Create New Device"
2. Persiapkan Hardware dan Software yang akan digunakan
Kelengkapan :
Hardware :
- Arduino UNO
- LAN Socket (Ethernet Shield)
- Kabel Data
- Koneksi LAN
- Push Button
- Koneksi Internet
Software :
-
download software pada link berikut lalu lakukan install:
download library pada link berikut
-
masukan semua file pada MQTT Library kedalam satu folder lalu beri nama MQTT
3. Susun komponen sesuai dengan konfigurasi gambar
4. Buka program Arduino lalu copy dan save code berikut.
#include <SPI.h> #include <Ethernet.h> #include <PubSubClient.h> byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x3B, 0xB6 }; //Ganti dengan MAC ethernet yang anda gunakan byte ip[] = { 192, 168, 1, 177 }; //Sesuaikan alamat IP dengan jaringan lokal byte dns2[] = {8, 8, 8, 8}; byte gateway[] = { 192, 168, 1, 254 }; int data1; char pubschar1 [20]; char message_buff[250]; char message_buff_call[200]; EthernetClient ethClient; PubSubClient client("geeknesia.com", 1883, callback, ethClient); void callback(char* topic, byte* payload, unsigned int length) { } void setup() { Serial.begin(9600); delay(500); Ethernet.begin(mac, ip, dns2, gateway); pinMode(2, INPUT_PULLUP); //deklarasi sebagai input dan dengan internal pull up } void loop() { if (!client.connected()) //bangun koneksi jika koneksi tidak terhubung dengan cloud { client.connect("DEVICE-ID", NULL, NULL, "iot/will", 2, 64, "DEVICE-ID"); } if (digitalRead(2) == LOW) //karena pin di setting sebagai input dengan internal pull-up maka ketika switch di tekan kondisi berubah ke logika 0 atau "LOW" { Serial.println("Aktif"); data1 = digitalRead(2); client.publish("iot/live", "DEVICE-ID"); //Masukkan device id itoa(data1, pubschar1, 10); String pubString = "{\"code\":\"USERNAME:PASSWORD\","; //masukkan username dan password anda sesuai yang ada pada detail device pubString += "\"attributes\": {"; pubString += "\"Status\": ""\"Aktif\","; pubString += "\"PIN_Logic\": " + String(pubschar1); pubString += "}}"; pubString.toCharArray(message_buff, pubString.length() + 1); client.publish("iot/data", message_buff); delay(5000); } else if (digitalRead(2) == HIGH) // kondisi normal ketika switch tidak di tekan { Serial.println("Non-Aktif"); data1 = digitalRead(2); client.publish("iot/live", "DEVICE-ID"); //Masukkan device id itoa(data1, pubschar1, 10); String pubString = "{\"code\":\"USERNAME:PASSWORD\","; //masukkan username dan password anda sesuai yang ada pada detail device pubString += "\"attributes\": {"; pubString += "\"Status\": ""\"Non-Aktif\","; pubString += "\"PIN_Logic\": " + String(pubschar1); pubString += "}}"; pubString.toCharArray(message_buff, pubString.length() + 1); client.publish("iot/data", message_buff); delay(5000); } }
5. Lakukan import library lalu pilih MQTT library yang telah anda download.
6. Pastikan informasi attribute pada gateway anda seperti gambar di bawah ini :
7. Ganti device Id, user name, dan password pada coding dengan Id, user name, dan password dari gateway device anda.
8. Pengujian
- cek gateway device anda.
- Pin Logic akan menampilkan angka 1 pada jika anda tidak melakukan apa - apa.
- tahan sakelar dan cek gateway device anda.
- jika Pin_Logic berubah menjadi 0 saat sakelar ditahan maka selamat, anda telah melakukan setting dengan benar.