Perekaman Hasil Pembacaan Sensor BME280 ke Google Sheets

Assalamu’alaikum! Pada percobaan kali ini, setelah kita akan melakukan pengiriman data hasil pembacaan sensor BME280 ke Google Sheets. Tentunya ini sangat berguna ketika kita ingin menyimpan data kemudian mengolahnya, semisal untuk memprediksi tren di masa yang akan datang. Supaya dapat terhubung ke Google, web server harus https (sudah aman), sehingga tidak bisa langsung menggunakan IP address yang didapat dari ESP32. Sebagai gantinya, kita menggunakan jasa pihak ketiga seperti IFTTT.

 

Berdasarkan tutorial pada tautan berikut: https://randomnerdtutorials.com/esp32-esp8266-publish-sensor-readings-to-google-sheets/, yang pertama harus dilakukan adalah membuat akun IFTTT dengan alamat email. Setelah itu, aku membuat applet baru dan memilih webhooks. Ada beberapa langkah mudah yang harus dilakukan, tetapi pada akhirnya kita akan mendapatkan sebuah API key yang sudah terhubung ke sebuah file Google Sheets di Drive alamat email yang kita pilih.

15

 

Pada Google Sheet tersebut, tertera input awal yang dilakukan pada halaman IFTTT.

14

Aku memasukkan kode yang tertera di tutorial ke Arduino Sketch, dengan mengganti SSID, password, serta alamat unik url IFTTs. Kemudian, kode diunggah ke ESP32.

Seharusnya, akan muncul tanda ESP32 berhasil terkoneksi ke wifi dan row mulai bertambah di Google Sheet seiring pembacaan mulai dilakukan oleh sensor BME280. Namun, masalah yang sama yang aku alami di topik-topik sebelumnya yang melibatkan sensor ini (kecuali pada pembuatan weather station yang terhubung ke web server paling awal), BME280 tidak terdeteksi.

16

Sedih sekali 😦

Sekian percobaan kali ini yang lagi-lagi gagal, dan aku belum tahu apa sebabnya 😦

Input Data Melalui Form HTML

Assalamu’alaikum! Pada kesempatan kali ini, aku cukup senang dengan percobaannya karena tidak melibatkan pengambilan data melalui BME280. Ngomong-ngomong, sensorku itu masih saja tidak mau tersambung 😦

Topik kali ini adalah memasukkan data dari suatu formulir online ke ESP32 kita. Seperti biasa, aku mengacu kepada tautan berikut ini: https://randomnerdtutorials.com/esp32-esp8266-input-data-html-form/

Dibutuhkan beberapa library yang sudah aku unduh untuk topik-topik sebelumnya. Pertama, aku mengunnggah Arduino Sketch sesuai dengan kode yang diberikan pada tutorial ke ESP32. Aku membuka serial monitor dan terdapat IP address.

6

Ketika IP addres dibuka di browser, akan muncul tampilan formulir seperti di bawah ini.

7

Kita dapat mengisi formulir tersebut dan men-submitnya.

8

9

Kita dapat memeriksa serial monitor untuk tahu apabila tulisan yang kita submit benar-benar masuk ke dalam ESP kita.

10

Tidak hanya sampai di sini, sekarang kita akan mencoba menggunakan SPIFFIS (Serial Peripheral Interface Flash File System). Dengan SPIFFIS, tulisan kita masukkan akan disimpan dalam flash memory ESP32. Aku memasukkan kode yang tertera di tutorial. Setelah mengunggahnya, aku membuka serial monitor. Muncul IP address  yang bisa diakses dan menampilkan formulir baru pula. Bedanya dengan formulir sebelumnya, terdapat current value yang selalu diingat oleh ESP32.

11

Karena input sebelumnya adalah ‘ya’, maka current value masih bernilai ya.

12

Kemudian, dilakukan input ‘tidak’.

13

Maka current value akan berubah menjadi ‘tidak’. Demikian pula untuk input value bertipe integer maupun float. Tentu saja flash memory tidak dapat menyimpan dalam ukuran besar, tetapi akses terhadap memori ini cukup cepat.

Demikian percobaan untuk topik kali ini.

 

 

Visualisasi Data pada Web Server

Assalamu’alaikum!

Setelah berhasil menampilkan bacaan suhu, ketinggian, kelembapan dan tekanan dari pengukuran yang dilakukan sensor BME280 pada sebuah halaman web server, saat ini aku akan mencoba menampilkan plot supaya hasil bacaan tersebut lebih mudah diamati. Aku mengikuti tutorial pada tautan berikut: https://randomnerdtutorials.com/esp32-esp8266-plot-chart-web-server/.

