Skip to content

Latest commit

ย 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

DotNote ๐Ÿ“Ÿ

A simple and elegant web interface to display scrolling messages on MAX7219 LED matrix displays using Raspberry Pi

Python License Platform AI Enhanced

Buy Me A Coffee

DotNote turns your Raspberry Pi and LED matrix into a customizable message display. Perfect for door signs, notifications, reminders, and creative projects. Control it from any device on your network through a simple web interface or API.

๐ŸŽฌ Demo

DotNote web interface

DotNote in action

๐Ÿ“‘ Table of Contents

๐Ÿ”— Project Links

โœจ Features

  • ๐ŸŒ Web-Based Control - Update messages from any browser on your network
  • ๐Ÿ“ฑ Simple API - RESTful endpoint for easy integration
  • ๐Ÿ”Š Audio Feedback - Optional buzzer notification when messages update
  • ๐Ÿ“ Message Logging - Automatic logging with timestamps and sender IPs
  • โš™๏ธ Fully Configurable - Easy-to-customize parameters at the top of the code
  • ๐Ÿ”„ Smooth Scrolling - Adjustable scroll speed for optimal readability
  • ๐Ÿš€ Lightweight - Runs efficiently on Raspberry Pi Zero 2W and above

๐Ÿ“‹ Requirements

Hardware

  • Raspberry Pi (Zero 2W, 3, 4, or 5)
  • MAX7219 LED Matrix Display (4x 8x8 modules = 32x8 display)
  • Buzzer (optional, any GPIO-compatible buzzer)
  • Jumper wires
  • MicroSD card with Raspberry Pi OS
  • Power supply

Software

  • Raspberry Pi OS (tested on latest version)
  • Python 3.12 (also works with 3.7+)
  • SPI enabled on Raspberry Pi

๐Ÿ”Œ Wiring

MAX7219 LED Matrix

MAX7219 Pin Raspberry Pi Pin GPIO/Function Physical Pin
VCC 5V Power 5V Pin 2 or 4
GND Ground GND Pin 6
DIN MOSI GPIO 10 Pin 19
CS CE0 GPIO 8 Pin 24
CLK SCLK GPIO 11 Pin 23

Buzzer (Optional)

Buzzer Pin Raspberry Pi Pin GPIO Physical Pin
Positive GPIO 23 GPIO 23 Pin 16
Negative Ground GND Pin 14

Note: The buzzer GPIO pin can be changed in the configuration section of dotnote.py

๐Ÿš€ Installation

1. Enable SPI

sudo raspi-config

Navigate to: Interface Options โ†’ SPI โ†’ Enable

Reboot your Raspberry Pi:

sudo reboot

2. Install System Dependencies

sudo apt-get update
sudo apt-get install -y python3-pip python3-dev git

3. Clone and Install

# Clone the repository
git clone https://github.com/yourusername/dotnote.git
cd dotnote

# Install Python dependencies
pip3 install -r requirements.txt

4. Run DotNote

python3 dotnote.py

The server will start on port 5000. Access it from any device on your network:

http://[raspberry-pi-ip]:5000

To find your Raspberry Pi's IP address:

hostname -I

โš™๏ธ Configuration

All configuration options are at the top of dotnote.py. Edit these parameters to customize DotNote:

# LED Matrix Configuration
CASCADED_DEVICES = 4          # Number of 8x8 matrices (4 = 32x8 display)
BLOCK_ORIENTATION = -90       # Rotation: -90, 0, 90, 180
ROTATE = 0                    # Display rotation: 0, 1, 2, 3
BRIGHTNESS = 5                # Brightness: 0-15

# Display Behavior
SCROLL_SPEED = 0.05           # Seconds between scroll steps (lower = faster)
DEFAULT_MESSAGE = "Welcome to DotNote!   "
MESSAGE_SPACING = "   "       # Spacing between message loops

# Buzzer Configuration
BUZZER_ENABLED = True         # Enable/disable buzzer
BUZZER_PIN = 23               # GPIO pin for buzzer
BEEP_DURATION = 0.2           # Beep length in seconds
BEEP_COUNT = 2                # Number of beeps per update

