Лодка на Arduino с датчиками

Принципы работы дистанционно управляемой лодки на Arduino

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

Движение вперед: если оба двигателя вращаются по часовой стрелке, то лодка движется вперед.

Движение назад: если оба двигателя вращаются против часовой стрелки, то лодка движется назад.

Движение влево: если вращается только правый мотор, то движущая сила вперед создается только с правой стороны, поэтому лодка поворачивается влево.

Движение вправо: если вращается только левый мотор, то лодка поворачивает вправо.

Мы подключили входные контакты драйвера двигателей к четырем выходным битам декодера (D8-D11). Мы можем управлять этими 4-мя выходами при помощи замыкания контактов AD8-AD11 в передающей части проекта на землю (ground). К примеру, если мы замкнем на землю AD8, то это приведет к срабатыванию (активации) D8. Таким образом мы можем управлять вращением двух моторов в двух направлениях с использованием этих 4-х выходов. Но мы не можем непосредственно управлять двумя двигателями (а это необходимо для движения вперед и назад) с помощью одной кнопки, поэтому для этой цели мы в проекте и использовали плату Arduino – с ее помощью мы можем управлять входными контактами кодирующего устройства по нашему желанию.

Необходимые компоненты

  • Arduino Uno
  • Сервомоторы SM-S4303R
  • Источник питания 5 В DC
  • Модуль HC-SR04 — ультразвуковой датчик расстояния
  • Металлический конструктор — для механической части проекта
  • Макетная плата и проводники
  • Компьютер с USB кабелем для передачи о обработки данных
  • Ну и всякая мелочевка…

В проекте использовались сервомоторы SM-S4303R, которые обеспечивают вращение ротора без ограничения угла поворота. Не самый популярный ход, но зато процесс разработки становится гораздо интереснее.

Видео завершенного эхолокатора с использованием ультразвукового датчика расстояния и Arduino приведено ниже:

Познакомимся с основными принципами измерения частоты цифровым способом.

Всего существует два принципа. Оба они основаны на сравнении периодов образцового и измерительного сигналов.

Первый способ иллюстрирует следующая схема.

Лодка на Arduino с датчиками

Рис. 3

Импульс входного сигнала (передним или задним фронтом), поступающий от датчика Холла, запускает аппаратное прерывание Ардуино.  При срабатывании функции прерывания запускается подсчет количества импульсов n встроенного тактового генератора, период следования которых Tзаранее известен, и продолжается до следующего срабатывания прерывания.

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

T = k*T

Частота определяется как величина обратная периоду:

f=1/T

А частота вращения, выраженная в об/мин будет в 60 раз больше:

n=60/T=60/(k*T).

Для получения длительности импульсов образцового сигнала встроенного генератора пользователю Ардуино доступна функция Micros (). Она показывает текущее значение времени в микросекундах с начала запуска программы. Таким образом, обращаясь к ней в моменты срабатывания функции прерывания, можно получить количество микросекунд между двумя срабатываниями. Так как длительность одного образцового импульса T равна 1 мкс=1/1000000 с, тогда формула приобретает вид:

n=60*1000000/(k).

Если на валу вращающегося двигателя установлен не один магнит, а несколько (z), то время T между ближайшими срабатываниями функции прерывания сокращается в z раз, а частота входного сигнала возрастает в z раз, тогда формула примет вид:

n=60*1000000/(k*z).

Лодка на Arduino с датчиками

Рис. 4

Второй способ отличается от первого тем, что ведется прямой подсчет числа импульсов k, поступивших от датчика Холла за большой период времени Tm. Этот способ поясняется вторым рисунком. Согласно этому способу частота вращения вала будет равна:

f=k/Tm;

А в минуту – в 60 раз больше:

f=60*k/Tm.

Если принять Tm=1 c., то формула приобретает вид:

f=60*k.

Схема

Лодка на Arduino с датчикамиЛодка на Arduino с датчикамиЛодка на Arduino с датчиками

Схема проста, часть деталей запаивается на макетной плате.

Через скользящие контакты от Arduino к датчику VL53L03X подключаются контакты +5В, земля и две линии интерфейса I2C (SCL и SDA). К датчику Холла подключается земля, +5В и вывод D8 от Arduino. Также между +5В и D8 устанавливается резистор на 10кОм.

На повышающего преобразователя подаётся 5В. На плате построечным резистором устанавливается выходное напряжение примерно 12В. Эти 12В с выхода стабилизатора подключаются к выводам «питание мотора» модуля драйвера моторов. Так же по линии 12В устанавливается электролитический конденсатор, который нужен что бы драйвер мотора работал без сбоев (на плате его может не быть совсем, а даже когда запаян керамический или танталовый конденсатор, его ёмкости обычно недостаточно). 5В подключается к выводам «питание логики» драйвера моторов. Не перепутайте, где выводы «питание логики» и «питание мотора», иначе драйвер может выйти из строя.

Платы бывают разные, иногда плюс питания для мотора обозначается, допустим надписью VMOT, а плюс питания логики обозначаться как VCC. Выводов GND на плате может быть один или несколько, в данном случае это не имеет значения.

Выводы STEP, DIR и EN от драйвера моторов подключаются к Arduino, а выводы RESET и SLEEP соединяются между собой.

На платах с драйвером моторов A4988 обычно запаян подстроечный резистор, им настраивается ограничение по току для шагового мотора. Ограничение тока для шаговых моторов очень желательно настроить. Если ограничить ток слишком сильно, мотор под нагрузкой или не сможет вообще проворачивать вал или будут пропуски шагов. Если задать слишком большой ток и источник питания способен будет его обеспечить, мотор будет греться или его обмотки просто сгорят. Так же это абсолютно ненужная нагрузка на источник питания. При питании от аккумулятора это приведёт к тому, что он будет быстрей разряжаться. При питании от USB (блока питания, порт компьютера или ноутбука и т.д.) в лучшем случае будет просто лишняя нагрузка, в худшем, когда блок питания или порт не рассчитан на такой ток и нет защиты, это даже может привести к выходу из строя блока питания или порта.

Популярные статьи  Как слепить из пластилина пони

Вот и все. В качестве источника питания используется USB-кабель, подключенный к Arduino NANO.

Полезные советы

Как видно, кораблик для рыбалки своими руками делается быстро.

Кроме того, есть другие полезные рекомендации, которые помогут не только самостоятельно сконструировать изделие, но и сделать его долговечным:

лучше выбрать не фанеру, а стеклопластик, ведь он гораздо легче и не требует дополнительной защиты от влаги, так как не поддается ее негативному воздействию (этот материал также отличается высокой прочностью);
выбранный аккумулятор должен обладать достаточной емкостью, чтобы катер не заглох посреди водоема, но также важно обратить внимание и на вес компонента (он не должен слишком сильно утяжелять конструкцию);
катер можно дополнительно оснастить подсветкой, навигатором — это даст возможность осуществлять ночную ловлю;
для того чтобы изделие не ушло под воду, необходимо правильно рассчитать водоизмещение, которое колеблется в пределах 2,5-12 литров (тут влияет расстояние, на которое уплывает судно, количество подкормки, масса необходимого оборудования).

Подбираем комплектацию под проект на примере Arduino Mega 2560 R3

Для создания полноценной системы «Умный дом» и выполнения ею возложенных функций важно правильно подойти к комплектации и выбору оборудования

Что входит в комплект поставки?

Если ваша цель — «Умный дом» на базе Arduino, требуется подготовить следующее оборудование — саму плату Mega 2560 R3, модуль Ethernet (ENC28J60), датчик движения, а также другие датчики и контроллеры.

Кроме того, стоит подготовить кабель вида «витая пара», резистор, реле, переключатель и кабель для модуля Ethernet.

Лодка на Arduino с датчиками

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

