Статьи » Разработки
Добавить статью

Соблюдайте дистанцию во время эпидемии коронавируса

2020-04-25 в 12:23 (последнее изменение 2021-02-01 в 12:03)

На первый взгляд, в качестве устройства для соблюдения дистанции в наши дни можно приспособить известную разработку второй половины восьмидесятых - "ИК-локатор для слепых" Игоря Нечаева. Но во-первых, его схему придётся переработать под доступные сегодня компоненты. А во-вторых, устройство определяет только сам факт наличия отражённого луча, но не расстояние между объектом и датчиком. Что поделать - скорость света огромна, поэтому чтобы сделать так называемый лидар (от light+radar), работающий на небольших расстояниях, необходимо измерять очень короткие промежутки времени. По сложности такой прибор будет близок к лазерной рулетке, да и по себестоимости тоже. Смена лидара на радар тоже ничего не даст, ведь радиоволны отличаются от света только частотой, а природа их та же, а значит, и скорость.

Совсем другое дело - сонар (от sonic+radar). Скорость звука в воздухе незначительна, промежутки времени при тех же расстояниях получаются длиннее, измерить их проще. В наши дни модули ультразвуковых дальномеров стали стандартными периферийными устройствами для Arduino. Именно такой модуль применил в своём устройстве для соблюдения дистанции автор Arduino Project Hub под ником Rohan Barnwal. Давайте посмотрим на его схему:

Здесь всего три компонента: дальномер, Arduino и звукоизлучатель со встроенным генератором. В скетче можно поправить пороговое расстояние (рекомендуется увеличить с 1 м до 1,5), а также предусмотреть программную генерацию звукового сигнала, если у вас звукоизлучатель без генератора. Тогда при желании можно заменить его разъёмом для наушников, подключённым через регулятор громкости. Если же не переделывать скетч, то, подключив вместо звукоизлучателя светодиод с резистором, можно получить световое оповещение вместо звукового. А можно и вместе, задействовав разные "ноги". Далее приведён скетч, сторонних библиотек он не требует, обработка отражённого сигнала осуществляется прямо в коде.

Код
//Created By Rohan Barnwal
// defines pins numbers
const int trigPin = 2;
const int echoPin = 3;
// defines variables
long duration;
int distance;
void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
Serial.begin(9600); // Starts the serial communication
pinMode(11,OUTPUT);
}
void loop() {
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance= duration*0.034/2;
// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);
if(distance<100){
  digitalWrite(11,HIGH);
}
else{
  digitalWrite(11,LOW);
}
}

Во время отладки устройство должно быть подключено к компьютеру, при этом оно отправляет результат измерения расстояния в монитор последовательного порта. Затем прибор следует разобрать, освободив макетную плату типа breadboard, и собрать заново пайкой. А затем поместить в корпус и запитать от небольшого пауэрбанка. Если он автоматически выключается из-за малого потребляемого тока, можно добавить дополнительную нагрузку, потребляющую ток около 100 мА.


Не пропустите обновления! Подписывайтесь на нашу группу Вконтакте.
Так же у нас есть Telegram канал.
Вам понравился наш материал? Поделитесь с коллегами!

Просмотров: 2774. Оценка статьи: 5.0 из 5. Уже оценило 2 читателя

Об авторе - tormozedison

More by tormozedison

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]