# Server Configuration
SERVER_HOST = '0.0.0.0'       # Listen on all interfaces
SERVER_PORT = 5000            # Web server port

# Logging Configuration
LOG_FILE = "messages.log"     # Log file location
LOG_ENABLED = True            # Enable/disable logging

๐ŸŒ API Usage

Update Message

curl "http://raspberry-pi-ip:5000/update?message=Hello%20World"

Response:

{
  "message": "Message updated"
}

Error Response:

{
  "error": "No valid message provided"
}

Python Example

import requests

response = requests.get('http://192.168.1.100:5000/update', 
                       params={'message': 'Hello from Python!'})
print(response.json())

๐Ÿ”ง Running as a Service

To make DotNote start automatically on boot, create a systemd service:

sudo nano /etc/systemd/system/dotnote.service

Add the following content (adjust paths as needed):

[Unit]
Description=DotNote LED Matrix Display
After=network.target

[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/dotnote
ExecStart=/usr/bin/python3 /home/pi/dotnote/dotnote.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Enable and start the service:

sudo systemctl daemon-reload
sudo systemctl enable dotnote.service
sudo systemctl start dotnote.service

Check service status:

sudo systemctl status dotnote.service

๐Ÿ’ก Usage Ideas

  • ๐Ÿ“Œ Office Door Signs - "In a Meeting", "Available", "Do Not Disturb"
  • โ˜• Coffee Shop Menus - Daily specials and announcements
  • ๐Ÿ  Smart Home - Display sensor data, weather, or notifications
  • ๐ŸŽ‰ Event Spaces - Welcome messages and event information
  • ๐Ÿ› ๏ธ Workshop Status - Equipment availability, safety reminders
  • ๐Ÿ›’ Retail - Promotional messages and customer information
  • ๐ŸŽฎ Gaming Rooms - Scores, status updates, and notifications
  • ๐Ÿ‘ถ Kids' Rooms - Fun messages, reminders, and countdowns

๐Ÿ› Troubleshooting

SPI not enabled

If you see SPI-related errors:

sudo raspi-config
# Navigate to: Interface Options โ†’ SPI โ†’ Enable
sudo reboot

LED matrix not displaying

  1. Check all wiring connections
  2. Verify SPI is enabled: lsmod | grep spi
  3. Test SPI devices: ls /dev/spi* (should show /dev/spidev0.0)
  4. Try adjusting BLOCK_ORIENTATION and ROTATE parameters

Display shows garbled text

Adjust these parameters in dotnote.py:

  • BLOCK_ORIENTATION: Try -90, 0, 90, or 180
  • ROTATE: Try values 0, 1, 2, or 3

Can't access web interface

  1. Ensure Pi and your device are on the same network
  2. Check if service is running: sudo systemctl status dotnote
  3. Verify firewall settings allow port 5000
  4. Try accessing via IP instead of hostname

Buzzer not working

  1. Check buzzer wiring (positive to GPIO 23, negative to GND)
  2. Verify BUZZER_ENABLED = True in configuration
  3. Test with a different GPIO pin by changing BUZZER_PIN

๐Ÿ“ Project Structure

dotnote/
โ”œโ”€โ”€ dotnote.py           # Main application
โ”œโ”€โ”€ requirements.txt     # Python dependencies
โ”œโ”€โ”€ templates/
โ”‚   โ””โ”€โ”€ index.html      # Web interface
โ””โ”€โ”€ messages.log        # Message log (generated)

๐Ÿ”— Project Links

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

๐Ÿ“ License

This project is licensed under the MIT License.

๐Ÿ™ Acknowledgments

  • Built with luma.led_matrix library
  • Flask web framework
  • Raspberry Pi community

Made with โค๏ธ for makers and tinkerers

If you found this project useful, please give it a โญ on GitHub!

About

DotNote is a personal Note Banner using python and a MAX7219 Matrix LED

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages