LoRa ESP32 Pager
A P2P bidirectional pager using ESP32 and LoRa.
Total Time: 56.5 Hours
6/27/2025 (5 Hours)
First day working on this project!! I started by spending two-ish hours reading the specs on LoRa and learning the protocal. Amazing Tutorial for LoRa - Module Spec Sheet - API Spec Sheet
Afterwords I built the first prototype on a breadboard and got everything wired up. Next, I messed around with the Arduino library for a while until I was able to send a message from one esp32 and receive it on my RTLSDR v4. Once I was able to send messages, I then built and wired an identical second prototype and got it to receive messages. After way too much tweaking, I was finally able to use a button to send a message from one to the other!
Picture of the protoypes (aren't they adorable):
6/28/2025 (2 Hours)
More research on how to display a UI! I picked out two SSD1306 modules (pictured above) I had on hand and decided to use them as my displays. I didn't want to manually code the entire UI so I started researching a less code-y solution. I discovered LVGL and Squareline Studio and starting setting them up, followed some Demo projects, read documentation etc.
6/29/2025 (2 Hours)
Started designing UI in Squareline Studio, got a first draft of the menu scren and started working on character selection with an encoder. I learned pretty quickly that Squareline studio is built for different projects, and it was also not very intuative to me.
7/01/2025 (1 Hour)
Continued work on the UI, focusiing on the read section (where incoming messages wil appear). Struggled a bit with getting the style how I wanted (not supposed to have blue), but overall happy with result.
7/04/2025 (2 Hours)
More UI Work! Got a finished version of the UI, with a send screen! Also has 'working' buttons, meaning the back buttons and main menu buttons now bring you to their respective pages. Exported to Arduino IDE!
7/05/2025 (1 Hour)
Disaster Struck! LVGL code is not built for the Arduino IDE (prefers the espressif IDE), and the libraries for Arduino are built for ESPI_TFT, which doesn't support my display. Picture of what Squareline studio gave me:
5 day skip from lack of motavation ):
7/10/2025 (3 Hours)
More reasearch done! I've decided to use the MUI library from the u8g2 library, because I've used u8g2 before for projects, and MUI has the encoder code setup!!! I've also spent a while testing MUI and making and testing examples. Also added encoder to one prototype!
7/11/2025 (2 Hours)
Lots more testing, Struggling with getting the screen to update quickly and also getting the encoder to have faster recognition/acceleration.
7/12/2025 (3 Hours)
Resolution!!! I figured out that in order to make the screen refresh faster, I needed to use hardware I2C instead of software I2C. I had to change a single character in my code from a S to a H. (So frustrating). Also got a good demo for character selection, 12 characters, typing is 100x faster but still not quite perfect. I would like to get rid of Caps if I can.
7/13/2025 (3 Hours)
Started work in KiCAD, lots of watching tutorials, and finding out how to use the editor. Started adding components to my schematic, such as ESP32, voltage regulator, etc.
7/14/2025 (3 Hours)
Lots more work in KiCAD, also lots of reading documentation/spec sheets. Started the power supply section, also picked out the ESP32-S3-WROOM-1 because it doesn't need a seperated UART>USB connector.
7/15/2025 (4.5 Hours)
So much more KiCAD, got USB and ESP32 and button sections of pcb done, started research into possible battery charging chips/boards (so scary).
Also started figuring out placement for the board even though it's not great (not finished ofc).
7/16/2025 (4 Hours)
Redid entire power section, changed battery chip and voltage regulator chip. Added custom OLED, and also a button matrix. Also started hooking up everything to the ESP32 S3 Wroom.
7/17/2025 (3 Hours)
Pain. I realised that all my connections were net labels instead of global labels, so I had to redo them all. I added more decoupling caps, testing pads and battery connectors.
Also restarted the layout process and started grouping all my components (whitebox is hopeful final size)
7/18/2025 (5 Hours)
Lots of working on layouts. I did a first try of the layout, but I didn't know how to use ground planes so it wasn't very effective. Second draft went way better! I have a completed version, and have sent out pictures/information to Hackclub, KiCAD discord and r/PCB on reddit. Already have found a bunch of small things to fix!
7/19/2025 (5 Hours)
Spent the first half of today adressing most of the problems from my first draft. This included fixing symbols, rearranging pins on the ESP32 and adding pullups. Afterwords I did a full do-over of my PCB layout, and made one more compact and simple. (also started looking into PCB pricing)
7/20/2025 (4 Hours)
Discovered Meshtastic, and decided to attempt to make my board compatible w/ it. Ended up changing Ra-01 to Ra-01sh (diffrent LoRa Module). Redid some of layout (ADDED SO MANY VIAS), started looking into custom firmware.
Also uploaded to PCBway to see prices. (JLCPCB thinks its gonna be $300!!!).
7/21/2025 (4 Hours)
Looking at part sourcing, PCBway also wants $88 flat fee for assembly. Decided to assemble myself (scary). Some small pcb adjustments (for EMF), mostly spent today looking through AliExpress to find parts. Made a BOM and finished the rest of my Github repo so I can submit!!! 🎉
Final Pic: