Статьи » Разработки |
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 мА.
Посмотрите еще эти статьи
Управляем вытяжкой на кухне пультом от телевизора на Arduino Вывод картинки на дисплей 128x64 Детектор микронаушников Ethernet shield w5100 таймер включения на веб странице Вывод различных данных на дисплей LCD 128x64 Подключение датчиков газа и дыма серии MQ к Arduino Не пропустите обновления! Подписывайтесь на нашу группу Вконтакте. Так же у нас есть Telegram канал. Вам понравился наш материал? Поделитесь с коллегами! Просмотров: 2774. Оценка статьи: 5.0 из 5. Уже оценило 2 читателя |
Всего комментариев: 0 | |