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.

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!

Saatnya Berbagi! (Tips dan Trik OSN)

Assalamu’alaikum!

Wah, nggak kerasa ya, kurang dari dua minggu lagi, gelaran OSN 2017 akan segera dimulai. Gimana nih, perasaan teman-teman yang sudah terpanggil untuk menjadi peserta OSN 2017? Pastinya senang, namun juga super deg-degan, ya? I know that feeling so well. Yang jelas, semoga kegiatan belajarnya nggak mengganggu makan opor dan silaturahim saat Lebaran nanti … hehe.

Menanggapi pertanyaan seputar cara belajar, tips dan trik OSN yang sering sekali aku dapatkan, aku berinisiatif untuk menjawab semuanya. Tapi, yang biasanya aku tuangkan lewat tulisan, aku ingin mencoba hal baru. Hm, apa tuh hal barunya?

Kali ini, aku bekerja sama dengan lembaga Konsultan Olimpiade Sains Nasional yang udah saaaaangat berpengalaman dalam bidang per-olimpiade-an ini; pelatihan-osn.com! Aku membuat 3 video yang bisa teman-teman temukan di channel youtube Pelatos (nama bekennya pelatihan-osn.com). By the way, aku juga alumni Pelatos loh, untuk mempersiapkan OSN SMA 2015 dulu 😀 .

Oke deh, yuk kita bahas satu-satu apa saja konten yang bisa teman-teman dapatkan dari menonton ketiga video tersebut! 🙂

Continue Reading

Frequently Asked Questions: Seputar OSN, Silabus OSN Biologi, Referensi serta Tips dan Trik

Assalamu’alaikum!

Aku selalu merasa diriku fakir ilmu; masih sangat tidak berilmu dan harus banyak belajar. Namun, aku juga merasa diriku sangat beruntung; berada di lingkungan yang mendukung untuk menuntut ilmu dan akses informasi yang begitu mudah.

Untuk itu, aku ingin sekali berbagi sedikit ilmu yang aku punya disini. Aku  yakin, internet menjadi sesuatu yang  mudah didapatkan di abad ke-21. Aku harap, teman-teman di seluruh pelosok Indonesia yang pernah memiliki ketertarikan terhadap Olimpiade Sains Nasional alias OSN, bisa mengambil banyak informasi dari blog ini, dan tulisan kali ini khususnya.

Inilah rangkuman pertanyaan yang sering sekali ditanyakan kepadaku melalui platform ask.fm, tentu saja beserta jawabannya. Aku akan mengulas pertanyaan seputar OSN secara umum, OSN Biologi, dan sekilas mengenai bidang-bidang lainnya. Sehinggga, kalau ada teman-teman yang penasaran akan topik di atas, bisa diintip daftar Frequently Asked Question berikut terlebih dahulu. Siapa tahu jawabannya sudah tersedia bahkan sebelum ditanyakan 😀 .

Bismillah, let’s start! 😉

Continue Reading