Материалы к набору стартовому Arduino большому с платой Arduino-совместимой Mega 2560 R3

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

Содержание

Описание языка программирования C версия для Arduino

Для новичков в проектировании на контроллерах Arduino мы предлагаем использовать книгу Брайана У. Эванса «Arduino блокнот программиста» в переводе Гололобова В.И (под ред. команды сайта robocraft.ru).

В данной книге вы найдете базовую информацию о структуре кода Arduino C с примерами и комментариями. Книга будет полезна не только новичкам и энтузиастам, но и продвинутым пользователям среды Arduino IDE.

Скачать книгу Брайана У. Эванса «Arduino блокнот программиста» в переводе Гололобова В.И (под ред. команды сайта robocraft.ru) по ссылке: https://kb.prog.life/wp-content/uploads/2021/08/arduino_notebook_rus_v1.pdf

Плата Arduino-совместимая MEGA 2560

Плата Arduino-совместимая Mega 2560 R3 предназначена для создания проектов, в которых не хватает возможностей обычных плат Uno. Устройство обладает максимальным из всех плат семейства количеством пинов и расширенным набором интерфейсов. Также у данного контроллера больше встроенной памяти. В этой статье мы познакомимся с основными особенностями платы поближе.

Платы формата Mega 2560 R3 позволяют подключать до четырёх раз больше совместимых модулей, датчиков, сервоприводов, светодиодов и других электронных компонент, чем Uno R3. Главными преимуществами этих плат являются их удобство и простота использования, совместимость с огромным количеством датчиков, шилдов и устройств, а также сотни проектов с открытым кодом. Платы стандартно программируются в среде Arduino IDE.

Классическая Arduino-совместимая плата на Mega 2560 R3 обладает следующими характеристиками:

ХарактеристикаЗначение
МикроконтроллерATmega2560
Напряжение питания, В7-12 (рекомендуемое);
6-20 (предельное)
Рабочее напряжение, В5
ОЗУ8 Кб
Флеш-память256 Кб из которых 8 Кб используются для загрузчика
EEPROM4 Кб
Входы/Выходы Цифровые Входы/Выходы 54 (из которых 15 могут использоваться в качестве ШИМ-выходов)

На плате расположены 54 цифровых и 16 аналоговых входа. Каждый из аналоговых пинов соединен с 10-разрядным АЦП, поэтому в скетче можно получить 1024 уровней значений с помощью функции analogRead (). Диапазон значений напряжения по отношению к земле на аналоговых пинах по умолчанию равен 0-5 В. Этот диапазон можно изменить с помощью функции analogReference () и пина AREF. Также возможно подключение устройств по шине I2C.

Контроллер может быть запитан как от USB порта компьютера, так и от других источников питания (аккумуляторы, батарейки, блоки питания) через DC-разъем. На выходы платы подается напряжение 5В или 3.3В.

Распиновка Mega 2560

Установка и настройка среды Arduino IDE

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

Или прямо с нашего сайта:

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

При запуске программы откроется следующее окно:

Подключи свою Arduino-совместимую плату с помощью кабеля, нажми в верхней панели кнопку Инструменты и выбери Плата: Arduino/Genuino Uno (для плат Arduino-совместимых UNO R3 и UNO R3 CH340G) или Плата: Arduino/Genuino Mega or Mega 2560 (для плат Arduino-совместимых Mega 2560 или Mega 2560 CH340G). Таким образом выбирается нужная конфигурация для программирования определенного контроллера. Далее следует выбрать порт, к которому будет привязана плата.

По пути Инструменты/Порт выбери COM порт, на котором определилась плата. Например, COM1.

Если плата не выбирается, то скачай и установи драйвер для микросхемы CH340G  – после этого плата будет опознаваться компьютером (драйвер может потребоваться для плат Arduino-совместимых UNO R3 CH340G или MEGA 2560 CH340G).

Драйвер для плат на базе CH340G

driver_ch340_341_arduino

Простейший код Blink

Для того, чтобы первично проверить работоспособность твоей Arduino-совместимой UNO или MEGA, тебе потребуется только подключенная к компьютеру плата и открытая программа ARDUINO IDE.

Через путь Файл/Примеры/01.Basics/Blink ты сможешь перейти в окно кода для проверки работы светодиода на плате.

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

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

// функция setup исполняется один раз при включении платы
void setup() {
  // инициализация цифрового пина LED_BUILTIN в качестве выхода (output).
  pinMode(LED_BUILTIN, OUTPUT);
}

// фнукция loop исполняется в бесконечном цикле
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // включение светодиода (HIGH - это уровнь напряжения на пине)
  delay(1000);                       // ожидание 1 секунда
  digitalWrite(LED_BUILTIN, LOW);    // выключение светодиода
  delay(1000);                       // ожидание 1 секунда
}

Скачать файл с кодом, формат .INO: Blink_test

Беспаячные макетные платы

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

На макетной плате расположены рельсы питания, а также контакты для размещения компонентов и радиодеталей (группированы по 5).

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

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

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

 

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

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

Провода DuPont папа-папа 10 см

Чаще всего для подключения модулей и датчиков используются провода вида «папа-папа» (также могут называться проводами М-М (male-male)) со штырьками на концах. Такая форма контактов популярна из-за того, что на макетных платах и на платах контроллеров размещены гнезда, в которые и должны быть вставлены контактные штырьки.

 

Провода DuPont мама-папа 10 см