Учтите, что покупать наборы для монтажа системы стоит в сертифицированных пунктах. Это объясняется тем, что при реализации проекта применяется электричество, а использование подделки может привести к снижению уровня безопасности.

Все программы для адаптации можно найти в сети на официальном сайте Arduino https://arduino.ru.  При выборе датчиков стоит ориентироваться на задачи, которая должен решать «Умный дом».

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

Лодка на Arduino с датчиками

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

Что касается ПО, которое применяется в Ардуино, оно написано на языке Си. На число байт имеются определенные ограничения, но текущей памяти достаточно для реализации поставленной задачи.

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

Как устроен металлодетектор

Металлоискатель использует в своей работе метод индуктивного зондирования. Основная рабочая часть прибора – катушка индуктивности. Наличие металла под зондом детектора меняет индуктивность, которая замеряется логикой контроллера и передается пользователю через интерфейсное устройство в виде сигналов (принцип работы будет подробнее рассмотрен ниже). Таким устройством обычно служит динамик или наушники, но могут применяться и другие способы оповещения:

  • светодиоды;
  • сообщения на смартфон;
  • вывод визуальных кодов на встроенный экран, и так далее.

Любой металлоискатель состоит из трех основных блоков:

  • катушка (или несколько). Они играют роль обнаруживающих металл передающих или принимающих антенн;
  • блок управления;
  • устройство вывода сигнала.

Лодка на Arduino с датчиками

Отметим, что речь идет о простом импульсном или индукционном детекторе. Дорогие промышленные и специализированные образцы могут содержать иную аппаратную «начинку».

В блоке управления расположен генератор сигнала и центральная схема — контроллер. Существует множество схем металлоискателей под разные виды плат. Распространена схема устройства «Пират» на базе двух чипов:

  • операционного двухканального усилителя TL072 и его аналога К157УД2 (приемный модуль);
  • чипа NE555 (передающий узел системы).

Лодка на Arduino с датчиками

Но в последнее время становятся популярны варианты на Arduino. Причина этого — простота, дешевизна, хорошая изученность семейства Ардуино и мощные программные возможности платформы.

Необходимые компоненты

  1. Кнопки – 4 шт.
  2. Электродвигатели постоянного тока – 2 шт.
  3. Пропеллеры для двигателей (мы использовали самодельные) – 2 шт.
  4. Common PCB (печатная плата).

Внешний вид необходимых для проекта компонентов показан на следующем рисунке.

Лодка на Arduino с датчиками

Передающие и приемные радиочастотные модули (RF-модули) на 433 МГц

Лодка на Arduino с датчиками

Данные типы радио модулей пользуются большой популярностью у радиолюбителей вследствие их низкой стоимости и простоты работы с ними. Они идеально подходят для радиосвязи на небольшие расстояние для передачи небольших объемов информации. Они используют простейший вид модуляции – амплитудную манипуляцию (АМ, АТ). При данном виде модуляции при передаче 1 в окружающее пространство излучается радиоволна с фиксированной (неизменной) частотой, а при передаче 0 ничего не излучается. То есть при передаче логического нуля данные модули не расходуют энергии поскольку в эфир ничего не излучается, что делает подобные модули весьма энергоэффективными, что особенно полезно в устройствах, работающих от батарей.

Сборка конструкции передающей части проекта

Мы припаяли все компоненты передающей части проекта к печатной плате (common PCB). Помните о том, что поскольку вы работаете с радио модулями, то возможны нежелательные помехи между различными частями схемы, поэтому старайтесь соединить все компоненты схемы максимально близко друг к другу. Также мы использовали коннекторы типа «мама» (female pin) для подключения платы Arduino и передающего радио модуля. Старайтесь все компоненты схемы соединить с помощью печатных дорожек платы вместо использования соединительных проводов. Также подключите небольшой кусок провода к передающему радио модулю – он будет выполнять роль антенны и увеличит, таким образом, дальность связи. Перед подключением платы Arduino и передающего радио модуля обязательно проверьте напряжение на выходе регулятора lm7805.

Лодка на Arduino с датчиками

Нижняя часть печатной платы передающей части нашего проекта показана на следующем рисунке.

Лодка на Arduino с датчиками

Как сделать радиоуправляемый катер Ардуино

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

  • плата Arduino Uno;
  • Bluetooth модуль HC-05;
  • два DC мотора 5 Вольт;
  • аккумулятор на 9 Вольт (крона);
  • 2 транзистора и резисторы;
  • кусок пеноплекса 50 мм;
  • фанера 3-4 мм, линолеум, пластик;
  • паяльник, термопистолет, канцелярский нож, провода и изолента.
Популярные статьи  МИГ 3. Скоростной высотный истребитель Второй Мировой войны

Если вы будете использовать моторы от наборов Ардуино, то транзисторы не понадобятся. В данном проекте использовались советские моторчики на 3,5 В, которым не хватает Ампер от пинов на плате, поэтому моторчики подключались к порту Vin (источник питания платы), через резистор, чтобы снизить напряжение. Включение и выключение моторов постоянного тока производится через транзисторы.

Калибровка

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

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

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

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

Например, используя ту же схему, что и выше, вы увидите на последовательном мониторе значения, подобные следующим:

  • когда датчик сухой: 0;
  • при частичном погружении в воду: ~ 420;
  • при полном погружении: ~ 520.

Лодка на Arduino с датчиками
Рисунок 6 — Калибровка датчика уровня воды

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

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

Работа датчика уровня воды довольно проста.

Ряд открытых параллельных проводников вместе действует как переменный резистор (потенциометр), сопротивление которого изменяется в зависимости от уровня воды.

Изменение сопротивления соответствует расстоянию от верхушки датчика до поверхности воды.

Лодка на Arduino с датчикамиРисунок 2 – Демонстрация работы датчика уровня воды

Сопротивление обратно пропорционально высоте воды:

  • чем больше воды, в которую погружен датчик, тем лучше проводимость, и тем ниже сопротивление;
  • чем меньше воды, в которую погружен датчик, тем хуже проводимость, и тем выше сопротивление.

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

Объяснение программы для Arduino

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

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

Arduino

int f_button = 9;
int b_button = 8;
int l_button = 7;
int r_button = 6;
int m1=2;
int m2=3;
int m3=4;
int m4=5;

1
2
3
4
5
6
7
8

intf_button=9;

intb_button=8;

intl_button=7;

intr_button=6;

intm1=2;

intm2=3;

intm3=4;

intm4=5;

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

Arduino

pinMode(f_button,INPUT_PULLUP);
pinMode(b_button,INPUT_PULLUP);
pinMode(l_button,INPUT_PULLUP);
pinMode(r_button,INPUT_PULLUP);
pinMode(m1,OUTPUT);
pinMode(m2,OUTPUT);
pinMode(m3,OUTPUT);
pinMode(m4,OUTPUT);

1
2
3
4
5
6
7
8

pinMode(f_button,INPUT_PULLUP);

pinMode(b_button,INPUT_PULLUP);

pinMode(l_button,INPUT_PULLUP);

pinMode(r_button,INPUT_PULLUP);

pinMode(m1,OUTPUT);

pinMode(m2,OUTPUT);

pinMode(m3,OUTPUT);

pinMode(m4,OUTPUT);

Затем в функции loop мы будем считывать состояние кнопок с помощью функции digitalRead. Если кнопка нажата, то на контакте, к которому она подключена, будет уровень LOW.

Arduino

if ( digitalRead(f_button)==LOW)

1 if(digitalRead(f_button)==LOW)

Если нажата кнопка движения вперед нам необходимо будет выполнить следующую последовательность действий:

Arduino

{
digitalWrite(m1, LOW);
digitalWrite(m3, LOW);
digitalWrite(m2, HIGH);
digitalWrite(m4, HIGH);
}

1
2
3
4
5
6

{

digitalWrite(m1,LOW);

digitalWrite(m3,LOW);

digitalWrite(m2,HIGH);

digitalWrite(m4,HIGH);

}

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

Arduino

{
digitalWrite(m1, HIGH);
digitalWrite(m3, HIGH);
digitalWrite(m2, LOW);
digitalWrite(m4, LOW);
}

1
2
3
4
5
6

{

digitalWrite(m1,HIGH);

digitalWrite(m3,HIGH);

digitalWrite(m2,LOW);

digitalWrite(m4,LOW);

}

Для движения влево:

Arduino

{
digitalWrite(m1, LOW);
digitalWrite(m3, HIGH);
digitalWrite(m2, HIGH);
digitalWrite(m4, HIGH);
}

1
2
3
4
5
6

{

digitalWrite(m1,LOW);

digitalWrite(m3,HIGH);

digitalWrite(m2,HIGH);

digitalWrite(m4,HIGH);

}

Для движения вправо:

Arduino

{
digitalWrite(m1, HIGH);
digitalWrite(m3, LOW);
digitalWrite(m2, HIGH);
digitalWrite(m4, HIGH);
}

1
2
3
4
5
6

{

digitalWrite(m1,HIGH);

digitalWrite(m3,LOW);

digitalWrite(m2,HIGH);

digitalWrite(m4,HIGH);

}

После сборки аппаратной части проекта можно загружать программу в плату Arduino и приступать к тестированию проекта.

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

Лодка на Arduino с датчиками

Расширение возможности на Ардуино

Одной из возможностей умного дома является визуализация состояния автоматики и проходящих в системе процессов. Для этого рекомендуется применять отдельный сервер, обеспечивающий обработку состояний (может применяться программа Node.js).

Упомянутая программная технология применяется для решения интернет-задач, поэтому для визуализации «Умного дома» используется язык Java Script (именно с его помощью создается обработчик и сервер). Результаты можно увидеть на экране компьютера или ПК.

Для реализации задуманного подойдет ноутбук, обычный ПК или Raspberry Pi. Применение такой системы позволяет увеличить ее возможности. Так, если на плате Ардуино имеется небольшой объем памяти, на сервере такие ограничения отсутствуют. Программа пишется таким образом, чтобы обеспечить полное управление платформой.

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

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

Что нам понадобится?

Лодка на Arduino с датчиками

  1. Strela

  2. Bluetooth Bee

  3. Мотор 12 мм 1:100 2 шт.
  4. Втулки на вал мотора (⌀ 3 мм, пара)

  5. Привод постоянного вращения FS5103R

  6. Втулка на вал сервопривода

  7. Соединительные скобы

  8. Кабель USB (A — B)

  9. 4× винт М1.6 для крепления моторов
  10. NiMH-аккумулятор, подойдёт например от радиоуправляемой игрушки
  11. Телефон на базе ОС Android
  12. Многожильный монтажный провод с сечением не менее 1 мм² (2 шт. разного цвета)
  13. Одножильный монтажный провод c сечением не менее 4 мм²
  14. Крепёжные элементы: двусторонняя клейкая лента, болты, гайками, шайбы.
  15. Набор пластиковых бутылок разной формы и ёмкости
  16. Корм для уток, в нашем случае сушки
Популярные статьи  Прикольные поздравления ко дню рождения женщине: 50 пожеланий со смыслом ?

Описание схемы

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

Датчики:

Эта часть содержит ИК-диоды, потенциометр, компаратор (операционный усилитель) и светодиоды. Потенциометр используется для установки опорного напряжения на одном выводе компаратора, а ИК-датчики используются для обнаружения линии и обеспечения изменения напряжения на втором выводе компаратора. Затем компаратор сравнивает оба напряжения и формирует на выходе цифровой сигнал. В этой схеме мы использовали два компаратора для двух датчиков. В качестве компаратора используется LM 358. LM358 имеет два встроенных малошумящих операционных усилителя.

Управление:

Arduino UNO используется для управления всем процессом робота, движущегося по линии. Выходы компараторов подключены к цифровым пинам (контактам) 2 и 3 платы Arduino. Arduino считывает эти сигналы и отправляет команды в схему драйвера для правильной работы трансмиссии.

Драйвер:

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

Изготавливаем катер на Ардуино своими руками

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

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

Скопировать готовый скетч для катера на Bluetooth управлении можно далее. Для создания приложения на Андроид использовалась программа App Inventor. Скачать скетч для катера на Ардуино, файл с приложением для Androida и шаблон катера можно скачать одним архивом здесь. Приложение сохранено в формате .apk, этот файл необходимо распаковать из архива, загрузить на телефон и установить.

Описание программы

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

/*———определение входов——*/
#define LS 2 // левый датчик
#define RS 3 // правый датчик

/*——-определение выходов——*/
#define LM1 4 // левый мотор
#define LM2 5 // левый мотор
#define RM1 6 // правый мотор
#define RM2 7 // правый двигатель

1
2
3
4
5
6
7
8
9
/*———определение входов——*/
#define LS 2 // левый датчик
#define RS 3 // правый датчик
 
/*——-определение выходов——*/
#define LM1 4 // левый мотор
#define LM2 5 // левый мотор
#define RM1 6 // правый мотор
#define RM2 7 // правый двигатель

if(digitalRead(LS) && digitalRead(RS)) // Движение вперед
{
digitalWrite(LM1, HIGH);
digitalWrite(LM2, LOW);

1
2
3
4

if(digitalRead(LS)&&digitalRead(RS))// Движение вперед

{

digitalWrite(LM1,HIGH);

digitalWrite(LM2,LOW);

В этих строках, есть четыре условия, которые мы считываем с помощью Arduino. Мы использовали два датчика, а именно левый датчик и правый датчик.

ВХОД ВЫХОД Движение робота
Левый датчик Правый датчик Левый двигатель Правый двигатель
LS RS LM1 LM2 RM1 RM2
( 0 ) ( 0 ) ( 0 ) ( 0 ) ( 0 ) ( 0 ) Остановка
( 0 ) ( 1 ) ( 1 ) ( 0 ) ( 0 ) ( 0 ) Поворот направо
( 1 ) ( 0 ) ( 0 ) ( 0 ) ( 1 ) ( 0 )  Поворот налево
( 1 ) ( 1 ) ( 1 ) ( 0 ) ( 1 ) ( 0 ) Движение вперед

Код пишется в соответствии с условиями, показанными в таблице выше.

Базовый пример определения уровня воды

После того, как схема будет собрана, загрузите следующий эскиз в Arduino.

После загрузки скетча откройте окно последовательного монитора, чтобы увидеть вывод Arduino. Вы должны увидеть значение 0, когда датчик ничего не касается. Чтобы увидеть, как определяется вода, вы можете взять стакан с водой и медленно погрузить в него датчик.

Лодка на Arduino с датчиками
Рисунок 5 — Вывод показаний датчика уровня воды

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

Объяснение

Скетч начинается с объявления контактов Arduino, к которым подключены контакты датчика + (VCC) и S (сигнал).

Затем мы определяем переменную val, в которой хранится текущее значение уровня воды.

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

В функции loop () мы периодически вызываем функцию readSensor () с интервалом в одну секунду и печатаем возвращаемое значение.

Функция readSensor () используется для получения текущего уровня воды. Включает датчик, ждет 10 миллисекунд, считывает аналоговое значение с датчика, выключает датчик, а затем возвращает аналоговое значение.

KY-005, модуль инфракрасного светодиода

Модуль инфракрасного светодиода

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

Преимущества- луч невидим для человеческого глаза, недостатки- большой угол рассеивания.

Оцените статью
( Пока оценок нет )
Добавить комментарий