Electronics Engineering Project — Year 3, Term 2
A voice-controlled in-vehicle infotainment and control system built with Arduino, CAN Bus communication (MCP2515), and a TFT display. The system allows drivers to interact with in-car functions hands-free through voice commands, with data transmitted between nodes via the CAN protocol.
- Overview
- Features
- Hardware Requirements
- System Architecture
- Repository Structure
- Getting Started
- CAN Bus Configuration
- Dependencies & Libraries
- Authors
This project implements a voice-controlled interface for an in-vehicle system. A microcontroller receives voice commands, processes them, and transmits control signals over a CAN Bus network to peripheral nodes (e.g., display unit, actuator controllers). The system mirrors how modern automotive ECUs communicate — reliably and in real time.
- 🎙️ Voice Command Recognition — Hands-free control of in-vehicle functions
- 🖥️ TFT Display Output — Visual feedback rendered on a TFT screen
- 🔗 CAN Bus Communication — Inter-node messaging via MCP2515 CAN controller (CAN 2.0B)
- ⚡ Real-Time Data Transmission — Low-latency message passing between system nodes
- 🔧 Modular Node Design — Separate transmitter and receiver nodes connected via CAN_H / CAN_L
| Component | Description |
|---|---|
| Arduino (Uno / Mega) | Main microcontroller for each node |
| MCP2515 Module | CAN Bus controller with TJA1050 transceiver |
| TFT Display | Visual output screen (ILI9341 or compatible) |
| Microphone / Voice Module | Voice input capture |
| Jumper Wires & Breadboard | Prototyping connections |
| 120Ω Resistor | CAN Bus line termination (one per bus end) |
┌─────────────────────┐ CAN Bus ┌─────────────────────┐
│ Voice Input Node │ ───── CAN_H / CAN_L ─── │ Display/Output Node │
│ │ │ │
│ Microphone │ │ TFT Display │
│ │ │ │
│ MCP2515 (TX) │ │ Sn65hvd230 (RX) │
└─────────────────────┘ └─────────────────────┘
- Node 1 (Transmitter): Captures and processes voice commands, encodes them as CAN frames, and transmits over the bus.
- Node 2 (Receiver): Receives CAN frames, decodes commands, and updates the TFT display or triggers corresponding actions.
Voice-Controlled-In-Vehicle-System/
├── Code/ # Arduino source code for all nodes
├── Document/ # Project documentation, reports, schematics
├── .vscode/ # VS Code workspace settings
├── .gitignore
└── Readme.md
git clone https://github.com/EARTHISALWAYSHAPPY/Voice-Controlled-In-Vehicle-System.git
cd Voice-Controlled-In-Vehicle-SystemIn the Arduino IDE, go to Sketch → Include Library → Manage Libraries and install:
mcp2515— by autowp (CAN Bus controller)TFT_eSPIorAdafruit GFX— for TFT display
MCP2515 → Arduino SPI Wiring:
| MCP2515 Pin | Arduino Pin |
|---|---|
| VCC | 5V |
| GND | GND |
| CS | 10 |
| MOSI | 11 (MOSI) |
| MISO | 12 (MISO) |
| SCK | 13 (SCK) |
| INT | 2 |
Connect CAN_H and CAN_L between both MCP2515 modules. Add a 120Ω termination resistor across CAN_H and CAN_L on one end of the bus.
- Open the transmitter sketch from
Code/and upload to Node 1 (Arduino) - Open the receiver sketch from
Code/and upload to Node 2 (Arduino) - Open Serial Monitor at the appropriate baud rate to observe communication
The MCP2515 is configured to communicate using the CAN 2.0B standard:
mcp2515.reset();
mcp2515.setBitrate(CAN_500KBPS, MCP_8MHZ);
mcp2515.setNormalMode();CAN frames carry encoded voice command data in the data[] payload field and are identified by a unique can_id per command type.
| Library | Purpose | Source |
|---|---|---|
arduino-mcp2515 |
CAN Bus controller driver | autowp/arduino-mcp2515 |
TFT_eSPI |
TFT display rendering | Bodmer/TFT_eSPI |
SPI.h |
SPI communication (built-in) | Arduino Standard Library |
Developed as part of the Electronics Engineering Year 3 Term 2 curriculum.
This project is for educational purposes. Please refer to the repository for any licensing details.