Aku harus mengunduh suatu plugin untuk mengunggah filesystem. Aku sempat bingung dalam mengunduh plugin ini karena tidak menemukan nama folder yaitu arduino<nomor_versi>. Ternyata, aku memiliki folder Arduino yang sebenarnya sama saja. Karena sudah muncul ‘ESP32 Sketch Data Upload’ ketika tab Tools pada Arduino IDE ditekan, artinya plugin tersebut sudah terunduh dengan sempurna.

Selanjutnya, aku mengunduh dan memasukkan dua jenis library, yaitu ESPAsyncWebServer dan AsyncTCP. Aku menyusun rangkaian seperti berikut ini.

20200427_195127

Kemudian, aku membuat satu folder yang berisi Arduino Sketch dan folder data. Di dalam folder data ini, aku memasukkan file HTML. Kode untuk Arduino Sketch maupun HTML aku dapatkan dari tautan tutorial di atas pula. Terima kasih banyak RandomnerdTutorial! Tentu saja aku tidak lupa untuk mengganti SSID dan password sesuai dengan wifi yang digunakan di rumahku.

Bedanya dengan pembacaan sebelumnya, aku perlu meng-upload file melalui plugin tadi. Setelah upload berhasil, aku melanjutkan dengan mengunggah kode ke ESP32 seperti biasa. Oh ya, aku baru menyadari kalau ESP32 milikku yang harus ditekan tombol boot-nya setiap akan mengunggah kode cukup merepotkan 😦 Apalagi jika proses pengunggahan memakan waktu lama … Aku sempat mencari cara di internet untuk membuat ESP32 selalu dalam keadaan mampu menerima unggahan kode, tetapi cara yang kutemukan membutuhkan beberapa alat yang tidak aku miliki. Untuk sementara ini, aku tidak punya pilihan lain.

Ketika upload telah selesai, aku membuka serial monitor pada 115200 baud. Aku menekan tombol EN untuk mengetahui IP address. Ekspektasiku, akan muncul tulisan bahwa ESP32 telah terkoneksi ke wifi dan terdapat satu IP address seperti yang terlihat di serial monitor percobaan sebelumnya, screenshootnya di bawah ini.

20200427_200526 Tetapi, yang muncul justru seperti ini.

20200427_212321

JENG JENG JENG. Aku mengalami flashback karena pada percobaan sebelumnya, aku juga mengalami hal yang sama. Bahkan setelah aku menyolder sensor tersebut, masih sempat muncul tulisan seperti itu. Tetapi, entah bagaimana setelah aku biarkan beberapa lama, BME280 akhirnya terhubung juga.

Aku tidak mengubah rakitanku sama sekali. Kodenya pun aku langsung menggunakan dari RandomnerdTutorial yang di topik sebelumnya tidak ada masalah. Aku penasaran bagaimana di percobaan sebelumnya BME280 tiba-tiba terhubung, padahal aku tidak melakukan apa-apa. Sayangnya, setelah aku tunggu untuk waktu yang cukup lama, BME280-ku belum juga mau terhubung pada percobaan kali ini 😦 Aneh sekali.

Di topik sebelumnya, aku telah melakukan scanning alamat I2C BME280. Awalnya, alamat tersebut tidak aku temukan. Kemudian, setelah bacaan berhasil keluar di serial monitor, aku mencoba lagi dan ternyata kutemukan alamat seperti di bawah ini.

20200427_194614

Di percobaan ini, aku mencoba melakukan scanning, dan hasilnya sama seperti pada awal topik sebelumnya, yang muncul adalah seperti ini.

 

 

 

20200427_222522

Aku masih tidak mengerti bagaimana bisa alat yang sama, dengan rangkaian yang sama, dapat berubah dari tidak terdeteksi menjadi terdeteksi kemudian menjadi tidak terdeteksi kembali seperti ini :(. Aku mencoba membuat arduino-ku berkedip, dan lagi-lagi masih bisa. Artinya, masalah bukan pada mikrokontroller dan kabel data, tetapi ada pada hubungan dengan BME280.

Karena aku tidak mungkin membeli sensor baru, akhirnya teman sekelompokku Sulis mengijinkanku melihat hasil pekerjaan miliknya. Terima kasih Sulis!

Seharusnya, jika muncul IP address, IP address tersebut dapat dimasukkan ke browser dan muncul plot garis. Plot tersebut di-update setiap 30 detik sehingga data bisa diamati perubahannya secara nyaris real-time. Setiap titik data juga bisa ditekan untuk memunculkan detail waktu data tersebut diambil.

Sekian percobaan yang gagal kali ini 😦

Weather Station x Web Server

Assalamu’alaikum!

Setelah pandemi COVID-19 menghadang, aku harus terpisah dari teman-teman sekelompokku dalam mengerjakan tugas-tugas Sistem Embedded. Huhu sedih sekali 😦 Jujur saja selama ini aku sangat terbantu dengan teman-teman yang tampak lebih menguasai pengoprekan arduino dan kawan-kawannya, karena dua minggu pertama aku sempat tidak hadir dalam kerja kelompok akibat kaki yang tiba-tiba keseleo sampai sangat parah 😦 (Sampai sekarang masih belum bisa sholat dengan sempurna hiks). Sehingga, mengerjakan tugas SE di rumah adalah tantangan yang besar untukku. Tapi, baiklah, mungkin ini memang saatnya aku harus berusaha mandiri… hehe.

Tentunya, aku harus membeli perangkat yang diperlukan terlebih dahulu. Setelah menunggu dengan was-was apakah pesanan bisa sampai di rumah tepat waktu saat banyak tempat mengalami PSBB, akhirnya perangkat yang aku pesan dari marketplace online datang juga.

Berikut adalah perangkat yang aku gunakan:

  1. ESP32 1 buah
  2. Jumper 4 buah
  3. Kabel USB 1 buah
  4. Laptop

Aku mengikuti tutorial berikut ini: https://randomnerdtutorials.com/esp32-web-server-with-bme280-mini-weather-station/. Sebelumnya, ada beberapa library yang harus aku install terlebih dahulu.

Dan ternyata, banyak sekali kesalahan kecil yang aku lakukan saat mencoba merangkai dan mengunggah kode ke mikrokontroler. Aku memastikan rangkaian yang aku buat sudah seperti panduan, kurang lebih seperti ini.

ESP32-bme280_bb_f-768x669

Aku sengaja tidak menggunakan breadboard, langsung menghubungkan antar pin dengan jumper. Aku memasukkan kode persis seperti yang tertera di tutorial.

1

2

Saat dalam proses mengunggah kode, aku menemukan peringatan “Failed to connect to ESP32: Timed out… Connecting…”. Ternyata, aku harus menekan tombol boot pada esp32 ketika akan mengunggah suatu kode. Setelah mulai terkoneksi, aku bisa melepaskan tombol boot dan seharusnya kode bisa terunggah sempurna.

Ketika sudah tidak muncul peringat tersebut, justru muncul tulisan seperti ini. Saat aku membuka serial monitor, tidak ada yang muncul.

20200427_182650[1]

Aku memutuskan untuk mencoba apakah kode memang berhasil terunggah ke esp32 dengan membuat kode led blink. Ternyata, led dapat berkedip dengan sempurna. Artinya, tidak ada masalah dengan esp32 dan kabel data yang aku gunakan untuk menghubungkan ke laptop.

Hnet-image

Setelah aku mencari informasi di internet, ternyata tulisan tersebut bukan peringatan kegagalan. Kodeku seharusnya tetap terunggah ke arduino dengan baik. Akhirnya, aku mencoba lagi setelah menyolder BME280. Aku rasa, dengan disolder maka pin akan semakin mudah terhubung.

20200427_195127

Alhamdulillah, setelah aku coba lagi mengunggah kode dan membuka serial monitor, BME280 telah terdeteksi dan dapat menampilkan suhu, tekanan, ketinggian, dan kelembapan. Yah, meskipun aku sedikit sangsi mengenai keakuratan pengukuran sensor ini.

Hnet.com-image

Selanjutnya, aku memasukkan kode berikut ini untuk membuat web server. Aku harus mengubah SSID dan password dari wifi yang aku gunakan.

3

4

5

Setelah di-upload, pada serial monitor akan muncul alamat IP ESP32.

20200427_200526

Memasukkan alamat tersebut ke browser akan memunculkan halaman berikut ini.

Screenshot_20200427-200641_Chrome

Yak, begitulah pengalaman membuat weather station dan menampilkan hasilnya pada suatu server web yang mengatarkanku melakukan proses solder pertama kali dalam hidup… hehe.