Flowchart

ReceiverTransmitter

Discussion

Technical challenges faced

1. No Arduino code requirement

Arduino for ESP32 itself is a framework that wraps around ESP IDF. The technical requirement of an Arduino-free codebase is a major hurdle. ESP IDF in comparison is a low-level framework that interfaces more directly to Espressif hardware.

2. Lack of convenient APIs

ESP IDF also has a steeper learning curve as it comprises of low-level APIs specific to Espressif SoCs. Many functionalities do not have convenient high-level abstractions, compared to Arduino that enjoys an ecosystem of diverse libraries that are easy to use.

3. Limited community support

Oftentimes we were the first to implement something in pure ESP IDF. The technical documentation provided by ESP IDF is sometimes scarce, outdated, or available only in Chinese. Example implementations are often irrelevant, uncommented and supplied with no README.

Overcoming the challenges

We worked from afternoon to the early morning multiple times; reading through documentation and ESP IDF source code to debug our code.

Since it seemed like an impossible requirement, we initially implemented our project using Arduino, and translated the code into pure ESP IDF once we figured out the base code.

Web development

Using the Hugo framework, we used JavaScript, HTML, and CSS to develop this web report. For collaborative coding, we used Git , the industry standard for version control.

Additionally, we opted to use GitHub Pages to host this report for free without ads or background trackers which are permanently enabled for those who use Wix , Google Sites, Weebly , or other free web building sites.

The report reader can rest assured that no personal data is secretly used, as this website is a static site built by the team from the ground up. In fact, we used a software development philosophy called “build in public” (BIP), where anyone can independently audit our website .