Examination Project of my Education as Advanced Software Developer Embedded Systems
- Project Overview
- System Architecture UML Diagram
- Sequence Security Diagram
- Sequence Diagram
-
This project showcast a secure communication between a client and a server. The client is a desktop application written in Python 3.10.12 and the server is a ESP32 microcontroller written in C++.
-
The communication is secured using the following protocols:
- HMAC-SHA256
- AES-256
- RSA-2048
-
The client can send requests to the server and the server will respond to the client's requests.
-
The Following requests are implemented:
- Core Temperature reading
- LED control
-
The server can handle only one client session at a time.
-
Sessions will expire after 1 minute of inactivity.
- Python 3 with the following librarys: Tkinter, pyserial, python-mbedtls
- PlatformIO (for building and uploading firmware to the ESP32)
- ESP32 Used in this Project is a Olimax ESP32 Development Board
- Build the Server:
Execute
platformio run
in the server directory to compile the project.
-Using Makefile:
This project has a Makefile that can be used to build and run the project.
To build and run the server execute make server
in the root of the project.
To run the client execute make client
in the root of the project.
Additionally, you can run make clean
to remove all compiled files and cache files.
You also have the option to use make .PHONY
to run all the above commands in sequence. Starting with the server, then the client.
-Run the Server:
Execute platformio run --target upload
to upload the compiled code to the Olimax ESP32-EVB board.
-Run the Client:
Execute python3 -m client.src.client
in the root directory of the project to start the client application.
- The Desktop Client is a Python application with a basic GUI made with Tkinter.
- The servier is a ESP32 microcontroller that communicates with the client over serial communication.
- PlatformIO: An ecosystem for IoT development.
- C++ Standard Libraries: For core functionalities.
- ESP32-EVB Board Support: Specific libraries and drivers for the Olimax ESP32-EVB board.
- Python 3.10.12: The core programming language used.
- Tkinter: A Python library for creating the graphical user interface.
- Pyserial: Essential for handling serial communication.
- python-mbedtls: Provides security features like encryption.
- This project is licensed under the GNU License.
- Detailed Documentation:
Find comprehensive documentation for each module in the
Respective README file
folder. - Client README: Client README
- Server README: Server README
More about me can be found on my Website