Skip to content

Sampli1/E-miT

Repository files navigation

E-miT

Description

This project consists of a dashboard displayed on an E-Paper screen, showing the most important information of the day: weather conditions, rain probability, bus stops (in this case, using GTT stops), and a special calendar synchronization between two different calendars. The calendars can belong to the same person or two individuals who want to share their tasks quickly and efficiently on a daily basis.

The electronics, HTTP server, and HTTP client are implemented in C and C++, while the frontend of the configuration website is written in HTML, CSS, and JavaScript.

The tasks are managed using a multithreading approach with FreeRTOS.

Demo

TODO

Installation

Prerequisites

  • ESP-IDF installed and properly configured
  • ESP32 toolchain
  • Python
  • An ngrok account with a static domain configured
  • A Google Calendar account with API access enabled
  • A static IP configured for the ESP32 in the router
  • A Google account with a valid email and Google Calendar API enabled

Configuration

Software

  1. Rename .env.example to .env and start_ngrok.sh.example to start_ngrok.sh
  2. Run fetch.py, and in a separate shell, execute ./start_ngrok.sh
  3. Place a cacert.pem file containing the necessary SSL certificates in the spiffs directory to enable HTTPS communication

To compile and flash the firmware:

idf.py build
idf.py flash
idf.py monitor

Hardware

TODO

Project structure

The project is structured as follow:

  • components/
    • Adafruit-GFX/- A graphics library used for drawing on displays. Github
    • CalEPD/ - A library for controlling e-paper displays. Github
    • client/ - Manages communication with external APIs, including HTTPS requests and OAuth2 authentication.
    • env_var/ - Handles environment variables from a .env file
    • peripherals/ - TODO, handles sensors
    • screen/ - Manages the display logic, including rendering the timeline and updating visuals.
    • server/ - Implements the embedded HTTP server for handling requests
    • utils/ - Utility functions and helper modules used throughout the project.
  • main/ - Entry point
  • spiffs/ - Stores files in the SPIFFS (SPI Flash File System), used for configuration and assets
  • partitions.csv - Defines the partition table for the firmware.
  • .env.example - Example of .env
  • feth.py - Converts .env into a header file
  • start_ngrok.sh.example - Performs port forwarding to obtain the redirect code from the Google API

Acknowledgments

A special thanks to:

License

This project is licensed under the GNU General Public License v3.0 (GPL-3.0).
You are free to use, modify, and distribute this software, but any modifications must also be released under the same license.

See the LICENSE file for more details.

About

E-miT

Topics

Resources

License

Stars

3 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors