Maggie’s Status Report for 2026-10-03

We had our design review presentation earlier this week. During the later half of the week, the ESP32-P4 dev board arrived, and I started working on setting up and implementing the firmware framework for the peripherals.

Since we haven’t ordered the LoRa and GPS module yet, I did the development on a ICM20948 IMU as a placeholder. For now, I had a breadboard setup, including the ESP32-P4-WiFi6 dev board, an LED for signalling, and the IMU, connected via jumper wires. The dev board is connected to and powered by a MacBook over USB-C, and it supplies 5V via VBUS to power the LED and the IMU.

I first worked on setting up the toolchain and dependencies for compiling, flashing and running the firmware. Originally, I was planning to use the esp-hal since it’s in Rust and will make the later integration with the Palm emulator easier. However, I found it’s not compatible with our MCU’s silicon revision, since it requires v3.x or newer while we have a v1.x. Therefore, I switched to using the ESP-IDF framework and configured it for the board’s v1.3 chip and 360MHz clock.

Once that was sorted out, I worked on familiarizing myself with the hardware and the framework and then testing several interfaces that will be needed (and could be reused) by the final GPS and LoRa modules. I ran a LED Control test by controlling one of the board’s GPIO pins using PWM with ESP-IDF to achieve a simple pulsing effect. This verifies GPIO and PWM, and we could also later use the LED as a status indicator. 

Then I tested both I2C and SPI by checking the data transmission between the Mac and the IMU. The IMU has 9 DoFs, so for simplicity, I skipped the magnetometer and only tested the accelerometer and gyroscope. I was able to successfully see measurement readings from the IMU every 100ms using the IDF monitor tool.

After that, I tested UART by having the MCU receive inputs from the Mac in the IDF monitor, and the inputs could also be used to control the start and end of IMU readings.

For next week, I will place the GPS and LoRa module breakout board orders and start working on the software for those peripherals. Depending on when they arrive, the goal is to either have correct GPS measurement with parsed latitude, longitude and timestamp outputs or successful message transmission and reception via LoRa. While waiting for the delivery, I will also start preparing the driver interfaces so that I can move on to testing as soon as the hardware arrives to make sure we are still on schedule. Besides that, we will also work on the design report.