Memasukkan Data Pembacaan Sensor ke Basis Data MySQL

Assalamu’alaikum!

Yak, jadi, saat menuliskan topik terakhir pembelajaran semester kali ini, laptopku memutuskan untuk rusak 😦 Awalnya laptopku menjadi jauh lebih panas dari biasanya, lalu tiba-tiba tidak kursornya tidak bisa digerakkan 😦 Setelah aku matikan, aku coba dinginkan beberapa saat, tetapi dia menolak hidup sampai benar-benar dingin (bahkan aku masukkan ke kulkas). Alhamdulillah, bisa kembali menyala. Sayang sekali, akhirnya aku mem-posting blog terakhir ini lewat dari batas waktu. Maafkan saya Pak Soni 😦

Nah, kali ini, kami diminta untuk membuat suatu domain pribadi dimana di dalamnya terdapat basis data MySQL tempat kita bisa menyimpan hasil pembacaan sensor BME280. Kebanyakan dari kami menggunakan domain milik Hardy (Terima kasih banyak Hardy!) sekaligus basis datanya. Sebenarnya, membuat basis data cukup mudah. Setelah memiliki user basis data, kita memasukkan kode di bawah ini, dan basis data kosong akan terbuat.

19

Langkah berikutnya yang tercantum dalam tutorial ini: https://randomnerdtutorials.com/esp32-esp8266-mysql-database-php/ adalah membuat dua buah file, yang aku beri nama tralala-post-esp-data.php dan tralala-esp-data.php.

20

21

Selanjutnya, aku memasukkan dua jenis kode berbeda. Untuk tralala-esp-data,  kode yang digunakan berfungsi untuk menerima permintaan ESP32 mengirimkan data hasil pembacaan ke basis data MySQL. Sedangkan untuk tralala-post-esp-data, kode yang digunakan berfungsi menampilkan data yang masuk ke basis data ke dalam web. Tentunya aku mengganti nama basis data, nama user, dan password sesuai milikku.

Kemudian, untuk ESP32 dan BME280 dirangkai seperti topik-topik sebelumnya.

ESP32-bme280_bb_f-768x669

20200427_195127

Lalu, aku mengunggah kode yang sudah disediakan randomnerdtutorial ke ESP32, tidak lupa mengganti SSID dan password terlebih dahulu. Sama seperti hasil yang didapat ketika melibatkan input dari BME280, kali ini serial monitor juga gagal terkoneksi ke wifi 😦 Sedih sekali.

Seharusnya, akan muncul IP adress seperi ini.

22

