## 4 Experimentation and Results
### Testing Environment Setup  
When developing applications for edge devices like ECUs, many of the techniques and structures used in traditional machine learning approaches are still relevant. The key distinction lies in the optimization required for these models to function efficiently on smaller, resource-constrained devices. This is where TinyML comes into play, enabling machine learning models to perform tasks directly on edge devices with limited computational power and memory.  
We have utilized TensorFlow Lite for Microcontrollers, a widely adopted framework tailored for deep learning on edge devices. TensorFlow Lite for Microcontrollers is specifically designed to implement machine learning models on embedded systems with severely limited resources, typically only a few kilobytes of RAM. This makes it an ideal choice for ECUs in automotive applications, where the available memory and computational capacity are constrained.  
We selected Python as the primary language for developing our deep learning models, due to its extensive libraries and ease of use. However, when it comes to deploying these models on edge devices, TensorFlow Lite offers significant advantages. It is efficient, does not require an internet connection for model creation and deployment, and supports C/C++ for performance-critical applications.  
To embark on a TinyML project using TensorFlow Lite, a compatible microcontroller board is essential. Below, we outline the primary steps involved in creating a TinyML project [52]:  
* Utilize cloud computing resources to train the model, leveraging their high-performance capabilities for efficient and scalable machine learning training.
* Optimize the model for a lightweight environment by transitioning from TensorFlow to TensorFlow Lite, ensuring it is suitable for deployment on edge devices.  
Figure 5: Abstract depiction of proposed vehicle pairing model.  
* Deploy the model on a specific microcontroller, such as using the Arduino library, to run the inference efficiently on resource-constrained hardware.  
Additionally, we conducted the SVM experiments independently on a different machine, using the scikit-learn library to ensure robustness and reliability of the results.  
Hardware Configuration  
We utilized the Arduino Nano 33 BLE Sense, a microcontroller supported by the library. This microcontroller features a 32-bit ARM Cortex-M4F processor with 256 KB of RAM and 1 MB of program memory, running at 64 MHz. Its capabilities are sufficient to operate TinyML models effectively. The Arduino Nano 33 BLE Sense is equipped with a comprehensive suite of sensors, including those for color, motion, brightness, gesture, vibration, orientation, proximity, humidity, temperature, and pressure. Additionally, it includes a Bluetooth low-energy module and a digital microphone, making it highly versatile for various applications.  
For our experiment, we connected three Arduino Nano 33 BLE Sense boards using the Universal Asynchronous Receiver-Transmitter (UART) wired communication protocol. Two of these boards function as ECUs, responsible for collecting and transmitting sensory data, while the third board serves as the vehicle's central module. The UART communication protocol facilitates seamless data transmission and sharing between the ECUs and the central module, ensuring efficient and reliable communication within the system. Given that the pairing approach fundamentally operates similarly in both ECU pairing and vehicle pairing scenarios, our experimentation focuses exclusively on the ECU pairing model.