https://github.com/jprusik/mini-ticker
A mini ticker display for your desk; written in Python for the Raspberry Pi Zero
https://github.com/jprusik/mini-ticker
bme280 bmp280 check-in checkin desk dht11 dht22 display nfc office oled python raspberry-pi raspberrypi raspbian rc522 rfid rpi ssd1306 workplace
Last synced: 2 months ago
JSON representation
A mini ticker display for your desk; written in Python for the Raspberry Pi Zero
- Host: GitHub
- URL: https://github.com/jprusik/mini-ticker
- Owner: jprusik
- Created: 2020-05-25T16:03:50.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-10-03T23:07:34.000Z (over 1 year ago)
- Last Synced: 2024-12-28T07:44:11.769Z (4 months ago)
- Topics: bme280, bmp280, check-in, checkin, desk, dht11, dht22, display, nfc, office, oled, python, raspberry-pi, raspberrypi, raspbian, rc522, rfid, rpi, ssd1306, workplace
- Language: Python
- Homepage: https://www.classynemesis.com/blog/desk-display/
- Size: 2.05 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Mini Ticker
This project is a purpose-built solution for retrieving and displaying various information that is important to the author.
Additionally, it has configured interfaces (button presses, NFC/RFID card/tag scan) which can trigger arbitrary actions (e.g. send magic packet). It aims to have a small footprint, with minimal maintenance.
The code provided here is based on examples ([1](https://github.com/adafruit/Adafruit_CircuitPython_SSD1306/tree/master/examples), [2](https://github.com/ondryaso/pi-rc522/tree/master/examples)) from the [pi-rc522](https://github.com/ondryaso/pi-rc522) and [adafruit-circuitpython-ssd1306](https://github.com/adafruit/Adafruit_CircuitPython_SSD1306) projects.
## Requirements
- Raspberry Pi computer with installed header pins and power source
- [compatible](https://www.raspberrypi.org/documentation/installation/sd-cards.md) microSD/SD card
- SSD1306-based 128x64 or 128x32 pixel OLED display (I2C)
- (Optional) RC522 module (for RFID/NFC communication)## Setup
- [Install Raspbian (Lite)](https://www.raspberrypi.org/downloads/raspbian/) on a microSD/SD card
- Set up the Raspberry Pi to run headless and connect it to your network ([guide](https://www.raspberrypi.org/documentation/configuration/wireless/headless.md))
- [ssh into the Raspberry Pi](https://www.raspberrypi.org/documentation/remote-access/ssh/):
- Do `sudo raspi-config` and set up:
- "Interfacing Options" > "Interfacing Options" > "I2C" > select "Yes"
- (Optional) "Localisation Options"
- (Optional) "Change User Password"
**Important!** Because we're using a Raspberry Pi, the default user is `pi` with a password of `raspberry` - it is strongly advised to change the password, at minimum.
- Install dependencies:```shell
sudo apt update && sudo apt-get install git python3-pip python3-dev libtiff5-dev libopenjp2-7-dev
```- (Optional) Enable Wake-on-LAN packet sending `sudo apt-get install etherwake`
- (Optional) If using a Temperature / Humidity sensor, do `sudo apt-get install libgpiod2`
- Clone this repo and `cd mini-ticker`
- Install required packages with `pip3 install -r requirements.txt`
- (Optional) Edit `/boot/config.txt` at the line `dtparam=i2c_arm=on` and replace it with:```shell
dtparam=i2c_arm=on,i2c_arm_baudrate=400000
```- (Optional) If using an RC522 module for RFID/NFC communication, edit `/boot/config.txt` to include the following settings:
```settings
device_tree_param=spi=on
dtoverlay=spi-bcm2708
dtparam=spi=on
```- Edit or create `.env` in the same directory as `status_display.py` with the following contents:
```shell
DHT11_PIN=4
```## Running the code
Once the `ticker.py` script is executed, it will continue to run until the process is terminated. You can manually execute the script on demand, or automatically execute on shell start by editing `/etc/profile` and appending the following to the end of the file (update the file path as needed):
```shell
python3 /home/pi/mini-ticker
```Alternatively, run any given script as a service:
- Run `sudo systemctl --force --full edit mini-ticker.service` and enter the config:
```config
[Unit]
Description=Mini Ticker
Requires=network.target
After=multi-user.target[Service]
WorkingDirectory=/home/pi/mini-ticker
User=pi
ExecStart=python3 .
ExecStopPost=python3 -c 'import ticker; ticker.shutdown()'[Install]
WantedBy=multi-user.target
```- Enable the service with `sudo systemctl enable --now mini-ticker.service`, and start it with `sudo systemctl start mini-ticker.service`
Other scripts that listen for triggers (e.g. card scan, button press) can be executed in the same way.
## Notes
- This build assumes Raspberry Pi Zero hardware - no other Raspberry Pi hardware has been tested with this code.
- [Ubuntu Font Family](https://design.ubuntu.com/font/) is included in `/fonts` by default. If you wish to use a different font, add them to the `/fonts` directory and update the import references in `ticker.py` (note, line spacing currently presumes Ubuntu fonts and may require adjustments when using other fonts).
- Tip: You can access the the target pi on your network using the pi's network DNS reference (`raspberrypi` by default). This is particularly useful if your network has dynamic IP address assignment; you can simply `ssh [email protected]`)### Supported Hardware
| name | description |
| --- | --- |
| bme280 | measures temperature, pressure, altitude, and relative humidity |
| bmp280 | measures temperature, pressure, and altitude |
| dht11 | measures temperature and relative humidity |
| dht22 | measures temperature and relative humidity |
| RC522 | Near-Field Communication (NFC) module |
| SSD1306 | 128 x 64 dot matrix OLED |