Sambil menunggu kedatangan sensor SDS011, saya menulis artikel singkat bagaimana cara untuk mengambil data dari BME280 dan mengirimkannya ke ThingsBoard. Namun terganggu dengan adanya mati listrik hari Minggu dan Senin, sehingga pada hari Senin sensor sudah datang maka saya putuskan untuk menuliskan artikel lengkap percobaan dengan BME280, SDS011, dan MQTT
Modul Python Adafruit untuk BME280
Modul Python untuk BME280 sudah disediakan oleh Adafruit dengan CircuitPython. CircuitPython ini hanya bisa dijalankan di Python 3, Adafruit sudah memiliki tutorial sendiri bagaimana cara menyiapkan CircuitPython di Raspberry Pi. Langkah-langkah detil untuk mempersiapkan Raspberry Pi untuk menggunakan CircuitPython dapat dilihat di link ini, namun saya akan merangkum dengan singkat.
Hal pertama pastikan Raspberry Pi anda sudah diupdate:
# apt update # apt upgrade
Pastikan bahwa di Raspberry Pi sudah ada PIP untuk Python3
# apt install python3-pip
Untuk menggunakan sensor BME280 dengan I2C maupun SPI pastikan Anda sudah menyalakan I2C dan SPI melalui command line tool:
# raspi-config
Setelah memastikan semua dependencies sudah terinstal di Raspberry Pi, instalasi untuk Python dapat dilakukan dengan command:
# pip3 install adafruit-circuitpython-bme280
Setelah instalasi Adafruit-CircuitPython-BME280, modul adafruit_bme280 sudah dapat diakses dari Python3, semua dependencies dalam Python3 yang dibutuhkan juga sudah terinstalasi. Sensor I2C memiliki address tertentu dan umumnya bisa diubah dengan menggunakan pull-down atau pull-up resistor di pin ADR. BME280 oleh Adafruit memiliki pull up resistor di ADR, sehingga address nya 0x77, lalu modul China yang umum dijual menggunakan pull-down resistor di pin ADR sehingga address nya 0x76. CircuitPython module untuk BME280 yang disediakan Adafruit menggunakan addrses 0x77, namun dapat diubah pada Class initialization dalam script Python. Contoh program ini sudah tersedia di GitHub saya.
SDS-011 dengan Python Serial
SDS011 mengirimkan data dari serial menggunakan USB converter (CH340), driver untuk CH340 sudah tersedia di Linux, sehingga yang diperlukan hanyalah modul Python untuk mengakses data Serial. Karena BME280 menggunakan Python3, maka untuk PySerial digunakan Python3. Instalasi PySerial dapat dilakukan dengan PIP3
# pip3 install PySerial
Setelah instalasi PySerial, koneksikan sensor dengan USB ke Raspberry Pi dan jalankan script yang sudah tersedia di GitHub saya, maka akan terlihat pembacaan sensor PM2.5 dan PM10 di tampilan layar.
Publisher MQTT untuk Python
Setelah data sensor sudah dibaca oleh script Python, module paho-mqtt dapat dipakai untuk mengirimkan data ke MQTT broker, untuk saat ini saya menggunakan ThingsBoard. Untuk mengirimkan telemetry dengan ThingsBoard, yang diperlukan adalah token akses untuk device yang sudah digenerate di ThingsBoard. Pengiriman data telemetri ke ThingsBoard memiliki topic tertentu yakni ‘v1/devices/me/telemetry’, data yang dikirimkan di format dengan JSON. Data ini diterima oleh ThingsBoard dan dapat dibuat Dashboard seperti Gambar di bawah ini.
Dengan hasil pembacaan dengan dashboard ini, saya mengakhiri tulisan kali ini yang menunjukkan bagaimana sebuah sistem dengan BME280 dan SDS011 dapat mengirimkan informasi realtime tentang kualitas udara menggunakan ThingsBoard dan MQTT.