{"id":14963328,"url":"https://github.com/vs4vijay/iot-playground","last_synced_at":"2025-10-25T02:30:30.412Z","repository":{"id":218731251,"uuid":"745597749","full_name":"vs4vijay/iot-playground","owner":"vs4vijay","description":"IoT Playground for ESP32, Arduino, M5Stack, and other firmware platforms","archived":false,"fork":false,"pushed_at":"2024-06-01T20:18:27.000Z","size":137,"stargazers_count":7,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-31T04:51:26.579Z","etag":null,"topics":["arduino","esp","esp-idf","esp32","esp32s3","esp8266","espressif","iot","iot-platform","m5cardputer","m5stack","m5stickc","m5stickcplus","m5stickcplus2","platformio","playground"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vs4vijay.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-01-19T17:21:01.000Z","updated_at":"2025-01-23T08:59:27.000Z","dependencies_parsed_at":"2024-02-06T18:31:55.308Z","dependency_job_id":"a8aeb0c3-d67c-446e-84c2-09983d746aff","html_url":"https://github.com/vs4vijay/iot-playground","commit_stats":{"total_commits":97,"total_committers":3,"mean_commits":"32.333333333333336","dds":0.08247422680412375,"last_synced_commit":"3a59311b1d67a6857bd59db3b136cafdfbf35092"},"previous_names":["vs4vijay/iot-playground"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vs4vijay%2Fiot-playground","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vs4vijay%2Fiot-playground/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vs4vijay%2Fiot-playground/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vs4vijay%2Fiot-playground/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vs4vijay","download_url":"https://codeload.github.com/vs4vijay/iot-playground/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238059129,"owners_count":19409601,"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":["arduino","esp","esp-idf","esp32","esp32s3","esp8266","espressif","iot","iot-platform","m5cardputer","m5stack","m5stickc","m5stickcplus","m5stickcplus2","platformio","playground"],"created_at":"2024-09-24T13:31:21.438Z","updated_at":"2025-10-25T02:30:25.086Z","avatar_url":"https://github.com/vs4vijay.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# iot-playground\n\nA firmware playground for IoT Devices like ESP32, Arduino, M5Stack, etc.\n\n\n- Update subomdules using `scripts/update-submodules.sh` script\n\n\n\n---\n\n## Platform IO\n\n### Install Platform IO\n\n```shell\npip install platformio\n```\n\n### Compile firmware\n\n```bash\npio run\n```\n\n---\n\n\n## Arduino CLI\n\n### Install Arduino CLI\n\n```shell\ncurl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=~/.local/bin sh\n```\n\n### Install Core, Boards, Libraries\n\n```bash\narduino-cli core install m5stack:esp32 --additional-urls \"https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json\"\n\narduino-cli core search m5stack\narduino-cli board listall\n\narduino-cli lib install M5Cardputer M5Unified IRremoteESP8266 ArduinoJson TinyGpsPlus \"Adafruit NeoPixel\" --log-level warn --verbose\n```\n\n## Compile firmware with Arduino CLI\n\n```bash\n\narduino-cli compile --fqbn m5stack:esp32:m5stack_cardputer -e \\\n                    --libraries M5Cardputer,IRRemoteESP8266 \\\n                    --build-property build.partitions=huge_app \\\n                    --build-property upload.maximum_size=3145728 \\\n                    ./M5CardRemote.ino\n\n```\n\n### Merge bootloader, partiotion table with app\n\n```bash\nesptool.py --chip esp32 merge_bin -o flash_image.bin @flash_args\n\nesptool.py --chip esp32s3 merge_bin --output M5CardRemote.M5Cardputer.bin \\\n    0x0000 build/m5stack.esp32.m5stack_cardputer/M5CardRemote.ino.bootloader.bin \\\n    0x8000 build/m5stack.esp32.m5stack_cardputer/M5CardRemote.ino.partitions.bin \\\n    0x10000 build/m5stack.esp32.m5stack_cardputer/M5CardRemote.ino.bin\n```\n\n---\n\n## ESP IDF\n\n### Install ESP IDF\n\n```bash\nsudo apt install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0\n\nmkdir ~/esp\n\ngit clone -b release/v5.3 --recursive https://github.com/espressif/esp-idf.git --depth 1 ~/esp/esp-idf\n\ncd ~/esp/esp-idf\n./install.sh\n\nsource ~/esp/esp-idf/export.sh\n# OR\n. ~/esp/esp-idf/export.sh\n```\n\n\n### Compile firmware with ESP IDF\n- cd into the project\n```bash\nidf.py menuconfig\n\nidf.py build\n```\n\n\n### Merge bootloader, partiotion table with app\n\n```bash\ncd build/\n\nesptool.py --chip esp32 merge_bin -o ../firmware.bin --fill-flash-size 4MB @flash_args\n```\n\n### Other commands\n\n```bash\nidf.py build flash monitor\n\nidf.py menuconfig\n\nidf.py set-target esp32\n\nidf.py add-dependency\n```\n\n---\n\n## Rust\n\n### Install Rust\n\n```bash\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n```\n\n### Install espup\n\n```bash\ncargo install espup\nespup install\n```\n\n### Compile firmware with Rust\n\n```bash\ncd demo_rust\ncargo build --release\n```\n\n---\n\n## Flash firmware\n\n- Install esptool.py - `pip install -U esptool`\n\n```bash\nesptool write_flash -z 0 name.bin\n```\n\n## QEMU Emulation\n\n```bash\n# Install pre-requisites\nsudo apt install -y libgcrypt20 libglib2.0-0 libpixman-1-0 libsdl2-2.0-0 libslirp0\n\n# Install\nidf_tools.py install qemu-xtensa qemu-riscv32\n\n# Reload env.\n. ~/esp/esp-idf/export.sh\n\n# Boot firmware image\nqemu-system-xtensa -machine esp32 -nographic -drive file=firmware1.bin,if=mtd,format=raw\n```\n- Press Ctrl+A then C to exit qemu\n\n\n---\n\n### Development Notes\n\n```bash\n\n\n\nesptool.py --chip esp32 read_flash 0x310000 0xF0000 spiffs.bin\nmkspiffs.exe -u spiffs_unpack -b 4096 -p 256 -s 0xF0000 .\\spiffs.bin\n\nesptool.py --chip esp32 merge_bin --fill-flash-size 4MB -o flash_image.bin @flash_args)\n\n\nhttps://github.com/mluis/qemu-esp32\n\nqemu-system-xtensa -machine esp32 -drive file=build/flash_image.bin,if=mtd,format=raw -serial tcp::5555,server,nowait -display none -daemonize\n\n\nhttps://github.com/esp-rs/esp-idf-template\n\n```\n\n---\n\n## Credits and Thanks\n\n- https://github.com/VolosR\n- https://github.com/m5stack\n- https://github.com/matthew-5pl\n- https://github.com/bmorcelli\n- https://github.com/7h30th3r0n3\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvs4vijay%2Fiot-playground","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvs4vijay%2Fiot-playground","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvs4vijay%2Fiot-playground/lists"}