Skip to content

ChrisMendoza99/Graduate-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

11 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“‘ ESP32-C5 Multi-Sensor Hub 🌐

This project implements a comprehensive multi-sensor hub using the ESP32-C5 microcontroller. It integrates data from various sensors (temperature, humidity, IMU, ambient light), transmits this data over a CAN bus (with optional encryption using Ascon-128), and provides Bluetooth Low Energy (BLE) connectivity for remote access. The system also includes an LED strip for visual feedback.

πŸš€ Key Features

  • Multi-Sensor Integration: Reads data from AHT20 (temperature/humidity), LSM6DSO32 (IMU), and VEML7700 (ambient light) sensors. 🌑️
  • CAN Bus Communication: Transmits sensor data over a CAN bus using the TWAI controller. πŸš—
  • Encryption Options: Supports CAN bus message encryption using Ascon-128 algorithms for secure communication. πŸ”’
  • Bluetooth Low Energy (BLE): Enables remote access to sensor data via BLE using the NimBLE stack. πŸ“±
  • LED Strip Control: Provides visual feedback through an LED strip, indicating system status or sensor readings. πŸ’‘
  • User-Friendly Flashing: Includes a bash script for easy flashing and monitoring of ESP32 devices. ⚑

πŸ› οΈ Tech Stack

  • Microcontroller: ESP32-C5
  • Real-Time Operating System (RTOS): FreeRTOS
  • Wireless Communication:
    • Bluetooth: NimBLE
  • Serial Communication:
    • CAN: TWAI (Two-Wire Automotive Interface)
  • Sensors:
    • AHT20 (Temperature & Humidity)
    • LSM6DSO32 (IMU - Accelerometer & Gyroscope)
    • VEML7700 (Ambient Light)
  • Encryption:
    • AES-CCM (using mbedtls)
    • Ascon-128
  • Programming Language: C
  • Build System: CMake, ESP-IDF
  • Component Manager: ESP-IDF Component Manager
  • LED Strip Library: espressif/led_strip
  • Bash Scripting: For device flashing and monitoring.

πŸ“‚ Project Structure

β”œβ”€β”€ CMakeLists.txt
β”œβ”€β”€ main
β”‚   β”œβ”€β”€ canaes
β”‚   β”‚   β”œβ”€β”€ canaes.c
β”‚   β”‚   └── canaes.h
β”‚   β”œβ”€β”€ canascon
β”‚   β”‚   β”œβ”€β”€ canascon.c
β”‚   β”‚   └── canascon.h
β”‚   β”œβ”€β”€ esp32_ascon
β”‚   β”‚   β”œβ”€β”€ ascon.h
β”‚   β”‚   β”œβ”€β”€ core.c
β”‚   β”‚   β”œβ”€β”€ decrypt.c
β”‚   β”‚   β”œβ”€β”€ encrypt.c
β”‚   β”‚   └── constants.h
β”‚   β”œβ”€β”€ bluetooth
β”‚   β”‚   β”œβ”€β”€ ble_fdcan_sens.h
β”‚   β”‚   └── gatt_svr.c
|   |   └── esp_ble.c
β”‚   β”œβ”€β”€ i2c_devices
β”‚   β”‚   β”œβ”€β”€ AHT20.h
β”‚   β”‚   β”œβ”€β”€ lsm6d.h
β”‚   β”‚   └── veml.h
β”‚   β”œβ”€β”€ grad_proj.c
β”‚   └── idf_component.yml
β”œβ”€β”€ device_selector.sh
└── README.md

πŸ“Έ Screenshots

App Screenshot App Screenshot

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

About

ESP32-C5 Multi-Sensor Hub with CAN (TWAI) Communication

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published