This project aims to make a little desktop calendar that displays one day at a time with time and date configuration done over bluetooth. The user can configure different holidays to appear on certain days via a lookup table, and there is a joystick for moving between days.
Demo |
This project uses a EFR32BG22 Explorer Kit board which has Bluetooth capabilities along with TE Connectivity ALCOSWITCH for the joystick and a HiLetgo SSH1106 OLED LCD Display.
Schematic | Connect 1 | Connect 2 | ||
This project was made in Simplicity Studio 5, and the Bluetooth connection is made using the SI Connect app. The program starts with initializing GPIO for the joystick and for an LED on the board (to display if Bluetooth client is connected). The SH1106 display is initialized, and a splash screen is displayed. LETIMER is initialized for checking if the Joystick is engaged (LETIMER is used for the clock on the calendar. RTCC is used for Bluetooth.). A message to the user telling them to connect via Bluetooth to adjust date and time is displayed. The "Day Date Time" standard Bluetooth GATT characteristic is used to store the time. After the user inputs the current time to the SI Connect app the display changes to the calendar. The calendar displays the current day's name (i.e. "Tuesday"), the current time, the current month's name, the current day's number, the corresponding ordinal (i.e. 1st or 2nd), the year, and a message if the current day has a message in the calendar_notes lookup table. Every second the time is calculated, and the program accounts for if the month would move forward (even leap years), and if the year is over. The joystick allows you to move forward or backwards between the days to look at notes that may be stored.
Working with Bluetooth was really interesting. The biggest roadblock for me was RTCC being also used by Bluetooth, so I couldn't use it for my clock the way I intended to. I could also implement a network check to fix any drift that occurs with the clock. Overall I really enjoyed this project.