Pendahuluan
Tutorial ini akan membahas cara menggunakan printer thermal Bluetooth dengan ESP32 dan sensor DHT11. Printer thermal Bluetooth digunakan untuk mencetak data suhu dan kelembaban yang diperoleh dari sensor DHT11. Dengan menggunakan ESP32 sebagai mikrokontroler, kita dapat mengontrol printer thermal dan sensor DHT11 serta mentransmisikan data melalui koneksi Bluetooth.
Komponen Yang Digunakan
Berikut adalah daftar komponen yang digunakan dalam proyek ini beserta link pembelian di Golite Store:
Skema Sistem
Skema Fritzing

Konfigurasi Pinout
- ESP32 -> Printer Thermal Bluetooth
- VIN -> VCC
- GND -> GND
- TX2 -> RX
- RX2 -> TX
- ESP32 -> Sensor DHT11
- VIN -> VCC
- GND -> GND
- D4 -> Data
- ESP32 -> Push Button
- GND -> S1
- D18 -> S2
Penjelasan singkat mengenai skema sistem: ESP32 dihubungkan ke printer thermal Bluetooth melalui koneksi serial UART, dan juga ke sensor DHT11 untuk membaca data suhu dan kelembaban.
Program Arduino/ESP32
#include "Adafruit_Thermal.h" #include "BluetoothSerial.h" #include "DHT.h" #define button 18 #define DHTPIN 4 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); BluetoothSerial SerialBT; Adafruit_Thermal printer(&SerialBT); uint8_t address[6] = {0x66, 0x32, 0x75, 0x31, 0x23, 0x41}; String name = "RPP02N"; char *pin = "0000"; String data; void setup() { Serial.begin(115200); dht.begin(); pinMode(button, INPUT_PULLUP); pinMode(2, OUTPUT); SerialBT.setPin(pin); SerialBT.begin("ESP32test", true); Serial.println("The device started in master mode, make sure remote BT device is on!"); if (SerialBT.connect(address)) { Serial.println("Connected Successfully!"); } else { while (!SerialBT.connected(10000)) { Serial.println("Failed to connect. Make sure remote device is available and in range, then restart app."); digitalWrite(2, 1); delay(500); digitalWrite(2, 0); delay(500); } } if (SerialBT.disconnect()) { Serial.println("Disconnected Successfully!"); } SerialBT.connect(); printer.begin(); printer.feed(1); printer.setDefault(); digitalWrite(2, 1); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); float f = dht.readTemperature(true); if (isnan(h) || isnan(t) || isnan(f)) { Serial.println(F("Failed to read from DHT sensor!")); return; } float hif = dht.computeHeatIndex(f, h); float hic = dht.computeHeatIndex(t, h, false); if (!digitalRead(button)) { Serial.println("PRINT START"); // Print the data to the thermal printer printer.justify('C'); printer.println("IDRUS PROJECT x GoLite Store"); printer.println("-----------------"); printer.print("Temperature: "); printer.print(t); printer.println(" C"); printer.print("Humidity: "); printer.print(h); printer.println("%"); printer.print("Heat Index: "); printer.print(hic); printer.println(" C"); printer.feed(2); } delay(100); // Adjust delay as needed }
Penjelasan Program
- Program menggunakan library
Adafruit_Thermal.h
,BluetoothSerial.h
, danDHT.h
untuk mengakses printer thermal, Bluetooth, dan sensor DHT11. Silakan teman teman bisa download di library manager atau di internet 🙂 . - Pada fungsi
setup()
, inisialisasi komponen dilakukan seperti inisialisasi serial, sensor DHT11, dan koneksi Bluetooth. Juga dilakukan pengecekan koneksi dengan perangkat Bluetooth eksternal. - Pada fungsi
loop()
, data suhu dan kelembaban dibaca dari sensor DHT11. Kemudian, jika tombol ditekan, data tersebut dicetak ke printer thermal dengan menggunakan objekprinter
.
Pengujian


Pada pengujian, data suhu dan kelembaban berhasil dicetak oleh printer thermal setelah tombol ditekan.
Kesimpulan
Dengan menggunakan ESP32, printer thermal Bluetooth, dan sensor DHT11, kita dapat membuat sistem yang dapat mencetak data suhu dan kelembaban secara nirkabel. Proyek ini dapat diperluas dengan menambahkan fitur atau sensor tambahan untuk aplikasi yang lebih kompleks.