Menggunakan Adafruit IO dengan Wemos D1 mini dan Arduino IDE

Seperti pada pembahasan sebelumnya kita telah belajar tentang protokol MQTT. Nah pada artikel kali ini kita akan langsung mempraktekkan bagaimana cara menggunakan protokol MQTT. MQTT broker yang digunakan adalah https://io.adafruit.com.

Pada project kali ini kita menggunakan board mikrokontroler Wemos yang sudah terintegrasi dengan modul komunikasi WiFi yang di konfigurasikan ke Arduino IDE dan web Adafruit IO.

Komponen Utama

  • Wemos 1 pcs
  • LM35 1 pcs
  • LED 1 pcs
  • Resistor 220 ohm
  • Access Point 1 pcs

Diagram Rangkaian

io adafruit arduino
  • LM35 – pin A0 Wemos
  • Tegangan supply 3,3V
  • LED – pin D7 Wemos

Setting IO Adafruit

Sebelum mengintegrasikan Arduino IDE dan web Adafruit IO, langkah pertama yaitu buatlah akun di url berikut ini  : https://accounts.adafruit.com/users/sign_up

Adafruit IO Arduino

Kemudian jika sudah selesai mendaftar dan berhasil login silahkan pilih menu “io” kemudian klik “new dashboard” dan buatlah dashboard baru pada akun Anda dengan nama project anda . Contoh : My Dashboard

Adafruit IO Arduino

Setelah itu klik “create” dan Masuk ke dahboard yang telah Anda buat sebelumnya

Adafruit IO Arduino

Klik menu disebelah kanan pada gambar lalu pilih ”Create New Block” lalu Buat block baru dengan cara memilih menu ”toggle”

Adafruit IO Arduino

Buatlah feed baru dengan cara Ketikkan nama project anda Contoh : “Led Control” lalu klik “Create”

Adafruit IO Arduino

Setelah itu klik “Next Step” dan Setting Seperti lalu Klik “Create block”

Adafruit IO Arduino
Adafruit IO Arduino

Buatlah block baru seperti langkah diatas, namun pada step ini pilih dengan tipe ”Gauge” dengan nama ”potensiometer” dan konfigurasi seperti berikut ini

Adafruit IO Arduino

Buatlah block baru dengan tipe Line Chart dengan nama temperature dan konfigurasi seperti berikut ini

Adafruit IO Arduino

Buatlah block baru dengan tipe Slider dengan nama led_pwm_control dan konfigurasi seperti berikut

Instal Library IO Adafruit ke Arduino IDE

Sebelum membuat program ESP8266 wemos d1 mini silahkan download dan pasang terlebih dahulu library Adafruit_MQTT.h atau bisa langsung download melalui software arduino IDE.

Kode Program

Silahkan ubah AIO username dan AIO key jika ingin menggunakan akun google sendiri dengan memilih opsi ” My key ” yang ada di menu Dashboard

Setelah library Adafruit IO sudah terinstall, langkah selanjutnya adalah buatlah program pada Arduino IDE berikut ini

#include <ESP8266WiFi.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
/************************* WiFi Access Point *********************************/
// Sesuaikan dengan access point yang digunakan
#define WLAN_SSID       " username Wifi"
#define WLAN_PASS       "Password Wifi"
/************************* Adafruit.io Setup *********************************/
// Sesuaikan dengan akun masing-masing
#define AIO_SERVER      "io.adafruit.com"
#define AIO_SERVERPORT  1883                   // port 8883 untuk SSL
#define AIO_USERNAME    "praktekotodidak"
#define AIO_KEY         "aio_utVX71hLCGHjzPa6YwLunIkrTvlS"

// Create an ESP8266 WiFiClient class to connect to the MQTT server.
WiFiClient client;
//WiFiFlientSecure untuk koneksi SSL
//WiFiClientSecure client;

// Setup MQTT client untuk koneksi ke MQTT broker
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);

// Feed data untuk di publish
Adafruit_MQTT_Publish potensiometer = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/potensiometer");
Adafruit_MQTT_Publish temperature = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/temperature");
//Adafruit_MQTT_Publish led_control_pub = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/led_control");

// Feed data untuk di subscribe
Adafruit_MQTT_Subscribe led_control = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/led_control");
Adafruit_MQTT_Subscribe led_pwm_control = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/led_pwm_control");

void MQTT_connect();

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(D7, OUTPUT);
  Serial.begin(115200);
  delay(10);

  Serial.println(F("MQTT Client"));

  // Koneksi ke akses point
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(WLAN_SSID);

  WiFi.begin(WLAN_SSID, WLAN_PASS);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();

  Serial.println("WiFi connected");
  Serial.println("IP address: "); Serial.println(WiFi.localIP());

  // Aktifkan subscription
  mqtt.subscribe(&led_control);
  mqtt.subscribe(&led_pwm_control);
}

void loop() {
  MQTT_connect();

  Adafruit_MQTT_Subscribe *subscription;
  while ((subscription = mqtt.readSubscription(5000))) {
    if (subscription == &led_control) {
      Serial.print(F("led_control data: "));
      String led_data((char *)led_control.lastread);
      Serial.println(led_data);
      if (led_data.equals("ON")) {
        digitalWrite(LED_BUILTIN, LOW);
      }
      else if (led_data.equals("OFF")) {
        digitalWrite(LED_BUILTIN, HIGH);
      }
    }
    if (subscription == &led_pwm_control) {
      Serial.print(F("led_pwm_control data: "));
      char *pwm_value = (char *)led_pwm_control.lastread;
      Serial.println(pwm_value);
      int pwm = atoi(pwm_value);
      analogWrite(D7, pwm);
    }
  }

  // Publish potensiometer data
  int adc0 = analogRead(A0);

  Serial.print(F("\nPublish potensiometer data : "));
  Serial.print(adc0);
  Serial.println();

  if (!potensiometer.publish(adc0)) {
    Serial.println(F("Publish Failed"));
  } else {
    Serial.println(F("Publish OK!"));
  }

  // Publish temperature data
  float millivolts = (adc0 / 1024.0) * 3300;
  float temp = millivolts / 10;

  Serial.print(F("\nPublish temperature data : "));
  Serial.print(temp);
  Serial.println();

  if (!temperature.publish(temp)) {
    Serial.println(F("Publish Failed"));
  } else {
    Serial.println(F("Publish OK!"));
  }
}

void MQTT_connect() {
  int8_t ret;

  if (mqtt.connected()) {
    return;
  }

  Serial.print("Connecting to MQTT... ");

  uint8_t retries = 3;
  while ((ret = mqtt.connect()) != 0) {
    Serial.println(mqtt.connectErrorString(ret));
    Serial.println("Retrying MQTT connection in 5 seconds...");
    mqtt.disconnect();
    delay(5000);  // wait 5 seconds
    retries--;
    if (retries == 0) {
      while (1);
    }
  }
  Serial.println("MQTT Connected!");
}

Pengujian Adafruit IO Arduino IDE

Lakukan kompilasi dan upload program dengan memilih tipe board Wemos D1 setelah itu lakukan percobaan dengan cara merubah nilai pada dashboard Anda.

Tinggalkan Balasan

Scroll to Top