На главную страницу | Новости | FAQ | Ссылки | Для детей | Контакты
Это устройство предназначено для построения карты местности, точнее закрытого помещения (комнаты, например) вместе с находящимися в нем предметами. Конечно, на уровне пола. Короче, это надо для того, чтобы автономный робот мог определять свой дальнейший путь.
Основа устройства - ультразвуковой датчик расстояния. Принцип его работы в том, что он генерирует звуковые волны в диапазоне недоступным для слуха, а потом измеряет расстояние. Расстояние определяется по време, которое необходимое для того, чтобы эти волны дошли до какого-либо препятствия и вернулись обратно. Тот же принцип используется летучими мышами при полетах ночью.
Необходимые материалы:
- Arduino Uno ;
- ультразвуковой датчик HC-04 ;
- серово-привод Tower Pro SG90 или любой другой;
- MatLab для получения данных с последовательного порта и их визуализации.
#include
#include
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
Servo myservo;
int pos = 0;
int it = 10;
void setup() {
myservo.attach(9);
Serial.begin(9600);
delay(3000);
}
void loop() {
int i = 0;
int t = 0;
int a = 0;
for (i = 0; i < 180; i ++)
{
unsigned int uS = sonar.ping();
myservo.write(i);
delay(20);
for (t = 0; t < it; t++)
{
uS = sonar.ping();
a = uS/US_ROUNDTRIP_CM + a;
delay(30);
}
a = a / (it-1);
t = 0;
Serial.println(a);
a = 0;
}
}
theta = 0:(pi/180):pi;
s = serial('COM10');
s.BaudRate=9600
fopen(s)
i = 0;
inc = 1;
while i<180
A = fgets(s);
num(i+1) = str2num(A);
i = i+1;
end
fclose(s)
j = 1
while j<181
tab(j,1) = (j-1)*inc
tab(j,2) = num(j)
tab(j,3) = num(j)*cosd((j-1)*inc)
tab(j,4) = num(j)*sind((j-1)*inc)
j = j+1
end
%figure
%polar(theta,num)
plot(tab(:,3),tab(:,4))
Результат работы:
https://www.hackster.io/Satyavrat/ultrasonic-map-maker-using-an-arduino-yun-37c72e
Now 24.11.24 6:17:09, Your IP: 3.149.250.65; arduino.zl3p.com/projects/map-maker
ePN