Assalamualaikum, jumpa lagi di triyonos.com dengan tutorial-tutorial pemrograman menarik lainnya. Kali ini triyonos.com akan membahas penggunaan sensor pengukur suhu dan kelembaban udara yang cukup sering digunakan dalam project Arduino yaitu sensor DHT22.

Umumnya jika menggunakan Arduino IDE, hasil pembacaan nilai suhu dan kelembaban dari sensor DHT22 dapat dimonitor melalui Serial Monitor. Dengan merangkai Arduino dan DHT22 seperti wiring diagram di bawah ini:

Arduino uno DHT22 wiring diagram

Kemudian kita install library DHT22 melalui Library Manager di Arduino IDE, kemudian kita buka dan upload sketch Example-nya, akan didapat nilai Humidity dan Temperature ruangan yang terbaca oleh sensor DHT22 seperti gambar di bawah ini.

Arduino uno DHT22 wiring diagram

Di tutorial kali ini, saya akan menggunakan package Johnny-five yang merupakan salah satu package node.js yang sering saya gunakan untuk mengontrol papan microcontroller Arduino menggunakan bahasa pemrograman Javascript.

Dengan Johnny-five saya akan menampilkan pembacaan nilai kelembaban atau humidity dari sensor DHT22 (hanya nilai kelembaban saja) ke dalam Windows command prompt, seperti pada gambar di bawah ini.

Arduino uno DHT22 wiring diagram

Mengacu ke example Hygrometer - DHT22_I2C_NANO_BACKPACK dari laman resmi Johnny-Five. Komponen elektornika yang dibutuhkan adalah sebagai berikut:

# Item Qty UoM
1 Arduino Uno 1 EA
2 Arduino Nano 1 EA
3 Breadboard 1 EA
4 Sensor DHT22 1 EA
5 Resistor 330 Ohm 1 pcs
6 Kabel jumper 9 pcs
7 Kabel power 1 EA

Untuk dirangkai seperti pada wiring diagram berikut:

Arduino uno DHT22 wiring diagram


Langkah-langkah Praktikum

1. Upload Sketch dht_i2c_nano_backpack.ino ke Arduino Nano

Klik link https://johnny-five.io/examples/hygrometer-DHT22_I2C_NANO_BACKPACK/

johnny-five backpack

Pada bagian Learn More, klik link I2C Backback Firmare
Untuk menampilkan sketch dht_i2c_nano_backpack.ino dari halaman github
https://github.com/rwaldron/johnny-five/blob/main/firmwares/dht_i2c_nano_backpack.ino

Yang perlu dirubah dari sketch tersebut adalah pada baris 24 dan 25

johnny-five backpack

Ubah menjadi
int dhtPin = 2;
int dhtPin = 22;

Untuk selengkapnya copy sketch dht_i2c_nano_backpack.ino berikut:

#include <Wire.h>
#include "DHT.h"

#define DEBUG_MODE 0

// Address Pins
#define AD0 11
#define AD1 12

// I2C Defaults
#define I2C_DEFAULT_ADDRESS 0x0A
#define I2C_BUFFER_SIZE 4
//
// 0 H LSB
// 1 H MSB
// 2 T LSB
// 3 T MSB
//
byte buffer[I2C_BUFFER_SIZE];

int addressPins[] = { AD0, AD1 };
int address = I2C_DEFAULT_ADDRESS;

int dhtPin = 2;
int dhtType = 22;

void resetState() {
  digitalWrite(dhtPin, LOW);
  pinMode(dhtPin, INPUT);
}

void setup() {

  int offset = 0;

  for (int i = 0; i < 2; i++) {
    pinMode(addressPins[i], INPUT);
    if (digitalRead(addressPins[i])) {
      offset |= 1 << i;
    }
  }

  address += offset;

  #if DEBUG_MODE
    Serial.begin(9600);
  #endif

  resetState();

  Wire.begin(address);
  Wire.onRequest(onRequest);
  Wire.onReceive(onReceive);
}

