You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
### This project displays a daily C++ quiz question from cppquiz.org on an e-paper display powered by an ESP32 microcontroller. Questions are fetched via Google Apps Script connected to a Google Sheets backend, then rendered with clean formatting on a 7.5" E-Ink screen.
2
+
3
+
<palign="center">
4
+
<imgsrc="photos/onwifi.png"alt="E-paper device showing C++ quiz"width="400"/>
5
+
</p>
6
+
7
+
## 🚀 Features
8
+
9
+
- Displays C++ quiz question from a Google Sheet
10
+
- Works offline by caching the last successful question
11
+
- Uses deep sleep to save power (wakes up every hour)
12
+
- Shows Wi-Fi status for shown question (connected/disconnected) with an icon
13
+
- Fully customizable via Google Sheets + Apps Script backend
14
+
15
+
16
+
## 📦 Hardware
17
+
18
+
- ESP32
19
+
- Waveshare ESP32 Epaper Driver Board
20
+
- Waveshare 7.5" E-Paper Display
21
+
22
+
23
+
## 🧠 How It Works
24
+
25
+
- ESP32 boots and connects to Wi-Fi.
26
+
- It sends an HTTP request to a Google Apps Script endpoint.
27
+
- The Apps Script reads a unshown question from Google Sheets and returns it as plain text.
28
+
- ESP32 displays the question on the e-paper screen.
29
+
- If Wi-Fi fails, it loads the last cached question.
30
+
- Device goes into deep sleep and repeats after one hour.
31
+
32
+
33
+
## 🎉 To Build Yourself
34
+
35
+
-### Software
36
+
37
+
- Upload an Excel file ([questions.xlsx](cppquiz_questions.xlsx)) to Google Drive
The questions displayed on this device are sourced from [cppquiz.org](https://cppquiz.org/), which provides a comprehensive collection of C++ questions. However, the site does not offer an API to fetch individual questions by ID.
64
+
65
+
Instead, all questions are made available as a bulk JSON file at:
66
+
67
+
https://static.cppquiz.org/published.json
68
+
69
+
Due to the size ofthis dataset and the need for easier navigation, filtering, and tracking of displayed questions, I chose to manage the content through a Google Sheets with Google App Script.
0 commit comments