https://github.com/whyuhurtz/ammonia-detection
Ammonia detection (NH3) using ESP32 and MQ-135. The simulation is running inside VSCode with Wokwi and PlatformIO extensions.
https://github.com/whyuhurtz/ammonia-detection
esp32 mq135-sensor platformio vscode wokwi
Last synced: about 2 months ago
JSON representation
Ammonia detection (NH3) using ESP32 and MQ-135. The simulation is running inside VSCode with Wokwi and PlatformIO extensions.
- Host: GitHub
- URL: https://github.com/whyuhurtz/ammonia-detection
- Owner: whyuhurtz
- Created: 2025-02-16T03:02:05.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-16T03:13:05.000Z (over 1 year ago)
- Last Synced: 2025-02-16T04:17:53.844Z (over 1 year ago)
- Topics: esp32, mq135-sensor, platformio, vscode, wokwi
- Language: C
- Homepage: http://whyuhurtz.pythonanywhere.com/
- Size: 187 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Wokwi Simulation for Detect Ammonia (NH3) Gas using MQ-135 Sensor
## Topology Design

**Problem**: Mungkin kalian berpikir *kenapa gak langsung send data aja dari ESP32 di Wokwi ke Google Spreadsheets pakai AppScript* ?
**Alasannya**: Karena entah mengapa setiap kirim data dari Wokwi ke Google spreadsheet, HTTP request-nya *selalu gagal* dengan status code: **-1 (connection refused)**. Oleh karena itu, saya cari akal untuk mencari perantaranya, yaitu dengan menggunakan flask app yang di-publish ke ngrok/cloudflare supaya bisa diakses oleh ESP32 di Wokwi (secara publik).
## Requirements
- *Visual Studio Code* untuk mengedit dan menjalankan simulasi.
- Ekstensi VSCode: *PlatformIO* and *Wokwi*.
- *Ngrok* or *Cloudflared* untuk tunneling.
## Usage
- Sebelum di-running, build project PlatformIO terlebih dulu dengan mengklik tanda ✅ yang ada di bawah VSCode.
- Setelah proses build selesai, salin path firmware yang telah di-compile ke bagian `[wokwi]` pada file `wokwi.toml` (ini seharusnya tidak perlu karena hasilnya akan sama saja).
- Untuk menjalankannya, buka file `diagram.json` yang sudah terhubung dengan ekstensi Wokwi, lalu klik tombol play/running.
## Notes
- Karena kita menggunakan custom chips, maka perlu 2 source code tambahan, yaitu `./wokwi/chips/mq135.chip.c` dan `./wokwi/chips/mq135.chip.json`.
- Source code `./wokwi/chips/mq135.chip.c` harus di-compile ke **wasm** supaya bisa dijalankan.
- Untuk menambahkan custom chip di Wokwi, kita perlu header file `wokwi-api.h` yang bisa didapatkan pada contoh custom chip *inverter* yang tersedia di repo berikut: [https://github.com/wokwi/inverter-chip/blob/main/src/wokwi-api.h](https://github.com/wokwi/inverter-chip/blob/main/src/wokwi-api.h).
- Untuk meng-compile dari C ke wasm kita perlu tool `emscripten`. Install tool tersebut dengan perintah: `sudo apt install -y emscripten` (Ubuntu/Debian based distro).
- Terakhir, compile C ke wasm pakai perintah: `emcc mq135.chip.c -o mq135.chip.wasm -s EXPORTED_FUNCTIONS='["_attrInit", "_attrRead", "_pinInit", "_pinDACWrite", "_timerInit", "_timerStart"]' -s ERROR_ON_UNDEFINED_SYMBOLS=0`. Jangan lupa, pindahkan hasil kompilasi wasm tersebut ke folder `./wokwi/chips/`. Untuk namanya samakan saja dengan nama custom chip-nya, yaitu `./wokwi/chips/mq135.chip.wasm`.
- Catatan tambahan: untuk variabel `FLASK_APP_URL` pada file `./wokwi/src/main.cpp` kalian bisa isikan dengan **url flask app yang running**, bisa di local atau pun di upload ke [pythonanywhere.com](https://pythonanywhere.com) supaya bisa diakses dari internet. Syaratnya adalah jika flask app running di local, maka harus diekspos ke publik/internet menggunakan tunelling, seperti *Ngrok*/*Cloudflared*.
## Attachments
- [Sample Google Sheets](https://docs.google.com/spreadsheets/d/10ahD_GUE2ebamJ2kfBSvB5ndD5VfSDZ6henEgFErZkQ/edit?usp=sharing)
- [Wokwi Project](https://wokwi.com/projects/423022837140786177)
- [Video Simulation](https://mega.nz/file/PUwEGS4B#qgLI2ZcU1Pab8HAguwFwNwRe09544eH5V2b1BQy-nxc)
## Credits
- [pythonanywhere](https://pythonanywhere) by Anaconda.
