How to DIY an Electronic Desk Calendar?

Overview

  • The top right corner has 5 touch buttons
  • There are 57 dates in the middle, each with a touch button
  • The grey box is another PCB board with an abbreviation of Monday to Sunday
  • There are two empty slots below, and there are two slender PCBs that can be hooked up to form an angle so that the circuit board is stabilized on the desktop
  • PCB uses a black-oil tin-spray process, no circuit would be shown on the front
  • Chips and electronics are on the back

Ink Screen

  • The top left part is the date
  • The top right part is the memo when tasks finished, you can make a mark
  • The button part is the quotes randomly obtained from the web

Features

  • Press the top right “up” & “down” touch button can move to the corresponding to-do list section
  • Click the confirm button, the task completion status that would be marked as complete, and double-click can mark as incomplete
  • Press the top right “left” & “right” touch button, can view the memo of the previous day or the day after.
  • Click the date under monthly calendar can see memos for different dates in the current month
  • Internet access via WIFI
  • The mobile phone or computer side can sync the relevant memos via the web page and can update and view the status at any time.

Architecture

  • Business process services
  • Web client
  • Device end

Since the business process services and the web client are about the server-side, so I won’t further go deep on this. This article will focus on the device end introduction.

Business Processing Services

Main features:

  • Monitoring and receiving MQTT messages
  • Topic’s resolution and forwarding
  • Data storage

Web Client

The current version has the features of:

  • User login via device number
  • Switch different dates to view memos
  • Add a memo
  • Modify memo
  • Delete memo

Device End

The hardware of the device is using a PCB as the main panel, the front only has an ink screen as a display, using a removable calendar box to divide the screen so that you can intuitively see the date of each month. The back of the PCB is welded with the relevant components and with a battery, it is separated from the wire, which makes the calendar like a real paper desktop calendar.

Hardware Specification

Architecture

desk_calendar/
├── Kconfig
├── README.md
├── SConscript
├── SConstruct
├── applications
│ ├── SConscript
│ ├── defines.h
│ ├── init.c
│ ├── keyboard.c
│ ├── logic.c
│ ├── main.c
│ ├── mqtt.c
│ ├── network.c
│ ├── qrcode_array.h
│ ├── screen.c
│ └── timer.c
├── makeimg.py
├── packages
│ ├── EasyFlash-v3.3.0
│ ├── SConscript
│ ├── airkissOpen-latest
│ ├── bs8116a-latest
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── SConscript
│ │ ├── inc
│ │ ├── samples
│ │ └── src
│ ├── cJSON-v1.0.2
│ ├── fal-v0.3.0
│ ├── lunar_calendar-latest
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── SConscript
│ │ ├── inc
│ │ ├── samples
│ │ └── src
│ ├── netutils-v1.1.0
│ ├── packages.dbsqlite
│ ├── pahomqtt-v1.1.0
│ ├── pkgs.json
│ ├── pkgs_error.json
│ └── u8g2-c-latest
├── ports
│ ├── SConscript
│ ├── easyflash
│ │ ├── SConscript
│ │ └── ef_fal_port.c
│ ├── fal
│ │ ├── SConscript
│ │ ├── fal_cfg.h
│ │ ├── fal_flash_port.c
│ │ └── fal_flash_sfud_port.c
│ └── wifi
│ ├── SConscript
│ ├── wifi_config.c
│ └── wifi_config.h
├── rtconfig.h
└── rtconfig.py

Logic Flowcharts

Software Package

'EasyFlash-v3.3.0' 
'airkissOpen-latest'
'bs8116a-e'
'cJSON-v1.0.2'
'fal-v0.3.0'
'lunar_calendar-'
'netutils-v1.1.0'
'pahomqt-v1.1.0'
'u8g2-c-latest'

Besides, I’ve also contributed a package, which is ‘bs8116a-last’:

‘bs8116a-last’ is an operating package for the Holtek touch chip.

Github Address

And for more information about RT-Thread, please visit www.rt-thread.io.

RT-Thread Contact Info:

An Open-Source Community-Powered Real-Time Operating System (RTOS) Project! We develop, we DIY, we create, we share, we explore this new IoT World together!