{"id":15885760,"url":"https://github.com/andygeiss/esp32","last_synced_at":"2025-04-14T10:07:13.001Z","repository":{"id":64297546,"uuid":"116005835","full_name":"andygeiss/esp32","owner":"andygeiss","description":"Build your own toolchain to develop, test, build and finally deploy a Golang controller to your ESP32 device.","archived":false,"fork":false,"pushed_at":"2024-08-05T05:21:41.000Z","size":66,"stargazers_count":88,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-14T10:07:04.496Z","etag":null,"topics":["esp32","espressif","go","golang","iot","iot-device"],"latest_commit_sha":null,"homepage":"","language":"Go","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/andygeiss.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":"2018-01-02T10:56:18.000Z","updated_at":"2025-02-26T13:23:17.000Z","dependencies_parsed_at":"2024-12-24T12:12:08.799Z","dependency_job_id":"5bd6c723-4291-43e9-91ef-3c6213286643","html_url":"https://github.com/andygeiss/esp32","commit_stats":{"total_commits":54,"total_committers":3,"mean_commits":18.0,"dds":0.07407407407407407,"last_synced_commit":"e1136fea845df6ae1170edbf7fbedd0f4120956b"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andygeiss%2Fesp32","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andygeiss%2Fesp32/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andygeiss%2Fesp32/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andygeiss%2Fesp32/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andygeiss","download_url":"https://codeload.github.com/andygeiss/esp32/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248860270,"owners_count":21173342,"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","espressif","go","golang","iot","iot-device"],"created_at":"2024-10-06T05:07:24.576Z","updated_at":"2025-04-14T10:07:12.975Z","avatar_url":"https://github.com/andygeiss.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ESP32\n\n[![License](https://img.shields.io/github/license/andygeiss/esp32)](https://github.com/andygeiss/esp32/blob/master/LICENSE)\n[![Releases](https://img.shields.io/github/v/release/andygeiss/esp32)](https://github.com/andygeiss/esp32/releases)\n[![Go Report Card](https://goreportcard.com/badge/github.com/andygeiss/esp32)](https://goreportcard.com/report/github.com/andygeiss/esp32)\n[![Maintainability](https://api.codeclimate.com/v1/badges/25eafcae9797d5e8a3de/maintainability)](https://codeclimate.com/github/andygeiss/esp32/maintainability)\n\nBuild your own toolchain to develop, test, build and finally deploy a Golang controller to your ESP32 device.\n\n## Purpose\n\nThe [Arduino IDE](https://www.arduino.cc/en/Main/Software) is easy to use.\nBut I faced problems like maintainability and testability at more complicated IoT projects.\nI needed to compile and flash the ESP32 before testing my code functionality by doing it 100% manually.\n\nThis solution transpiles Golang into Arduino code, which can be compiled to an image by using the ESP32 toolchain.\nNow I am able to use a fully automated testing approach instead of doing it 100% manually.\n\n## Process\n\n    +--------+    +---------+    +----------+\n    |  Test  +----\u003e  Build  +----\u003e  Deploy  |\n    +--------+    +---------+    +----------+\n\n              make                make flash\n\n**Important**: The Transpiler only supports a small subset of the [Golang Language Specification](https://golang.org/ref/spec).\n\n## Installation\n\nFirst download and install the latest [Arduino IDE](https://www.arduino.cc/en/Main/Software) into \u003ccode\u003e/opt/arduino\u003c/code\u003e or change \u003ccode\u003eINO_IDE_PATH\u003c/code\u003e in the \u003ccode\u003eMakefile\u003c/code\u003e\nand necessary packages.\n\n- **Ubuntu**:\n\n        sudo apt-get install -y bison flex git gperf libncurses-dev make python\n\n- **Manjaro**:\n\n        sudo pip install pyserial\n\nNext run the ESP32 SDK-Installation:\n\n    make packages\n\nLook at the [examples](https://github.com/andygeiss/esp32/tree/master/examples) for more information.\n\n## Develop, Test and Build\n\nChange the Arduino port to your current settings by changing the \u003ccode\u003eMakefile\u003c/code\u003e:\n\n    INO_PORT=\"/dev/ttyUSB0\"\n\nAlso set the \u003ccode\u003eSSID\u003c/code\u003e and \u003ccode\u003ePASS\u003c/code\u003e strings at \u003ccode\u003eapplication/device/controller.go\u003c/code\u003e to your WiFi Access Point and start the build process by using:\n\n    make\n\nRun the binary at \u003ccode\u003ebuild/device-${ARCH}\u003c/code\u003e to simulate your ESP32 device locally.\n\n    Connecting to WiFi ...... Connected!\n\n## Deploy\n\nFinally use the following command to deploy the image \u003ccode\u003edevice.img\u003c/code\u003e to your real ESP32 device.\n\n    make flash\n\n**Important**: Please ensure that the current user is in the \u003ccode\u003edialout\u003c/code\u003e group. Or you will receive a \u003ccode\u003epermission denied\u003c/code\u003e.\n\nThis will create the following output:\n\n    2018/08/05 16:04:22 Flashing ...\n    esptool.py v2.3.1\n    Connecting....\n    Chip is ESP32D0WDQ6 (revision 1)\n    Features: WiFi, BT, Dual Core\n    Uploading stub...\n    Running stub...\n    Stub running...\n    Changing baud rate to 921600\n    Changed.\n    Configuring flash size...\n    Compressed 607456 bytes to 366770...\n    Wrote 607456 bytes (366770 compressed) at 0x00010000 in 5.9 seconds (effective 816.9 kbit/s)...\n    Hash of data verified.\n\n    Leaving...\n    Hard resetting via RTS pin...\n    2018/08/05 16:04:22 Done.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandygeiss%2Fesp32","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandygeiss%2Fesp32","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandygeiss%2Fesp32/lists"}