Датчик наклона на базе ардуино своими руками

Список датчиков

  • Датчик температуры KY-001
  • Вибровыключатель KY-002
  • Магнитный датчик KY-003
  • Кнопка KY-004
  • Датчик инфракрасного излучения KY-005
  • Пассивный зуммер KY-006
  • Лазерный модуль KY-008
  • Трехцветный светодиод KY-009
  • Датчик с оптическим прерывателем KY-010
  • Трехцветный светодиод KY-011
  • Активный зуммер KY-012
  • Датчик температуры KY-013
  • Датчик температуры и влажности KY-015
  • Трехцветный светодиод KY-016
  • Датчик наклона KY-017
  • Фоторезистор KY-018
  • Реле KY-019
  • Датчик наклона KY-020
  • Геркон KY-021
  • Инфракрасный датчик KY-022
  • Джойстик KY-023
  • Датчик магнитного поля KY-024
  • Датчик магнитного поля KY-025
  • Датчик пламени KY-026
  • Модуль световых эффектов «магическая чашка» KY-027
  • Датчик температуры KY-028
  • Двухцветный светодиод KY-029
  • Датчик удара KY-031
  • Датчик для избегания препятствий KY-032
  • Датчик магнитного поля KY-033
  • Семицветный светодиод KY-034
  • Магнитный датчик KY-035
  • Датчик металла KY-036
  • Датчик звука KY-037
  • Датчика звука KY-038
  • Датчик сердцебиения KY-039
  • Датчик угла поворота (энкодер) KY-040

Введение

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

ЧИТАТЬ ДАЛЕЕ:  Бак для воды в баню - как выбрать и подключить своими руками

В системах радиоэлектроники такие способы управления работой двигателя получили название широтно-импульсной модуляции (ШИМ). Такой процесс характеризуется изменением продолжительности подаваемого напряжения или формы его сигнала.

Как можно изменять скорость вращения при помощи ШИМ?

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

Величина среднего напряжения, подаваемого на двигатель, напрямую зависит от формы сигнала ШИМ . Форма сигнала, в свою очередь, определяется рабочим циклом, который можно представить в виде отношения времени подачи сигнала к общему периоду (сумме времени подачи напряжения и его отключения).  В результате получается безразмерная величина, которую выражают в процентном отношении – сколько времени от общего периода напряжение подавалось на двигатель. В слаботочных системах на 5, 12, 24 или 36 В применяется цикл на 25%, 50%, 75% и 100%.

Широтно-импульсная модуляция
Широтно-импульсная модуляци

Простой пример работы Arduino с драйвером L298N

Здравствуй, дорогой читатель! Сегодняшняя статья посвящена созданию простой домашней системы безопасности, при помощи доступных компонентов. Это маленькое и дешёвое устройство поможет тебе защитить ваше жилище от проникновения при помощи Arduino, датчика движения, дисплея и динамика. Питаться устройство сможет от батарейки или USB-порта компьютера.

Итак, начнём!

Как оно работает?

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

Датчик наклона на базе ардуино своими руками

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

  • На рисунке видно, как линза искажает лучи, которые падают на неё.
  • Стоит отметить, что роботы без особо греющихся частей и хладнокровные излучают в ИК-диапазоне очень слабо, поэтому датчик может не сработать в случае, если тебя решат обнести сотрудники Boston Dynamics или рептилоиды.
  • Когда происходит изменение уровня ИК излучения в диапазоне действия, это будет обрабатываться на Arduino после чего на LCD дисплее будет выводится статус, светодиод будет мигать, а спикер пищать.

Кстати, если не хочется покупать все эти детали по отдельности — рекомендуем обратить внимание на наши стартовые наборы. К примеру, всё необходимое и даже больше есть в нашем стартовом наборе Кавасаки-2.

Подключаем!

Подключение датчика движения очень простое:

  1. Пин Vcc подключаем к 5V Ардуино.
  2. Пин Gnd подключаем к GND Ардуино.
  3. Пин OUT подключаем к цифровому пину №7 от Arduino

Теперь присоединим светодиод и спикер. Тут всё так же просто:

  1. Короткую ножку (минус) светодиода подключаем к земле
  2. Длинную ножку (плюс) светодиода подключаем к выходу №13 Arduino
  3. Красный провод спикера к выходу №10
  4. Чёрный провод – к земле
Пин дисплея Пин Arduino
RS 12
Enable 11
D4 5
D5 4
D6 3
D7 2

Теперь ты знаешь, как подключить дисплей 1602 к Arduino UNO R3 (ровно как и к любой версии Arduino от Mini до Mega).

Программируем

https://www.youtube.com/watch?v=https:accounts.google.comServiceLogin

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

#includeint ledPin = 13; // Пин светодиодаint inputPin = 7; // Пин, к которому подключен Out датчика движенияint pirState = LOW; // Текущее состояние (в начале ничего не обнаружено)int val = 0; // Переменная для чтения состояния цифровых входовint pinSpeaker = 10; // Пин, к которому подключен динамик. Требуется использовать пин с ШИМ (PWM)

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Инициалиация LCD дисплея

void setup() { // Определение направления передачи данных на цифровых пинахpinMode(ledPin, OUTPUT);pinMode(inputPin, INPUT);pinMode(pinSpeaker, OUTPUT);// Запуск вывода отладочной информации через последовательный портSerial.begin(9600);

// Запуск вывода на LCD дисплейlcd.begin(16, 2);// Устанавливаем индекс на дисплеи, с которого начнём вывод// (2 символ, 0 строки)lcd.setCursor(2, 0);// Вывод на LCD дисплейlcd.print(«P.I.R Motion»);// Снова перемещаемlcd.setCursor(5, 1);// Выводимlcd.print(«Sensor»);// Пауза, чтобы успели прочитать, что вывелиdelay(5000);// Очисткаlcd.clear();

// Аналогичноlcd.setCursor(0, 0);lcd.print(«Processing Data.»);delay(3000);lcd.clear();lcd.setCursor(3, 0);lcd.print(«Waiting For»);lcd.setCursor(3, 1);lcd.print(«Motion….»);}

void loop() { // Считываем показание датчикаval = digitalRead(inputPin);if (val == HIGH) {// Если есть движение, то зажигаем светодиод и включаем сиренуdigitalWrite(ledPin, HIGH);playTone(300, 300);delay(150);

// Если движения до данного момента не было, то выводим сообщение// что оно обнаружено// Код ниже нужен для того, чтобы писать лишь смену состояния, а не каждый раз выводить значениеif (pirState == LOW) {Serial.println(«Motion detected!»);lcd.clear();lcd.setCursor(0, 0);lcd.print(«Motion Detected!»);

pirState = HIGH;}} else {// Если движене закончилосьdigitalWrite(ledPin, LOW);playTone(0, 0);delay(300);if (pirState == HIGH){// Сообщаем, что движение было, но уже закончилосьSerial.println(«Motion ended!»);lcd.clear();lcd.setCursor(3, 0);lcd.print(«Waiting For»);lcd.setCursor(3, 1);lcd.print(«Motion….»);pirState = LOW;}}}

// Функция воспроизведения звука. Duration (длительность )- в миллисекундах, Freq (частота) — в Гцvoid playTone(long duration, int freq) {duration *= 1000;int period = (1.0 / freq) * 100000;long elapsed_time = 0;while (elapsed_time {amp}lt; duration) {
digitalWrite(pinSpeaker,HIGH);
delayMicroseconds(period / 2);
digitalWrite(pinSpeaker, LOW);
delayMicroseconds(period / 2);
elapsed_time = (period);
}
}

Заключение

На ней Arduino уже запитана от батарейки 9V, а не от USB порта.

Источники

Датчик наклона на базе ардуино своими руками

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

Это означает, что выходной сигнал датчика Холла является функцией плотности магнитного поля вокруг него.

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

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

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

Ардуино - сообщество, сайт о платформе Arduino

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

Для запуска процесса плата генерирует сигнал, который подается на обмотки двигателя. Чтобы контролировать величину подаваемого сигнала в рабочую схему включается транзистор. Который включается в разрыв питающей сети, а на его базу подается управляющий импульс от Arduino. Задавая определенные параметры работы набором команд для Arduino, транзистор будет переходить в открытое, закрытое или приоткрытое состояние.

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

Принципиальная схема управления dc мотором
Принципиальная схема управления dc мотором

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

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

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

Схема H-моста
Схема H-моста

Посмотрите на рисунок, в этой схеме управление питанием двигателя происходит от выводов А и В, на которые подается управляющий потенциал.

Принцип определения направления вращения в Н-мосте происходит следующим образом:

  • при подаче на базы транзисторов Q1 и Q4 импульса для открытия перехода происходит протекание тока по обмоткам двигателя в одном направлении;
  • при подаче на базы транзисторов Q2 и Q3 импульса для открытия перехода ток будет протекать в противоположном направлении, в сравнении с предыдущим и произойдет реверсивное движение;
  • попарное открытие транзисторов Q1 и Q3, Q2 и Q4 приводит к торможению ротора;
  • открытие транзисторов в последовательности Q1 и Q2 или Q3 и Q4 совершенно недопустимо, поскольку оно приведет к возникновению короткого замыкания в цепи.

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

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

KY-015 модуль с датчиком температуры и влажности – DHT11

Собран на цифровом сенсоре DS18B20, напряжение питания от 3.0 V до 5.5 V.

Измеряемая температура -55 ° C до 125 ° C, по Фаренгейту — 67 ° F до 257 ° F.

В диапазоне от -10 °C до 85 ° C точность измерения ± 0.5 ° C.

Время измерения не более 750 миллисекунд.

Датчик наклона на базе ардуино своими руками

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

S = Signal, в примере подключаем к 10 выводу arduino

#include {amp}lt;OneWire.h{amp}gt;

OneWire ds(10); // датчик на 10 выводе

void setup(void) {
Serial.begin(9600);
}

void loop(void) {

//For conversion of raw data to C
int HighByte, LowByte, TReading, SignBit, Tc_100, Whole, Fract;

byte i;
byte present = 0;
byte data[12];
byte addr[8];
// ищем устройства, подключенные к шине
if ( !ds.search(addr)) {
Serial.print(«No more addresses.n»);
ds.reset_search();
return;
}

Serial.print(«R=»);
for( i = 0; i {amp}lt; 8; i  ) {
Serial.print(addr[i], HEX);
Serial.print(" ");
}

if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.print(«CRC is not valid!n»);
return;
}

if ( addr[0] == 0x10) {
Serial.print(«найдено DS18S20.n»);
}
else if ( addr[0] == 0x28) {
Serial.print(«Найдено DS18B20.n»);
}
else {
Serial.print(«Устройство не опознано: 0x»);
Serial.println(addr[0],HEX);
return;
}

ds.reset();
ds.select(addr);
ds.write(0x44,1); // запрос данных

delay(1000); // 750ms по документации время получения температуры
present = ds.reset();
ds.select(addr);
ds.write(0xBE); // читаем данные

Serial.print(«P=»);
Serial.print(present,HEX);
Serial.print(" ");
for ( i = 0; i {amp}lt; 9; i  ) { // получаем 9 байт
data[i] = ds.read();
Serial.print(data[i], HEX);
Serial.print(" ");
}
Serial.print(" CRC=");
Serial.print( OneWire::crc8( data, 8), HEX);
Serial.println();

//преобразуем полученные данные в температуру
LowByte = data[0];
HighByte = data[1];
TReading = (HighByte {amp}lt;{amp}lt; 8)   LowByte;
SignBit = TReading {amp}amp; 0x8000;
if (SignBit) // negative
{
TReading = (TReading ^ 0xffff)   1;
}
Tc_100 = (6 * TReading)   TReading / 4;

Whole = Tc_100 / 100
Fract = Tc_100 % 100;


if (SignBit) {
Serial.print("-");
}
Serial.print(Whole);
Serial.print(".");
if (Fract {amp}lt; 10)
{
Serial.print(«0»);
}
Serial.print(Fract); // выводим температуру

Serial.print("n");
}

напряжение питания, В: 3.3…5

выход: цифровой

диапазон измерения влажности, % RH:  20-90

Принципиальная схема метеостанции на Ардуино

диапазон измерения температуры, ℃: 0…50

https://www.youtube.com/watch?v=ytpress

точность измерения влажности, % RH:  / – 5

точность измерения температуры, ℃: / – 2

разрешающая способность при измерении влажности, % RH: 1

разрешающая способность при измерении температуры, ℃: 1

долгосрочная стабильность, % RH / год: {amp}lt; ± 1

левый пин S —{amp}gt; к выводу 10 ардуино

Правый пин GND

Средний пин 5

Для работы используется библиотека DHTLib, почитать о ней можно тут http://playground.arduino.cc/Main/DHTLib

Простой пример работы Arduino с драйвером L298N

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

L298N
L298N. Выводы
  • Vss – вывод питания для логических цепей в 5В;
  • GND – нулевой вывод (он же корпус);
  • INPUT1, INPUT 2, INPUT 3, INPUT 4 – позволяют плавно наращивать и уменьшать скорость вращения двигателя;
  • OUTPUT1, OUTPUT2 – выводы для питания первой индуктивной нагрузки;
  • OUTPUT3, OUTPUT4 – выводы для питания второй индуктивной нагрузки;
  • Vs – вывод для переключения питания;
  • ENABLE A, B – выводы, при помощи которых осуществляется раздельное управление каналами, могут устанавливать активный и пассивный режим (с регулируемой скоростью вращения и с установленной);
  • CURRENT SENSING A, B – выводы для установки текущего режима.
Пример драйвера L298N
Пример драйвера L298N

Теперь разберем, как осуществляется управление двигателем с помощью драйвера L298N. Подключение двигателя производится к винтовым клеммным зажимам – по паре для питания каждого моторчика. Остальные клеммные зажимы предназначены для подачи питания плюс и минус, а также получения пониженного напряжения (на них подается определенный уровень питающего напряжения, от которого работают двигатели, а внутренний преобразователь понижает его до 5В для собственных логических цепей). Штекерные выводы платы осуществляют широтно-импульсную модуляцию при формировании рабочих сигналов.

Зажимы, куда подключать моторы
Зажимы, куда подключать моторы

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

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

Схема совместного использования Arduino и L298N
Схема совместного использования Arduino и L298N

Перечень необходимых компонентов для сборки схемы:

  • Arduino UNO  — наиболее простая модель из линейки, но его функционала будет более чем достаточно. Если вы используете более продвинутый вариант, то он также хорошо справится с этой задачей.
  • Драйвер  L298N – не самый доступный драйвер, но заменить его другим не получится, так как принцип работы похожих моделей может в корне отличаться.
  • Двигатель на 12 В – в данном примере используется электрическая машина постоянного тока.
  • Потенциометр 100 кОм.
  • Кнопка для коммутации цепи.
  • Источник питания 12 В  — может подойти любой вариант, включая несколько пальчиковых батареек.
  • Плата для установки элементов.
  • Соединительные провода, желательно с готовыми штекерами папа/мама.
Компонент Спецификация Количество Где купить
Arduino UNO Rev3.0 1 Ссылка
Драйвер L298N 1 Ссылка
Мини-двигатель 12В, DC, 6000 об/мин. 1 Ссылка
Блок питания 12 Вольт 1 Ссылка
Кнопка Micro SMD SMT 1 Ссылка
Потенциометр 100 кОм 1 Ссылка
Соединительные провода папа-мама   Ссылка

Управление DC двигателем с помощью Arduino UNO

Практическое применение.

https://www.youtube.com/watch?v=ytcopyright

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

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

KY-003 Магнитный датчик (Датчик Холла)(цифровой)

Собран на микросхеме 44E.Если магнитное поле отсутствует, на выходе S HIGH если магнитное поле в наличии – на выходе сигнал LOW и светодиод на датчике загорается. Чувствителен к полярности магнитного поля.

Подключение (слева направо)GND 5 vS – сигнал в примере подключаем к 10 выводу

int Led = 13 ; 
int SENSOR = 10 ; 
int val ; 
void setup ()
{
  pinMode (Led, OUTPUT) ;    
  pinMode (SENSOR, INPUT) ;  
}
 
void loop ()
{
  val = digitalRead (SENSOR) ; // читаем сенсор
  if (val == LOW) 
  {
    digitalWrite (Led, HIGH);
  }
  {
    digitalWrite (Led, LOW);
  }
}

Датчик имеет и цифровой и аналоговый выходы.

На плате светодиод, который загорается при детектировании магнитного поля.

Подключение (слева направо)AO аналоговый выходGND 5DO цифровой выход

KY-040 Энкодер с кнопкой

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

5 v

S на вход arduino

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

Енкодер выдает при вращении двоичный код на двух выходах. По этому коду можно определить направление вращения.

на полный оборот в моем случае приходится 24 импульса.

https://www.youtube.com/watch?v=upload

Помимо этого нажатие на ручку – срабатывание кнопки.

“CLK” – энкодер контакт “A”

“DT”  – энкодер контакт “B”

“SW” – кнопка

“ ”  – питание “ 5 В”

“GND” — общий

Товар предоставлен для написания обзора магазином. Обзор опубликован в соответствии с п.18 Правил сайта.

KY-034 автоматически мигающий яркий 7-цветный светодиодный модуль 5mm

На плате распаян резистор из расчета питающего напряжения 5 V.

Левый пин

правый -.

https://www.youtube.com/watch?v=ytpolicyandsafety

Работать как с обычным светодиодом

Используется 5050 светодиоод

Ток до 20mA

Питание : Red 1.80V (2.4 max), Green,Blue 2.8V (3.6V)

Токоограничительных резисторов на плате нет, поэтому при питании от 5В нужно использовать резисторы180 Ом для “R” входа100 Ом для “G” входа100 Ом для “B” входаПодключениеЧетыре вывода R,G,B и GNDРаботаем как с обычными диодами, регулируя напряжения на каждом субпикселе получим нужный цвет пикселя.

Напряжение (V):2.0-2 .5

Датчик наклона на базе Ардуино своими руками

ток: 10 мА

на плате распаян резистор и зачем-то smd светодиод

подключение через токоограничительные резисторы

330 Ohm —{amp}gt; средний пин

330 Ohm —{amp}gt; S пин

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

https://www.youtube.com/watch?v=ytcreators

R – плюс 5 В (красный)

G -плюс 5 В (зеленый)

B – плюс 5 В (синий)

GND – общий источника питания

KY-017 переключатель срабатывающий в зависимости от наклона

Ртутный. На плате присутствуют помимо датчика резистор и светодиодРаботаем как с обычной кнопкойПодключение (слева направо)GND 5 Выход S на плате светодиод, при замкнутых контактах горит красным

Светодиод

Напряжение: G :2.3-2 .6 V; R :1.9-2 .2 V

Ток 20мА

На моей плате распаян резистор и зачем-то smd светодиод

Работаем как с обычным светодиодом (управление по двум выводам для красного и зеленого)

На модуле установлен инфракрасный передатчик и приемник. Эффективная дистанция срабатывания 2 ~ 40cm, рабочее напряжение 3.3V-5V. Есть подстроечные резисторы, позволяют выставить дистанцию. При срабатывании на плате загорается светодиод.

Модуль имеет маркировку IR-08H

Выход – логический

Угол обнаружения

: 35 °

Второй пин 5

https://www.youtube.com/watch?v=ytadvertise

Третий сигнал

Четвертый- земля

Используем аналогично кнопки

При приближении препятствия срабатывает датчик, на выходе 1 и загорается светодиод на плате

пин — = GND

средний пин OUT

На плате напаян токоограничительный резистор. Работаем как с обычным светодиодом

KY-006 Пассивная пищалка

Визуально пассивная от активной пищалки ничем не отличается. На активной пищалке наклеена белая наклейка, защищающая мембрану

Пин – (правый)

https://www.youtube.com/watch?v=ytdev

Пин S(левый) к ноге 10 Arduino


int buzzer = 10 ;
void setup ()
{
  pinMode (buzzer, OUTPUT) ;
 }
void loop ()
{
  unsigned char i;
  while (1)
  {
    for (i = 0; i {amp}lt;80; i  ) // генерируем звук(1 КГц), частота задается задержками
    {
      digitalWrite (buzzer, HIGH) ;// Звук есть
      delay (1) ;// 1ms
      digitalWrite (buzzer, LOW) ;// Звука нет
      delay (1) ;// ms
    }
  }
}

KY-008 Красный лазер 650 nm

Левый пин

правый -.

Параметры: 30 mA при 5 V

пин — = GND

Pin = 5V

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

Ток до 20mA

ток: 10 мА

“KY-012″ — активный звуковой модуль представляет собой печатную плату с 5-вольтовым звуковым излучателем (для включения звука нужно просто подать питание 5 В)

Подключение к выводам S и -. На моем модуле перепутана полярность подключения

выход: цифровой

Правый пин GND

Средний пин 5

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

Работаем как с обычной кнопкой.

Модуль  предназначен для приема данных по инфракрасному каналу от пультов управления. На плате имеется светодиод с токоограничивающим резистором 1 кОм, которые включены между контактами 5 и “S”.

несущая частота: 38 кГц

дистанция приема от обычного пульта: 18-20 м

угол приема: 90 градусов

напряжение питания постоянного тока: 2,7-5,5 В

— GND

S выход приемника

управление устройствами в доме через пульт по ИК каналу

#include {amp}lt;IRremote.h{amp}gt;
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // начинаем прием
}
void loop() {
if (irrecv.decode({amp}amp;results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // принимаем следующее значение
}
}

красный светодиод на плате при замыкании загорается

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

AO аналоговый выход – можно подключать к аналоговому входу ардуино

DO – цифровой выход.

Ток 20мА

Угол обнаружения

: 35 °

Второй пин 5

Третий сигнал

Четвертый- земля

пин — = GND

средний пин OUT

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

На плате два светодиода – питание и срабатывание датчика


int sensorPin = A5;    // подключаем датчик к 5 аналоговому входу
int ledPin = 13;       // светодиод
int sensorValue = 0;   // данные с датчика

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

void loop () {
sensorValue = analogRead (sensorPin);
digitalWrite (ledPin, HIGH);
delay (100);
digitalWrite (ledPin, LOW);
delay (100);
Serial.println (sensorValue, DEC);//выводим данные с датчика
}

Плата с большим микрофоном, имеет 2 выхода: цифровой и аналоговый

AO, аналоговый выход – сигнал напрямую с микрофона

Датчик наклона на базе Ардуино своими руками

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

Резистором

На плате два светодиода – один при подаче питания, второй при срабатывании цифрового выхода


int Led = 13 ;// светодиод
int buttonpin = 10; // цифровой выход микрофона

void setup ()
{
  pinMode (Led, OUTPUT) ;
  pinMode (buttonpin, INPUT) ;
}

void loop ()
{
  val = digitalRead(buttonpin);// читаем цифровой выход
  if (val == HIGH) // Если сработал цифровой выход
  {
    digitalWrite (Led, HIGH);
  }
  else
  {
    digitalWrite (Led, LOW);
  }
}
{amp}lt;b{amp}gt;Работа с аналоговым выходом{amp}lt;/b{amp}gt;
int sensorPin = A0; // подключаем аналоговый выход
int ledPin = 13; // подключаем светодиод
int sensorValue = 0; // амплитуда звука

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

void loop () 
{
  sensorValue = analogRead (sensorPin);// читаем с аналогового выхода
Serial.println (sensorValue, DEC);// выводим амплитуду сигнала
  digitalWrite (ledPin, HIGH);
  delay (100);
  digitalWrite (ledPin, LOW);
  delay (100);
  
}

Плата с маленьким микрофоном, имеет 2 выхода: цифровой и аналоговый

Резистором

KY-010 датчик с оптическим прерывателем

Датчик состоит из светодиода и фототранзистора. На выходе либо 1 либо ноль. Резисторы распаяны на платеПодключение (слева направо)Gnd 5VSignal

Пример использования


int Led = 13 ;// светодиод на ардуино
int buttonpin = 10; // подключаем S датчика
int val ;
void setup ()
{
  pinMode (Led, OUTPUT) ;
  pinMode (buttonpin, INPUT) ;   
}
void loop ()
{
  val = digitalRead (buttonpin) ;// читаем состояние датчика 
  if (val == HIGH) // включаем светодиод
  {
    digitalWrite (Led, HIGH);
  }
  else
  {
    digitalWrite (Led, LOW);
  }
}

Как сделать аналоговый датчик своими руками

На выходе – напряжение, пропорциональное температуре. На плате термистор и резистор делителя.

сенсор NTC термистор

измеряет: -55°C / 125°C

точность: / — 0.5°C

#include {amp}lt;math.h{amp}gt;
int sensorPin = A5; // подключаем датчик на аналоговый вход
double Thermistor(int RawADC) {
double Temp;
Temp = log(10000.0*((1024.0/RawADC-1)));
Temp = 1 / (0.001129148   (0.000234125   (0.0000000876741 * Temp * Temp ))* Temp );
Temp = Temp — 273.15; // преобразуем Кельвин в Цельсий

return Temp;
}
void setup() {
Serial.begin(9600);
}
void loop() {
int readVal=analogRead(sensorPin);
double temp = Thermistor(readVal);
Serial.println(temp); // выводим температуру

delay(500);
}

Этот модуль имеет два выхода – цифровой и аналоговый. На плате имеется 2 светодиода – индикации питания и индикации выхода с компаратора. Построечным резистором можно изменять чувствительность датчика

AO аналоговій вход

GND

D0 цифровой выход


int Led = 13 ;// светодиод
int buttonpin = 10; // цифровой вход
int analogin = A3; // аналоговый вход

int val ;// 
float sensor; //значение датчика

void setup ()
{
  pinMode (Led, OUTPUT) ;
  pinMode (buttonpin, INPUT) ;
  pinMode (analogin, INPUT) ;
  Serial.begin(9600);
}

void loop ()
{
  sensor = analogRead(analogin);
  Serial.println(sensor);  // данные с датчика

  val = digitalRead (buttonpin) ;
    if (val == HIGH) // если сработал датчик
  {
    digitalWrite (Led, HIGH);
  }
  else
  {
    digitalWrite (Led, LOW);
  }
  delay(1000);
}

На выходе аналоговый сигнал, пропорциональный напряженности магнитного поля

пин — = GND

Датчик наклона на базе Ардуино своими руками

средний пин 5 V

пин S –выходной сигнал, в примере подключаем Arduino пин A5


int sensorPin = A5;    // подключаем датчик к 5 аналоговому входу
int ledPin = 13;       // светодиод
int sensorValue = 0;   // данные с датчика

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

void loop () {
sensorValue = analogRead (sensorPin);
digitalWrite (ledPin, HIGH);
delay (100);
digitalWrite (ledPin, LOW);
delay (100);
Serial.println (sensorValue, DEC);//выводим данные с датчика
}

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

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

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

Фото. Схема сборки датчика воды своими руками
Фото. Схема датчика воды своими руками и подключение к Ардуино

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

Акселерометры используют для определения вектора ускорения. Акселерометр ADXL335 имеет три оси, и благодаря этому он может определять вектор ускорения в трёхмерном пространстве.

Датчик наклона на базе Ардуино своими руками

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

На иллюстрации приведены рисунки из паспорта на акселерометр ADXL335.

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

Принцип снятия измерений с аналогового акселерометра ADXL335

Рассмотрим подробнее, что же показывает нам акселерометр. Пусть датчик лежит горизонтально, например, на столе. Тогда проекция вектора ускорения будет равна «1g» по оси Z, или Zout = 1g. По остальным двум осям будут нули: Xout = 0 и Yout = 0.

При повороте датчика «на спину», он будет направлен в противоположную сторону относительно вектора силы тяжести, т.е. Zout = −1g. Аналогично измерения снимаются по всем трём осям.

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

Датчик наклона на базе Ардуино своими руками

Если датчик сильно тряхнуть вдоль вертикальной оси Z, то значение Zout будет больше, чем «1g». Максимальное измеряемое ускорение составляет «±3g» по каждой из осей («плюс» и «минус» тут обозначают направление ускорения).

Думаю, с принципом работы акселерометра разобрались. Теперь рассмотрим схему подключения.

Чип аналогового акселерометра ADXL335 довольно мелкий и помещён в BGA корпус, и в домашних условиях его сложно смонтировать на плату. Поэтому я буду использовать готовый модуль GY-61 с акселерометром ADXL335.

Для питания акселерометра необходимо подать на вывод VCC модуля напряжение 3,3 В. Измерительные каналы датчика подключаются к аналоговым выводам Arduino, например, «A0», «A1» и «A2». Это вся схема 🙂

Схема подключения аналогового трёхосевого акселерометра ADXL335 к Arduino

Arduino имеет 10-разрядный АЦП, а максимальное допустимое напряжение на выводе – 5 вольт. Измеренные напряжения кодируются битами, которые могут принимать только 2 значения – 0 или 1.

Это значит, что весь диапазон измерений будет поделён на (1 1)10, т.е. на 1024 равных отрезка.

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

//определяем аналоговые пины: const int xPin = A0; const int yPin = A1; const int zPin = A2; void setup() { //инициализируем послед. порт: Serial.begin(9600); }void loop() { // считываем показания: int xRead = analogRead(xPin); int yRead = analogRead(yPin); int zRead = analogRead(zPin); //Выводим показания в порт в Вольтах: Serial.print(«x: «); Serial.

Посмотрим, что же реально приходит с акселерометра на примере оси Z (см. последний столбец на иллюстрации). Когда датчик расположен горизонтально и смотрит вверх, приходят числа (2,03±0,01). Это должно соответствовать ускорению «1g» по оси Z и углу 0° согласно паспорту на ADXL335. Перевернём датчик.

Калибровка аналогового акселерометра ADXL335

Снимем значения с акселерометра при углах 90° и 270° и занесём в таблицу. Таблица показывает углы поворота акселерометра (столбец «A») и соответствующие им значения Zout в вольтах (столбец «B»).

Определение ускорений по трём осям акселерометра ADXL335

Для наглядности приведён график напряжений на выходе Zout в зависимости от угла поворота. Голубое поле – это область значений в спокойном состоянии (при ускорении 1g). Розовое поле на графике – это запас для того чтобы мы могли измерять ускорение до 3g и до −3g.

При угле поворота 90° на ось Z приходится нулевое ускорение. Т.е. значение 1,67 вольт – это условный ноль Z0. Тогда определим ускорение так: g = Zout – Z0 / Sz, здесь Zout – измеренное значение в милливольтах, Z0 – значение при нулевом ускорении в милливольтах, Sz – чувствительность датчика по оси Z, измеренная в мВ/g.

Чувствительность акселерометра приведена в паспорте и равна в среднем 300 мВ/g или 0,3 В/g, но вообще лучше провести калибровку акселерометра и вычислить значение чувствительности конкретно для вашего датчика по формуле: Sz = Z(0°) – Z(90°) В данном случае чувствительность акселерометра по оси Z = 2,03 – 1,68 = 0,35 В/g. Аналогично чувствительность нужно будет посчитать для осей X и Y.

Датчик наклона на базе Ардуино своими руками

В столбце «С» таблицы приводится расчётное ускорение при чувствительности, равной 350 мВ/g. Как видно, расчёты практически совпадают с номинальными величинами, которые даются на первом рисунке из паспорта на датчик ADXL335, т.е. наш датчик довольно точно показывает свою ориентацию в пространстве (я показал это просто для самопроверки, дальше это не пригодится).

Вспомнив базовый курс школьной геометрии, выведем формулу для вычисления углов поворота акселерометра: angle_X = arctg[ √(Gz2 Gy2) / Gx ]. Значения получаются в радианах. Чтобы перевести радианы в градусы, поделим результат на число π и умножим на 180°.

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

const int xPin = A0; //определяем аналоговые пины, const int yPin = A1; //к которым подключим const int zPin = A2; //три канала акселерометра const float Vmax = 5.0; //макс. допустимое напряжение на аналоговом входе const float x0 = 1.71; //значения по осям при нулевых «g»; const float y0 = 1.69; //эти значения вы должны определить const float z0 = 1.68;

//самостоятельно (см.шаг 4) const float sens_x = 0.35; //чувствительность по осям в В/g; const float sens_y = 0.35; //эти значения вы должны определить const float sens_z = 0.35; //самостоятельно (см.шаг 4) void setup() { Serial.begin(9600); //инициализация последовательного порта }void loop() { unsigned int value_x = analogRead(xPin);

//считываем значения с акселерометра unsigned int value_y = analogRead(yPin); unsigned int value_z = analogRead(zPin); float Gx=(value_x*Vmax/1024.0 − x0)/sens_x; //определяем ускорения по осям float Gy=(value_y*Vmax/1024.0 − y0)/sens_y; float Gz=(value_z*Vmax/1024.0 − z0)/sens_z; Serial.print(«Gx:

Датчик наклона на базе Ардуино своими руками

KY-018 Фоторезистор

фоторезистор (датчик освещенности), который применяется для измерения интенсивности света или определения его наличия/отсутствия. При отсутствии света сопротивление фоторезистора большое и доходит до 1 мОм, а при его освещении падает до нескольких Ом.

между «S»  и 5 В впаян резистор 10 кОм, что вместе с самим фоторезистором образует делитель напряжения, который удобно подключить к аналоговому входу Arduino.

S – выход



int sensorPin = A5; // вход для подкл фоторезистора
int ledPin = 13; // светодиод
int sensorValue = 0; // переменная для значения сенсора
void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}
void loop() {
  sensorValue = analogRead(sensorPin);
  digitalWrite(ledPin, HIGH);
  delay(sensorValue);
  digitalWrite(ledPin, LOW);
  delay(sensorValue);
  Serial.println(sensorValue, DEC);
}

KY-019 5V реле

Используется для коммутации нагрузки с большим напряжением или током. Например лампы

Коммутируемая нагрузка Переменного тока10А 250 В10 А 125ВПостоянного тока10А 30В10А 28ВНа плате распаян транзистор, защитный диод и светодиод, показывающий срабатывание реле. Подключение (слева направо)S управляющий сигнал с ардуино 5в— GND


int relay = 10; // подключение реле
void setup ()
{
  pinMode (relay, OUTPUT); }
void loop ()
{
  digitalWrite (relay, HIGH); // включить реле
  delay (1000);
  digitalWrite (relay, LOW); // выключить реле
  delay (1000);
}

Датчики наклона

Простейший датчик наклонаМодуль датчика наклона KY-020Модуль датчика наклона KY-017Модуль датчика наклона KY-027

Датчик наклона — это капсула с двумя металлическими шариками внутри. Шарики перекатывается в капсуле и замыкают или размыкают цепь. Таким образом, датчик выдаёт простой цифровой сигнал: логический ноль или единицу в зависимости от того, в какую сторону наклонена капсула. Датчик наклона можно использовать в качестве простого переключателя при наклоне.

Самая распространённая модель — это SW-200D. У датчика один вывод серебристый, а второй — золотистый.

  • Время отклика: 2 мс
  • Сопротивление при замкнутом: до 10 Ом
  • Сопротивление при разомкнутом: свыше 10 мОм
  • Рабочее напряжение: до 12 В
  • Потребляемый ток: до 20 мА
  • Допустимая температура: от -40 до 80°C
  • Допустимая влажность: 95% RH (40°C до 96 часов)
  • Усилие отрыва: 500 гс на 1 мин
  • Время жизни: 100000 циклов
  • Размер: 12 x 3,6 мм
  • Вес: менее 1 г

Соединим по следующей схеме. Один вывод датчика наклона соединим с аналоговым выводом A5, также к этому выводу добавим резистор 220Ом и притянем его к GND. Второй вывод датчика соединим с 5V. Для наглядности добавим в схему светодиод к контакту 8.

При наклоне в одну сторону светодиод будет светиться, в остальных случаях светодиод остаётся выключенным.

const int ledPin = 8;

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

void loop(){int val; // data from an analog pin

val = analogRead(A5); // read the voltage value of analog pin 5Serial.println(val);

if (val {amp}gt; 512) // if larger 2.5V{digitalWrite(ledPin, HIGH); // turn on LED}else // otherwise{digitalWrite(ledPin, LOW); // turn off LED}}

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

Предыдущий датчик также можно встретить в виде модуля KY-020.

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

У модуля три вывода: земля, питание, цифровой вывод.

KY-020 | Arduino—————-— | GND | 5VS | D

Входит в состав набора Набор из 37 датчиков

Модуль датчика наклона KY-017 содержит встроенный светодиодный индикатор. Когда датчик срабатывает, светодиод загорается. Непосредственно сам датчик представляет собой маленькую стеклянную колбу с двумя контактами.

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

У модуля три вывода: земля, питание, цифровой вывод.

KY-017 | Arduino————-— | GND | 5VS | D

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

int ledPin = 13;int tiltPin = 3;int val;

void setup(){pinMode(ledPin, OUTPUT);pinMode(tiltPin, INPUT);}

void loop(){val = digitalRead(tiltPin);if(val == HIGH){digitalWrite(ledPin, HIGH);}else{digitalWrite(ledPin, LOW);}}

Датчик наклона на базе Ардуино своими руками

Модуль датчика наклона KY-027 состоит из светодиода с резистором на 10кОм и колбы с шариком ртути. При наклоне в сторону электродов шарик скатывается и замыкает их.

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

Если сравнивать с моделью KY-017, то можно увидеть разное количество выводов (3 и 4) и разные типы светодиодов (встроенный и внешний).

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

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

KY-027 (A) | Arduino——————G | GND | 5VS | DL | D

KY-027 (B) | Arduino——————G | GND | 5VS | DL | Dint ledPinA = 9;int switchPinA = 8;int switchStateA = 0;int ledPinB = 6;int switchPinB = 7;int switchStateB = 0;int brightness = 0;

void setup(){pinMode(ledPinA, OUTPUT);pinMode(ledPinB, OUTPUT);pinMode(switchPinA, INPUT);pinMode(switchPinB, INPUT);}

void loop(){switchStateA = digitalRead(switchPinA);if (switchStateA == HIGH {amp}amp;{amp}amp; brightness != 255){brightness ;}switchStateB = digitalRead(switchPinB);if (switchStateB == HIGH {amp}amp;{amp}amp; brightness != 0){brightness —;}analogWrite(ledPinA, brightness); // A slow fade outanalogWrite(ledPinB, 255 — brightness); // B slow bright updelay(20);}

Компонент KY-027 для Fritzing

переключатель срабатывающий от наклона модуля, имеющий цифровой интерфейс.  При наклоне датчика в одну сторону контакты  “-”  и “S” замыкаются, при наклоне в другую размыкаются.  Модуль позволяет определять только 2 положения и не измеряет угол наклона. Между контактами “ 5В”  и “S” впаян резистор 10 кОм.

Датчик наклона на базе Ардуино своими рукамиhttps://www.youtube.com/watch?v=ytabout

Светодиод

Оцените статью
MALIVICE.RU