This project is a React Native application that integrates voice recognition, Bluetooth Low Energy (BLE) communication, and text-to-speech (TTS) functionalities. Allows users to interact with CoolLED devices through voice commands, providing a seamless experience for controlling various features such as brightness, color, text, images and animations.
This project allows me to change my LED's content while driving without ever touching the phone, also allow me to display any images which is not possible using the coolLedX app
This project was made for fun and to learn more about BLE communication and voice recognition, it's not meant to be used by anyone else
The backend is creating the bytes commands and spliting them into chunks to send them to the device, you can find the repo here CoolLed-VoiceControl-Backend
- Voice Recognition: Utilizes voice recognition to interpret user commands.
- Bluetooth Connectivity: Connects to CoolLed devices through BLE for real-time control.
- Text-to-Speech: Provides audio feedback to users based on their commands.
- Logging: Maintains a log of actions and errors for debugging purposes.
- Commands list: Create a list of all the commands automatically from the pico yaml file
- React Native: Framework for building the mobile application.
- TypeScript: For type safety and better development experience.
- TTS (Text-to-Speech): For providing audio feedback.
- BLE (Bluetooth Low Energy): For connecting and communicating with LED devices.
- Picovoice: For voice recognition and hotword detection.
I'm using an android running Termux which runs the API backend on a local server, the app is running on the same device and connects to the API to send the commands to the LED device. This allow me to have everything working without an internet connection
-
Clone the repository:
git clone https://github.com/NotBlue-Dev/CoolLed-VoiceControl-App
-
Install dependencies:
npm install
-
Set up environment variables:
- Create a
.env
file in the root directory and add the following:EXPO_PUBLIC_ACCESS_KEY=your_access_key EXPO_PUBLIC_API_URL=your_api_url EXPO_PUBLIC_DEVICE_MAC_ADDRESS=your_device_mac_address
- Create a
-
Run the application:
npm start
- Launch the application on your mobile device or emulator.
- Use voice commands to control the LED device. For example:
- "Change color to red"
- "Set brightness to 50%"
- "Display image smiley" See the LED.yaml for all the commands
This project is licensed under the MIT License - see the LICENSE file for details.
- CrimsonClyde for his reverse engineering work on the CoolLED devices.