void loop() {
  if (dhtPin != -1 && dhtType != -1) {
    DHT dht(dhtPin, dhtType);
    dht.begin();

    int h = (int)((float)dht.readHumidity() * 100);
    int c = (int)((float)dht.readTemperature() * 100);

    buffer[0] = h >> 8;
    buffer[1] = h & 0xFF;
    buffer[2] = c >> 8;
    buffer[3] = c & 0xFF;

  #if DEBUG_MODE
    Serial.print("h: ");
    Serial.println(h);
    Serial.print("c: ");
    Serial.println(c);
  #endif

    delay(250);

  #if DEBUG_MODE
    Serial.print("free ram: ");
    Serial.println(freeRam());
  #endif

  }
}

#if DEBUG_MODE
int freeRam() {
  extern int __heap_start, *__brkval;
  int v;
  return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}
#endif

void onRequest() {
  Wire.write(buffer, I2C_BUFFER_SIZE);
}

void onReceive(int howMany) {
  // Order:   [ pin, type ]
  // Default: [ 2, 11 ]
  dhtPin = (byte)Wire.read();
  dhtType = (byte)Wire.read();

  #if DEBUG_MODE
    Serial.print("dhtPin: ");
    Serial.println(dhtPin);
    Serial.print("dhtType: ");
    Serial.println(dhtType);
  #endif
}

			

Hubungkan Arduino Nano ke PC, pastikan port COM untuk Arduino Nano terbaca di device manager. Buka sketch baru di Arduino IDE, kemudian paste sketch .ino di atas.

johnny-five backpack

Klik tombol Upload & tunggu sampai Done Uploading

johnny-five backpack

2. Upload Example Sketch StandardFirmata.ino ke Arduino Uno

Hubungkan Arduino Uno ke PC, pastikan port COM untuk Arduino Uno terbaca di device manager. Kembali ke Arduino IDE, kemudian Klik File Examples Firmata StandardFirmata di Arduino IDE

johnny-five backpack

Akan tampil sketch StandardFirmata.ino pada jendela baru Arduino IDE. Pilih Board Arduino Uno yang sudah terhubung ke PC, kemudian klik tombol Upload dan tunggu sampai Done Uploading.

johnny-five backpack

3. Koding di Node.js

Buat folder baru sebagai project folder node.js di directory yang anda inginkan. Di tutorial ini saya akan buat folder baru dengan nama j5_dht22 di dalam directory E:\triyonos

johnny-five backpack

Buka Windows command prompt, arahkan ke directory E:\triyonos\j5dht22

johnny-five backpack

Ketikkan npm init, kemudian Enter, kemudian isikan informasi yang dibutuhkan mengenai project ini.

johnny-five backpack

Setelah itu kita install package johnny five melalui npm dengan mengetikkan perintah npm install johnny-five kemudian Enter.

johnny-five backpack

Tunggu sampai selesai.

johnny-five backpack

Create file .js baru dengan nama dht22.js

johnny-five backpack

Buka file dht22.js melalui text editor Notepad++, kemudian copy paste sketch di bawah ini:

var five = require("johnny-five");
var board = new five.Board({ port: "COM20" });

board.on("ready", function() {
	var hygrometer = new five.Hygrometer({
		controller: "DHT22_I2C_NANO_BACKPACK"
	});

	hygrometer.on("change", function() {
		if (parseFloat(this.relativeHumidity) > 0) {
			console.log("Hygrometer");
			console.log("  relative humidity : ", this.relativeHumidity);
			console.log("--------------------------------------");
		}
	});
});

			

Kemudian Save

johnny-five backpack

4. Assembling Komponen Elektrikal dan Running App

Rangkai Arduino Uno, Arduino Nano dan sensor DHT22 seperti pada wiring diagram di atas. Berikut hasil rangkaiannya:

johnny-five backpack

Buka Windows command prompt, arahkan ke directory root folder node.js

johnny-five backpack

Untuk lebih jelasnya silakan tonton video dari channel youtube Kode Erik di bawah ini. Kalau ada pertanyaan silakan komen di youtube dan jangan lupa subscribe: