Skip to main content
Version: ACS CC

Smart Desk Assistant

A small device to display and manage notifications from an external server.

info

Author: Andrei-George Zdrali
GitHub Project Link: https://github.com/UPB-PMRust-Students/proiect-AndreiZdrali

Description

The Smart Desk Assistant shows notifications pulled from a server. Users can scroll through them, delete them, and get buzzer alerts for timer-based reminders.

Motivation

I wanted a simple and useful device to help manage my tasks without being distracted by my laptop or phone. Also, seems like a good project to practice networking in embedded programming.

Architecture

Main components:

  • Server: Hosts the notifications and sends them on request.
  • Raspberry Pi Pico W 2: Connects to the server over WiFi, manages notifications, updates the display, and handles button inputs.
  • OLED Display (SSD1306 I2C): Displays the notifications.
  • Buttons: Navigate through and delete notifications.
  • Buzzer: Alerts when timer notifications trigger.

Connections:

  • WiFi connects the Pico W 2 to the Server.
  • I2C connects Pico W 2 to the OLED Display.
  • GPIOs connect Pico W 2 to the Buttons and Buzzer.

Log

Week 5 - 11 May

Week 12 - 18 May

Week 19 - 25 May

Hardware

  • Raspberry Pi Pico W 2 for networking and control.
  • SSD1306 I2C OLED Display for showing notifications.
  • Buzzer for sound alerts.
  • Three Push Buttons for user input.

Schematics

Place your KiCAD schematics here.

DeviceUsagePrice
2x Raspberry Pi Pico W 2Main microcontroller80 RON
SSD1306 I2C OLED DisplayDisplay notifications40 RON
BuzzerSound alert for timers1 RON
3x Push ButtonsNavigate/delete notifications1 RON
2x BreadboardAid development5 RON
Jumper WiresConnect components8 RON

Software

LibraryDescriptionUsage
embassyAsync embedded frameworkMain async runtime
defmtLogging for embeddedDebugging output
embedded-halHardware abstraction layerInterfaces for GPIO, I2C, etc
ssd1306Driver for SSD1306 displaysDisplay text and notifications
embassy-netAsync network stackConnect to server over WiFi
  1. link
  2. link ...