Activity

thjaed

Changes:

  • I added room joining functionality, player list is updated in real time
  • Made improvements to the website by making it a single page application (SPA)
  • Improved robustness with input verification
    Next steps will be to get the game running on the browser!
0
thjaed

Updates:

  • Improved game engine with support for getting a public state of the game
  • Added room functionality, so multiple games can be going at the same time
  • Implemented websockets and a web interface that lets you create a room (see video)
0
thjaed

I created a basic UNO game engine:

  • supports multiple players
  • checks if a card is valid
  • deck and discard piles
  • deals 7 cards to each player
  • supports card effects (draw, reverse, wild etc.)
0
thjaed

Shipped this project!

Hours: 57.48
Cookies: 🍪 1701
Multiplier: 29.59 cookies/hr

I built a pocketable embedded device for students with Raspberry Pi Pico: PicoCharts! Working on this project was really fun, I improved my coding and hardware skills along the way. I also get to use it every day!

I am proud of how slick the final product is. It is very easy to use and thin so it is quite practical.

The hardware was quite challenging in this project as it involved soldering very samll (30 AWG) wires and making them reasonably tidy. This was difficult as I have little soldering experience and bad tools. But I upgraded to decent solder and a Pinecil and things went a lot more smoothly!

thjaed

First Devlog! To kick my project off, I made a function that generates a shuffled UNO deck.

0
thjaed

The code and hardware are pretty much done! I made a proper README and imroved usability by making the config easier. A battery is no longer required, it can be specified in the config file. I will make a demo video and then the project will be ready to be shipped!

Attachment
0
thjaed

I made a better power button, It is flush with the case and fairly difficult to press unintentionally.
I also added a wiring diagram to the repo so you can see how everything is conencted.
Also a few bugfixes

Attachment
0
thjaed

I created a selection page for choosing the timetable file!
Files that are already downloaded are coloured in green. If the device is offline, only cached timetable files are shown. I am really pleased with how this turned out. I got to stretch my programming skills with this one

Attachment
Attachment
Attachment
Attachment
0
thjaed

I moved the data for homeworks relating to lessons out of the timetable.json file as it made more sense to generate this when the timetable is viewed rather than when it is downloaded, to account for homeworks being marked as completed. I then decreased the complexity of the offline timetable storage as it no longer matters how old a timetable file is, if the contents will not change.

Attachment
0
thjaed

Multiple offline timetables can now be stored, I built a system for keeping track of how old each file is so they can be removed once the maximum count is reached. If there is already a timetable fie for the current date, then it will be loaded. If there are more than one, then the newest file will be loaded.

Attachment
0
thjaed

Hardware Changes:
I have almost completed the harware of my project! I just need to make a power button.

  • I created a new back cover with a USB-C port and a hole for a power button (need to make a working one)
    Software Changes:
  • Improved experience in offline mode (e.g. time and date still shown if the RTC was set on power up, auto reconnection if network was lost)
  • Lessons that have homework due will show this on the timetable page - green if complete, red if incomplete
  • The next lesson has a ‘Next’ badge on it
2

Comments

fin
fin about 1 month ago

Really excited to see how it turns out!

thjaed
thjaed about 1 month ago

thanks!

thjaed

You can now select the date for the timetable! I created a menu where you can scroll through the days and select one to be displayed. A banner is shown to remind you that the timetable is not today.

Attachment
0
thjaed

Hardware Changes:

  • I replaced the unused RTC module for an Adafruit LC709203F battery fuel guage, so I can get the charge percentage of the battery.
  • I am using a different USB-C breakout board that works with modern chargers because it has some resistors on it that tells the charger it wants 5V.
  • Updated design to accomodate these things and added screw holes. Put everything together and it is looking pretty cool! printed in black this time.

Software:

  • made some improvements to homework page - tasks have coloured labels to show if they are unseen. completed homework is no longer displayed. unseen tasks will be marked as seen when they are viewed (did this with an API call so it will update on the website as well!)
  • all data auto updates every 20 minutes if the device is sleeping.
  • added support for Adafruit LC709203F