Lalu, dengan memasukkan url ke browser (http://example-domain.com/tralala-esp-data.php) akan muncul pembacaan seperti ini.

23

Baiklah, aku akan mengakhiri post terakhir ini dengan ekspektasi jika BME280-ku bisa bekerja dengan baik. Selama satu semester mengaruni tugas Embedded System ini, aku mendapat pelajaran untuk tidak menunda-nunda pekerjaan karena dapat terjadi hal-hal yang tidak terduga. Terima kasih atas dedikasi dan kepedulian Pak Soni selama ini.

Salam,

Salsabiilaa Roihanah

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.

Ayah, Hujan, dan Mobil Bututnya

Assalamu’alaikum!

Pandemi coronavirus yang sukses membuat satu dunia menghentikan sementara aktivitasnya membuatku tersadar akan satu hal; ketimpangan ekonomi di masyarakat. Nggak terhitung berapa banyak pekerja harian dan industri yang terpengaruh oleh jalanan yang makin sepi, institusi pendidikan yang diliburkan, dan acara-acara yang ditunda sampai waktu yang belum ditentukan.

Cerita pendek (yang sebenarnya nggak begitu pendek, sudah menyentuh sembilan halaman A4 di Word-ku) ini aku dedikasikan untuk para orang tua yang sibuk memutar otak, berusaha memenuhi kebutuhan keluarga walau sumber pendapatan utama berkurang drastis bahkan lenyap tak bersisa. Aku dedikasikan pula cerita ini untuk para anak, yang sering tidak memahami keputusan finansial yang dibuat orang tua mereka dan memendam rasa muak dalam-dalam di hati, namun saat ingin melontarkan tuntutan, wajah lelah Ayah Ibu setelah seharian membanting tulang muncul di ingatan. Aku berharap, kita semua selalu dapat menemukan kebahagiaan. Baik itu di tengah kamar hotel deluxe tempat sekeluarga bercengkerama menghabiskan liburan musim panas, atau di rumah petak sempit berkamar satu tempat Ayah memberikan semangkuk es putar hasil menabung sejak minggu lalu untuk anak-anaknya.

Sudah nyaris tiga tahun aku nggak menyentuh aplikasi Word untuk merangkai kata dan meramu dunia versi imajiku sendiri. Aku sempat insecure parah, menyadari bahwa pengetahuan kosakataku mandeg dan kemampuan mengembangkan plot belum berkembang sejak 2017. Tapi, ya sudahlah, aku memasang muka tebal saja dan melepaskan anakku paling anyar supaya dapat dibaca oleh khalayak.

Enjoy!

Continue Reading

Integrated Automatic Hand Soap Dispenser

Hi there!

Post kali ini adalah untuk memenuhi Ujian Tengah Semester mata kuliah Embedded System. Kami diminta untuk mengajukan rancangan sistem embedded yang dapat memecahkan suatu masalah di ITB. Untuk menemukan idenya sendiri aku tidak terlalu kesulitan, sih. Karena ternyata memang banyak banget hal-hal yang aku keluhkan tentang fasilitas di ITB, hehe. Tapi tenang, aku akan berusaha menyumbang ide untuk memecahkan masalah yang ada, supaya nggak mengeluh aja. Talk less do more, right?

Identifikasi Masalah

Mencuci tangan dengan sabun adalah tindakan menjaga kebersihan diri yang sangat disarankan oleh praktisi-praktisi kesehatan. Apalagi, awal  2020 ini dunia dihebohkan oleh penyakit menular yang menyerang saluran pernafasan, disebabkan oleh virus, tepatnya jenis coronavirus, dengan nama resmi COVID-19. Penyebaran penyakit tersebut adalah melalui droplets yang dihasilkan oleh saluran pernafasan ketika penderita bersin atau batuk. Mencuci tangan menjadi salah satu tindakan preventif untuk mengurangi penyebaran COVID-19 dan penyakit-penyakit lain.

Sayangnya, meskipun jumlah toilet yang tersebar di Kampus Ganesha Institut Teknologi Bandung terbilang sudah cukup memenuhi kebutuhan civitas akademika dan pengunjung yang beraktivitas di dalam kampus, fasilitas toilet yaitu sabun cuci tangan sering kali tidak tersedia. Keadaan yang sering ditemukan adalah dispenser sabun cuci tangan dibiarkan kosong untuk waktu yang lama. Dalam beberapa kasus, dispenser sabun cuci tangan rusak atau bahkan ada toilet yang tidak memilikinya.

Deskripsi Solusi

Integrated Automatic Hand Soap Dispenser dapat menjadi solusi untuk permasalahan tersebut. Seluruh toilet dan tempat-tempat strategis di ITB, seperti kantin, perlu memasang dispenser sabun yang dapat mengeluarkan cairan sabun tanpa perlu sentuhan tangan pada tombol atau pompa apa pun. Tujuan mencuci tangan adalah menjaga tangan supaya higienis. Maka, dispenser sabun otomatis penting untuk mengurangi sentuhan tangan kepada permukaan peralatan umum yang mungkin saja malah memperbanyak penempelan kotoran dan kuman penyebab penyakit ke tangan.

Automatic Hand Soap Dispenser memiliki sensor infrared untuk mendeteksi benda yang berada dekat dengan mulut dispenser. Jika ada benda dalam jarak dekat, pompa dispenser akan bekerja untuk menekan sejumlah volume sabun cuci tangan keluar.

Integrasi automatic hand soap dispenser memungkinkan petugas sarana dan prasarana yang bertanggung jawab untuk suatu toilet mengawasi ketersediaan sabun cuci tangan. Karena volume sabun yang dikeluarkan setiap satu kali pemompaan adalah sama, setiap dispenser memiliki jumlah pompaan maksimum tertentu, dengan asumsi dispenser diisi sabun hingga kapasitas maksimumnya. Sabun cuci tangan harus diisi ulang sebelum benar-benar habis. Maka, dispenser akan mengitung mundur setiap kali sensor infrared mendeteksi benda dekat. Ketika telah mencapai threshold tertentu, setiap dispenser mengirimkan update ke stasiun sarana prasarana melalui sambungan wifi supaya memunculkan notifikasi untuk pengisian ulang sabun cuci tangan berupa pesan tulisan dan lampu LED yang berkedip-kedip. LED yang terpasang di dispenser sabun juga akan berkedip-kedip ketika telah mencapai threshold.

Spesifikasi Desain Sistem

Untuk membuat prototype Integrated Automatic Hand Soap Dispenser, dibutuhkan alat-alat sebagai berikut.

  1. Mikrokontroler ESP32 sejumlah dua buah.
  2. Sensor PIR sejumlah satu buah untuk mendeteksi perubahan suhu jika ada benda dengan suhu lebih hangat seperti tubuh manusia berada dekat dengan sensor.
  3. LED sejumlah dua buah.
  4. I2C 16×2 LCD Display sebanyak satu buah.
  5. Solenoid kecil.
  6. Tabung dengan ukuran yang sesuai supaya bisa digerakkan oleh solenoid.

Komunikasi yang digunakan antara dua mikrokontroler adalah Client-Server Wifi Communication.

Skenario Solusi

Berikut adalah diagram kerja Integrated Automatic Hand Soap Dispenser.

4

Rancangan Sistem Hardware

Berikut adalah diagram yang menjelaskan bagaimana setiap perangkat keras dalam solusi ini berhubungan.

3

Sedangkan di bawah ini adalah flow chart cara kerja tabung pompa.

2

Rancangan Sistem Perangkat Lunak

Berikut adalah flow chart yang menjelaskan tahapan-tahapan yang berlangsung pada perangkat lunak solusi ini.

1

Demikian rancangan Integrated Automatic Hand Soap Dispenser yang bisa diterapkan di ITB untuk meningkatkan kebersihan diri setiap pengunjung kampus.

5

Terima kasih!

LCD with ESP32 on Arduino IDE

For this Embedded System assignment, my team and I purchased an LCD with I2C communication and installed a library. We wanted to display a static test on the LCD.

We followed this tutorial. Sadly, connecting the LCD to ESP32 needed four female to female jumper wires while we only had three. So, instead of directly connecting the two device, we connected the I2C to the arduino breadboard and wired it to the ESP32 using male to female jumper wire. We connected the ESP32 to our laptop using USB cable.

We could see the LED on ESP32 and the LCD lit up. We thought the circuit had connected to the laptop just fine. We compiled and uploaded the code in the IDE to search for I2C address. We failed for the first time because apparently we had used the schematic diagram of the wiring for ESP8266. Our circuit was not detected by the IDE.

Wrong circuit arrangement
Correct circuit arrangement

After following the right diagram for ESP32, we found the address which was 0x27, same as the address listed on the tutorial.

Next, we compiled and uploaded the code for displaying a static test. We observed there was nothing on the LCD even though there was no problem with the code. Using a screwdriver, we adjusted the potentiometer on the I2C. The backlight was fixed so that our static test could be displayed clearly.

For this assignment, we got many experiences because the challenges we faced. Thankfully, we were able to overcome all of them.