Hi there!
For a student project last year, we equipped a RC-car with Lidar sensors, so a blind person can navigate the car safely in the field or on a racetrack (https://www.youtube.com/watch?v=nQv-j7ngsEg&t=1s).
The prototype consists of two Arduino R4 Uno's and Lidar sensors.
The first Arduino is mounted to the car and connected to three sensors, one facing front, one to the left and one to the right. The sensors measure with a frequency of 100Hz to see if there are any obstacles in front of the car. The data gets sent via Wifi to the second Arduino.
The second Arduino receives the data and generates a beeping-sound, which gets faster the closer the obstacle is to the car.
void loop() {
// Überprüfen, ob Daten empfangen wurden
int packetSize = udp.parsePacket();
if (packetSize) {
// Das Paket in einen Puffer lesen
char packetBuffer[packetSize];
udp.read(packetBuffer, packetSize);
// Sensorwerte aus dem Paket extrahieren
String packetData = String(packetBuffer);
int comma1 = packetData.indexOf(',');
int comma2 = packetData.indexOf(',', comma1 + 1);
String leftStr = packetData.substring(0, comma1);
String frontStr = packetData.substring(comma1 + 1, comma2);
String rightStr = packetData.substring(comma2 + 1);
int left = leftStr.toInt();
int front = frontStr.toInt();
int right = rightStr.toInt();
Serial.print(left);
Serial.print(",");
Serial.print(front);
Serial.print(",");
Serial.println(right);
// Ton für den linken Sensor
if (left < 50) {
int toneDuration_left = left / 5;
tone(buzzerPin_left, 440);
delay(toneDuration_left);
noTone(buzzerPin_left);
}
// Ton für den vorderen Sensor
if (front < 50) {
int toneDuration_front = front / 5;
tone(buzzerPin_front, 660);
delay(toneDuration_front);
noTone(buzzerPin_front);
}
// Ton für den rechten Sensor
if (right < 50) {
int toneDuration_right = right / 5;
tone(buzzerPin_right, 880);
delay(toneDuration_right);
noTone(buzzerPin_right);
}
}
}
This is an example of the data that the second Arduino receives:
60, 45, 32
60, 56, 23
67, 90, 12
Right now we use the tone() funcions to generate the sound, where you can set the tone frequency and duration. For the user, this is similar to a car parking assistant.
This works but for the user it's very hard to process the input fast enough and manouver the car. Mabye there is a way to give him a spatial imagination with the sensor data? Or a completely different approach?
I'd be happy to hear your thoughts about the project.