Project 3.14 — Everything Important, at a Glance

by Mr_Electronaut in Circuits > Raspberry Pi

654 Views, 9 Favorites, 0 Comments

Project 3.14 — Everything Important, at a Glance

projectcovr314.png

Project 3.14 is a smart e-paper desk companion built using the Raspberry Pi Pico 2 W. The idea behind this project was to create a distraction-free dashboard that shows the most useful daily information in a clean and elegant way. Instead of checking a phone repeatedly, users can glance at their desk and instantly view the current time, weather, air quality, and upcoming calendar events.

Designed for productivity and minimal distraction, Project 3.14 uses a low-power e-paper screen that remains readable in any lighting condition while consuming very little energy. Real-time data is fetched over Wi-Fi, and the interface is optimized into three clean sections: clock and date, environmental insights, and schedule management.

Beyond being a dashboard, Project 3.14 celebrates the spirit of Raspberry Pi—innovation, learning, and practical problem solving. It demonstrates how affordable hardware can create meaningful everyday technology that improves focus, organization, and awareness.

Supplies

pico2w.png
epd.png
WhatsApp Image 2026-04-23 at 9.09.46 PM.jpeg
  1. Raspberry Pi Pico 2W
  2. Waveshare 2.7inch e-Paper Display Module
  3. Jumper Wires
  4. Soldering Iron
  5. 3mm PVC Sunboard
  6. Paper Cutter
  7. All purpose Glue
  8. Wallpaper Sheet

Connections

WhatsApp Image 2026-04-23 at 9.56.38 PM (2).jpeg

E-Paper SPI Wiring

E-Paper -------- Pico Pin

VCC -- 3.3V

GND-- GND

DIN -- GP11 (MOSI)

CLK -- GP10 (SCK)

CS -- GP9

DC -- GP8

RST -- GP12

BUSY -- GP13


2.7" E-paper Specs

  1. Resolution: 176 × 264
  2. Black / White display
  3. Ultra low power
  4. Sunlight readable
  5. Image remains visible without power

Why E-paper?

Perfect for desk dashboards because:

  1. No eye strain
  2. Always visible
  3. Minimal power use
  4. Elegant look

Raspberry Pi Pico 2 W Role

The Raspberry Pi Pico 2 W handles:

  1. WiFi connectivity
  2. API requests
  3. Time calculations
  4. Display rendering
  5. Calendar sync
  6. Partial refresh updates

Designing the Enclosure

WhatsApp Image 2026-04-23 at 9.56.37 PM (1).jpeg
WhatsApp Image 2026-04-23 at 9.56.38 PM (1).jpeg
WhatsApp Image 2026-04-23 at 9.56.39 PM.jpeg
WhatsApp Image 2026-04-23 at 9.56.39 PM (2).jpeg
WhatsApp Image 2026-04-23 at 9.56.39 PM (1).jpeg

To give the project a polished and finished appearance, a custom enclosure was built using PVC Sunboard. The enclosure was designed as a rectangular desk frame that could be placed on a table.

A front bezel opening was carefully cut so only the visible area of the e-paper display remains exposed, creating a professional product-like appearance.

After preparing the enclosure, the components were mounted inside. The display panel was fixed behind the front cutout using glue gun. The Raspberry Pi Pico 2 W was mounted inside the rear cavity with easy access to the USB port for programming and power input.

This stage transformed loose electronics into a finished device.

Installing Thonny IDE

thonny1.png
intrprstr.png

Once the hardware assembly was complete, the next step was selecting the right software environment to program the Raspberry Pi Pico 2 W.

The Pico supports several programming methods, each suited for different skill levels and project types.

  1. Thonny IDE + MicroPython
  2. VS Code + Pico SDK (C/C++)
  3. Arduino IDE
  4. CircuitPython

For Project 3.14, Thonny was chosen because it offers the fastest and simplest development experience for the Raspberry Pi Pico 2 W. Unlike more complex environments that require toolchains, compilation, and advanced setup, Thonny works almost immediately after installation and connects directly to the Pico.

It provides an easy code editor, built-in shell for live debugging, and direct file transfer to the board, which was especially useful while repeatedly testing WiFi connectivity, API responses, screen layouts, and e-paper refresh behavior. Thonny made development faster, more efficient, and much more beginner-friendly while still being powerful enough for a complete connected IoT product.

You can download Thonny from this link and get started with this tutorial.

After installing Thonny, the next step is to configure it to communicate with the Raspberry Pi Pico 2 W. Open Thonny and go to the Run menu, then choose Select Interpreter. From the interpreter options, select MicroPython (Raspberry Pi Pico). After that, choose the correct serial/COM port to which the Pico is connected via USB.


Install MicroPython UF2 Firmware File

The next step is to upload the MicroPython UF2 firmware file to the Raspberry Pi Pico 2 W. This step is essential because the Pico does not run MicroPython by default unless the firmware is installed. The UF2 file acts as the operating environment that allows the board to understand and execute Python code.

You can download the UF2 file for PICO 2W from this link and follow the instructions to install it in pico 2W.

Once flashed, the Pico can be programmed directly from Thonny using simple Python scripts instead of lower-level compiled languages.

Code Structure

