Эхолокатор на двух датчиках и arduino

Содержание:

Датчик звука (микрофон) для Arduino

Состоит датчик из платы (смотри картинку ниже) на котором смонтированы порты подключения к Arduino Nano, усилитель звука, подстроечный резистор и электронный микрофон, чувствительный к звуку, приходящему во всех направлениях. Регулятором чувствительности (переменным резистором) можно настраивать чувствительность микрофона и выбирать от какого уровня шума будет срабатывать датчик.

Датчик звука Arduino для слежения за уровнем шума

Данная плата расширения для Arduino позволяет перевести звуковые колебания в цифровой сигнал. При колебании мембраны в микрофоне от звуковых волн, изменяется емкость его конденсатора, вследствие чего проявляется изменение напряжения на выходах датчика звука, соответствующее звуковому сигналу. Сенсор слева на картинке может отправлять цифровой и аналоговый сигнал.

Код датчика

Скопировать или скачать код датчика движения Ардуино вы можете ниже:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
int Sensor = 12;   //Input Pin
int LED = 3;     // Led pin for Indication
int Buzzer =2;
 
int flg = 0;  //Change detection flag
void setup() {
  
  Serial.begin(9600);
    // initialize the LCD
  lcd.begin();
  lcd.clear();
  
  lcd.print("...MAKER.PRO...");
  delay(3000);

  // Turn on the blacklight and print a message.
  lcd.backlight();
  pinMode (Sensor, INPUT);  //Define Pin as input
  pinMode (Buzzer, OUTPUT);    //Led as OUTPUT
  pinMode (LED, OUTPUT);    //Led as OUTPUT
  Serial.println("Waiting for motion");
}
 
void loop() {
  
     int val = digitalRead(Sensor); //Read Pin as input
     
     if((val > 0) && (flg==0))
     {
        digitalWrite(LED, HIGH);
        digitalWrite(Buzzer, HIGH);
        
        lcd.clear();
        Serial.println("Motion Detected");
          lcd.print("Motion Detected");
        flg = 1;
     }
 
     if(val == 0)
     {
        digitalWrite(LED, LOW);
        digitalWrite(Buzzer, LOW);
        lcd.clear();
          Serial.println("NO Motion");
          lcd.print("NO Motion ");
          
        flg = 0;
     }  
     delay(100);
}

Получилось примерно так:

На этом всё. Хороших вам работающих проектов.

Шаг 7. Установка программного обеспечения

Установите всё что нужно в следующем порядке, как написано ниже.

Arduino IDE

Загрузите и установите Arduino IDE (интегрированное окружение разработки), если еще не установлена. Скачать можно здесь.

Processing 3

Загрузите и установите «Processing 3» отсюда.

Передатчик акустического радара

Скопируйте содержимое файла ниже в «эскиз» Arduino, сохраните его, а затем загрузите в свой Arduino Uno R3:

Закройте Ardino IDE, но оставьте кабель USB подключенным.

Приемник акустического радара

Скопируйте содержимое файла ниже в скетч для «Processing 3» (может понадобиться переименовать расширение .ino в .pde):

Скетч для компьютера

Для визуализации используется приложение Processing, скачать его можно по следующей
. Запустив среду Processing можно переключить языка интерфейса на русский. Для этого в меню нажмите «File», затем » Preferences…» и в открывшемся окне можно будет переключить язык:

Если при запуске появится сообщение, что не найдено Android SDK:

можно проигнорировать это сообщение и просто закрыть окно, нажав на крестик. Только при когда отобразиться окно программы, нужно будет переключить среду Processing из режима работы «Android» в режим «Java». Для этого слева вверху нажмите на «Android»:

И в появившемся меню выберете пункт «Java»:

После чего среда автоматически перезапустится:

Создайте новый скетч (файл -> создать) и скопируйте в него скетч:

Одно из отличий Processing от Arduino IDE заключается в том, как выбирается последовательный порт. В Processing порт выбирается не в меню, а в коде по индексу массива. При запуске скетча, внизу окна выводится список портов:

Найдите в списке порт, к которому подключена Arduino и в строчке:

myPort = new Serial(this, Serial.list(), 115200);

при необходимости поменяйте индекс. Если к примеру текущий порт «COM4», замените в коде ноль на единицу:

myPort = new Serial(this, Serial.list(), 115200);

https://vk.com/video_ext.php

Перевод: RobotoTehnika.ru

Шаг 3. Как это работает

Механика