Attachment
0
thjaed

The timetable now auto updates, it checks every 2 minutes if the homework tasks were generated on the current day, and if they aren’t then new ones are downloaded.
Also, I added some coloured markers on the homework tasks to indicate if a task is complete or unseen.

Attachment
Attachment
0
thjaed

I improved the timetable page by adding in period numbers and also break and lunch markers. These aren’t available in the API so they are defined in the config file, all that is needed is a name, and a start & end time in simple HH:MM form. the code does the hard work of converting these into numbers that can be sorted. You can also specify any number of breaks.

Attachment
Attachment
Attachment
0
thjaed

I refactored my UI code, this took a while as it is now 800 lines! anyway, I used some constants for drawing instead of random magic numbers everywhere. I also added more comments. Bit boring, but it had to be done to make the code more maintainable.

Attachment
Attachment
0
thjaed

I have optimised the draw() functions in much of the UI code, previously I was reading from the JSON file with the data every draw() - this includes after something simple like a scroll. So I made the data handling more efficient by reading from the file once when the page is opened, then storing the contents in a variable self.data which draw() reads from.

Attachment
Attachment
0
thjaed

Homework task descriptions can now be viewed! You can now scroll and select tasks to view their descriptions. I made a function that takes the HTML description from the API and converts it into raw text and newlines so it can be displayed on the Pico. I added another page that you are taken to when clicking on a homework that lets you view the description.
I also added a “Force Offline” option in the config, so I can easily make fake data for it to read and display, as you can see in the video!

Attachment
Attachment
Attachment
0
thjaed

Changes:

  • added a homework checker function, so the LED on the front turns blue if there is unseen homework. Polled every 2 minutes.
  • added a wifi connection tester function so offline mode will be activated if the wifi connection is lost.
  • added info to README
Attachment
Attachment
0
thjaed

Added homework page! Coding UI took a while because of an annoying ‘off by padding’ error. The due date turns red if the homework is late, which I have demonstrated in the video.

Attachment
Attachment
0
thjaed

Changes made:

  • added attendance! (demo video is not my actual attendance numbers lol, i just wanted to show off the colour coding)
  • moved some code around for better structure
Attachment
Attachment
0
thjaed
  • Added support for having multiple available networks & connecting to each one if a connection fails
  • Created a global state file for easier checking of system variables without unnecessary parameters or imports
  • Warning message at the top if offline
  • Other Miscellaneous improvements
Attachment
Attachment
Attachment
0
thjaed

I did a few things today:

  • Fixed a bug where after a hard reset, the screen would go blank after booting up. This was caused by an issue where I was storing the last button press time before the RTC was set, so the code thought the last time the buttons were pressed was 5 years ago.
  • Heavily improved WiFi connection logic, with connection tests to google and classcharts, handling no wifi connection, handling no networks being found, etc.
  • Improved messaging logic by utilising return & yield in python to direct the logs to where I want them to go, instead of having multiple lines to log one event within the method.
Attachment
Attachment
Attachment
0
thjaed

I created a cool little bootscreen! You can see what the device is doing while powering up. Very useful for debugging without a computer attached. Took a bit of trial & error because of display update & async wierdness, but I am happy with the result.

Attachment
0
thjaed

Date range for behaviour can now be toggled.

Attachment
Attachment
Attachment
0
thjaed

Just added some functions to get dates (start of school year, this week, last week, this monday, one month in the future). These will be important for new pages - homework, attendance, etc. See github commit for full code. I try to avoid using AI when coding, for the sake of learning. But this commit was partially vibecoded because times and dates are HELL especially on micropython with basically 0 libraries for this stuff.

Attachment
0
thjaed

First devlog after adding my project to flavortown - Hi! I Added a student behaviour points page to PicoCharts. Uses ClassCharts API (Online school platform) for data.

Attachment
Attachment
Attachment
0