The software was divided into separate files to keep the project organized.

main.py

This file contains the main dashboard logic:

  1. connect to WiFi
  2. fetch live data
  3. draw the screen
  4. update clock periodically

e_ink_library.py

This custom driver file controls the e-paper display:

  1. initialization
  2. rotation modes
  3. full refresh
  4. partial refresh

logo.py

This file stores bitmap icon arrays such as weather icon, calendar icon, Pi logo etc.


You need python library for your e-paper display, download the sample code from the waveshare website.


Creating Icons

img2cpp.png
calendar (1).png
sun (2).png

Since MicroPython cannot directly load PNG or JPG images efficiently, icons were converted into monochrome byte arrays. Small icons such as weather, calendar, and decorative symbols were resized and converted into 1-bit black-and-white graphics.

These were then embedded into Python files as byte arrays and drawn directly on the framebuffer.

I have used image2cpp online tool to convert .png image to byte arrays.

Building the Dashboard Layout

WhatsApp Image 2026-04-23 at 11.12.04 PM.jpeg

The display was divided into three logical sections:

Top Left Section shows current time in large font, date & rotating Pi-themed messages.

Bottom Left Section shows weather icon, temperature, description, humidity & AQI.

Right Section shows Google Calendar events for today & tomorrow.

Rounded rectangles were drawn around each section to create a premium dashboard layout.

Connecting the Pico With Wi-Fi

Since the project displays live online information such as weather and calendar events, the Raspberry Pi Pico 2 W must first connect to a WiFi network. The built-in wireless capability of the Pico 2 W makes it possible to access web APIs without any external module.

A dedicated function was created to initialize the wireless interface, activate station mode, and connect using the user’s SSID and password. The program waits until a successful connection is established before moving to the next stage.

def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
while not wlan.isconnected():
time.sleep(1)
print("WiFi Connected")

Integrating Live Weather Data

wthr.png

Weather data is one of the most practical features of the dashboard. Instead of checking a phone app, the user can glance at the display and instantly view current outdoor conditions.

The project uses the OpenWeather API to retrieve:

  1. Temperature
  2. Humidity
  3. Weather description
  4. Geographic coordinates
  5. Timezone offset

The data is requested in JSON format and parsed inside MicroPython.

def fetch_weather():
global TEMP, HUM, DESC, TZ_OFFSET
global LAT, LON
r = urequests.get(URL)
data = r.json()
r.close()
TEMP = str(int(data["main"]["temp"]))
HUM = str(data["main"]["humidity"]) + "%"
DESC = data["weather"][0]["description"]
TZ_OFFSET = data["timezone"]
LAT = data["coord"]["lat"]
LON = data["coord"]["lon"]


Air Quality Index (AQI) Integration

To make the dashboard more useful for health and outdoor planning, AQI information was added. Using the latitude and longitude received from the weather API, the project makes a second request to the OpenWeather Air Pollution API.

The numeric value is converted into readable text.

def fetch_aqi():
global AQI, AQI_TXT
url = "http://api.openweathermap.org/data/2.5/air_pollution?lat={}&lon={}&appid={}".format(
LAT, LON, API_KEY
)
r = urequests.get(url)
data = r.json()
r.close()
level = data["list"][0]["main"]["aqi"]
AQI = str(level)

Google Calendar Integration

scriptgoogle.png
WhatsApp Image 2026-04-23 at 11.38.31 PM.jpeg

One of the strongest productivity features of Project 3.14 is Google Calendar support. Instead of opening a laptop or phone, users can instantly view their upcoming schedule.

Direct Google login on MicroPython devices is resource-intensive, so a lightweight solution was used: Google Apps Script.

The Apps Script reads the personal Google Calendar and publishes a simplified text feed. The Pico downloads that feed and displays upcoming events.

Check the attached script and paste it in the google script online tool. Click on Deploy, you will get an URL to be used in the python code to fetch the calender updates.

Live Clock and Partial Updates

A static display would not feel complete without a live clock. Project 3.14 updates the time every minute while avoiding unnecessary full-screen refreshes.

Because e-paper displays refresh more slowly than LCD screens, partial updates were used to redraw only the changing clock area when possible.

def get_time_date():
t = utime.time() + TZ_OFFSET
now = utime.localtime(t)
hour = now[3]
minute = now[4]
TIME_TXT = "{:02d}:{:02d}".format(hour, minute)
return TIME_TXT

if minute != last_minute:
update_clock_area()
epd.display_partial()

Final Result!

WhatsApp Video 2026-04-23 at 11.36.51 PM.gif
WhatsApp Image 2026-04-23 at 11.51.39 PM.jpeg

Once all hardware connections, APIs, libraries, and code files are ready, the final step is to upload the project files to the Raspberry Pi Pico 2 W and run the dashboard using Thonny.

All required files such as: main.py, e_ink_library.py, logo.py should be saved directly to the Pico storage through Thonny.

After uploading, open main.py and click the Run button. Thonny will immediately execute the script and display live logs in the Shell window.

Once the script starts successfully, the Pico connects to WiFi and begins fetching live online data. The latest weather conditions, AQI values, timezone information, and Google Calendar events are downloaded automatically.

You can find all the required files attached here.

Happy Building! 😊