I’ve made the PCB in kicad. Fully made it.
I’ve made the PCB in kicad. Fully made it.
Today, I’ve designed the schematic for the pcb for the HackPad, Yipeeeee. It is a mess, I know (where are my labels), but I’m lazy. It’s really a mess though
In the firmware, we’ve added exercise starting, we’ve started using the display, very very early, we’ve added the haversine formula allowing us to calculate the distance between two points. We’ve added calculation of all things needed for the exercise details and freeing the exercise in memory after being finished (still no storing it in the ESP32 EEPROM).
Welp I’ve done a bit. I made exercise.h. This header file contains the exercise and exercise point types, used to define an exercise and a location and time at a point to that exercise. Each point which contains a location and time is stored in a linked list array. I have chosen to use a linked list array so that I don’t have to set predefined limits on the size of each array, the only downside being I have to manage all the memory manually. I also added the function to add to the linked list in the exercise. To reduce time complexity from O(n) to O(1) I have changed the way the linked list works adding in a last pointer. This points to the last object in the linked list and is very useful for adding to the linked list as we don’t need to cycle through every object in said list. Although, I have included a fallback in case exercise->last is null meaning the last variable isn’t set which is O(n). I have also made the code to add points to the linked list every time the GPS detects your location changing (eg. around 15hz). I have also added the code to setup I2C for the PCF extension board, and written the code to read and write to and from it. Now the reason I need a PCF extension board was because of a slight oversight when designing the PCB. I forgot to add GPIO onto the PCB for buttons, so I needed to find a solution.
Started working on the firmware for the ESP32. Because I’m using ESP IDF I’m writing in C, my favorite language. I added TinyGPSPlus as to the project but I needed to write a wrapper for it. I needed to write a wrapper for it because it was in C++ and when I included the header for it the C compiler didn’t know what to do. So if I use a wrapper to talk between the firmware and TinyGPSPlus then the C compiler won’t complain about the header file being for C++. I also made it so that the ESP32 will automatically sync the system time with the time provided by the GPS. I also rendered the case properly using fusion 360’s renderer.
APIC TIMER!!!!!
I added headers on the PCB to add an oled display. And a voltage divider connected to IO6 to measure battery voltage.
I started building the web ui. Right now I’ve made the login page which you will redirect to if you’ve not logged in. In order to check if your logged in I’ve made a session manager.
Case, Full pcb and schematic, So I um didn’t track all the time, it’s really hard to track time in kicad and fusion as there’s no adherent hackatime plugin. So lots of time is missing. However I’ve made a pcb and schematic and created a case.
We’ve made a TP4056 BMS in the schematic