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!

BUILDING A TOUCH AND MAGNET SENSOR USING ESP32

ESP32 is a multipurpose system on a chip. My team built a touch sensor and a magnet sensor for our Embedded System class weekly assignment.

To program our ESP32, we used Arduino IDE. So first thing first, we have to install ESP32 add-ons successfully.

How to Make A Touch Sensor

The board pinout of ESP32 has ten different touch sensors. They are the pink buttons in the following diagrams. Each of them corresponds to one GPIO. Those GPIOs can detect variations in anything that has an electrical charge, including human skin.

esp32-doit-devkit-v1-board-pinout-30-gpios-copy690525199186635703.png

We used the code provided by this source.

We connected a jumper wire to GPIO 4. Then, we connected the ESP32 to our laptop using a USB cable. Next, we uploaded the code after making sure we have selected the right board and COM port.

In the Arduino window, we opened Serial Plotter. When we touched the metal part of the jumper wire, the values displayed in Serial Plotter changed. We noticed that when the wire wasn’t touched, the values displayed would be around 70, and around 10 when it was touched.

We integrated an LED light to our circuit. This is the code we used.

We determined the threshold to be 20 since we already knew the range of values from the previous tries.

With this new circuit, our LED would light up every time the wire was touched.

 
How to Make A Magnet Sensor

Turns out ESP32 already has a built-in hall effect sensor. It can detect a change in the magnetic field surrounding it.

Here is the code for our magnet sensor.

We connected the ESP32 to our laptop using a USB cable. Then, we uploaded the code after making sure we have selected the right board and COM port.

Through the Serial Monitor we opened in the Arduino window, we figured out that when the magnet was far away from the sensor, the values displayed was around 20. When the magnet was attached to the sensor, the values changed to around 50. We have known from the reference that attaching different magnetic poles to the sensor would result in a negative value. Sadly, our magnet was one-sided. Next time, we are going to try using another magnet with both poles exposed.

We decided to code for the integration of LED light to our circuit. We determined a certain value for the threshold. Here is our code.

15807184517102283517546026224323.jpg

After creating a proper circuit and uploading the code, we could observe the LED lit up when our magnet was close to the sensor.

That was how we made a very simple touch and magnet sensor using ESP32. There are tons of tutorials on the internet that has helped us tremendously. We are looking forward to creating more projects using ESP32 and explore the world of Embedded System.