Статьи » Разработки |
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 канал. Вам понравился наш материал? Поделитесь с коллегами! Просмотров: 2968. Оценка статьи: 5.0 из 5. Уже оценило 2 читателя |
Всего комментариев: 0 | |