Все части расположены внутри пластмассового контейнера для пищевых продуктов. Питание обеспечивается от USB-порта. Схема содержит Arduino, ультразвуковой датчик, шаговый двигатель и микропереключатель для перемещения датчика в его «стартовое» положение. Микропереключатель необходим, так как невозможно вращать шаговый двигатель вручную из-за его внутренней зубчатой ​​передачи 64:1.

При первом включении Arduino поворачивает датчик в свое начальное положение, как определено микропереключателем, затем обращается к дисплею пока не получит ответ.

Шаговый двигатель 28BJY-48 имеет «угол шага» 5,625/64 градуса, что означает, что шаги на 1 градус невозможны (хотя сетка обозначена на 0,80 градуса).

К счастью:

180 / (угол поворота) = 180*64 / 5.625 = 2048

который равномерно делится на 8. Если мы увеличим число от 0 до 2048 и разделим на 8, получится 256 вариантов, когда мы получим остаток от нуля. Мы просто отправляем «пинг», когда остаток равен нулю. Это соответствует «пингованию» каждого Пи/256 радианов или 0.703125 градусов.

Программное обеспечение

После дисплей принимает управление и постоянно опрашивает Ардуино относительно следующих данных:

  • Азимут
  • Дистанция1 (Distance1)
  • Дистанция2 (Distance2)
  • Направление

Затем на экране отображаются «расстояние(-я)» для каждого «азимута». Информация «направление» используется для создания отображения (визуализации) «точек», появляющихся за «лучом» при вращении.

Arduino автоматически переходит к следующей позиции «ping», когда данные отправляются на дисплей.

Программное обеспечение «Processing 3», используемое для записи дисплея и может быть загружено с processing.org.

«Processing 3» поддерживает 2D и 3D-графику и очень похожа на Arduino IDE (англ. — Integrated Development Environment). Основными визуальными отличиями являются «графическое окно» при запуске кода и использование функции «draw()» вместо «loop()» Ардуино.

Как работает индикатор уровня воды Arduino?

Этот индикатор уровня воды Ардуино использует ультразвуковой датчик или, по-другому, Ping датчик для определения уровня воды в баке. Датчик Ping измеряет расстояние, используя гидролокатор.

Из аппарата передается ультразвуковой импульс (значительно выше человеческого слуха), а расстояние до цели определяется путем измерения времени, необходимого для возврата эха. На выходе Ping датчика импульс переменной ширины, который соответствует расстоянию до цели. Затем он подается в микроконтроллер, который определяет уровень воды и отображает его через ряд светодиодов.

Этот проект может быть реализован на одной из плат Arduino, если микроконтроллером платы является непосредственно микроконтроллер ATmega 328.

Устройство ИК приемника. Принцип работы

Приемники инфракрасного излучения получили сегодня широкое применение в бытовой технике, благодаря доступной цене, простоте и удобству в использовании. Эти устройства позволяют управлять приборами с помощью пульта дистанционного управления и их можно встретить практически в любом виде техники. Но, несмотря на это, постепенно Bluetooth модуль набирает все большую популярность.

Принцип работы IR ресивера. Обработка сигнала от пульта ДУ

ИК-приемник на Ардуино способен принимать и обрабатывать инфракрасный сигнал, в виде импульсов заданной длительности и частоты. Используется при изготовлении датчика препятствия и дальномера для Arduino. Обычно ИК-приемник имеет три ножки и состоит из следующих элементов: PIN-фотодиод, усилитель, полосовой фильтр, амплитудный детектор, интегрирующий фильтр и выходной транзистор.

Под действием инфракрасного излучения в фотодиоде, у которого между p и n областями создана дополнительная область из полупроводника (i-область), начинает течь ток. Сигнал поступает на усилитель и далее на полосовой фильтр, который настроен на фиксированную частоту: 30; 33; 36; 38; 40 и 56 килогерц и защищает приемник от помех. Помехи могут создавать любые бытовые приборы.

Схема соединений

Подключите Arduino к RCWL-0516, символьному ЖК-дисплею, зуммеру и светодиоду, как показано на схеме ниже.

Таблица соединений 1:

Arduino Pin Number
LED 2
Content 3

Таблица соединений 2:

Arduino Analog IO Character LCD
A5 SCL
A4 SDA

Таблица соединений 3:

Arduino Nano RCWL-0516
GND GND
5V VIN
D2 OUT

Вывод 3V3 на RCWL-0516 является выходным выводом. Вывод CDS позволяет вам добавить LDR (светозависимый резистор) к плате, что позволяет работать в режиме низкого энергопотребления, чтобы датчик активировался только в темноте. После подключения перепроверьте соединения, а затем загрузите исходный код (ниже).

Как подключить датчик KY-039 к Ардуино

