<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Raspberry Pi on Geoff Westmoreland</title>
        <link>https://gwestmoreland.dev/categories/raspberry-pi/</link>
        <description>Recent content in Raspberry Pi on Geoff Westmoreland</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en-us</language>
        <lastBuildDate>Mon, 07 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://gwestmoreland.dev/categories/raspberry-pi/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Raspberry Pi Chore Board</title>
        <link>https://gwestmoreland.dev/p/raspberry-pi-chore-board/</link>
        <pubDate>Mon, 07 Sep 2026 00:00:00 +0000</pubDate>
        
        <guid>https://gwestmoreland.dev/p/raspberry-pi-chore-board/</guid>
        <description>&lt;h2 id=&#34;httpsgithubcomg-doubleupichoreboard-&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/G-DoubleU/PiChoreBoard-&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/G-DoubleU/PiChoreBoard-&lt;/a&gt;&lt;/h2&gt;
&lt;h1 id=&#34;daily-chore-tracker-on-a-raspberry-pi&#34;&gt;Daily Chore Tracker on a Raspberry Pi&lt;/h1&gt;
&lt;p&gt;Piboard? Phore board? Pi-Chore board?&lt;/p&gt;
&lt;p&gt;I have been trying to find a catchy name for this project, but nothing has worked for me so far.&lt;/p&gt;
&lt;p&gt;My friends have a cool counter-top digital calendar from &lt;a class=&#34;link&#34; href=&#34;https://myskylight.com/calendar?srsltid=AfmBOooSVHDAdkFoC6dx1k2loNBksz5iLwCixy3Ze77p4oP-7ui2uIAD&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Skylight&lt;/a&gt;. I would have bought one myself but I didn&amp;rsquo;t want to spend the money. I figured I would make something similar instead.&lt;/p&gt;
&lt;p&gt;Behold my Pi-Chore Board! Written in Python, primarily using the Pygame library and running on a Raspberry Pi.&lt;/p&gt;
&lt;video controls width=&#34;100%&#34; preload=&#34;metadata&#34;&gt;
     &lt;source src=&#34;IMG_2518.mp4&#34; type=&#34;video/mp4&#34;&gt;
     Your browser doesn&#39;t support video playback.
   &lt;/video&gt;
&lt;h2 id=&#34;pygame&#34;&gt;Pygame&lt;/h2&gt;
&lt;p&gt;I had never worked with the Pygame library at the start of this. I knew I wanted to write this app in Python, and found Pygame made creating the UI elements and handling input fairly straightforward. I spent a few hours making super basic display outputs with Pygame to get my feet wet. It took me a while to get my head around Pygame loops.&lt;/p&gt;
&lt;p&gt;Essentially all of your Pygame code runs in a continuous &lt;code&gt; While&lt;/code&gt;  loop. Each loop will check for user inputs, update logic and check for collisions, and then redraw the entire screen if necessary. I spent A TON of time messing with the positioning and size of the UI elements. Every UI element requires specific coordinates, and I spent hours just trying to arrange things in a pleasing way. Once I had the base level created, I farmed the rest of this UI work out to Claude. I was much more interested in the internal logic that the UI/UX.&lt;/p&gt;
&lt;p&gt;Outside of the learning curve on the element placing and looping logic, Pygame was really fun to work with. The documentation is great, and there are so many possibilities.&lt;/p&gt;
&lt;h2 id=&#34;raspberry-pi&#34;&gt;Raspberry Pi&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s been years since I&amp;rsquo;ve even held a Raspberry Pi. I was really excited to see how they have improved and to find a practical use for one again.&lt;/p&gt;
&lt;p&gt;I purchased a Raspberry Pi 5 (4GB RAM) and a Pi Touch Display 2. Once you add up the cost of the Pi, the screen, SD card, and other bits and pieces, I likely didn&amp;rsquo;t same much over buying a Skylight. But I sure had more fun! The 4GB version of the Pi is overkill for this task, but I have future plans for this Pi and wanted some room to grow.&lt;/p&gt;
&lt;p&gt;I knew I wanted this device to stick on my fridge, so my original idea was to use magnets. I purchased some fairly strong neodymium magnets and epoxied four of them to the USB housing. Unfortunately, I could not get this to work. The device was just to heavy, and I couldn&amp;rsquo;t get it to stay securely stuck to the fridge. I ended up going with velcro Command Strips so the Pi is still removable.&lt;/p&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s Next?&lt;/h2&gt;
&lt;p&gt;I have a few short term fixes I need to apply now that it&amp;rsquo;s actually running on my fridge. I need to add recurrence options of bi-weekly and monthly for the &amp;ldquo;Add Chore&amp;rdquo; screen. I also need to update how frequently the save function runs. Currently the chore list and it&amp;rsquo;s &amp;ldquo;checked&amp;rdquo; value save to a JSON file after a new chore is saved. The save function does not run outside of a new chore getting added, so any other updates to the chore list do not persist if the Pi loses power.&lt;/p&gt;
&lt;p&gt;Longer term I have a few ideas I am really excited about.&lt;/p&gt;
&lt;p&gt;First, I want to set up SMS notifications for important chores. I will add a UI element to mark a chore as important. If that chore hasn&amp;rsquo;t been checked off by X time of the day it&amp;rsquo;s due, I want to receive SMS notifications.&lt;/p&gt;
&lt;p&gt;Second, I want to set this up as a Web App running in Azure. The end goal is to have the Pi act as a browser Kiosk that is locked to my Web App site. This way I can use the Pi for more than just this one app. I&amp;rsquo;ll also be able to implement some CD with Azure Dev Ops.&lt;/p&gt;
&lt;p&gt;More updates to come!&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
