2.7 KiB
Shared project between 42 Le Havre and Asadhar. Using Arduinos Nano BLE 33, the objective was to make a "physical" AI, one that could interact with the physical world, within 5 days. The fun challenge added was that the AI needed to represent a mental ilness; My partner and I chose paranoia, based around the concept of personnal spaces.
The project needed only bases due to the collaboration with non-programmers, but developped many other skills, notably the use of electronics, embeded device programmation, LLM uses, artistic expression, and collaborative effort.
Artistic expression
Connecting the sensors to the arduino
Assembling the sensors into a wooden cube
Final result of the cube
Pins and wiring
You'll need 6 HC-SR04.
- Plug all VCC wires from the sensor in series toward the VIN pin of the Arduino.
- Plug all GND wires from the sensor in series toward one of the GND pin of the Arduino.
- Plug the BOTTOM sensor : TRIGG to D12, ECHO to D11
- Plug the TOP sensor : TRIGG to D10, ECHO to D9
- Plug the RIGHT SIDE sensor : TRIGG to D8, ECHO to D7
- Plug the FRONT FACE sensor : TRIGG to A0, ECHO to A1
- Plug the LEFT FACE sensor : TRIGG to A2, ECHO to A3
- Plug the BACK FACE sensor : TRIGG to A4, ECHO to A5
Requirements
Python and python packages :
- Python : 3.13.0
- requests : 2.32.3
- pyserial : 3.5
- gTTS : 2.5.4
- pyglet : 2.1.3
As for the Arduino, we'll need the following packages :
- Arduino_LSM9DS1 : 1.1.1
- Arduino_APDS9960 : 1.0.4
Launching
Connect the Arduino to your computer, and check which USB port it is using. If it's not using /dev/ttyACM0, you'll need to change SERIAL_PORT in server.py.
Furthermore, in the same folder as server.py, you'll need to create a .env and put in the following value : KEY="your_api_key". You can use a Key for DeepSeek. If you wish to use another model, you'll need to change the querry() function.
Once connected, simply launch the server with python : python3 server.py. If it works, you'll see a Listening on /dev/ttyACM0 ... in the console.
Known issues
The TTS is overlapping with the next one, and sometimes repeating the same audio file.