{"id":25411328,"url":"https://github.com/whyuhurtz/ammonia-detection","last_synced_at":"2026-05-07T11:32:02.153Z","repository":{"id":277779931,"uuid":"933469392","full_name":"whyuhurtz/Ammonia-Detection","owner":"whyuhurtz","description":"Ammonia detection (NH3) using ESP32 and MQ-135. The simulation is running inside VSCode with Wokwi and PlatformIO extensions.","archived":false,"fork":false,"pushed_at":"2025-02-16T03:13:05.000Z","size":191,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-16T04:17:53.844Z","etag":null,"topics":["esp32","mq135-sensor","platformio","vscode","wokwi"],"latest_commit_sha":null,"homepage":"http://whyuhurtz.pythonanywhere.com/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/whyuhurtz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-16T03:02:05.000Z","updated_at":"2025-02-16T03:13:08.000Z","dependencies_parsed_at":"2025-02-16T04:27:55.191Z","dependency_job_id":null,"html_url":"https://github.com/whyuhurtz/Ammonia-Detection","commit_stats":null,"previous_names":["whyuhurtz/ammonia-detection"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whyuhurtz%2FAmmonia-Detection","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whyuhurtz%2FAmmonia-Detection/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whyuhurtz%2FAmmonia-Detection/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whyuhurtz%2FAmmonia-Detection/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/whyuhurtz","download_url":"https://codeload.github.com/whyuhurtz/Ammonia-Detection/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248845167,"owners_count":21170713,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["esp32","mq135-sensor","platformio","vscode","wokwi"],"created_at":"2025-02-16T10:17:08.808Z","updated_at":"2026-05-07T11:32:02.101Z","avatar_url":"https://github.com/whyuhurtz.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wokwi Simulation for Detect Ammonia (NH3) Gas using MQ-135 Sensor\n\n## Topology Design\n\n![topology](./assets/img/topology.png)\n\n**Problem**: Mungkin kalian berpikir *kenapa gak langsung send data aja dari ESP32 di Wokwi ke Google Spreadsheets pakai AppScript* ?\n**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).\n\n## Requirements\n\n- *Visual Studio Code* untuk mengedit dan menjalankan simulasi.\n- Ekstensi VSCode: *PlatformIO* and *Wokwi*.\n- *Ngrok* or *Cloudflared* untuk tunneling.\n\n## Usage\n\n- Sebelum di-running, build project PlatformIO terlebih dulu dengan mengklik tanda ✅ yang ada di bawah VSCode.\n- 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).\n- Untuk menjalankannya, buka file `diagram.json` yang sudah terhubung dengan ekstensi Wokwi, lalu klik tombol play/running.\n\n## Notes\n\n- Karena kita menggunakan custom chips, maka perlu 2 source code tambahan, yaitu `./wokwi/chips/mq135.chip.c` dan `./wokwi/chips/mq135.chip.json`.\n- Source code `./wokwi/chips/mq135.chip.c` harus di-compile ke **wasm** supaya bisa dijalankan.\n- 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).\n- 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).\n- 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`.\n- 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*.\n\n## Attachments\n\n- [Sample Google Sheets](https://docs.google.com/spreadsheets/d/10ahD_GUE2ebamJ2kfBSvB5ndD5VfSDZ6henEgFErZkQ/edit?usp=sharing)\n- [Wokwi Project](https://wokwi.com/projects/423022837140786177)\n- [Video Simulation](https://mega.nz/file/PUwEGS4B#qgLI2ZcU1Pab8HAguwFwNwRe09544eH5V2b1BQy-nxc)\n\n## Credits\n\n- [pythonanywhere](https://pythonanywhere) by Anaconda.\n\n![python-anywhere](./assets/img/python-anywhere.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhyuhurtz%2Fammonia-detection","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwhyuhurtz%2Fammonia-detection","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhyuhurtz%2Fammonia-detection/lists"}