Для этого занятия нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • KY-039 датчик для измерения пульса в пальце;
  • макетная плата;
  • светодиод и резистор 220 Ом;
  • провода «папа-папа», «папа-мама».

Следующий скетч для KY-039 приводится на всех форумах и сайтах в качестве общепринятого примера. Данные работы программы оставляют желать лучшего, датчик просто отправляет, рандомные значения немного похожие на правду. Код можно использовать лишь в качестве тестирования правильности подключения сенсора к микроконтроллеру, поэтому комментировать код смысла не имеет.

Счетч для датчика сердцебиения KY-039


Как подключить датчик сердцебиения KY-039 к Ардуино

double alpha = 0.75;
int period = 100;
double change = 0.0;
double minval = 0.0;

void setup() {
    Serial.begin(9600);
    pinMode(A1, INPUT);
}

void loop() {
     static double oldValue = 0;
     static double oldChange = 0;
     int rawValue = analogRead(A1);
     double value = alpha * oldValue + (1 - alpha) * rawValue;
     Serial.print (rawValue);
     Serial.print (",");
     Serial.println (value);
     oldValue = value;
     delay(period);
}

Пояснения к коду:

  1. код имеет много лишних строчек и глобальных переменных Ардуино.

Счетч измерения пульса датчиком KY-039

Следующий код выводит на монитор порта пульс (количество ударов сердца в минуту). Данные намного достовернее, чем в предыдущем примере, кроме того мы добавили светодиод в схему. Напоминаем, что на датчик влияет внешнее излучение (солнечный свет, лампа и т.д.), а данные выводятся на монитор порта Arduino IDE с небольшой задержкой. Подключите датчик и загрузите следующий скетч в Ардуино.


Схема подключения датчика KY-039 к плате Ардуино Уно

#define samp_siz 4 // количество расчетов - можно увеличить до 20
#define rise_threshold 5

void setup() {
    Serial.begin(9600);
    pinMode(A1, INPUT);
    pinMode(A1, OUTPUT);
}

