Skip to content

My personal physical reward system to keep me on track.

Notifications You must be signed in to change notification settings

paul-bokelman/prs

Repository files navigation

Physical Reward System (WIP)

A physical reward system based on the principle of classical conditioning.

Project motivation

I wanted a good and efficient todo application, but I also wanted to mess with a micro-controller that I had laying around.

In Action

IMG_1985.MOV

Features

  • Create, update and delete tasks (through the website)
  • Change task status (through the website & hardware)
  • View tasks by date
  • Simple tagging system to categorize tasks
  • Real-time updates
  • Task metrics (streak, total completed, completion rate, etc.)
  • Full hardware integration with websockets

How it works

The system comprises a React website, an Express server, and a micro-controller. Connected to the micro-controller are several buttons and LEDs, each triggering distinct events sent through a WebSocket to the server. Subsequently, the server broadcasts these events to all connected clients, which then update their state and present the new state to the user. With this setup, users can progress through their current tasks and mark them as completed without needing to interact directly with their computer.

To motivate users and incentivize task completion, the system employs a combination of a large red arcade button and a randomly selected retro completion sound. This approach aims to instill a sense of accomplishment and encourage users to stay engaged with their tasks.

The Hardware

prs

The hardware is composed of a NodeMCU micro-controller, a few buttons, and a few LED's. All of the programming was done in C++ using the Arduino IDE. Currently, the system is connected to a breadboard, but the final version will be soldered to a PCB and powered independently.

Connectivity LED Indicators

The statuses are the states that the system can be in. The system can be in one of the following states:

Connected IMG_1981

Connecting IMG_1982

Disconnected / Error IMG_1986

Changelog

All notable changes related to the hardware of the PRS are documented in this file.

Website demo

A basic demo of the website that doesn't utilize the hardware:

prs.rec.mov