Провода вида «мама-папа» (также могут называться проводами F-M (female-male) с одной стороны имеют гнездовой разъем, а с другой — штыревой. Это позволяем коммутировать, например, контроллер к датчику, если их разъемы различаются.

Провода DuPont мама-мама 10 см

Провода вида «мама-мама» (также могут называться проводами F-F (female-female) с гнездами на концах используются для подключения датчиков и плат, ответной частью которых являются штырьки.

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

Потенциометр WH148

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

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

На изображении ниже представлено внутренне устройство потенциометра. На корпусе потенциометра указано максимальное значение сопротивления.

 

Схема подключения потенциометра WH148

На схеме показано подключение потенциометра в связке со светодиодом для регулирования его яркости через изменение сопротивления.

Подключение потенциометра
Подключение потенциометра

Код для подключения потенциометра WH148

Код демонстрирует работу светодиода и потенциометра в общей схеме.

 

// даем имена пинов со светодиодом
// и потенциометром

#define led 9
#define pot A0

void setup()

{
// пин со светодиодом - выход
pinMode(led, OUTPUT);

// пин с потенциометром - вход
pinMode(pot, INPUT);
}

void loop()
{
// объявляем переменную x

int x;

// считываем напряжение с потенциометра
// будет получено число от 0 до 1023
// делим его на 4, получится число в диапозоне
// 0-255 (дробная часть будет отброшена)

x = analogRead(pot) / 4;

// выдаем результат на светодиод
analogWrite(led, x);
}

Скачать файл с кодом, формат .INO: Потенциометр

Резисторы

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

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

В наших наборах представлены резисторы мощностью 0.25Вт — они чаще всего используются в проектах Arduino. В зависимости от комплектации выбранного Вами набора, в нем могут присутствовать следующие номиналы.

Название в набореСопротивлениеМощностьРабочее напряжение, max
Резистор 150 Ом150 Ом0.25 Вт250 В
Резистор 220 Ом220 Ом0.25 Вт250 В
Резистор 1 кОм1 кОм0.25 Вт250 В
Резистор 4.7 кОм4.7 кОм0.25 Вт250 В
Резистор 10 кОм10 кОм0.25 Вт250 В

 

Схема подключения резистора

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

Подключение светодиода через резистор
Подключение светодиода через резистор

Светодиоды

Самыми простыми проектами для Arduino являются проекты подключения светодиодов.

Светодиоды бывают различных видов:

  • Индикаторные с выводными контактами
  • Яркие светодиоды для выводного монтажа
  • Индикаторные и осветительные светодиоды для поверхностного монтажа (SMD)
  • Светодиоды «Пиранья»
  • Осветительные светодиоды COB
  • Светодиоды filament (в форме нити накала) и др.

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

Одноцветные светодиоды имеют две ножки, длинная – это анод «+», к ней подключается питание. Светодиоды всегда подключаются через резистор.

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

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

На схеме ниже представлена простейшая схема подключения нескольких светодиодов. Подключение каждого светодиода на ней идентично.

Подключение трех светодиодов через резисторы
Подключение трех светодиодов через резисторы

Код для подключения светодиодов

Ниже представлен код для демонстрации работы одного светодиода.

void setup() {               
  pinMode(13, OUTPUT); // светодиод подключен на пин 13 и определен как выход
}
void loop() {
  digitalWrite(13, HIGH); // подача высокого сигнала на пин, светодиод зажигается
  delay(1000);  // задержка 1 секунда
}

Скачать файл с кодом, формат .INO: Подключение светодиода

Светодиод RGB 5мм

Светодиоды RGB немного сложнее в подключении по сравнению с одноцветными светодиодами.

В RGB светодиодах содержатся три кристалла разных цветов в одном корпусе. Такие светодиоды имеют не два контакта, а четыре — один общий (анод или катод имеет самый длинный вывод) и три цветовых вывода. Каждая

RGB светодиоды объединяют три кристалла разных цветов в одном корпусе. RGB LED имеет 4 вывода — один общий (анод или катод имеет самый длинный вывод) и три цветовых вывода. К каждому цветовому выходу следует подключать резистор.

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

Ниже представлена схема подключения RGB светодиода с общим катодом, таким образом, ножка катода подключается к GND контроллера.

Подключение RGB светодиода
Подключение RGB светодиода

Код для подключения светодиода RGB

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

 

#define RED 11  // присваиваем имя RED для пина 11
#define GRN 12 // присваиваем имя GRN для пина 12
#define BLU 13  // присваиваем имя BLU для пина 13
 
void setup() {
   pinMode(RED, OUTPUT);  // используем Pin11 для вывода
   pinMode(GRN, OUTPUT); // используем Pin12 для вывода
   pinMode(BLU, OUTPUT);  // используем Pin13 для вывода
}
 
void loop() {
 
   digitalWrite(RED, HIGH); // включаем красный свет
   digitalWrite(GRN, LOW);
   digitalWrite(BLU, LOW);
 
   delay(1000); // устанавливаем паузу для эффекта
 
   digitalWrite(RED, LOW);
   digitalWrite(GRN, HIGH); // включаем зеленый свет
   digitalWrite(BLU, LOW);
 
   delay(1000); // устанавливаем паузу для эффекта
 
   digitalWrite(RED, LOW);
   digitalWrite(GRN, LOW);
   digitalWrite(BLU, HIGH); // включаем синий свет
 
  delay(1000); // устанавливаем паузу для эффекта
}

Скачать файл с кодом, формат .INO: Светодиод RGB

Датчик вибрации SW-18010P

Датчик предназначен для обнаружения колебаний и вибраций, активируется за счет наклона или тряски — достаточно очень незначительного усилия.  По-умолчанию датчик всегда находится в выключенном состоянии (OFF). Обычно такие датчики используются в различных охранных системах, игрушках и др.

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

ХарактеристикаЗначение
МодельSW-18010P
Герметичностьда
Напряжение питания12 В
Рабочее напряжение5 В
Ток0.2 мА
Скорость срабатывания0.2 мс

 

Схема подключения датчика вибрации SW-18010P

Датчик SW-18010P может быть представлен в модульном исполнении, а также в виде отдельного сенсора. В наборе представлен именно сенсор без дополнительной обвязки, поэтому для его подключения в схему требуется резистор 10 кОм.

 

Код для подключения датчика вибрации SW-18010P

В примере ниже показано, как подключить датчик вибрации SW-18010P к плате, срабатывание датчика синхронизировано с включением встроенного светодиода.

#define PIN_LED 13
#define PIN_SENSOR 2 // датчик вибрации подключен на пин 2
void setup() {
  pinMode(PIN_LED, OUTPUT);
}

void loop() {
  int val = digitalRead(PIN_SENSOR); // с датчика считывается информация

  if(val==1){ 
    digitalWrite(PIN_LED, HIGH); // включение встренного светодиода при срабатывании датчика
  }else{
    digitalWrite(PIN_LED, LOW);
  }
}

Скачать файл с кодом, формат .INO: Датчик вибрации sw-18010p

Диод IN4007

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

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

В наборе представлен кремниевый выпрямительный диод 1N4007, который предназначен для преобразования переменного напряжения частотой до 70 кГц.

ХарактеристикаЗначение
Серия1N4007
Максимальное пиковое импульсное обратное напряжение1000 В
Максимальный прямой ток1 А
Максимально допустимый прямой импульсный ток5 А
Постоянное прямое напряжение, не более1.1 В
Постоянный обратный ток, не более5 мкА
Рабочая температура-60 ...+175°С
КорпусDO-41 (DO-204AL)

Зуммер 5В 12 * 9мм, 2500 Гц

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

ВНИМАНИЕ! Соблюдайте осторожность при подключении устройств подобного типа, т.к. они могут издавать достаточно громкий звук.

Данная модель способна издавать звуки уровнем ~85 дБ, поэтому не стоит подносить ее близко к ушам.

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

Схема подключения зуммера 5В 12 * 9мм, 2500 Гц

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

Подключение зуммера
Подключение зуммера

Код для подключения зуммера 5В 12 * 9мм, 2500 Гц

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

#define BUZZER_PIN 9; // подключение зуммера на пин 9  
  
void setup() {  
  pinMode(BUZZER_PIN, OUTPUT); // определяем пин как выход  
}  
void loop() {  
  
  tone(BUZZER_PIN, 500); // включение на 500 Гц  
  delay(1000); // задержка 1 секунда  
  tone(BUZZER_PIN, 1000); // включение на 1000 Гц  
  delay(1000); // задержка 1 секунда  
} 

Скачать файл с кодом, формат .INO: Зуммер

Конденсаторы

Конденсаторы — это пассивные электронные компоненты, назначение которых — сосредоточение, накопление и передача заряда электрического тока.

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

В нашем наборе предложены керамические и электролитические конденсаторы различных номиналов.

ХарактеристикаКерамический конденсатор 0.047мкФЭлектролитический конденсатор 22 мкФЭлектролитический конденсатор 4.7 мкФ
Вид диэлектрикаКерамическая пластинаОксидная пленкаОксидная пленка
Емкость0.047мкФ22 мкФ4.7 мкФ

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

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

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

Подключение серво через конденсатор
Подключение серво через конденсатор

Транзисторы

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

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

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

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

В наборе представлены два транзистора, в таблицах указаны их подробные характеристики.

Транзистор PNP 2N3906

ХарактеристикаЗначение
Маркировка2N3906
СтруктураPNP
Напряжение коллектор-эмиттер40 В
Напряжение коллектор-база40 В
Напряжение эмиттер-база5 В
Ток коллектора0.2 А
КорпусТО-92

 

Полевой транзистор IRF840

ХарактеристикаЗначение
Напряжение пробоя сток-исток 500 В
Максимальное напряжение затвора20 В
Сопротивление в открытом состоянии0.85 мОм
Ток стока8 А
Заряд затвора63 нКл
Рассеиваемая мощность125 Вт
КорпусTO-220AB

Сдвиговый регистр SN74HC595N

Регистр это устройство, выполненное на триггерах для выполнения ряда действий с двоичными числами. Сдвиговый регистр 74hc595 обычно используется для управления семисегментными индикаторами и светодиодами.

Чтобы понять принцип работы микросхемы 74hc595, следует рассмотреть распиновку сдвигового регистра.

  • Контакты DS, ST_CP и SH_CP — служат для управления и подключаются к любым выходам платы Arduino.
  • Контакты Q0Q7 — это выходы (разряды) сдвигового регистра. С помощью отправки байта с контроллера можно менять состояние разряда (HIGH или LOW).
  • Контакты VCC и GND — это питание регистра
  • Контакт MR — сброс (не активен)
  • Контакт OE подключается к GND
  • Контакт Q7` предназначен для последовательного соединения регистров.

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

На изображении ниже представлена схема подключения сдвигового регистра со светодиодами.

Подключение сдвигового регистра
Подключение сдвигового регистра

Код для подключения сдвигового регистра SN74HC595N

Ниже представлен код подключения сдвигового регистра SN74HC595N.

#define clock 13
#define data 12
#define latch 10

boolean states[8];

void setup() {
  pinMode(clock, OUTPUT);
  pinMode(data, OUTPUT);
  pinMode(latch, OUTPUT);
  digitalWrite(latch, HIGH);
  cleanreg();

}

void loop() {
  sendbyte(1);
}


void sendbyte(byte value){
  digitalWrite(latch, LOW);
  shiftOut(data, clock, LSBFIRST, value);
  digitalWrite(latch, HIGH);
}

void sendpin(int pin, boolean state){
  pin--;
  states[pin]=state;
  
  byte value = 0;
  byte add = 1;
  for(int i=0; i<8; i++){
    if(states[i]==HIGH) value+=add;
    add*=2;
  }
  digitalWrite(latch, LOW);
  shiftOut(data, clock, LSBFIRST, value);
  digitalWrite(latch, HIGH);
}

void cleanreg(){
  for(int i=0; i<8; i++) states[i]=LOW;
  digitalWrite(latch, LOW);
  shiftOut(data, clock, LSBFIRST, 0);
  digitalWrite(latch, HIGH);
}

Скачать файл с кодом, формат .INO: Сдвиговый регистр

Оптопара 4N35

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

Часто данные компоненты можно увидеть в различных устройствах, например:

  • датчики движения
  • датчики препятствия,
  • датчики положения,
  • энкодеры
  • гальваническая развязка и др.

В нашем наборе представлена оптопара 4N35.

Оптопара 4N35

ХарактеристикаЗначение
Количество каналов1
Напряжение изоляции5 В
Коэффициент передачи по току100%
Время включения/выключения10 мкс
Выходное напряжение30 В
Выходной ток на канал50 мА
Рабочая температура-55 ...+100°С

Кнопка тактовая 6 * 6 * 5 мм

Кнопки часто используются в макетировании на Arduino, т.к. позволяют привнести в проект новый и полезный функционал.

Слово «тактовая» в названии кнопки означает, что при её использовании чувствуется тактильный отклик, что она была нажата. Тактовые кнопки бывают с фиксацией и без нее — кнопка без фиксации после нажатия возвращается в исходное положение.

Схема подключения кнопки тактовой 6 * 6 * 5 мм

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

Подключение тактовой кнопки
Подключение тактовой кнопки

Код для подключения кнопки тактовой 6 * 6 * 5 мм

Ниже представлен код, с помощью которого можно вывести информацию о нажатии кнопки в монитор порта среды Arduino IDE.

const int PIN_BUTTON = 2;

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

void loop() {
  // Получаем состояние кнопки и выводим в мониторе порта
  int buttonState = digitalRead(PIN_BUTTON);
  Serial.println(buttonState);
  delay(50);
}

Скачать файл с кодом, формат .INO: Тактовая кнопка

Датчик температуры/влажности DHT11

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

Модуль цифрового датчика DHT-11 — хороший и недорогой вариант для различных робототехнических проектов, где необходимо измерять температуру и/или влажность.

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

Сенсор включает в себя резистивный компонент измерения влажности и компонент измерения температуры с отрицательным температурным коэффициентом (NTC), которые подключены к высокопроизводительному 8-битному микроконтроллеру.

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

Схема подключения датчика температуры/влажности DHT11

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

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

Код для подключения датчика температуры/влажности DHT11

В примере ниже показано, как подключить вывод датчика температуры/влажности DHT11 к монитору последовательного порта платы (вывод можно посмотреть в мониторе порта Arduino IDE).

#include <DHT.h>;      // подключаем библиотеку для датчика
DHT dht(2, DHT11);  // сообщаем на каком порту будет датчик

void setup() {
   dht.begin();                // запускаем датчик DHT11
   Serial.begin(9600);   // подключаем монитор порта
}

void loop() {
   // считываем температуру (t) и влажность (h)
   float h = dht.readHumidity();
   float t = dht.readTemperature();

   // выводим температуру (t) и влажность (h) на монитор порта
   Serial.print("Humidity: ");
   Serial.println(h);
   Serial.print("Temperature: ");
   Serial.println(t);
}

Скачать файл с кодом, формат .INO: Датчик температуры/влажности DHT11

Знакогенерирующий дисплей LCD 1602A IIC/I2C

Знаконегерирующий ЖК дисплей с разрешением 16х2, синей подсветкой и встроенным адаптером IIC/I2C.

Этот дисплей наиболее часто используется в проектах Arduino, так как адаптер IIC/I2C позволяет использовать только 4 пина платы контроллера и значительно упрощает как процесс подключения дисплея, так и управление им.

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

Дисплей

UNO

GND GND
VCC 5V
SDA А4
SCL А5

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

Схема подключения знакогенерирующего дисплея LCD 1602A IIC/I2C

На изображении ниже представлена схема подключения знакогенерирующего дисплея 1602A.

ма подключения дисплея
Схема подключения дисплея

Код для подключения знакогенерирующего дисплея LCD 1602A IIC/I2C

В примере ниже показано, как подключить дисплей к контроллеру и вывести на нем надпись «Hello, world!». Для корректной работы кода нужно загрузить библиотеки Wire.h и LiquidCrystal_I2C.h.

Библиотека LiquidCrystal_I2C.h: Библиотека LCD дисплея


#include <Wire.h> // подключение библиотеки
#include <LiquidCrystal_I2C.h> // подключение библиотеки

// назначьте адрес для дисплея по шине i2c - 0x3f
LiquidCrystal_I2C lcd(0x3f, 16, 2);

void setup()
{
lcd.begin(); // инициализация дисплея
lcd.backlight(); // включение подсветки
lcd.print("Hello, world!"); // вывод надписи
}

void loop()
{
}

ВНИМАНИЕ! В зависимости от установленной версии Arduino IDE могут работать или не работать некоторые библиотеки. Адрес шины дисплея может быть 0х27, 0х20 или 0х3F.

Скачать файл с кодом, формат .INO: Дисплей

В зависимости от партии, в наших наборах могут лежать модули Ethernet enc28j60 либо шилды Ethernet w5100. Ниже представлена информация на оба компонента.

Модуль ENC28J60 SPI Ethernet

Модуль построен на одноимённой микросхеме производства Microchip – крупного производителя микроэлектроники. Контроллер реализует физический слой интерфейса Ethernet, позволяет использовать полудуплексный или дуплексный режим. Совместим со спецификацией IEEE 802.3.

Микросхемой поддерживается один порт 10BASE-T (10Мбит/с).

Со стороны микроконтроллера в качестве интерфейса обмена используется SPI на скорости до 20мБод. Всё общение с модулем, в том числе конфигурирование и непосредственно передача пакетов, происходят через него.

Для более гибкой конфигурации, модуль не реализует в себе стек TCP/IP, что позволяет реализовать его на стороне управляющего микроконтроллера. Отнимая процессорное время, это также даёт возможность использовать другие протоколы, использующие Ethernet в качестве физического уровня, как, например, Modbus-TCP.

Схема подключения модуля ENC28J60 SPI Ethernet

На изображении ниже представлена схема подключения модуля Ethernet.

Подключение ENC28J60
Подключение ENC28J60

Код для подключения модуля ENC28J60 SPI Ethernet

В примере ниже показано, как подключить вывод модуля ENC28J60 SPI Ethernet к монитору последовательного порта платы (вывод можно посмотреть в мониторе порта Arduino IDE).


#include <EtherCard.h>

static byte mymac[] = { 0x74, 0x69, 0x69, 0x2D, 0x30, 0x31 };

byte Ethernet::buffer[700];

void setup () {
  Serial.begin(57600);
  Serial.println(F("\n[testDHCP]"));

  Serial.print("MAC: ");
  for (byte i = 0; i < 6; ++i) {
    Serial.print(mymac[i], HEX);
    if (i < 5)
      Serial.print(':');
  }
  Serial.println();

  if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
    Serial.println(F("Failed to access Ethernet controller"));

  Serial.println(F("Setting up DHCP"));
  if (!ether.dhcpSetup())
    Serial.println(F("DHCP failed"));

  ether.printIp("My IP: ", ether.myip);
  ether.printIp("Netmask: ", ether.netmask);
  ether.printIp("GW IP: ", ether.gwip);
  ether.printIp("DNS IP: ", ether.dnsip);
}

void loop () {}

Скачать файл с кодом, формат .INO: Модуль Ethernet

Шилд Ethernet w5100

Шилд Ethernet Shield W5100 в проектах Arduino часто используется для организации веб-сервера с доступом к нем. С помощью этого шилда можно подключить контроллер форм-фактора UNO/MEGA к сети Интернет или локальной сети.

Сам шилд основан на чипе Wiznet W5100 и поддерживает скорость передачи данных до 100 Мбит/с. На плате также расположен разъем для SD карты, если потребуется увеличить объем хранимых данных. Шилд с легкостью можно установить, например, на плату Arduino-совместимую UNO R3 и в дальнейшем расширить возможности устройства, дополнив его другими подходящими шилдами.

Контроллер может взаимодействовать как с чипом W5100, так и с SD-картой. Для этого на платах семейства UNO используется шина SPI и выводы 10, 11, 12 и 13. В случае с платами семейства MEGA используются выводы 50, 51 и 52. Для плат форм-фактора UNO/MEGA вывод 10 используется для выбора W5100 и вывод 4 – для SD-карты, эти пины при подключении Ethernet не должны использоваться в схеме. Так-как W5100 и SD-карта используют одну шину SPI, одновременно может быть активно только одно устройство.

Код для подключения шилда Ethernet W5100

В качестве кода подключения можно использовать стандартную библиотеку Ethernet по пути Файл/Примеры/Ethernet/Web-Server. Схема подключения в данном случае не требуется, так как достаточно установить шилд на плату контроллера.

#include <SPI.h>                                   // подключение библиотеки SPI
#include <Ethernet.h>                              // подключение библиотеки Ethernet
 
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // указание MAC адреса 
IPAddress ip(192, 168, 21, 105);                   // указание статического IP 
 
EthernetServer server(80);                         // инициализация библиотеки Ethernet "server" на порту 80 
 
void setup() 
{
  Serial.begin(9600);                              
  while (!Serial) {;}
 
  Ethernet.begin(mac, ip);                         // запуск сервера  
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}
 
void loop() 
{
  EthernetClient client = server.available();     // прием данных от клиента 
  if (client) {
    Serial.println("new client");
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        if (c == '\n' && currentLineIsBlank) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // соединение будет закрыто после завершения ответа
          client.println("Refresh: 5");  // обновление страницы каждые 5 секунд
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            int sensorReading = analogRead(analogChannel);
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(sensorReading);
            client.println("<br />");
          }
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          currentLineIsBlank = true;
        } else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
    client.stop();
    Serial.println("client disconnected");
  }
}

Скачать файл с кодом, формат .INO: Ethernet w5100

Модуль часов реального времени DS1302

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

Микросхема DS1302, расположенная на модуле, отличается низким энергопотреблением и позволяет отсчитывать время с точностью до секунд. Подключение ds1302 осуществляется с помощью пяти контактов. Выводы VCC и Gnd отвечают за питание модуля. Контакты CLK,DAT и RESX подключают к цифровым пинам микроконтроллера.

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

 

Схема подключения модуля часов реального времени DS1302

На схеме представлено подключение часов реального времени к контроллеру.

Подключение часов реального времени
Подключение часов реального времени

Код для подключения модуля часов реального времени DS1302

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

#include <DS1302.h>

DS1302 rtc(45, 46, 47);


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

void loop()
{
    Time t = rtc.time();
    Serial.println(t.yr);
    Serial.println(t.hr);
    Serial.println(t.min);
    Serial.println(t.sec);
    Serial.println(t.mon);
    Serial.println(t.date);
    Serial.println(t.day);

    delay(1000);
}

 

Скачать файл с кодом, формат .INO: Модуль часов реального времениds1302

Скачать библиотеку для DS1302, формат .ZIP: arduino-ds1302-master
 

Плата реле двухканальная

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

Провода, идущие от реле, надёжно закрепляются клеммниками при помощи винтов. За счёт наличия на каждом клеммнике трёх контактов, можно выбирать для каждого канала начальное состояние: нормально разомкнутое (NO) или нормально замкнутое (NC).

Схема подключения платы реле двухканальной

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

Подключение двухканального реле
Подключение двухканального реле

Код для подключения платы реле двухканальной

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


#define PIN_RELAY 4 // Определяем пин, используемый для подключения реле
 
// В этой функции определяем первоначальные установки
void setup()
{
  pinMode(PIN_RELAY, OUTPUT); // Объявляем пин реле как выход
  digitalWrite(PIN_RELAY, HIGH); // Выключаем реле - посылаем высокий сигнал
}
void loop()
{
  digitalWrite(PIN_RELAY, LOW); // Включаем реле - посылаем низкий уровень сигнала
  delay(5000);
  digitalWrite(PIN_RELAY, HIGH); // Отключаем реле - посылаем высокий уровень сигнала
  delay(5000);
}

Скачать файл с кодом, формат .INO: Реле

Разъем для батарейки Крона 9V с проводами

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

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

Крона подсоединяется к контактам разъема, зеркально повторяющим ее контакты. Провод красного цвета — это провод питания, черный — заземления.

Светодиодная матрица 8×8, общий анод

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

Светодиодная матрица может отображать информацию как в статичном режиме, так и в режиме каскадного переливания. Главная особенность такого матричного дисплея – возможность объединения с такими же дисплеями с целью сборки большого табло.

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

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

Схема подключения светодиодной матрицы 8×8, общий анод

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

Код для подключения светодиодной матрицы 8×8, общий анод

С помощью кода, представленного ниже, можно подключить светодиодную матрицу к контроллеру.

#define data_pin 2     //data_pin 1-го регистра
#define st_pin 3      //latch_pin общий
#define sh_pin 4     //clock_pin 1-го регистра
#define data_pin2 5 //data_pin 2-го регистра
#define sh_pin2 6  //clock_pin 2-го регистра

byte pic0[8] {
  0b01111111,
  0b10111111,
  0b11011111,
  0b11101111,
  0b11110111,
  0b11111011,
  0b11111101,
  0b11111110
};
//массив pic0 не трогаем, по нему отключаются логические единицы на сроках

byte pic[8] {
  0b10111011,
  0b11101110,
  0b00000000,
  0b10111011,
  0b11101110,
  0b00000000,
  0b10111011,
  0b11101110
};
//в этом массиве создаем картинку построчно, единицы обозначают зажженные светодиоды, нули - погашенные

byte cifra[10][8] {
  { B00001110,
    B00011011,
    B00011011,
    B00011011,
    B00011011,
    B00011011,
    B00001110,
    B00000000
  },
  { B00000010,
    B00000110,
    B00001110,
    B00000110,
    B00000110,
    B00000110,
    B00000110,
    B00000000
  },
  {
    B00001110,
    B00011011,
    B00000011,
    B00000110,
    B00001100,
    B00011000,
    B00011111,
    B00000000
  },
  {
    B00001110,
    B00011011,
    B00000011,
    B00001110,
    B00000011,
    B00011011,
    B00001110,
    B00000000
  },
  {
    B00000011,
    B00000111,
    B00001111,
    B00011011,
    B00011111,
    B00000011,
    B00000011,
    B00000000
  },
  {
    B00011111,
    B00011000,
    B00011110,
    B00000011,
    B00000011,
    B00011011,
    B00001110,
    B00000000
  },
  {
    B00001110,
    B00011011,
    B00011000,
    B00011110,
    B00011011,
    B00011011,
    B00001110,
    B00000000
  },
  {
    B00011111,
    B00000011,
    B00000110,
    B00001100,
    B00001100,
    B00001100,
    B00001100,
    B00000000
  },
  {
    B00001110,
    B00011011,
    B00011011,
    B00001110,
    B00011011,
    B00011011,
    B00001110,
    B00000000
  },
  {
    B00001110,
    B00011011,
    B00011011,
    B00001111,
    B00000011,
    B00011011,
    B00001110,
    B00000000
  },
};
//в этом массиве хранятся изображния цифр

void setup() {
  //включаем передачу данных по последовательному порту
  Serial.begin(9600);
  //задаем режим OUTPUT ( выход )
  for ( int i = 2; i < 7; i++) {
    pinMode(i, OUTPUT);
  }
}

void loop() {
  //output(массив с изображением);
  if (Serial.available() > 0) {     //ожидание доступных данных в com порте
    int cif = Serial.read() - '0'; //считывние данных из com порта 
      output(cifra[cif]);         //вывод цифры
  }
  obnulenie();
}

void obnulenie() {
  //в этом блоке гаснет вся матрица, при необходимости - использовать
  digitalWrite(st_pin, 0);
  shiftOut(data_pin, sh_pin, MSBFIRST, 0b11111111);
  shiftOut(data_pin2, sh_pin2, MSBFIRST, 0b00000000);
  digitalWrite(st_pin, 1);
}

void output(byte picture[8]) {
  //в этом блоке осуществляется вывод изображения на экран длительностью в 1 секунду (125*8мс)
  for (int kadr = 0; kadr < 125; kadr++) {
    for (int i = 7; i > -1; i--) {
      //в этом цикле осуществляется вывод изображения, хранящегося в массиве ( выводится в обратном порядке чтобы изображение было в нормальной ориентации, при необходимости поменять на for (int i=0; i<8; i++))
      digitalWrite(st_pin, 0);
      shiftOut(data_pin, sh_pin, MSBFIRST, pic0[i]);
      shiftOut(data_pin2, sh_pin2, MSBFIRST, picture[i]);
      digitalWrite(st_pin, 1);
      delay(1);
    }
  }
}

Скачать файл с кодом, формат .INO: Матрица 8×8

Семисегментный индикатор, 4 цифры, точки, 0.56 дюйма

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

7-сегментные цифровые индикаторы – устройства, состоящие из 7 светодиодов, которые установлены в форме цифры 8. С помощью зажигания отдельных сегментов отображаются цифры от 0 до 9, а также некоторые буквы (обычно латинского алфавита). Один модуль может состоять из одной или из нескольких цифр.

Управляются такие индикаторы напрямую с микроконтроллера или специальными драйверами. Семисегментные индикаторы могуть быть с общим катодом или с общим анодом. На схеме ниже представлен индикатор с общим катодом.

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

На схеме ниже представлен пример подключения семисегментного индикатора к контроллеру.

Код для подключения семисегментного индикатора

Ниже представлен код для подключения четырехразрядного семисегментного индикатора.

#define g  11  // присвоение имен пинам
#define d1 A1
#define d2 A2
#define d3 A3
#define d4 A4

void setup() {
   pinMode(g, OUTPUT);   // установка режимов работы пинов
   pinMode(d1, OUTPUT);
   pinMode(d2, OUTPUT);
   pinMode(d3, OUTPUT);
   pinMode(d4, OUTPUT);

   digitalWrite(d1, HIGH);  // подача напряжения на пины
   digitalWrite(d2, HIGH);
   digitalWrite(d3, HIGH);
   digitalWrite(d4, HIGH);

   digitalWrite(g, HIGH);   // подача напряжения на сегмент (G)
   delay(1000);
}

void loop() {
   digitalWrite(d1, LOW); // включаем первый разряд
   digitalWrite(d4, HIGH);
   delay(200);
   digitalWrite(d2, LOW); // включаем второй разряд
   digitalWrite(d1, HIGH);
   delay(200);
   digitalWrite(d3, LOW); // включаем третий разряд
   digitalWrite(d2, HIGH);
   delay(200);
   digitalWrite(d4, LOW); // включаем четвертый разряд
   digitalWrite(d3, HIGH);
   delay(200);
}

Скачать файл с кодом, формат .INO: Семисегментный индикатор

Серводвигатель SG90 (180 град)

Серводвигатель или сервомотор может поворачиваться на определенный угол относительно 0°. Некоторые серво могут совершать полный оборот в 360°. Серво в наборе рассчитаны на поворот максимум 180°.

Основные характеристики:

  1. напряжение питания: 5 В;
  2. крутящий момент: 1.6 кг/см;
  3. время поворота на 60°: 0.1 сек.

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

 

Схема подключения серводвигателя SG90 (180 градусов)

На схеме ниже представлен пример подключения серводвигателя SG90.

Цвета проводов серводвигателя: GND – коричневый, сигнал – оранжевый, питание 5В – красный.

Подключение сервопривода
Подключение сервопривода

Код для подключения серводвигателя SG90 (180 градусов)

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

Для того, чтобы подключить встроенную библиотеку Servo через ARDUINO IDE, нужно использовать путь Скетч/Подключить библиотеку/Servo.

#include <Servo.h> // подключена библиотека серво
  
Servo servo; // даем название серво 
void setup() {  
  servo.attach(3); // серво на пине 3  
  servo.write(0);  // начальное положение в градусах   
}  
  
void loop() {  
  servo.write(90); // поворот на 90 градусов  
  delay(1000); // задержка 1 секунда  
  servo.write(180); // поворот на 180 градусов  
  delay(1000);  
  servo.write(90);  
  delay(1000);  
  servo.write(0);  
  delay(1000);          
} 

 

Скачать файл с кодом, формат .INO: Серводвигатель SG90

Ультразвуковой дальномер HC-SR04

Ультразвуковой дальномер (датчик расстояния) HC-SR04. Генерирует звуковые импульсы на частоте 40 кГц, и по отраженному сигналу определяет расстояние до объекта. Программно сравнивая показания датчика, можем определить, перемещается ли объект, скорость и направление движения.

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

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

Угол измерения 30°, наиболее эффективный — 15°. Прозрачность объекта не имеет значения.

Дальномер

UNO

Trig

Цифровой вход 3

Echo

Цифровой вход 2

GND

GND

VCC

5 V

Схема подключения ультразвукового дальномера HC-SR04

На изображении ниже представлена схема подключения дальномера.

Подключение УЗ дальномера
Подключение УЗ дальномера

Код для подключения ультразвукового дальномера HC-SR04

В примере ниже показано, как подключить вывод ультразвукового дальномера HC-SR04 к монитору последовательного порта платы (вывод можно посмотреть в мониторе порта Arduino IDE).

 int echoPin = 2; // назначение цифрового вывода для Echo
int trigPin = 3; // назначение цифрового вывода для Trig

void setup() {
Serial.begin (9600); // подключение монитора порта для выведения данных
pinMode(trigPin, OUTPUT); // генерируется импульс для измерения расстояния
pinMode(echoPin, INPUT); // завершение импульса, считывание дистанции
}

void loop() {
int duration, cm; // назначение меры длины в см
digitalWrite(trigPin, LOW); // подача низкого сигнала на пин trigPin
delayMicroseconds(2); // пауза 2 микросекунды
digitalWrite(trigPin, HIGH); // подача высокого сигнала на пин trigPin
delayMicroseconds(10); // пауза 10 микросекунд
digitalWrite(trigPin, LOW); // подача низкого сигнала на пин trigPin

duration = pulseIn(echoPin, HIGH); // pulseIn - длина положительного импульса на пине echoPin в микросекундах
cm = duration / 58; // формула для выведения корректных данных в см
Serial.print(cm); // выведение данных в монитор порта в см
Serial.println(" cm"); // условия выведения надписи в монитор порта, добавление к значению меры длины
delay(1000); // пауза между измерениями 1 секунда
} 

Скачать файл с кодом, формат .INO: Ультразвуковой дальномер

Датчик вибрации пороговый

Пороговый датчик вибрации представляет собой датчик SW-18010P, установленный на плате с компаратором. На плате предусмотрены цифровой и аналоговый выводы для упрощения подключения.

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

На плате датчика есть два индикаторных светодиода: красный – питание; зеленый – обнаружение вибрации. Напряжение питания: 5 В.

Схема подключения датчика вибрации порогового

Ниже на изображении представлена схема подключения датчика вибрации.

Подключение модуля с датчиком вибрации
Подключение модуля с датчиком вибрации

Код для подключения датчика вибрации порогового

В примере ниже показано, как подключить вывод датчика вибрации порогового к монитору последовательного порта платы (вывод можно посмотреть в мониторе порта Arduino IDE).

 #define VIBRATION_SENSOR A0 // датчик на пине А0

void setup() {
Serial.begin(9600); // включение монитора порта
}

void loop() {
int sensorValue = analogRead(VIBRATION_SENSOR);
Serial.print("Analog value:");
Serial.println(sensorValue); // данные в мониторе порта
delay(500); // задержка 0.5 секунд
}

Скачать файл с кодом, формат .INO: Датчик вибрации

Датчик влажности почвы

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

Датчик влажности почвы

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

  • Vcc – питание датчика;
  • GND – земля;
  • A0 — аналоговое значение;
  • D0 – цифровое значение уровня влажности.

Датчик построен на основе компаратора, который выдает напряжение на выход D0 по принципу: влажная почва – низкий логический уровень, сухая почва – высокий логический уровень. Уровень определяется пороговым значением, которое можно регулировать с помощью потенциометра. На вывод A0 подается аналоговое значение, которое можно передавать в контроллер для дальнейшей обработки, анализа и принятия решений. Датчик YL-38 имеет два светодиода, сигнализирующих о наличие поступающего на датчик питания и уровня цифрового сигналы на выходе D0. Наличие цифрового вывода D0 и светодиода уровня D0 позволяет использовать модуль автономно, без подключения к контроллеру.

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

Подключение датчика влажности почвы
Подключение датчика влажности почвы

Код для подключения датчика влажности почвы

В данном примере показано, как считать код с датчика влажности почвы через Arduino и вывести информацию в последовательный порт (вывод будет виден в мониторе порта Arduino IDE).

#define SOILMOISTURE_SENSOR A0 // подключение к пину А0
void setup() { 
    Serial.begin(9600); // вывод данных в монитор порта
}

void loop() {
    int sensorValue = analogRead(SOILMOISTURE_SENSOR); // считывание данных с аналогового порта А0
    Serial.print("Analog value: "); // фраза, выводимая перед показаниями датчика
    Serial.println(sensorValue); // данные в монитор порта
    delay(1000); // задержка 1 секунда
}

Скачать файл с кодом, формат .INO: Датчик влажности почвы

Датчик дождя

Датчик дождя с компаратором и соединительными проводами в комплекте. Плата датчика представляет собой большой резистор, который изменяет свое сопротивление по мере попадания на него воды. На плате с компаратором предусмотрены аналоговый и цифровой выводы. Напряжение питания датчика 3.3 – 5 В.

Когда капля попадает на чувствительную к влаге пластину, информация об этом подается на плату датчика, а далее фиксируется на Arduino.

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

Схема подключения датчика дождя

На изображении ниже представлена схема подключения датчика дождя к плате Arduino Uno.

Подключение датчика дождя
Подключение датчика дождя

Код для подключения датчика дождя

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

#define ANALOG_RAINSENSOR A0 // датчик на аналоговом пине A0
#define DIGITAL_RAINSENSOR 3 // датчик на цифровом пине 3

void setup() {
    Serial.begin(9600); // подключение монитора порта
}

void loop() {
 // аналоговый пин А0 - выведение данных
 int analogValue = analogRead(ANALOG_RAINSENSOR); // считываем аналоговые данные датчика
 Serial.print("Analog value:"); // фраза перед значением данных
 Serial.println(analogValue); // выведение данных в монитор порта
 delay(1000); // задержка 1 секунда

 // цифровой пин 3 - выведение данных
 int digitalValue = digitalRead(DIGITAL_RAINSENSOR); // данные считываются с цифрового порта
 Serial.print("Digital value:"); // фраза перед значением данных
 Serial.println(digitalValue); // данные в мониторе порта
 delay(1000); // задержка 1 секунда
}

Скачать файл с кодом, формат .INO: Датчик дождя

Модуль Bluetooth 2.0 HC-05/06

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

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

Один из способов связи по Bluetooth вашего Arduino-устройства с планшетом, ноутбуком или другим Bluetooth-устройством – Модуль Bluetooth 2.0 HC-05 и Модуль Bluetooth 2.0 HC-06. Основным их отличием является то, что HC-05 может работать в режиме master/slave, а HC-06 — только в режиме slave. Режим slave предполагает, что модуль не может сам инициировать связь. Однако для большинства проектов на Arduino этого не требуется.

Модули Bluetooth в наших наборах представлены сразу монтированными на UART переходник, что значительно упрощает подключение и не требует пайки.

Схема подключения Модуль Bluetooth 2.0 HC-05/06

Ниже представлена схема подключения модулей Bluetooth HC-05 и HC-06. Их подключение идентично за исключением того, что выход пина Key у модуля Bluetooth HC-05 подключается к пину контроллера 3.3В.

Подключение модуля Bluetooth
Подключение модуля Bluetooth

Код для подключения модуля Bluetooth 2.0 HC-05/06

В примере ниже показано, как подключить вывод модуля Bluetooth HC-05/06 к монитору последовательного порта платы (вывод можно посмотреть в мониторе порта Arduino IDE). Для корректной работы кода требуется подключение библиотека SoftwareSerial.h.

include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // указываем пины rx и tx соответственно

void setup()  {
  pinMode(2,INPUT);
  pinMode(3,OUTPUT);
  Serial.begin(9600);
  mySerial.begin(38400);
  Serial.println("start prg");
}

void loop() {
  if (mySerial.available()) {
    char c = mySerial.read(); // читаем из software-порта
    Serial.print(c); // пишем в hardware-порт
  }
  if (Serial.available()) {
    char c = Serial.read(); // читаем из hardware-порта
    mySerial.write(c); // пишем в software-порт
  }
}

Скачать файл с кодом, формат .INO: Модуль Bluetooth hc-05/06

Универсальный двунаправленный 4-х канальный преобразователь уровней 3.3В — 5В (SPI, I2C, UART и др)

Двунаправленный 4-канальный преобразователь логических уровней представляет собой миниатюрное устройство, которое понижает 5В-сигналы до 3.3В, и повышает 3.3В-сигналы до 5В. Преобразователь также работает с устройствами, логический уровень которых составляет 2.8В и 1.8В. Одна такая плата способна преобразовывать напряжения между 4 выводами на одной стороне и 4 выводами на другой.

Данный 4-канальный двунаправленный преобразователь может использоваться как с обычными последовательными интерфейсами UART, I2C, SPI, так и для преобразования любых цифровых сигналов. Не работает с аналоговыми сигналами.

Преобразователь уровней довольно прост в использовании и требует только подключения двух источников питания (с высоким и низким напряжениями, которые используются в вашем проекте). Высокое напряжение (например, 5В) подключается к выводу ‘HV’, низкое напряжение (например, 2.8В) – к выводу ‘LV’, а общая точка схемы – к выводу ‘GND’.

Остальные выводы обозначены как входы высокого напряжения (HV) или низкого (LV). Логическая единица, поступающая на вывод HV (на стороне 5В) появится на выводе LV (на стороне 3.3В) в виде напряжения 3.3В. И наоборот, логическая единица, поступающая на вывод LV (на стороне 3.3В) появится на выводе HV (на стороне 5В) в виде напряжения 5В.

Модуль RFID RC-522 13,56 МГц

RFID (от англ. Radio Frequency IDentification, радиочастотная идентификация) – это метод идентификации, который подразумевает запись и считывание радиосигналов, которые хранятся на RFID-метках. Устройство RFID всегда двухчастное – сама RFID-метка и считывающее устройство.

Схема подключения модуля RFID RC-522 13,56 МГц

На изображении ниже представлена схема подключения модуля RFID RC-522 13,56 МГц.

Подключение RFID
Подключение RFID

Код для подключения модуля RFID RC-522 13,56 МГц

В примере ниже показано, как подключить модуль RFID к контроллеру.

// Подключение библиотек
#include <SPI.h>
#include <MFRC522.h>
// константы подключения контактов SS и RST
#define RST_PIN 9
#define SS_PIN 10
// Инициализация MFRC522
MFRC522 mfrc522(SS_PIN, RST_PIN); 
void setup()
{
  Serial.begin(9600); // инициализация последовательного порта
  SPI.begin(); // инициализация SPI
  mfrc522.PCD_Init(); // инициализация MFRC522
}
void loop()
{
  if ( ! mfrc522.PICC_IsNewCardPresent())
    return;
  // чтение карты
  if ( ! mfrc522.PICC_ReadCardSerial())
    return;
  // показать результат чтения UID и тип метки
  Serial.print(F("Card UID:"));
  dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);
  Serial.println();
  Serial.print(F("PICC type: "));
  byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
  Serial.println(mfrc522.PICC_GetTypeName(piccType));
  delay(2000);
}
// Вывод результата чтения данных в HEX-виде
void dump_byte_array(byte *buffer, byte bufferSize)
{
  for (byte i = 0; i < bufferSize; i++)
  {
    Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    Serial.print(buffer[i], HEX);
  }
}


Скачать файл с кодом, формат .INO: RFID

Пульт ДУ с приёмником

Инфракрасный (ИК) пульт  дистанционного управления (ДУ) — один из самых простых способов взаимодействия с электронными приборами. Пультами ДУ мы пользуемся повседневно, например, для управления телевизором, кондиционером и другими устройствами. Пульты ДУ также активно используются в проектах Arduino, когда требуется удаленное управление. Наиболее часто пульты применяются в проектах умного дома, а также для управления роботами.

На пульте ДУ расположена 21 кнопка, которым можно программно назначить определенные функции для управления устройством. В комплекте с пультом также идет модуль с ИК приемником и провода для подключения.

Модуль приемника должен устанавливаться на то устройство, для которого предполагается удаленное управление с пульта. Пульт в данной конфигурации может работать на дальности до 5-8 метров от модуля ИК приемника, качество сигнала зависит от наличия/отсутствия препятствий между передатчиком пульта и приемником.

Схема подключения пульта ДУ с приёмником

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

Подключение ИК приёмника
Подключение ИК приёмника

Код для подключения пульта ДУ с приемником

В примере ниже показано, как подключить вывод пульта ДУ с приемником к монитору последовательного порта платы (вывод можно посмотреть в мониторе порта Arduino IDE).


#include <IRremote.h> // подключаем библиотеку для IR приемника

IRrecv irrecv(A0); // указываем пин, к которому подключен IR приемник
decode_results results;

void setup() {
irrecv.enableIRIn(); // запускаем прием инфракрасного сигнала
Serial.begin(9600); // подключаем монитор порта

pinMode(12, OUTPUT); // пин 12 будет выходом (англ. «output»)
pinMode(A0, INPUT); // пин A0 будет входом (англ. «intput»)

}

void loop() {
if (irrecv.decode(&results)) // если данные пришли выполняем команды
{
Serial.println(results.value); // отправляем полученные данные на порт

// включаем и выключаем светодиод, в зависимости от полученного сигнала
if (results.value == 16718055) {
digitalWrite(12, HIGH);
}
if (results.value == 16724175) {
digitalWrite(12, LOW);
}
irrecv.resume(); // принимаем следующий сигнал на ИК приемнике
}
} 

Скачать файл с кодом, формат .INO: Пуль ДУ

Шаговый двигатель 28byj-48 с драйвером ULN2003

Униполярный шаговый двигатель 28BYJ-48 со встроенным редуктором и драйвером на микросхеме ULN2003 — это популярный в бытовой технике механизм, его использует в кондиционерах, тепловентиляторах, увлажнителях и в других бытовых устройствах, для обеспечения точного позиционирования выдвижных механизмов. 28BYJ-48 комплектуется платой драйвера, собранной на микросхеме ULN2003. На плате драйвера есть 4 светодиода отображающие на какой из обмоток есть напряжение. Так же на плате можно задействовать неиспользуемые четыре канала по 500 мА для подключения маломощных нагрузок к Arduino. Двигатель легко программируется в среде Ардуино, так же есть способы программно увеличить его мощность.

Схема подключения шагового двигателя 28byj-48 с драйвером ULN2003

На изображении ниже представлена схема подключения шагового двигателя.

Подключение шагового двигателя 28byj-48
Подключение шагового двигателя 28byj-48

Код для подключения шагового двигателя 28byj-48 с драйвером ULN2003

В примере ниже показано, как подключить вывод шагового двигателя 28byj-48 с драйвером ULN2003 к монитору последовательного порта платы (вывод можно посмотреть в мониторе порта Arduino IDE).


// порты для подключения модуля ULN2003 к Arduino
#define in1 8
#define in2 9
#define in3 10
#define in4 11

int dl = 5; // время задержки между импульсами

void setup() {
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
}

void loop() {
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  delay(dl);

  digitalWrite(in1, HIGH);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
  delay(dl);

  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  delay(dl);

  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, HIGH);
  delay(dl);
}

Скачать файл с кодом, формат .INO: Шаговый двигатель 28byj-48

Отладочная плата NodeMCU ESP8266 V3 CH340G

Модуль Nodemcu Lua V3 CH340 Wi-Fi на Esp8266 используется при создании различных электронных устройств. Отличительной особенностью является компактный размер, а в макетную плату модуль можно вставить без паяльника, благодаря тому, что все выводы чипа разведены на гребенки. В микросхеме реализовано подключение к USB, имеется регулятор питания. Программирование и загрузка осуществляется по той же схеме, что и работа с Arduino. Стандартная прошивка обеспечивает программирование на языке Lua, но благодаря чипсету на Esp8266 можно написать собственную прошивку на языке С или С++.

Модуль имеет встроенные TR переключатель и PLL, усилители мощности, стек TCP/IP. Рекомендуем купить Nodemcu Lua V3 CH340 Wi-Fi на Esp8266 для проектирования роботов или систем для «Умного дома», других устройств, управляемых на расстоянии. Плата версии V3 отличается от предшественников усовершенствованным USB портом и увеличенными размерами. Цена Nodemcu Lua V3 CH340 Wi-Fi на Esp8266 доступна каждому, кто увлекается робототехникой и программированием.

Отладочная плата NodeMCU ESP8266 V3 CH340G обладает следующими техническими характеристиками:

ХарактеристикаОписвание
Wi-Fi протокол802.11 b/g/n
Режимы Wi-Fiточка доступа, клиент
Входное напряжение3.7В – 20 В
Рабочее напряжение3В-3.6В
Максимальный ток220мА
Встроенный стекTCP/IP
Диапазон рабочих температур-40С до 125С
Процессор80 МГц, 32-битный
Время пробуждения и отправки пакетов22мс
Встроенные TR переключатель и PLLесть
Наличие усилителей мощности, регуляторов, систем управления питаниеместь

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

Драйвер CP2102 — выбери подходящую для вашего устройства версию:

  1. CP210x-driver-windows7-10
  2. CP210x-driver-MacOS
  3. CP210x-driver-Linux-2-2-x

Затем, чтобы плата работала в Arduino IDE нужно добавить ее в менеджере плат. По пути Файл/Настройки перейди в окно настроек и копируй в строку Дополнительные ссылки для Менеджера плат следующую ссылку:

http://arduino.esp8266.com/stable/package_esp8266com_index.json .

По этой ссылке содержится пак плат с чипами ESP8266 различных конфигураций. Для сохранения ссылки нажми на значок папки рядом с полем для вставки и кнопку ОК внизу диалогового окна.

 

Далее нужно перейти в сам Менеджер плат по пути Инструменты/Плата/Менежер плат.

В открывшемся окне Менеджера плат нужно найти строку поиска и вписать в нее ESP8266, затем выбрать из списка пак под названием esp8266 by ESP8266 Community и установить инструменты данных плат.

После этого с модулем NodeMCU можно будет работать так же, как и с классическими платами, совместимыми с Arduino IDE.

Распиновка отладочной платы NodeMCU ESP8266 V3 CH340G

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

Распиновка NodeMCU

Коробка пластиковая двухуровневая

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

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

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

Верхний уровень представляет собой съемный отсек высотой 2 см с 4 делениями: 3 квадратных отделения 7х8 см и прямоугольное отделение 21х8 см. Для увеличения места в коробке, верхний уровень может быть вынут из нее.

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

В комплекте с компонентами весь набор станет отличным подарком.

Габариты бокса (ДШВ): 228х160х60 мм