E-Ink Desktop Calendar DIY Project——iiv
✔ Physical DisplayFront View
Back View
Creating a desktop E-Ink calendar not only allows you to check the date and weather, but also brings a sleek and tech-savvy aesthetic to your workspace.
2. Designing the PCB:The PCB design is available on LCSC Open Source: Project - LCSC Open Source Hardware Platform.(1) Software Tools
The PCB was designed using LCSC EDA Pro, a powerful and user-friendly PCB design tool that also offers free prototyping!
(2) Project Parameters
The M61 module serves as the main controller for refreshing the e-ink display and reading sensor data.
An SHT40 temperature and humidity sensor collects environmental data.
A DS1302 provides time info (though it's somewhat redundant).A GN4054 charges the lithium battery, with pin 1 indicating the charging status.
A TF card slot is included on the board, but it's not currently in use.
The design includes battery voltage detection with a low - battery alert.
An infrared emitter is reserved, but the audio function is disabled.
A CH340X USB - to - serial converter enables auto - programming without cold starts.
An RS2227 chip allows switching between USB and UART, though this feature isn't currently used.
A rotary switch: press down for boot mode; other directions can be customized. In the code, moving it right wakes the MCU to refresh the screen.
A reset button: pressing it resets the MCU.
A sliding switch: turning it off cuts the 3V3 power, but the RTC keeps running.
(3) Ordering the PCB
Export the Gerber files of the designed PCB and place an order with JLCPCB.
3. Soldering the PCB
(1) Preparing Materials
M61 module, CH340, SHT40, resistors, capacitors, inductors, etc.
(2) Soldering Process
For the e-ink display boost circuit, use high - voltage capacitors rated at least 25V, preferably 50V for a safety margin.
The 0402 - packaged components aren't closely spaced. Avoid bridging when soldering the FPC connector. After soldering, check for shorts before powering on.
4. Writing Code: Bringing the Calendar to Life
(1) Setting Up the Development Environment
Use the Bouffalo SDK from Ai - Thinker's repository for development. We may switch to the Bouffalo Git repository's SDK later, as it has many bug fixes and new demos.
(2) Code Logic
In the project's user_config.h, define macros to configure Wi - Fi settings. I've added comments for clarity. The firmware and source code are in the attachment. After flashing the firmware, you can configure parameters via the serial port.
The e-ink display driver is ported from Waveshare, with drivers for two 4.2 - inch screens. Other parts are self - written, though not very standardized.
Currently, there's no other way to connect to the network. In the future, we may add a mini - program for networking and screen brushing. But you can configure parameters via the serial port at a baud rate of 2M (2000000).
Command format: [set ssid pass token per_sleep_time], e.g., [set MI - WF 1234567 ABDCDEFG 0]
Parameter 1: Wi - Fi account
Parameter 2: Wi - Fi password
Parameter 3: Required for obtaining lunar calendar info; you need to apply for it -- click here.
Parameter 4: Refresh interval in minutes. For example, 120 means a refresh every 2 hours. If set to 0, it refreshes once daily at 12 PM. The internal clock may be inaccurate, possibly refreshing as late as 1 AM. Our test shows an error within 10 minutes. We may later replace the RTC chip with one that uses interrupt - based MCU wake - up for better accuracy.
We use a free weather API that gets local city weather based on network location. The weather info may not be very precise, but it's close enough.
Due to the incomplete font library, the calendar only shows statutory holidays. It displays "Workday" from Monday to Friday, "Weekend" on Saturday and Sunday, and statutory holidays by name.
If the battery is low, the battery icon in the top - left corner turns sad, with a text prompt to charge. Once you plug in the USB for charging, it shows the charging status.
Currently, the sleep power consumption isn't ideal. With a 500mA lithium battery, the standby time might be up to 10 - 15 days. After fixing two errors, the standby time is now at least 20 days.
If the network connection fails or weather info retrieval fails, it retries every 120 minutes. You can modify this in the code. It's advisable to use a battery with larger capacity.
5. 3D Modeling
(1) Design Concept
To enhance the appearance of the e-ink calendar and meet the DIY activity requirements, I designed a case using Fusion 360. As a 3D printing novice, I opted for a one - piece shell to qualify for JLCPCB's free 3D printing. The parts need to be separated with a knife upon arrival. To avoid errors, the gaps are initially large but have been adjusted to be smaller in the attachment.
(2) Modeling Process
First, export the PCB model from LCSC EDA and import it into the modeling software. Create a new component for reference. For safety, I also modeled the screen.
(3) Ordering the Print
Export the 3D model as an STL file and order from JLCPCB. If you have a 3D printer, you can slice and print it directly. I've confirmed that JLCPCB offers free printing. After receiving the model, smooth the support areas with sandpaper for a better finish.
(4) Assembly
Insert the screen into the bottom slots. If the slots are too tight, use the included sandpaper to widen them.
Ensure the screen fits properly before final insertion to avoid damage.
The PCB is also inserted and secured with an M2 screw at one end. The rear cover is fixed with another screw.
As I don't own a 3D printer, I rarely use modeling software. The case design is quite basic, but you're welcome to create your own.
Comments