void loop() {

  float reads, sum;
  long int now, ptr;
  float last, reader, start;
  float first, second, third, before, print_value;
  bool rising;
  int rise_count;
  int n;
  long int last_beat;

  for (int i=0; i<samp_siz; i++)
    reads = 0;
  sum = 0;
  ptr = 0;

  // в течение 20 мс вычисляем среднее значение датчика
  while (1) {
    n = 0;
    start = millis();
    reader = 0.;
    do {
      reader += analogRead(A1);
      n++;
      now = millis();
    }

    // записываем полученное среднее значение в массив
    while (now // проверяем, появляется ли увеличение среднего значения
    if (last > before) {
      rise_count++;

      // если значение увеличивается, что подразумевает сердцебиение
      // включаем светодиод и записываем время с последнего удара
      // отслеживаем два предыдущих удара, чтобы получить взвешенное среднее
      if (!rising && rise_count > rise_threshold) {
        digitalWrite(10, HIGH);
        rising = true;
        first = millis() - last_beat;
        last_beat = millis();

        // рассчитываем средневзвешенную частоту сердечных сокращений
        print_value = 60000. / (0.4 * first + 0.3 * second + 0.3 * third);
        Serial.println(print_value);
        third = second;
        second = first;
      }
    }
    else {
      rising = false;
      rise_count = 0;
      digitalWrite(10, LOW);
    }
    before = last;
    ptr++;
    ptr %= samp_siz;
  }
}

Технические характеристики Arduino Sensorshield

Самое главное преимущество данного шилда заключается в том, что вы сможете подключить огромное количество датчиков с максимальной удобностью и при этом заняв максимально маленькое место на Arduino. Подключение шилда к ардуино воспроизводится стандартным способом, а именно накладывается всеми контактами на плату микроконтроллера, сделав гибрид, который мы назовем — «бутерброд».

Шилд можно использовать для подключения следующих устройств

  • SD card
  • 32 servo controller
  • RB URF для ультразвуковых датчиков
  • 12864 LCD последовательный и параллельный интерфейс
  • APC220 wireless RF
  • Bluetooth
  • I2C

Ниже приведена схематическая распиновка платы Sensorshield, она вам поможет понять, в какие пины вам необходимо соединить тот или иной датчик.

Калибровка датчика звука

Для получения точных показаний с вашего звукового датчика, рекомендуется сначала его откалибровать.

Для калибровки цифрового выхода (OUT) модуль содержит встроенный потенциометр.

Поворачивая движок потенциометра, вы можете установить пороговое значение. Таким образом, когда уровень звука превышает пороговое значение, светодиод статуса загорается, а на цифровой выход (OUT) выдается низкий логический уровень.

Теперь, чтобы откалибровать датчик, хлопайте рядом с микрофоном и подстраивайте потенциометр, пока вы не увидите, что светодиод состояния на модуле мигает в ответ на ваши хлопки.

Теперь ваш датчик откалиброван и готов к использованию.

PIR датчик движения Ардуино: характеристики

Сегодня уже никто не удивляется при автоматическом включении освещения в подъездах многоквартирных домов, которые срабатывают при прохождении человека. В большинстве приборов установлены пассивные датчики движения (PIR). Рассмотрим в этой статье устройство датчика движения, схему его подключения к Arduino UNO и соберем на его основе автоматический включатель освещения.


Линза Френеля концентрирует инфракрасное излучение

Модуль с ПИР датчиком состоит из пироэлектрического элемента под пластиковой линзой Френеля — цилиндрическая деталь с прямоугольным кристаллом в центре, который улавливает уровень инфракрасного излучения и пропускает его через себя. При подключении IR к Arduino мы уже выяснили, что все предметы имеют инфракрасное излучение и чем выше температура, тем интенсивнее излучение.


Устройство и распиновка пироэлектрического датчика движения

PIR датчики движения практически одинаковы по устройству. Диапазон чувствительности PIR сенсоров для Ардуино до 6 метров, угол обзора 110° x 70°. Питание — 5 Вольт, а выходной цифровой сигнал имеет значение 0, когда движения нет и значение 1 при наличии движения. Чувствительные элементы устанавливается в герметический корпус, который защищает от влажности и перепадов температур.

ARDUINO И ПАРКТРОНИК

Интересный пример использования Arduino UNO в качестве парктроника. В качестве ультразвукового датчика используем HC-SR04.
Ничего особенного в использовании и настройке нет, даже напротив — всё очень просто. Я надеюсь что вопрос — Как настроить Ultrasonic Sensor? Где взять скетч для сенсора HC-SR04? После прочтения этой статьи больше не возникнет.

Парктроник на Arduino. Урок 8

Представляю вам схему сборки проекта «Парктроника», на ардуино уно. Для этого урока — проекта нам понадобится несколько светодиодов, резисторы, ультразвуковой датчик, Arduino и примерно 30 минут свободного времени.

Схема соединений. Парктроник на Arduino

Что необходимо для этого урока:

Arduino Uno R3 — 1 шт.Резисторы 200-520 Ом. — 10шт.Светодиоды:Зеленые — 3 шт.Синие — 3 шт.Желтые — 2 шт.Красные — 2 шт.Ультразвуковой датчик измерения расстояния HC-SR04 — 1шт.

Модуль HC-SR04, позволяет измерять расстояния в приличном диапазоне, причём, достаточно точно. Расстояние до преграды которое он определяет колеблется от 2см до 400см, с шагом 0,3см. Напряжение питания 5V. Его работе не мешает солнечный свет. Но что что мешает, так это мягкие шторы — тюль, и домашние животные, расстояние до них он определяет с ошибками.

Индикатором работы парктроника являются светодиодные индикаторы — расстояние более 1 метра — зелёные, каждый последующий зажигаетя при изменеии растояния на 10 см. Последний красный загораетя, если расстояние сократилось и стало менее 10см. Индикация осуществляется как в светодиодном индикаторе пиковой мощности.

Скачать скетч, в комплекте с библиотекой Ultrasonic.h можно с сайта ArduinoKit.Ru, библиотеку, если она у вас не установлена, нужно положить в в каталог Ultrasonic, в c:Program Files (x86)Arduinolibraries.

Скетч заливаем в ардуино, через USB.

Законченный урок — Парктроник из Arduino

2018-09-19T15:37:21+03:00Arduino уроки|

Подключение датчика HC SR04

С подключением датчика не должно возникнуть никаких проблем. Достаточно с помощью проводников соединить пин на питание с источником или МК, а ввод и вывод, соответственно, присоединить непосредственно к МК. Воспользуйтесь схемой ниже для сборки схемы:

У самого сенсора SR04 следующие характеристики от которых вам стоит отталкиваться:

  1. Напряжение для питания – 5В.
  2. Работает в цепях с силой тока 15 мА.
  3. Если датчик не используется, то для поддержания его в пассивном состоянии всё ещё требуется до 2 мА.
  4. Угол обзора у модуля небольшой, всего 15 градусов.
  5. Разрешение сенсора – 3 десятых см.
  6. А вот угол для измерений составляет уже приятные 30 градусов.

Также на датчике имеются четыре вывода по стандарту 2.54 мм. В них входит контакт для питания с положительным напряжением +5В, пины для ввода и вывода сигнала и заземление.

В конечном варианте выглядеть устройство должно примерно таким образом:

Пример работы HC-SR04

Для испытаний HC-SR04 написан небольшой код, который осуществляет измерение расстояния и выводит информацию на 7-сегментный индикатор TM1637, про который я уже писал.
Для измерения расстояния с помощью HC-SR04, необходимо сначала отправить сигнал, а потом получить его обратно и замерить время, за которое сигнал прошел туда и обратно, тем самым легко высчитать расстояние до препятствия. Зная, что скорость звука в воздухе составляет, примерно, 340 м/с, получаем скорость 0.034 м/мкс. Но так как, сигнал должен пройти туда и обратно, скорость будет в два раза медленней, то есть будет равна 0.017 м/мкс. Итого получаем, формулу: расстояние = время умножить на 0.017 и умножить на 10, чтобы перевести в миллиметры. Или можно перевести пропорцию к более читабельному виду: расстояние = время / 5.8

Возможные варианты проектов с применением датчика

Пир-датчики незаменимы в тех проектах, где главной функцией сигнализации является определение нахождения или отсутствия в пределах определенного рабочего пространства человека. Например, в таких местах или ситуациях, как:

  • Включение света в подъезде или перед входной дверью автоматически, при появлении  в нем человека;
  • Включение освещения в ванной комнате, туалете, коридоре;
  • Срабатывание сигнализации при появлении человека, как в помещении, так и на придомовой территории;
  • Автоматическое подключение камер слежения, которыми часто оснащаются охранные системы.

Пир-сенсоры просты в эксплуатации и не вызывают сложностей при подключении, имеют большую зону чувствительности и также могут быть с успехом интегрированы в любой из программных проектов на Ардуино. Но следует учитывать, что они не имеют технической возможности предоставить информацию о том, сколько объектов находится в зоне действия, и как близко они расположены к датчику, а также могут срабатывать на домашних питомцев.

Когда может пригодиться?

Представим ситуацию, когда у вас на дачном участке есть душ, основу которого составляет бак с водой, который наполняется либо через насос либо дождевой водой.

Часто узнать количество воды в резервуаре может быть утомительной задачей. Обычно вы поднимаетесь по лестнице и проверяете уровень вручную или вы услышите что вода переполняется сверху.

В наши дни появилось много разных электронных индикаторов уровня воды, но они часто имеют высокую цену и обычно сложны в установке. Большинство доступных систем используют электроды или поплавковые переключатели, которые могут быть головной болью в долгосрочной перспективе.

Мы решим эту задачу с совершенно другим подходом к знанию уровня воды — с использованием ультразвукового модуля и Ардуино. Преимущество этого метода заключается в том, что он бесконтактный, поэтому такие проблемы, как коррозия электродов, не будут влиять на эту систему. Кроме того, этот индикатор уровня воды Arduino намного проще устанавливать, чем обычные системы.

Как работает на самом деле ультразвуковой датчик HC-SR04

Временные диаграммы работы датчика представлены на следующем рисунке.

Датчик имеет контакты Trigger и Echo, которые используются для измерения расстояния как показано на представленных диаграммах. Сначала мы должны подать запускающий в работу датчик импульс длительностью 10 мкс на контакт Trigger, после этого датчик излучает в пространство серию из 8 ультразвуковых импульсов. Эти импульсы отражаются от препятствия и возвращаются обратно к датчику.

На временных диаграммах показано, что после того как приемник осуществит прием этих импульсов датчик устанавливает напряжение высокого уровня на контакте Echo на длительность, равную времени распространения ультразвуковой волны до препятствия и обратно.

Но мы более детально исследовали работу этого датчика и установили, что датчик не ждет возвращения ультразвуковой волны назад. Он устанавливает напряжение высокого уровня на контакте Echo сразу после излучения серии импульсов и снимает это напряжение (то есть возвращает состояние контакта в 0) после того как ультразвуковая волна вернется назад. Поэтому правильные временные диаграммы работы этого датчика должны быть такими, какими они показаны на следующем рисунке.

Как сделать так чтобы датчик HC-SR04 работал только как передатчик

Как следует из представленных временных диаграмм для этого нужно объявить контакт Trigger выходным контактом и подать на него напряжение высокого уровня в течение 10 микросекунд. Это приведет к тому что датчик начнет излучать серию ультразвуковых импульсов. То есть всегда, когда нам нужно задействовать датчик HC-SR04 только в качестве передатчика, нам нужно просто подать импульс высокого уровня длительностью 10 мкс на его контакт Trigger.

Как сделать так чтобы датчик HC-SR04 работал только как приемник

Как следует из временных диаграмм прямым способом мы это сделать не можем поскольку мы не можем непосредственно управлять появлением сигнала на контакте Echo. Но мы можем использовать следующий «лайфхак». Мы можем просто заклеить передающую часть датчика непрозрачной лентой как показано на рисунке ниже, что приведет к тому что ультразвуковая волна не будет излучаться и, следовательно, не будет влиять на состояние контакта Echo.

Теперь чтобы подать на контакт echo напряжение высокого уровня нам теперь просто нужно подать импульс длительностью 10 мкс на контакт-«пустышку» trigger. Теперь напряжение низкого уровня появится на контакте echo только тогда, когда наш приемный датчик примет ультразвуковую волну от нашего передающего датчика.

Arduino: подключение библиотеки в скетче

Перед тем как использовать команды и функции в программе, необходимо подключить в скетче нужную библиотеку. Для этого используется директива , после которой в кавычках или в скобках указывается имя библиотеки с расширением. Например, для того, чтобы в скетче подключить библиотеку для ультразвукового датчика HC-SR04 следует добавить строчку директивы  .


Пример добавления нескольких библиотек для модулей Ардуино

Библиотеки добавляют в начале скетча, до процедуры void setup (). Если в программе функция будет использована до того, как подключена библиотека в скетче, то это вызовет ошибку при компиляции. На нашем сайте Ардуино. Уроки для начинающих при использовании датчиков и модулей для микроконтроллеров приведены подробные инструкции по использованию библиотек и даны ссылки для скачивания файлов.

Описание методов библиотеки HCSR04.zip

HCSR04(uint8_t, uint8_t, unsigned long)

Конструктор для создания экземпляра класса, первый параметр это номер trig пина, второй — echo, третий — timeout в микросекундах.

HCSR04(uint8_t trigPin, uint8_t echoPin, unsigned long timeout = 1000000);

1 HCSR04(uint8_ttrigPin,uint8_techoPin,unsignedlongtimeout=1000000);

begin()

Инициализация HC-SR04.

void begin();

1 voidbegin();

getDistanceMm()

Возвращает расстояние в миллиметрах.

unsigned int getDistanceMm();

1 unsignedintgetDistanceMm();

getDistanceCm()

Возвращает расстояние в сантиметрах.

unsigned int getDistanceCm();

1 unsignedintgetDistanceCm();

getDistanceInch()

Возвращает расстояние в дюймах.

unsigned int getDistanceInch();

1 unsignedintgetDistanceInch();

getDistanceMmFloat()

Возвращает расстояние в миллиметрах. Тип возвращаемых данных float.

float getDistanceMmFloat();

1 floatgetDistanceMmFloat();

getDistanceCmFloat()

Возвращает расстояние в сантиметрах. Тип возвращаемых данных float.

float getDistanceCmFloat();

1 floatgetDistanceCmFloat();

getDistanceInchFloat()

Возвращает расстояние в дюймах. Тип возвращаемых данных float.

float getDistanceInchFloat();

1 floatgetDistanceInchFloat();

getDuration()

Это частный метод, который возвращает продолжительность в микросекундах — прошедшее время до объекта/препятствия и обратно.

unsigned long getDuration();

1 unsignedlonggetDuration();

Пример скетча

Проверить работоспособность библиотеки можно следующим примером:

/*
Включяем библиотеку для работы с HC-SR04
*/
#include <hcsr04.h>

#define ECHO_PIN 12
#define TRIG_PIN 13
#define TIMEOUT 30000

/*
Создаём экземпляр класса HCSR04
*/
HCSR04 hcsr04(TRIG_PIN, ECHO_PIN, TIMEOUT);

void setup() {
/*
задаем скорость общения с компьютером
*/
Serial.begin(9600);
/*
HC-SR04как выход TRIG пин
*/
hcsr04.begin();
}

void loop() {
float cm, inch;
int mm;
/*
Получаем расстояние в миллиметрах
*/
mm = hcsr04.getDistanceMm();
/*
Даём сонару чуть-чуть отдохнуть
*/
delay(10);
/*
Получаем расстояние в сантиметрах. Тип возвращаемых данных float
*/
cm = hcsr04.getDistanceCmFloat();
/*
Даём сонару чуть-чуть отдохнуть
*/
delay(10);
/*
Получаем расстояние в дюймах. Тип возвращаемых данных float
*/
inch = hcsr04.getDistanceInchFloat();
/*
Отправляем полученные данные на компьютер
*/
Serial.print(mm);
Serial.print(» mm «);
Serial.print(cm);
Serial.print(» cm «);
Serial.print(inch);
Serial.print(» inch»);
Serial.println();
/*
Ждём четверть секунды и повторяем снова
*/
delay(250);
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

/*
  Включяем библиотеку для работы с HC-SR04
*/
#include <hcsr04.h>
 
#define ECHO_PIN  12
#define TRIG_PIN  13
#define TIMEOUT  30000
 
/*
  Создаём экземпляр класса HCSR04
*/

HCSR04hcsr04(TRIG_PIN,ECHO_PIN,TIMEOUT);

voidsetup(){

/*

    задаем скорость общения с компьютером
  */

Serial.begin(9600);

/*

    HC-SR04как выход TRIG пин
  */

hcsr04.begin();

}
 

voidloop(){

floatcm,inch;

intmm;

/*

    Получаем расстояние в миллиметрах
  */

mm=hcsr04.getDistanceMm();

/*

    Даём сонару чуть-чуть отдохнуть
  */

delay(10);

/*

    Получаем расстояние в сантиметрах. Тип возвращаемых данных float
  */

cm=hcsr04.getDistanceCmFloat();

/*

    Даём сонару чуть-чуть отдохнуть
  */

delay(10);

/*

    Получаем расстояние в дюймах. Тип возвращаемых данных float
  */

inch=hcsr04.getDistanceInchFloat();

/*

      Отправляем полученные данные на компьютер
  */

Serial.print(mm);

Serial.print(» mm   «);

Serial.print(cm);

Serial.print(» cm   «);

Serial.print(inch);

Serial.print(» inch»);

Serial.println();

/*

      Ждём четверть секунды и повторяем снова
  */

delay(250);

}

Пример работы

Рассмотрим как работает дальномер.

  • Для того чтобы инициализировать отправку сигнала дальномером, необходимо подать высокий сигнал длительностью 10 μs на пин .
  • После получения высокого сигнала длительностью 10 μs на пин , модуль генерирует пучок из восьми сигналов частотой 40 кГц и устанавливает высокий уровень на пине .
  • После получения отраженного сигнала модуль устанавливает на пине низкий уровень.

Зная продолжительность высокого сигнала на пине можем вычислить расстояние, умножив время, которое потратил звуковой импульс, прежде чем вернулся к модулю, на скорость распространения звука в воздухе (340 м/с).

Функция позволяет узнать длительность импульса в . Запишем результат работы этой функции в переменную
duration.

Теперь вычислим расстояние переведя скорость из м/с в см/мкс:

Преобразуем десятичную дробь в обыкновенную

Принимая во внимание то, что звук преодолел расстояние до объекта и обратно, поделим полученный результат на 2

Оформим в код всё вышесказанное и выведем результат в Serial Monitor

ultrasonic.ino
// Укажем, что к каким пинам подключено
int trigPin = 10; 
int echoPin = 11;  
 
void setup() { 
  Serial.begin (9600); 
  pinMode(trigPin, OUTPUT); 
  pinMode(echoPin, INPUT); 
} 
 
void loop() { 
  int duration, distance;
  // для большей точности установим значение LOW на пине Trig
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2); 
  // Теперь установим высокий уровень на пине Trig
  digitalWrite(trigPin, HIGH);
  // Подождем 10 μs 
  delayMicroseconds(10); 
  digitalWrite(trigPin, LOW); 
  // Узнаем длительность высокого сигнала на пине Echo
  duration = pulseIn(echoPin, HIGH); 
  // Рассчитаем расстояние
  distance = duration  58;
  // Выведем значение в Serial Monitor
  Serial.print(distance); 
  Serial.println(" cm"); 
  delay(100);
}

Работа с библиотекой

Количество строк кода можно существенно уменьшить, используя библиотеку для работы с дальномером.

ultrasonic_lib.ino
#include <NewPing.h>
 
#define TRIGGER_PIN  10
#define ECHO_PIN     11
#define MAX_DISTANCE 400
 
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
 
void setup() {
  Serial.begin(9600);
}
 
void loop() {
  delay(50);
  Serial.print("Ping: ");
  Serial.print(sonar.ping_cm());
  Serial.println("cm");
}

Работа с Iskra JS

var sonic = require('@amperka/ultrasonic')
  .connect({trigPin P10, echoPin P11});
 
sonic.ping(function(err, value) {
  if (err) {
    console.log('An error occurred:', err);
  } else {
    console.log('The distance is:', value, 'millimeters');
  }
}, 'mm');

Как подключить датчик звука к Arduino

Для этого занятия нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • датчик звука (микрофон);
  • 1 светодиод и 1 резистор 220 Ом;
  • провода «папа-папа» и «папа-мама».

Датчик звука для Ардуино имеет на плате подписанные выходы (обозначение у каждого производителя может отличаться), но проблем с подключением датчика к Ардуино возникнуть не должно. Питание датчика производится от 5V, выход (OUT, S или AO) подключается к любому аналоговому входу на Arduino Uno, а выход DO к Pin 2, если требуется получать цифровой сигнал на Ардуино с датчика микрофона.

Фото. Как подключить датчик звука к Arduino UNO

Чтобы сделать своими руками светильник, который будет включаться по хлопку в ладоши необходимо собрать электрическую схему из следующих элементов: светодиод с резистором, плата Arduino и датчик звука для включения света своими руками. Светодиод можно подключить к любому выходу, в скетче мы использовали Pin 11. После сборки схемы, подключите Ардуино к компьютеру и загрузите скетч.

Скетч для включения света по хлопку

boolean statuslamp; // состояние лампы: true - включено, false - выключено

void setup() {
   pinMode(12,OUTPUT); // пин 12 со светодиодом будет выходом (англ. «output»)
   pinMode(A0,INPUT); // к аналоговому входу A0 подключим датчик (англ. «intput»)
   statuslamp=false; // начальное состояние - лампа выключена
   Serial.begin(9600); // подключаем монитор порта
}

void loop() {
   Serial.println (analogRead(A0)); // выводим значение датчика на монитор
  
   if(analogRead(A0)>60) {
      statuslamp=!statuslamp; // меняем статус лампы при регистрации хлопка
      digitalWrite(12,statuslamp); // переключаем светодиод на выходе 12
      delay(20); // задержка, "дребезга" хлопков
   }
}

Характеристики модуля датчика освещенности

Датчик света может выпускаться в двух вариантах: с подстроечным резистором (цифровой датчик) и без него (аналоговый датчик). Оба варианта имеют три контакта для подключения к Arduino Nano или Uno. Два контакта служат для питания датчика — 5V и GND, а третий контакт — выдает аналоговый (обозначен буквой S) или цифровой сигнал (обозначен D0) и подключается к соответствующим портам платы Ардуино.

Устройство фоторезистора, обозначение на электрических схемах

Модуль построен на базе обычного фоторезистора, поэтому если у вас нет в наличии датчика освещенности из стартового набора, то вы можете собрать простую схему делителя напряжения с фоторезистором и подключить ее к микроконтроллеру — подключение фоторезистора к Ардуино. Отличие в том, что вам необходимо будет повторить простую схему датчика, собрав ее самостоятельно на макетной плате.

Подключение ультразвукового датчика к Ардуино на макетной плате

Вы можете использовать схему ультразвукового датчика Arduino, созданную в TinkerCad Circuits, или электрическую схему, показанную на рисунке ниже, чтобы создать свое сенсорное устройство.

При использовании 4-контактного ультразвукового датчика нормально закрытый штырь (NC) соединен с землей. Вы можете разместить ультразвуковой датчик, как показано на рисунке, на макетной плате и с помощью перемычек закончить проводку к Arduino.

Ниже схема, которую я создал с помощью 4-проводной перемычки, чтобы соединить ультразвуковой датчик и Arduino.

Четырехпроводной перемычка имеет цветовую кодировку. В таблице ниже показаны соединения проводов между Arduino и ультразвуковым датчиком.

Arduino Ультразвуковой датчик
5V Красный
GND Черный
Не подсоединен Белый
D7 Желтый

Вы успешно подключили ультразвуковой датчик к Arduino и теперь готовы загрузить скетч в Arduino.

Что такое библиотека для Arduino

Итак, файлы библиотек значительно облегчают программирование платы Arduino Uno для любителей что-то сделать своими руками, но не сильно разбирающихcя в языке программирования C++. Библиотеки — это несколько файлов (минимум два), и у каждого файла есть свое назначение. Также в архиве часто можно найти примеры использования команд в скетчах, чтобы избежать ошибки при компиляции.


Установка библиотек на компьютер для платы Arduino UNO

Библиотека – это программный код для скетча, хранящийся во внешнем файле, которые подключается к проекту. Все библиотеки Arduino можно разделить на стандартные — эти библиотеки не требуется устанавливать, они изначально встроены в среду Arduino IDE. Дополнительные библиотеки разрабатывает производитель датчиков и модулей, их требуется скачивать и устанавливать. В Интернете размещено сотни готовых библиотек для модулей, а можно написать библиотеку самостоятельно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector