Мощность резистора

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

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

Какая мощность будет выделяться (рассеиваться) на резисторе

Как я уже написал чуть выше, мощность рассеивания резистора зависит от его сопротивления и силы тока, проходящего по нему. Для расчета мощности, которая будет рассеиваться в виде тепла на резисторе используется формула: P = I² * R

  • P — мощность в Ватт
  • I — Сила тока в Ампер
  • R — Сопротивление в Ом

Для примера рассчитаем мощность которая будет рассеиваться на резисторе в схеме с подключением светодиода. Вот схема подключения:

Про то как рассчитать номинал резистора для подключения светодиода и силу тока в цепи, а так же как управлять светодиодом с помощью Ардуино я писал в этой статье. В нашем примере используется резистор на 150 Ом и сила тока в цепи составляет 20 миллиампер или 0.02 ампера. Теперь мы можем рассчитать мощность, которая будет рассеиваться на резисторе.

P = I² * R = 0.02² * 150 = 0.0004 * 150 = 0.06 Ватт

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

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

Как определить мощность резистора

Как я уже писал в других статьях, обычно резисторы — это мелкие элементы, поэтому на их корпусе сложно описать все их параметры. Для описания номинала и класса точности используется цветовая маркировка или специальная маркировка для SMD резисторов. А для того что бы понять какой мощности резистор нужно его измерить. Вот схема которая поможет узнать мощность резисторов в зависимости от их размера:

Мощность резисторов в зависимости от размера
Мощность резисторов в зависимости от размера

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

Керамические резисторы с сопротивлением 10 Ом и мощностью 10 Ватт
Керамические резисторы с сопротивлением 10 Ом и мощностью 10 Ватт
Резистор с радиатором на 10 Ом и мощностью 50 Ватт
Резистор с радиатором на 10 Ом и мощностью 50 Ватт

Мощность SMD резисторов

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

Размер в дюймахДлинна в ммШирина в ммМощность при 70°C в Ватт
00750,30,150,02
010050,40,20,03
02010,60,30,05
040210,50,063
06031,60,80,1
08052,01,250,125
12063,21,60,25
12103,22,50,5
12183,24,81
18124,53,20,75
201052,50,75
25126,43,22
Таблица мощности SMD резисторов

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

Распиновка USB разъемов

USB — это специальный интерфейс для подключения разнообразных устройств к вычислительной технике. Это один из самых распространенных интерфейсов на сегодня. Он был разработан USB Implementers Forum (USB-IF) в 1996 году. С того времени было добавлено несколько версий (USB 1.0, USB 2.х, USB 3.х, USB4) и типов (Type A, Type B, Type C) этого интерфейса.

Все эти версии отличаются, в основном, скоростью передачи данных и электрическими параметрами. Так первая версия была способна передавать данные со скоростью до 12 Мбит/с, обеспечивать напряжение питания в 5 В и максимальный ток до 500 мА. А вот версия стандарта USB4 уже способна передавать данные на скорости до 40 Гбит/с, передавать напряжение до 20 В и ток до 12 А (мощность зарядки до 240 Ватт).

Распиновка USB Type A версии 1.0 и 2.х

Схема USB Type A до версии 3.0
1Красный/Оранжевый+5 В
2Белый/ЗолотойДанные —
3ЗеленыйДанные +
4Черный/СинийЗемля

Распиновка USB Type A версии 3.х

Схема USB Type A 3.х
1Красный+ VCC (до 20 В)
2БелыйДанные —
3ЗеленыйДанные +
4ЧерныйЗемля
5СинийБыстрые данные прием —
6ЖелтыйБыстрые данные прием +
7БелыйЗемля
8ФиолетовыйБыстрые данные отправка —
9ОранжевыйБыстрые данные отправка +

Распиновка Mini USB Type A

Схема Mini USB Type A
1Красный+5 В
2БелыйДанные —
3ЗеленыйДанные +
4Не подключенНе подключен
5ЧерныйЗемля

Распиновка Micro USB Type B

1Красный+5 В
2БелыйДанные —
3ЗеленыйДанные +
4Не подключенНе подключен
5ЧерныйЗемля

Распиновка USB Type C

A1/B1ЛуженыйЗемля
A2/B2Желтый/БелыйSuperSpeed прием +
A3/B3Коричневый/ЧерныйSuperSpeed прием —
A4/B4Красный+ VCC (до 20 В)
A5/B5Синий/ЖелтыйСогласующий канал
A6/B6БелыйHigh-Speed данные +
A7/B7ЗеленыйHigh-Speed данные —
A8/B8Красный/ЧерныйДополнительный канал
A9/B9Красный+ VCC (до 20 В)
A10/B10Синий/ОранжевыйSuperSpeed прием —
A11/B11Красный/ЗеленыйSuperSpeed прием +
A12/B12ЛуженыйЗемля

Онлайн калькулятор маркировки SMD резистора

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

  • Из трех цифр (123)
  • Из двух цифр с разделителем в виде буквы R (4R7)
  • Из четырех цифр (1234)
  • Из трех цифр с разделителем в виде буквы R (4R37)
  • Обозначение из таблицы EIA-96 из двух цифр и одной латинской буквы из ряда «ZYRXSABHCDEF» (02A)

Сопротивление резистора:

Примеры расшифровок резисторов

Резисторы с двумя цифрами и разделителем (4R7 1R0 2R2)

В данном случае «R» выступает в качестве десятичной запятой. Таким образом:

  • 2R2 — 2.2 Ом
  • 1R0 — 1 Ом
  • 4R7 — 4.7 Ом

Резисторы с тремя цифрами (103 102 100)

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

  • 100 — 10 Ом
  • 102 — 1 000 Ом или 1 КОм
  • 103 — 10 000 Ом или 10 КОм

Резисторы с четырьмя цифрами (0805 1206 2512)

Как и в прошлых примерах, первые цифры напрямую являются значением, а последняя цифра означает количество нулей после значения:

  • 0805 — 8 000 000 Ом или 8 МОм
  • 1206 — 120 000 000 Ом или 120 МОм
  • 2512 — 25 100 Ом или 25.1 КОм

Резистор 000

Существуют SMD резисторы с нулевым сопротивлением. Они обозначаются нулями (0, 00 или 000), или могут иметь продольную черту на корпусе. Подобные резисторы часто используются в качестве предохранителей. Так как, не смотря на практически нулевое сопротивление, они все же имеют определенную мощность, которая зависит от размера резистора. Об этом я напишу ниже.

Мощность SMD резисторов

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

Размер в дюймахДлинна в ммШирина в ммМощность при 70°C в Ватт
00750,30,150,02
010050,40,20,03
02010,60,30,05
040210,50,063
06031,60,80,1
08052,01,250,125
12063,21,60,25
12103,22,50,5
12183,24,81
18124,53,20,75
201052,50,75
25126,43,22

SMD резистор

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

SMD резистор 1206
SMD резистор 1206

SMD (Surface Mounted Device) расшифровывается и переводится как «Устройство монтируемое на поверхность». Подразумевается что это элементы которые припаиваются на поверхность платы. Такие резисторы очень малы, поэтому если просто написать на их корпусе номинал то это обозначение будет слишком мелким и его невозможно будет прочитать без микроскопа. Поэтому были придуманы специальные маркировки для SDM резисторов.

Отличия маркировок SMD резисторов

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

  • Из трех цифр (123). Используют для резисторов с погрешностью 5%-10%
  • Из двух цифр с разделителем в виде буквы R (4R7). Используют для резисторов номиналов менее 10 Ом. Такие резисторы обладают погрешностью до 5%
  • Из четырех цифр (1234). Используют для резисторов с погрешностью 5%-10%
  • Из трех цифр с разделителем в виде буквы R (4R37). Используют для резисторов номиналов менее 100 Ом. Такие резисторы обладают погрешностью до 5%
  • Обозначение из таблицы EIA-96 из двух цифр и латинской буквы (02A). Используют для резисторов с погрешностью менее 1%.

RGB светодиод и Arduino

RGB светодиоды
RGB светодиоды

RGB светодиоды — это светодиоды способные излучать свет разных цветов. С английского RGB (Red Green Blue) переводится как красный, зеленый и синий. То есть такой светодиод может светиться этими цветами как по отдельности, так и одновременно с разной интенсивностью. Фактически это три разных светодиода под одной линзой и с 1 общим контактом. Это дает возможность излучать свет практически любого цвета. Я уже рассказывал подробнее о том как работает обычный светодиод и как его подключить к Ардуино.

Расчет резисторов для RGB светодиода

Для того что бы светодиод работал и прослужил как можно дольше необходимо правильно подключить его. Для этого нам придется подавать на него «правильный» ток. А что бы понять какой ток нужно подавать нужно знать параметры именно вашего RGB светодиода. Я использую самые популярные 5 мм светодиоды, купленные на алиэкспрессе. По словам продавца эти светодиоды имеют падение напряжения 1.8-2 В на красном светодиоде и по 3-3.2 В на зеленом и синем, а так же требуют силу тока до 20 мА. Еще мы знаем, что подключать светодиод мы будем к Arduino Uno, на пинах которой напряжение составляет 5 В.

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

  • Vps — напряжение источника питания (5 Вольт)
  • Vdf — падение напряжения на светодиоде (2 Вольта для красного и 3 В для зеленого и синего)
  • If — номинальный ток светодиода (15 миллиампер или 0.015 Ампера)

Теперь подставим наши данные в формулу закона Ома для расчета сопротивления. Если кто забыл то напомню: R = U / I (сопротивление равно напряжению деленному на силу тока). Подставляем наши данные:

R = (Vps — Vdf) / If = (5В — 2В) / 0.015А = 200 Ом (для красного цвета)

R = (Vps — Vdf) / If = (5В — 3В) / 0.015А = 133 Ом (для зеленого и синего цветов)

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

Резисторы для RGB светодиода

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

С резисторами определились, теперь подключим это все к нашей Arduino Uno. Мы можем регулировать яркость каждого светодиода для получения широкой палитры цвета при смешении красного, зеленого и синего в разных пропорциях. У меня светодиод с общим катодом, значит я могу подключить аноды к разным пинам ардуинки с поддержкой ШИМ. Для этого я использую пины 3 (синий), 5 (зеленый) и 6 (красный), а также пин GND для катода. Вот схема:

Arduino Uno RGB LED

Управление RGB светодиодом на ардуино

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

// создаем переменные, хранящие номера наших пинов
int red_pin= 6;
int green_pin = 5;
int blue_pin = 3;
 
void setup() {

    // обозначаем что наши пины работают как выходы
    pinMode(red_pin, OUTPUT);
    pinMode(green_pin, OUTPUT);
    pinMode(blue_pin, OUTPUT);
}
 
void loop() {

    // вызываем нашу функцию с разными параметрами и ожиданием 1 сек
    RGB_color(255, 0, 0); // Красный
    delay(1000);
    RGB_color(0, 255, 0); // Зеленый
    delay(1000);
    RGB_color(0, 0, 255); // Синий
    delay(1000);
    RGB_color(255, 255, 125); // Малиновый
    delay(1000);
    RGB_color(0, 255, 255); // Бирюзовый
    delay(1000);
    RGB_color(255, 0, 255); // Пурпурный
    delay(1000);
    RGB_color(255, 255, 0); // Желтый
    delay(1000);
    RGB_color(255, 255, 255); // Белый
    delay(1000);
}


// Объявляем нашу функцию для управления светодиодом
void RGB_color(int red_value, int green_value, int blue_value)
 {
    analogWrite(red_pin, red_value);
    analogWrite(green_pin, green_value);
    analogWrite(blue_pin, blue_value);
}

Для того что бы лучше различать оттенки цветов нужно использовать какой-то рассеиватель. Это может быть полупрозрачный пластик или просто лист бумаги. Еще лучше использовать матовые светодиоды. Также вы можете аккуратно наждачной бумагой или напильником сделать прозрачный светодиод матовым. О рассеивании света можете почитать на википедии (англ).

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

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

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

Узнать полярность светодиода можно по нескольким признакам:

  • Нога анода (+) обычно чуть длиннее
  • Пластиковый бортик светодиода может быть немного усечен со стороны катода (-)
  • Если присмотреться то внутри пластика можно увидеть 2 части светодиода. Анод (+) обычно меньше
  • Можно использовать мультиметр в режиме прозвонки. Светодиод пропускает ток только от анода (+) к катоду (-)
  • Можно подключить к питанию (подходящему по силе тока и напряжению). Если светодиод не светится, значит подключен не той стороной. Просто переверните его.
Определение полярности светодиода

Теперь поговорим о подключении светодиода к плате Ардуино. Цифровые пины Ардуино способны выдавать ток до 40 мА, но для большинства светодиодов это слишком много. Самые простые и дешевые светодиоды обычно имеют значение предельно допустимого тока в 20 мА. Это значит, что подключив светодиод напрямую к пину Ардуинки, он быстро выйдет из строя. Что бы этого не произошло необходимо использовать токоограничивающий резистор. Можете почитать статью о резисторах, где я рассказывал про токоограничивающие резисторы и расчет необходимого номинала. Так же вам может пригодиться онлайн калькулятор маркировки резисторов для того, что бы найти или купить постоянные резисторы нужного номинала.

Расчет постоянного резистора для светодиода

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

Используя закон Ома мы можем увидеть, что сила тока будет расти при падении сопротивления и при одинаковом напряжении. Это значит что светодиод требующий 20 мА для работы, будет пропускать через себя более сильный ток и попросту сгорит. Тут то нам и поможет обычный постоянный резистор.

Что бы вычислить необходимый номинал резистора нам необходимо знать характеристики источника питания и характеристики светодиода. А характеристики светодиода можно посмотреть в его техническом описании, или спросить у продавца. Обычно это ток 20 мА и падение напряжения 2 В.

  • Vps — напряжение источника питания (5 Вольт)
  • Vdf — падение напряжения на светодиоде (2 Вольта)
  • If — номинальный ток светодиода (20 миллиампер или 0.02 Ампера)

Теперь подставим наши данные в формулу закона Ома для расчета сопротивления. Если кто забыл то напомню: R = U / I (сопротивление равно напряжению деленному на силу тока). Подставляем наши данные: R = (Vps — Vdf) / If = (5В — 2В) / 0.02А = 150 Ом

Теперь мы просто берем резистор на 150 Ом и ставим его перед или после светодиода (без разницы).

Мы будем подключать светодиод к цифровому пину с поддержкой ШИМ, для того что бы мы могли управлять не только включением и отключением но еще и яркостью светодиода. Советую почитать про характеристики, возможности и распиновку Ардуино нано. Код скетча будет одинаковым для Arduino Nano и Arduino Uno. Его я тоже объясню чуть позже. В качестве токоограничивающего сопротивления я буду использовать постоянный резистор на 150 Ом. Можно использовать резисторы и схожих номиналов, но при меньшем сопротивлении светодиод будет сильнее греться, а при большем будет светить тусклее. Я рекомендую использовать резисторы сопротивлением от 120 Ом и до 250 Ом для самых простых 5 мм светодиодов. Вот наглядная схема подключения светодиода к ардуино нано:

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

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

Здесь все точно так же как и в прошлом примере, только я решил не использовать макетную плату. Резистор точно такой же на 150 Ом.

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

Скетч для управления светодиодом с помощью Arduino

Мы подключили светодиод к Arduino как показано на схемах выше. Теперь нам нужно написать программу для управления этим светодиодом. Для написания и загрузки прошивок в микроконтроллер обычно используется Arduino IDE. Мы рассмотрим самый простейший пример. Просто будем мигать светодиодом. Вот сам код скетча:

// Моргаем светодиодом каждую секунду
int ledPin = 3; // переменная с пином подключенного светодиода

void setup() {
	pinMode(ledPin, OUTPUT);       // назначаем наш пин "выходом"
}

void loop() {
	digitalWrite(ledPin, HIGH);   // включаем светодиод
	delay(1000);                  // ждем 1000 миллисекунд (1 секунда)
	digitalWrite(ledPin, LOW);    // выключаем светодиод
	delay(1000);                  // ждем еще 1 секунду
}

Думаю тут все понятно. Если же нет то можете ознакомиться с разделами сайта «Аrduino для начинающих» и «Программирование«.

Цветовая маркировка резисторов

Обычно резисторы это очень мелкие элементы и на их корпусе слишком мало места для обозначения их характеристик. Поэтому используется цветовая маркировка резисторов, характеризующая основные параметры элемента при помощи 3, 4, 5 или 6 цветных полос. Для расшифровки цветных полос используют таблицы маркировки резисторов или онлайн калькуляторы, как на этой странице ниже. О том что такое резистор и какие они бывают я рассказал в статье о резисторах.

Онлайн калькулятор цветовой маркировки резисторов

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

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

1 кольцо
(значение)
2 кольцо
(значение)
3 кольцо
(множитель)
Черный
Коричневый
Красный
Оранжевый
Желтый
Зеленый
Синий
Фиолетовый
Серый
Белый
Золотой
Серебряный

Номинал резистора:

1 кольцо
(значение)
2 кольцо
(значение)
3 кольцо
(множитель)
4 кольцо
(Допустимое
отклонение)
Черный
Коричневый
Красный
Оранжевый
Желтый
Зеленый
Синий
Фиолетовый
Серый
Белый
Золотой
Серебряный

Номинал резистора:

1 кольцо
(значение)
2 кольцо
(значение)
3 кольцо
(значение)
4 кольцо
(множитель)
5 кольцо
(Допустимое
отклонение)
Черный
Коричневый
Красный
Оранжевый
Желтый
Зеленый
Синий
Фиолетовый
Серый
Белый
Золотой
Серебряный

Номинал резистора:

1 кольцо
(значение)
2 кольцо
(значение)
3 кольцо
(значение)
4 кольцо
(множитель)
5 кольцо
(Допустимое
отклонение)
6 кольцо
(Температурный
коэффициент)
Черный
Коричневый
Красный
Оранжевый
Желтый
Зеленый
Синий
Фиолетовый
Серый
Белый
Золотой
Серебряный

Номинал резистора:

Существуют еще более мелкие резисторы (smd), на которых используется другая маркировка. У меня на сайте есть онлайн калькулятор маркировки SMD резисторов. Используйте его для определения номинала таких резисторов, а так же там вы сможете почитать что такое смд резисторы и чем они отличаются от других резисторов.

Таблица цветной маркировки резисторов

Цветовая маркировка состоит из разноцветных полос нанесенных на корпус резистора. Таких полос может быть три, четыре, пять и шесть. Каждая полоса имеет свое значение, заданное цветом. Первые две полосы всегда являются номиналом и имеют значения от 0 до 9. Если у резистора всего 3 или 4 полосы то следующая полоса означает множитель, а если полос 5 или 6 то следующая тоже содержит значение номинала и только четвертая полоса будет множителем. Пятая полоса означает допустимую погрешность и измеряется в процентах. Последняя шестая полоса в маркировке резистора означает температурный коэффициент.

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

Таблица маркировки резисторов с 3 полосками
Таблица маркировки резисторов с 3 полосками
Таблица маркировки резисторов с 4 полосками
Таблица цветной маркировки резисторов с 4 полосками
Таблица расшифровки маркировки резисторов с 5 полосками
Таблица расшифровки маркировки резисторов с 5 полосками
Маркировка сопротивление с 6 полосками
Маркировка сопротивление с 6 полосками

Если вы хотите подробнее почитать о цветовой маркировке резисторов, то рекомендую ознакомиться с ГОСТ 28883-90 КОДЫ ДЛЯ МАРКИРОВКИ РЕЗИСТОРОВ И КОНДЕНСАТОРОВ по ссылке: https://docs.cntd.ru/document/1200017462

Резисторы

Резистор (или сопротивление) — пассивный элемент электрической цепи. Он может обладать конкретным значением сопротивления или переменным. Резисторы используются практически во всех электронных и электрических устройствах. В электрических цепях резисторы используют в разных целях:

  • Для преобразования силы тока в напряжение
  • Для преобразования напряжения в силу тока
  • Для ограничения тока
  • Для поглощения эл. энергии

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

Обозначение резисторов

В мире есть несколько общепринятых условных графических обозначений резисторов на схемах. В США рисунок резистора похож на зигзаг, а в России и Европе он выглядит как прямоугольник.

Пример рисунка резисторов в России и Европе (а), и в США (б)
Пример рисунка резисторов в России и Европе (а), и в США (б)

В России существует ГОСТ 2.728-74, в соответствии с которым постоянные резисторы на схемах должны обозначаться так:

Обозначения постоянных резисторов по ГОСТ 2.728-74
Обозначения постоянных резисторов по ГОСТ 2.728-74

По тому же ГОСТу нелинейные, переменные и подстроечные резисторы должны обозначаться так:

Обозначение переменных резисторов по ГОСТ 2.728-74
Обозначение переменных резисторов по ГОСТ 2.728-74

Маркировка резисторов

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

Резистор большой мощности

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

Цветовая маркировка резисторов

Так же существуют и резисторы для монтажа на поверхность платы. У них нет «ножек» но есть контактные площадки. Такие резисторы называются SDM резисторами и имеют свою маркировку. Подробнее о SMD резисторах и калькулятор их маркировки.

Виды резисторов

Классификаций резисторов очень много:

  • По области применения:
    • Высокоомные (обладающие сопротивление более 10 МОм)
    • Высокочастотные (с уменьшенной паразитарной индуктивностью и емкостью)
    • Высоковольтные (способные пропускать через себя тысячи вольт)
    • Прецизионные (повышенной точности с допуском менее 1%)
  • По способности изменять сопротивление
    • Переменные подстроечные
    • Постоянные
    • Переменные регулировочные
  • По влагозащищенности
    • Обычные незащищенные
    • Покрытые лаком
    • Залитые компаундом
    • Впрессованные в пластмассу
    • Вакуумные
  • По способу монтажа
    • Для навесного монтажа
    • Для монтажа на печатных платах
    • Для микромодулей и микросхем
  • По виду ВАХ (вольт-амперной характеристики)
    • Линейные
    • Нелинейные (фоторезисторы, терморезисторы, варисторы и другие)
  • В зависимости от используемых проводящих элементов
    • Проволочные
    • Непроволочные
  • По виду используемых материалов
    • Углеродистые
    • Металлопленочные
    • Интегральные
    • Проволочные

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

Постоянный резистор

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

Переменный резистор

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

У переменного резистора есть множество названий и подвидов: реостат, потенциометр, переменное сопротивление, подстроечный резистор, регулировочный резистор. Попробуем разобраться в чем отличия. Переменное сопротивление, переменный резистор и реостат — это всё названия одного класса резисторов. «Потенциометр» — это жаргонное название переменного резистора, подключенного как делитель напряжения (о резисторных сборках и делителях напряжения мы расскажем в отдельной статье).

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

Нелинейные резисторы

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

  • терморезисторы — сопротивление меняется в зависимости от температуры;
  • варисторы — сопротивление меняется в зависимости от приложенного напряжения;
  • фоторезисторы — сопротивление меняется в зависимости от освещённости;
  • тензорезисторы — сопротивление меняется в зависимости от деформации резистора;
  • магниторезисторы — сопротивление меняется в зависимости от величины магнитного поля.

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

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

Как прошить Arduino Pro Mini

Загрузить прошивку на этот микроконтроллер можно несколькими способами:

  • Через другую плату ардуино, у которой есть встроенный USB-UART
  • С помощью специального программатора
  • Используя USBasp-программатор

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

Прошивка ардуино про мини с помощью Arduino Uno или Nano

Для того что бы прошить одну ардуинку через другую, нам понадобятся 2 платы Arduino, соединительные провода, USB кабель и компьютер. Я покажу как прошить Arduino Pro Mini с помощью Arduino Nano, но по этой же инструкции можно использовать и другие платы Arduino, такие как Uno, Mega и тд.

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

Выбор программатора
Выбор программатора

Выбираем этот скетч и прошиваем. Теперь мы готовы подключать Arduino Pro Mini. Подключаем следующим образом:

Arduino Nano -> Arduino Pro Mini

  • +5v -> Vcc
  • GND -> GND
  • D10 -> RST
  • D11 -> D11
  • D12 -> D12
  • D13 -> D13

У меня это выглядит так:

Arduino Pro Mini через Arduino Nano
Arduino Pro Mini через Arduino Nano

Далее нам нужно выставить в меню «Инструменты» нашу прошиваемую плату и тип программатора «Arduino as ISP»:

Теперь мы можем прошить нашу Arduino Pro Mini. Откройте или напишите нужную вам прошивку. Будьте внимательны! Стандартная кнопка загрузки скетча нам не подходит. По умолчанию она заливает прошивку без использования программатора. Таким образом мы прошьем микроконтроллер, который должен выступать в качестве программатора. Чтобы этого не произошло нужно перейти в меню Скетч >> Загрузить через программатор.

Готово!

Прошивка Arduino Pro Mini с помощью специального программатора

Купить специальный программатор можно здесь. Стоит он меньше одного доллара. Если вы часто используете ардуино про мини, то этот программатор сильно упростит и ускорит прошивку.

Для преобразования USB-to-Serial используется микросхема CH340. Что бы она определялась компьютером правильно необходимо установить специальный драйвер. Скачать и установить драйвер CH340

Прошить ардуино с помощью программатора очень просто. Нужно подключить программатор к Arduino Pro Mini следующим образом:

Arduino <-> Программатор

  • Vcc <-> Vcc
  • GND <-> GND
  • RX1 <-> TXD
  • TX0 <-> RXD

Подключаем программатор к компьютеру и проверяем, что он не требует драйверов. Если же он определяется как «неопознанное устройство» скачайте и установите драйвер. Его легко найти, набрав в поисковике «*модель вашего программатора* драйвер». Например «CP2102 драйвер». Далее запускаем Arduino IDE. Выбираете модель вашей платы. Потом переходим в меню Инструменты -> Программатор и выбираете ваш программатор. Далее открываете нужный вам скетч и загружаете его с помощью пункта в меню Скетч -> Загрузить через программатор.

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

Вот и все. Мы успешно прошили Arduino Pro Mini с помощью программатора.

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

Стандартные библиотеки Arduino хранятся в папке:

«C:\Program Files (x86)\Arduino\libraries\»

Дополнительные библиотеки устанавливаются в папку:

«C:\Users\*Имя Пользователя*\Documents\Arduino\libraries»

В вашем случае эти пути могут быть другими из-за другой буквы основного жесткого диска и другого имени пользователя. Если у вас установлена 32х битная операционная система то папка «Program Files (x86)» будет называться «Program Files».

Установка библиотек Arduino

Установить библиотеки в Arduino IDE очень просто. Можно сделать это двумя способами. Через интерфейс программы или копированием скачанной библиотеки в папку «libraries». Рассмотрим подробнее оба варианта:

Установка библиотек через Arduino IDE

Первый вариант — это установка библиотек Ардуино из официального репозитория. Для этого необходимо запустить Arduino IDE, в верхнем меню выбрать «Скетч -> Подключить библиотеку -> Управлять библиотеками».

Установка библиотек ардуино
Установка библиотек ардуино

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

Установить библиотеки Arduino
Установить библиотеки Arduino

Второй вариант — это установка библиотеки из скачанной .zip папки. Через интерфейс Arduino IDE это можно сделать всего за пару кликов. В верхнем меню программ выбираем «Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку». Откроется окно файлового менеджера, где необходимо выбрать папку или .zip архив с вашей библиотекой.

Еще один способ установки библиотек Ардуино

Вы можете просто перенести папки библиотек по пути:

«C:\Program Files (x86)\Arduino\libraries\»

После того как вы добавили свои библиотеки необходимо перезапустить Arduino IDE. Теперь вы можете использовать сторонние библиотеки в своих проектах.

Подключение библиотеки Arduino

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

#include <ESP8266WiFi.h>

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

Аrduino для начинающих

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

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

Что такое Arduino и для чего оно нужно?

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

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

проекты на Arduino
проекты на Arduino

Стартовый набор Arduino

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

Базовый набор ардуино для начинающих:Купить
Большой набор для обучения и первых проектов:Купить
Набор дополнительных датчиков и модулей:Купить
Ардуино Уно самая базовая и удобная модель из линейки:Купить
Беспаечная макетная плата для удобного обучения и прототипирования:Купить
Набор проводов с удобными коннекторами:Купить
Комплект светодиодов:Купить
Комплект резисторов:Купить
Кнопки:Купить
Потенциометры:Купить

Среда разработки Arduino IDE

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

ВерсияWindowsMac OS XLinux
1.8.2

Zip

Installer

Installer

32 bits

64 bits

ARM

Язык программирования Ардуино

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

Для программирования Arduino используется упрощенная версия языка C++ с предопределенными функциями. Как и в других Cи-подобных языках программирования есть ряд правил написания кода. Вот самые базовые из них:

  • После каждой инструкции необходимо ставить знак точки с запятой (;)
  • Перед объявлением функции необходимо указать тип данных, возвращаемый функцией или void если функция не возвращает значение.
  • Так же необходимо указывать тип данных перед объявлением переменной.
  • Комментарии обозначаются: // Строчный и /* блочный */

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

Все прошивки для Arduino должны содержать минимум 2 функции. Это setup() и loop().

Функция setup

Функция setup() выполняется в самом начале и только 1 раз сразу после включения или перезагрузки вашего устройства. Обычно в этой функции декларируют режимы пинов, открывают необходимые протоколы связи, устанавливают соединения с дополнительными модулями и настраивают подключенные библиотеки. Если для вашей прошивки ничего подобного делать не нужно, то функция все равно должна быть объявлена. Вот стандартный пример функции setup():

void setup() {
	Serial.begin(9600);	// Открываем serial соединение
	pinMode(9, INPUT);	// Назначаем 9 пин входом
	pinMode(13, OUTPUT); // Назначаем 13 пин выходом
}

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

Функция loop

Функция loop() выполняется после функции setup(). Loop в переводе с английского значит «петля». Это говорит о том что функция зациклена, то есть будет выполняться снова и снова. Например микроконтроллер ATmega328, который установлен в большинстве плат Arduino, будет выполнять функцию loop около 10 000 раз в секунду (если не используются задержки и сложные вычисления). Благодаря этому у нас есть большие возможности.

Макетная плата Breadbord

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

Макетная плата на 800 точек с 2 шинами питания, платой подачи питания и проводами: Купить
Большая макетная плата на 1600 точек с 4 шинами питания: Купить
Макетная плата на 800 точек с 2 шинами питания: Купить
Макетная плата на 400 точек с 2 шинами питания: Купить
Макетная плата на 170 точек: Купить
Соединительные провода 120 штук: Купить

Первый проект на Arduino

Давайте соберем первое устройство на базе Ардуино. Мы просто подключим тактовую кнопку и светодиод к ардуинке. Схема проекта выглядит так:

Управление яркостью светодиода
Управление яркостью светодиода

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

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

 // переменные с пинами подключенных устройств
int switchPin = 8;
int ledPin = 11;

// переменные для хранения состояния кнопки и светодиода
boolean lastButton = LOW;
boolean currentButton = LOW;
boolean ledOn = false;

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

// функция для подавления дребезга
boolean debounse(boolean last) {
	boolean current = digitalRead(switchPin);
	if(last != current) {
		delay(5);
		current = digitalRead(switchPin);
	}
	return current;
}

void loop() {
	currentButton = debounse(lastButton);
	if(lastButton == LOW && currentButton == HIGH) {
		ledOn = !ledOn;
	}
	lastButton = currentButton;
	digitalWrite(ledPin, ledOn);
}

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

ШИМ Arduino

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

ШИМ ардуино
ШИМ ардуино

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

В Arduino есть встроенный широтно-импульсный модулятор. Использовать ШИМ можно только на тех пинах, которые поддерживаются микроконтроллером. Например Arduino Uno и Nano имеют по 6 ШИМ выводов: это пины D3, D5, D6, D9, D10 и D11. В других платах пины могут отличаться. Вы можете найти описание интересующей вас платы в этом разделе.

Для использования ШИМ в Arduino есть функция analogWrite(). Она принимает в качестве аргументов номер пина и значение ШИМ от 0 до 255. 0 — это 0% заполнения высоким сигналом, а 255 это 100%. Давайте для примера напишем простой скетч. Сделаем так, что бы светодиод плавно загорался, ждал одну секунду и так же плавно угасал и так до бесконечности. Вот пример использования этой функции:

 // Светодиод подключен к 11 пину
int ledPin = 11;

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

void loop() {
	for (int i = 0; i < 255; i++) {
		analogWrite(ledPin, i);
		delay(5);
	}

	delay(1000);

	for (int i = 255; i > 0; i--) {
		analogWrite(ledPin, i);
		delay(5);
	}
}

Аналоговые входы Arduino

Как мы уже знаем, цифровые пины могут быть как входом так и выходом и принимать/отдавать только 2 значения: HIGH и LOW. Аналоговые пины могут только принимать сигнал. И в отличии от цифровых входов аналоговые измеряют напряжение поступающего сигнала. В большинстве плат ардуино стоит 10 битный аналогово-цифровой преобразователь. Это значит что 0 считывается как 0 а 5 В считываются как значение 1023. То есть аналоговые входы измеряют, подаваемое на них напряжение, с точностью до 0,005 вольт. Благодаря этому мы можем подключать разнообразные датчики и резисторы (терморезисторы, фоторезисторы) и считывать аналоговый сигнал с них.

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

Подключение фоторезистора к Ардуино
Подключение фоторезистора к Ардуино

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

int sensePin = 0; // Пин к которому подключен фоторезистор
 
void setup() {
 analogReferense(DEFAULT); // Задаем опорное значение напряжения. Эта строка не обязательна.
 Serial.begin(9600); // Открываем порт на скорости 9600 бод.
}
 
void loop() {
 Serial.println(analogRead(sensePin)); // Считываем значение и выводим в порт
 delay(500); // задержка для того что бы значений было не слишком много
}

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

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

Arduino. Урок 15. SD карта.

Сегодня речь пойдет об использовании SD и micro SD карт в Arduino. Мы разберемся как можно подключить SD карты к Ардуино, как записывать и считывать информацию. Использование дополнительной памяти может быть очень полезно во многих проектах. Если вы не знаете что такое SPI, I2C и аналоговые выводы, то советую вам посмотреть прошлые уроки и разобраться с этими интерфейсами связи Ардуино.

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

В этом уроке используется:

Отличный набор для начинающих: Купить
Arduino Uno: Купить
Инфракрасный датчик расстояния: Купить
Плата расширения для считывания micro SD карт c SPI интерфейсом: Купить
Шилд для Arduino Uno: Купить
Карты micro SD: Купить
Датчики освещенности: Купить
Датчик температуры I2C: Купить

Подключение sd карт к Arduino

Модуль и шилд для считывания sd карт подключается по интерфейсу SPI. Шилд просто вставляется в Arduino Uno сверху. А плата подключается к пинам D10 -> CS, D11 -> MOSI, D12 -> MISO, D13 -> SCLK, 5V -> VIN (если на плате есть стабилизатор, если нет то 3,3V), GND -> GND. Вот наглядная схема:

Подключение sd Arduino
Подключение sd Arduino

Обратите внимание на напряжение питания платы. Если на плате есть стабилизатор питания, то можете подавать на нее 5 В. Если же стабилизатора нет, то необходимо подвести 3.3 В. В остальном все так же как мы разбирали в уроке по SPI интерфейсу. Теперь перейдем к программной части.

Запись и считывание SD карты на Arduino

Для работы с картами памяти в Arduino есть библиотека SD.h. Она по умолчанию доступна в Arduino IDE. С ней мы и будем работать. Для начала напишем простую программу, которая будет записывать обычную строку на SD карту. Теперь посмотрим на скетч:

 // Подключаем библиотеку
#include <SD.h>

// Назначаем пины
int CS_pin = 10;
int pow_pin = 8; // Если вы используете SD Shield

// 
float refresh_rate = 5000.0;

void setup() {
	// Открываем соединение с компьютером
	Serial.begin(9600);
	Serial.println("Initializing Card");
	//Назначаем пин CS_pin выходом
	pinMode(CS_pin, OUTPUT);
	
	//Если мы используем шилд то назначаем выходом пин для питания шилда
	pinMode(pow_pin, OUTPUT);  
	digitalWrite(pow_pin, HIGH);
	
	// Проверяем доступность карты
	if (!SD.begin(CS_pin)) {
			Serial.println("Card Failure");
			return;
	}
	Serial.println("Card Ready");
}

void loop() {
	// Строка которую будем записывать на карту
	String dataString = "Hello";
	
	// Открываем файл и записываем строку
	// В одно время можно открывать только один файл
	// Если файла нет то он будет создан
	File logFile = SD.open("LOG.txt", FILE_WRITE);

	if (logFile) {
		logFile.println(dataString);
		logFile.close();
		Serial.println(dataString);
	} else {
		Serial.println("LOG.txt");
		Serial.println("Couldn't open log file");
	}
	// Задержка для того что бы данных было не слишком много
	delay(refresh_rate);
}

Отлично! У меня все работает так как и было задумано. Теперь я хочу немного доработать этот скетч. Давайте закинем текстовый файл на карту памяти с каким-нибудь значением и попробуем считать это на Arduino. Например я создам текстовый файл в котором будет всего одно число. Это число я буду использовать в качестве задержки между записью нашей строки на эту же карту памяти. Немного доработаем предыдущий скетч.

 // Подключаем библиотеку
#include <SD.h>

// Назначаем пины
int CS_pin = 10;
int pow_pin = 8; // Если вы используете SD Shield

// Переменная для хранения считанных данных
float refresh_rate = 0.0;

void setup() {
	// Открываем соединение с компьютером
	Serial.begin(9600);
	Serial.println("Initializing Card");
	//Назначаем пин CS_pin выходом
	pinMode(CS_pin, OUTPUT);
	
	//Если мы используем шилд то назначаем выходом пин для питания шилда
	pinMode(pow_pin, OUTPUT);  
	digitalWrite(pow_pin, HIGH);
	
	// Проверяем доступность карты
	if (!SD.begin(CS_pin)) {
			Serial.println("Card Failure");
			return;
	}
	Serial.println("Card Ready");
	
	// Считываем данные из файла (COMMANDS.txt)
	File commandFile = SD.open("COMMANDS.txt");
	if (commandFile)
	{
		Serial.println("Reading Command File");
		
		// Эта конструкция подробно объясняется в видео
		float decade = pow(10, (commandFile.available() - 1));
		while(commandFile.available())
		{
			float temp = (commandFile.read() - '0');
			refresh_rate = temp*decade+refresh_rate;
			decade = decade/10;
		}
		Serial.print("Refresh Rate = ");
		Serial.print(refresh_rate);
		Serial.println("ms");
	}
	else
	{
		Serial.println("Could not read command file.");
		return;
	}
	
}

void loop() {
	// Строка которую будем записывать на карту
	String dataString = "Hello";
	
	// Открываем файл и записываем строку
	// В одно время можно открывать только один файл
	// Если файла нет то он будет создан
	File logFile = SD.open("LOG.txt", FILE_WRITE);

	if (logFile) {
		logFile.println(dataString);
		logFile.close();
		Serial.println(dataString);
	} else {
		Serial.println("LOG.txt");
		Serial.println("Couldn't open log file");
	}
	// Задержка для того что бы данных было не слишком много
	delay(refresh_rate);
}


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

Запись на SD карту Arduino
Запись на SD карту Arduino

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

#include <SD.h>         // Библиотека для работы с SD картой
#include <Wire.h>       // I2C библиотека

// Назначаем пины SD шилда
int CS_pin = 10;
int pow_pin = 8;

// Пины инфракрасных дальнометров
int IR1_pin = 2;
int IR2_pin = 3;

// Пин фото резистора
int light_pin = 1;

float refresh_rate = 0.0;  // Задержка обновления данных
int temp_address = 72;     // Адрес I2C датчика температуры
long id = 1;               // Переменная для счетчика строк

void setup()
{
	Wire.begin();
	Serial.begin(9600);
	Serial.println("Initializing Card");
	//CS Pin is an output
	pinMode(CS_pin, OUTPUT);
	
	//SD Card will Draw Power from Pin 8, so set it high
	pinMode(pow_pin, OUTPUT);  
	digitalWrite(pow_pin, HIGH);
	
	//Initialize Card
	if (!SD.begin(CS_pin))
	{
			Serial.println("Card Failure");
			return;
	}
	Serial.println("Card Ready");
	
	//Read the Configuration information (COMMANDS.txt)
	File commandFile = SD.open("COMMANDS.txt");
	if (commandFile)
	{
		Serial.println("Reading Command File");
		
		float decade = pow(10, (commandFile.available() - 1));
		while(commandFile.available())
		{
			float temp = (commandFile.read() - '0');
			refresh_rate = temp*decade+refresh_rate;
			decade = decade/10;
		}
		Serial.print("Refresh Rate = ");
		Serial.print(refresh_rate);
		Serial.println("ms");
		commandFile.close();
	}
	else
	{
		Serial.println("Could not read command file.");
		return;
	}
	
	//Write Log File Header
	File logFile = SD.open("LOG.csv", FILE_WRITE);
	if (logFile)
	{
		logFile.println(", , , ,"); //Just a leading blank line, incase there was previous data
		String header = "ID, Light, Temp, IR1, IR2";
		logFile.println(header);
		logFile.close();
		Serial.println(header);
	}
	else
	{
		Serial.println("Couldn't open log file");
	}
	
}

void loop()
{
	//Check Light Level
	int light_level = analogRead(light_pin);
	
	//Read Temperature
	Wire.beginTransmission(temp_address); //Start talking
	Wire.send(0); //Ask for Register zero
	Wire.endTransmission(); //Complete Transmission
	Wire.requestFrom(temp_address, 1); //Request 1 Byte
	while(Wire.available() == 0); //wait for response
	int temp_c = Wire.receive(); // Get the temp
	int temp_f = round(temp_c*9.0/5.0 +32.0);  //Convert to stupid American units
	
	//Read Distances
	int IR1_val = analogRead(IR1_pin);
	int IR2_val = analogRead(IR2_pin);
	
	//Create Data string for storing to SD card
	//We will use CSV Format  
	String dataString = String(id) + ", " + String(light_level) + ", " + String(temp_f) + ", " + String(IR1_val) + ", " + String(IR2_val); 
	
	//Open a file to write to
	//Only one file can be open at a time
	File logFile = SD.open("LOG.csv", FILE_WRITE);
	if (logFile)
	{
		logFile.println(dataString);
		logFile.close();
		Serial.println(dataString);
	}
	else
	{
		Serial.println("Couldn't open log file");
	}
	
	//Increment ID number
	id++;
	
	delay(refresh_rate);
}

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

Ардуино для начинающих. Урок 14. Прерывания.

В этом уроке мы поговорим о прерываниях. Как понятно из названия, прерывание это событие, которое приостанавливает выполнение текущих задач и передает управление обработчику прерывания. Обработчик прерывания — это функция. Например: если вы написали скетч по управлению мотором или просто плавно зажигаете и гасите светодиод в цикле, то нажатие на кнопку может не обрабатываться, так как Arduino в данный момент занята другой частью кода. Если же использовать прерывание, то такой проблемы не возникнет, так как прерывания имеют более высокий приоритет.

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

В этом уроке используется:

Отличный набор для начинающих:Купить
Arduino Uno:Купить
Инфракрасный датчик расстояния:Купить
Инвертирующий триггер шмитта:Купить
Комплект конденсаторов 120 штук:Купить

Аппаратные прерывания

В Arduino имеется 4 вида аппаратных прерываний. Отличаются они сигналом на контакте прерывания.

  • Контакт прерывания притянут к земле. Ардуино будет выполнять обработчик прерывания пока на пине прерывания будет сигнал LOW.
  • Изменение сигнала на контакте прерывания. Ардуино будет выполнять обработчик прерывания каждый раз когда на пине прерывания будет изменяться сигнал.
  • Изменение сигнала на контакте прерывания от LOW к HIGH. Обработчик прерывания исполняется только при изменении низкого сигнала на высокий.
  • Изменение сигнала на контакте прерывания от HIGH к LOW. Обработчик прерывания исполняется только при изменении высокого сигнала на низкий.

Если прерывание ожидает нажатия кнопки, то это может стать проблемой из-за дребезга контактов. В 6 уроке мы уже говорили о дребезге контактов. Тогда мы использовали функцию delay(), но в прерываниях данная функция не доступна. Поэтому нам придется подавить дребезг контактов немного усложнив схему подключения кнопки к пину прерывания. Для этого понадобится резистор на 10 КОм, конденсатор на 10 микрофарад,
и инвертирующий триггер шмитта. Подключается все по следующей схеме:

подключение кнопки прерывания ардуино
подключение кнопки прерывания ардуино

В Arduino Uno есть два пина, поддерживающие прерывания. Это цифровые пины 2 (int 0) и 3 (int 1). Один из них мы и будем использовать в нашей схеме.

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

Использование прерываний Arduino
Использование прерываний Arduino

Схема кажется сложной и запутанной, но это не так. Мы подключаем кнопку прерывания к пину Arduino D2, используя аппаратное подавление дребезга контактов. К аналоговому пину A0 мы подключаем инфракрасный дальномер. И к пинам D9, D10 и D11 мы подключаем светодиоды через резисторы на 150 Ом. Мы выбрали именно эти контакты для светодиодов, потому что они могут выдавать ШИМ сигнал.Теперь рассмотрим скетч:

 // Назначение прерывания
int buttonInt = 0;

// Переменные с пинами светодиодов
int yellowLed = 11;
int redLed = 10;
int greenLed = 9;
int nullLed = 6;
volatile int selectedLed = greenLed;

// Инфракрасный дальномер
int distPin = 0;

void setup () {
	// Устанавливаем режимы пинов
	pinMode(redLed, OUTPUT);
	pinMode(greenLed, OUTPUT);
	pinMode(yellowLed, OUTPUT);
	pinMode(nullLed, OUTPUT);

	// Устанавливаем прерывание
	attachInterrupt(buttonInt, swap, RISING);

}

// Обработчик прерывания
void swap() {
	if(selectedLed == greenLed)
		selectedLed = redLed;
	else if(selectedLed == redLed)
		selectedLed = yellowLed;
	else if(selectedLed == yellowLed)
		selectedLed = nullLed;
	else
		selectedLed = greenLed;
}

void loop () {
	// Получаем данные с дальномера
	int dist = analogRead(distPin);
	int brightness = map(dist, 0, 1023, 0, 255);

	// Управляем яркостью
	analogWrite(selectedLed, brightness);
}

Обратите внимание на следующие моменты: Необходимо использовать ключевое слово «volatile» перед объявлением переменной значение которой будет изменяться в обработчике прерывания. Так же я добавил переменную «nullLed» для того что бы программа на определенном шаге не меняла цвет ни одного из подключенных светодиодов. Строка «attachInterrupt(buttonInt, swap, RISING);» назначает обработчиком прерывания функцию swap. Подробнее об этой функции вы можете почитать здесь.

Функция swap просто переключает текущий светодиод на следующий. Остальной скетч должен быть вам понятен, если вы посмотрели все предыдущие уроки. Это последний обучающий урок. В следующих статьях я расскажу о подключении к Arduino популярных модулей.

Ардуино для начинающих. Урок 13. Беспроводная связь.

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

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

В этом уроке используется:

Отличный набор для начинающих:Купить
Arduino Uno:Купить
Модуль беспроводной связи XBee:Купить
USB адаптер для XBee:Купить
Шилд для Arduino Uno XBee:Купить
Потенциометры с колпачками 5 шт:Купить
Серво-привод:Купить

Беспроводная связь с модулями XBee

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

Что бы прошить наши модули, необходимо подключить их к компьютеру, используя USB адаптер или специальный шилд для Arduino Uno. Так же для удобства необходимо скачать программу PuTTY и посмотреть к какому COM порту подключен ваш модуль. Подробнее этот процесс показан в видео выше, поэтому расписывать как это делать я не буду. В виде это все равно нагляднее :).

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

 // Аналоговый пин от потенциометра
int potPin = 0;

void setup() {
	// Открываем соединение
	Serial.begin(9600);
}

void loop() {
	// Получаем и обрабатываем данные
	int val map(analogRead(potPin), 0, 1023, 0, 9);

	// Отправляем данные
	Serial.println(val);

	// Небольшая задержка для стабильности
	delay(50);
}

Как видите скетч очень прост. Все что он делает это: получает значение с потенциометра, переводит в значение от 0 до 9 для простоты и отправляет по serial соединению. Следующий скетч тоже очень прост:

 // Подключаем библиотеку
#include <Servo.h>

// Аналоговый пин сервопривода
int servoPin = 9;

// Создаем объект
Servo jeremysServo;

void setup() {
	// Открываем соединение
	Serial.begin(9600);

	// Назначаем пин сервопривода
	jeremysServo.attach(servoPin);
}

void loop() {
	// ждем данные
	while(Serial.avalable() == 0);

	// получаем байт
	int data = Serial.read() - '0';

	// Переводим команду в угол поворота
	int pos = map(data, 0, 9, 0, 180);

	// на всякий случай
	pos = constrain(pos, 0, 180);
	

	// Поворачиваем серву
	jeremysServo.write(pos);

	// очищаем буфер
	Serial.flush();
}

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

Ардуино для начинающих. Урок 12. Интерфейс SPI.

В данном уроке рассмотрим SPI интерфейс. Данный способ связи схож с I2C, рассмотренном в прошлом уроке. SPI — это формат последовательной передачи данных от Ведущего устройства (master) к Ведомым (slave).

В этом уроке используется:

Отличный набор для начинающих: Купить
Arduino Uno: Купить
Цифровой 1-канальный SPI потенциометр:Купить
Цифровой 2-канальный SPI потенциометр:Купить

SPI Arduino

Принцип подключения устройств по интерфейсу SPI к Ардуино отлично иллюстрирует следующая схема:

принцип работа интерфейса SPI
принцип работа интерфейса SPI

У большинства плат ардуино за SPI интерфейс отвечают следующие пины: D10 — SS, D11 — MOSI, D12 — MISO, D13 — SCK. В отличии от I2C, этот интерфейс не требует дополнительных подтягивающих резисторов. В программной среде используется библиотека SPI.h. Подробные описания данной и других библиотек скоро появятся на этом сайте.

Ардуино для начинающих. Урок 11. Интерфейс I2C.

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

В этом уроке используется:

Отличный набор для начинающих:Купить
Arduino Uno:Купить
I2C датчик температуры, влажности и атмосферного давления:Купить

Подключение датчика температуры по шине I2C

Давайте рассмотрим схему подключения модуля Bme280 к ардуино. У этого модуля всего 4 контакта: Питание (VIN), земля (GND), линия тактирования (SCL) и линия данных (SDA). Линии I2C мы соединим с аналоговыми пинами А5 и А4 соответственно и подтянем сигнал к линии 5 В через резисторы на 10 КОм. Схема очень простая:

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

Теперь рассмотрим код. Мы будем получать данные с датчика, переводить градусы по Цельсию в градусы по фаренгейту и выводить все на экран компьютера:

 // Подключаем библиотеку для связи по I2C
#include <Wire.h>

// Адрес датчика температуры
int temp_address = 72;

void setup() {
	// Открываем моединение с компьютером
	Serial.begin(9600);

	// Открываем соединение по I2C
	Wire.begin();
}

void loop() {
	// Отправляем запрос
	// Начинаем общение с датчиком
	Wire.beginTransmition(temp_address);
	// Запрашиваем нулевой регистр
	Wire.send(0);
	// Выполняем передачу
	Wire.endTransmition
	// Запрашиваем 1 байт
	Wire.requestFrom(temp_address, 1);
	// Ждем ответа
	while(Wire.avalible() == 0);
	// Получаем температуру с датчика
	int c = Wire.receive();

	// Переводим температуру в фаренгейт
	int f = round(c*9.0/5.0 + 32.0);

	// Выводим данные на экран
	Serial.print(c);
	Serial.print("C, ");
	Serial.print(f);
	Serial.println("F");

	//Небольшая задержка, что бы данные обновлялись не слишком часто
	delay(500); 
}

Вам не нужно скачивать библиотеку Wire, так как она скачана по умолчанию в Arduino IDE. Адрес датчика температуры вы можете узнать на сайте производителя. Так же существуют модули с назначаемым адресом. В этом случае вам придется самостоятельно назначить адрес. Как это сделать должно быть описано на сайте производителя или в datasheet модуля.

Ардуино для начинающих. Урок 10. Serial и processing

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

В этом уроке используется:

Отличный набор для начинающих: Купить
Arduino Uno: Купить
Arduino Nano: Купить
Arduino Mega: Купить
Потенциометры с колпачками 5 шт: Купить

Serial и processing.

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

 // Возвращаем отправленное значение
void setup () {
	// Открываем порт на скорости 9600 бод
	Serial.begin(9600);
}

void loop () {
	// Ждем данные
	while (Serial.available() == 0);

	// Считываем данные
	int val = Serial.read() - '0';

	// Возвращаем данные в порт
	Serial.println(val);
}

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

Потом мы запускаем цикл, который ждет появление данных в Serial. Программа выйдет из этого цикла только когда мы отправим какие то данные. Потом считываем данные и приводим их к типу int,
вычитанием десятичного представления символа «0». И отправляем данные обратно. Данный способ подходит только для тех случаев, когда мы ожидаем получить только одну цифру. При отправке других значений программа будет возвращать не то что мы ожидаем. Можете разобраться с этим используя таблицу кодов символов ASCII:

таблица кодов ascii
таблица кодов ascii

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

 // Управление светодиодом с компьютера
int ledPin = 13;
void setup () {
	// Открываем порт на скорости 9600 бод
	Serial.begin(9600);
	// Назначаем пин светодиода выходом
	pinMode(ledPin, OUTPUT);
}

void loop () {
	// Ждем данные
	while (Serial.available() == 0);

	// Считываем данные
	int val = Serial.read() - '0';

	// Выполняем дествия в зависимости от данных
	if (val == 1) {
		Serial.println("Led is On");
		digitalWrite(ledPin, HIGH);
	} else if (val == 0) {
		Serial.println("Led is Off");
		digitalWrite(ledPin, LOW);
	} else {
		Serial.println("Invalid!");
	}
	// Очищаем буфер
	Serial.flush();
}

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

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

Схема очень проста. Мы просто подключим потенциометр к аналоговому пину Arduino. Скетч тоже очень прост:

int potPin = 0;
void setup () {
	Serial.begin(9600);
}

void loop () {
	// Считываем и преобразовываем данные
	int val = map(analogRead(potPin), 0, 1023, 0, 255);
	
	// Отправляем данные
	Serial.println(val);

	// Задержка для стабильности работы
	delay(50);
}

Если вы прошли прошлые уроки, то в этом скетче вам все будет понятно. Если вы что то не знаете или забыли можете посмотреть прошлые уроки или справочник по языку программирования ардуино. А вот и код для Processing:

 // Подключаем библиотеку монитора порта
import processing.serial.*;

// Инициируем порт
Serial port;

// Переменная для хранения значения яркости
float brightness = 0;

void setup () {
	// Задаем размер окна
	size(500, 500);
	// Слушаем ком порт СОМ3
	port = new Serial(this, "COM3", 9600);
	port.bufferUntil('\n');
}
void draw () {
	// Изменяем цвет фона окна
	background(0, 0, brightness);
}

// Получаем значения с ардуино
void serialEvent (Serial port) {
	brightness = float(port.redStringUntil('\n'));
}

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

Ардуино для начинающих. Урок 9. Моторы и транзисторы

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

В этом уроке используется:

Arduino Uno: Купить
Инфракрасный дальномер: Купить
Высокоточный лазерный дальномер с I2C: Купить
Набор резисторов из 100 штук на все случаи: Купить
Небольшой моторчик: Купить
Слабенький сервопривод: Купить
Мощный сервопривод: Купить
Мосфет транзистор для управления переменным током высокого напряжения: Купить
Набор npn транзисторов из 100 штук: Купить

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

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

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

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

Теперь давайте подключим мотор к ардуино по следующей схеме:

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

Как всегда ничего сложного. Главное не перепутать выводы транзистора. Обратите внимание на резистор через который ардуино подключена к базе. Это резистор на 1 кОм и нужен он для того что бы обезопасить нашу ардуинку. В видео к схеме добавлены диод и конденсатор, но они не обязательны. Так же можно добавить резистор на 10 — 100 кОм между эмиттером и коллектором для стабильности работы нашей схемы. Так же не забудьте, что земля на всех уровнях напряжения должна быть объединена. И взглянем на наш код:

 // Обозначаем пин к которому у нас подключена база транзистора
int motorPin = 9;

void setup () {
	// Устанавливаем пин в качестве выхода
	pinMode (motorPin, OUTPUT);
}

void loop () {
	// Перебор значений от 0 до 255 в цикле
	for (int i = 0; i <= 255; ++i) {
		analogWrite(motorPin, i);
		// небольшая задержка что бы все происходило не слишком быстро
		delay(10);
	}

delay(500);

for (int i = 0; i >= 0; i--) {
	analogWrite(motorPin, i);
	delay(10);
}

delay(500);
}

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

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

Добавим в нашу схему инфракрасный дальномер. Просто потому, что мы можем 🙂 Будем задавать положение сервопривода в зависимости от показаний дальномера. Мы уже подключали дальномер, поэтому схему рисовать не буду.
Подключаем его к пину А0. Новый скетч стал еще проще:

 // Подключаем библиотеку для управления сервоприводом
#include <Servo.h>
Servo jeremysServo;

// Пин сервопривода
int servoPin = 9;
// Аналоговый пин инфракрасного дальномера
int distPin = 0;

void setup () {
	// передаем пин, подключенный к логическому выводу сервопривода
	jeremysServo.attach(servoPin);
}

void loop () {
	// Считываем показания инфракрасного дальномера
	int dist = analogRead(distPin);

	// Преобразуем значение в пригодное для ШИМ
	int pos = map(dist, 0, 1023, 0, 180);

	// Двигаем сервопривод
	jeremysServo.write(pos);
}

Ардуино для начинающих. Урок 8. Аналоговые входы

Сегодня мы поговорим об аналоговых входах Arduino. На разных платах ардуино имеется разное количество аналоговых входов. Так например, у Arduino Uno их 6, а у Arduino Nano их 8. Узнать сколько аналоговых входов на конкретной плате Ардуино вы можете, посмотрев описание плат в разделе «Платы».

Как мы уже знаем, цифровые пины могут быть как входом так и выходом и принимать/отдавать только 2 значения: HIGH и LOW. Аналоговые пины могут только принимать сигнал. И в отличии от цифровых входов аналоговые измеряют напряжение поступающего сигнала. В большинстве плат ардуино стоит 10 битный аналогово-цифровой преобразователь. Это значит что 0 считывается как 0 а 5 В считываются как значение 1023. То есть аналоговые входы измеряют, подаваемое на них напряжение, с точностью до 0,005 вольт. Благодаря этому мы можем подключать разнообразные датчики и резисторы (термо резисторы, фоторезисторы,).

В этом уроке используется:

Большая макетная плата на 1600 точек с 4 шинами питания:Купить
Arduino Uno: Купить
Arduino Nano: Купить
Фоторезисторы 20 штук: Купить
Инфракрасный дальномер: Купить
Высокоточный инфракрасный дальномер с I2C: Купить
Набор резисторов из 100 штук на все случаи: Купить
Соединительные провода 120 штук: Купить
Потенциометры с колпачками 5 штук: Купить

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

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

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

int sensePin = 0; // Пин к которому подключен фоторезистор

void setup() {
	analogReferense(DEFAULT); // Задаем опорное значение напряжения. Эта строка не обязательна.
	Serial.begin(9600); // Открываем порт на скорости 9600 бод.
}

void loop() {
	Serial.println(analogRead(sensePin)); // Считываем значение и выводим в порт
	delay(500); // задержка для того что бы значений было не слишком много
}

Как видите в скетче нет ничего сложного. Команда analogReferense() не обязательна. Я добавил ее просто для демонстрации.

Давайте сделаем что то более интересное. Например ночник с автоматическим включением, если яркость освещения падает ниже определенного уровня. Для этого нам необходимо добавить в нашу схему светодиод через резистор на 150 Ом. Его мы подключаем к контакту 9 на Ардуино. Теперь наша схема выглядит так:

схема ночника на ардуино
схема ночника на ардуино

Так же немного доработаем наш скетч.

int sensePin = 0; // Пин к которому подключен фоторезистор
int ledPin = 9; // Пин к которому подключен светодиод

void setup() {
	pinMode(ledPin, OUTPUT); // назначаем пин ledPin выходом
}

void loop() {
	int val = analogRead(sensePin); // Считываем значение с фоторезистора

	if(val < 800) digitalWrite(ledPin, HIGH); //включаем светодиод если значение меньше 800
	else digitalWrite(ledPin, LOW); // если нет то выключаем светодиод
}

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

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

int sensePin = 0; // Пин к которому подключен фоторезистор
int ledPin = 9; // Пин к которому подключен светодиод

void setup() {
	pinMode(ledPin, OUTPUT); // назначаем пин ledPin выходом
}

void loop() {
	int val = analogRead(sensePin); // Считываем значение с фоторезистора

	val = constrain(val, 750, 900); // эта функция обрезает все значения вне заданного диапазона
	int ledLevel = map(val, 750, 900, 255, 0); // отражаем значения с фоторезистора на значения от 255 до 0

	analogWrite(ledPin, ledLevel);
}

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

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

Ардуино для начинающих. Урок 7. Основы схемотехники

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

В этом уроке используется:

Большая макетная плата на 1600 точек с 4 шинами питания:Купить
Набор резисторов из 100 штук на все случаи:Купить
Набор светодиодов из 100 штук:Купить
5 штук кнопок в удобной форме:Купить
Соединительные провода 120 штук:Купить
Потенциометры с колпачками 5 штук:Купить

Закон Ома

Закон Ома гласит следующее: V = IR. V — это напряжение (измеряется в вольтах). I — это сила тока (измеряется в амперах). R — это сопротивление (измеряется в омах). Определение вы можете почитать на википедии.

В прошлых уроках мы подключали светодиод через резистор. Давайте разберемся зачем нужен этот резистор и как рассчитать необходимый номинал. Дело в том что пин Arduino Uno выдает 5 В, а светодиоду нужно всего 3 В. Если резистор не ставить то светодиод будет потреблять гораздо больше тока чем ему необходимо. Это приведет к более быстрой разрядке аккумулятора (если ваша ардуино питается от него), к неправильному цвету свечения (если светодиод цветной) и к быстрому перегоранию светодиода. Для того что бы рассчитать номинал резистора надо знать напряжение и силу тока необходимую для конкретного светодиода. Светодиоды бывают разные, но с ардуино используются светодиоды потребляющие 20 мА и работающие от 2 В. Эти параметры можно посмотреть на сайте производителя или узнать у продавца.

Теперь нам надо просто подставить эти данные в формулу и вычислить сопротивление: R = V / I = 3 В / 20 мА = 150 Ом. Вот и все. Теперь мы знаем какой резистор необходим для подключения светодиода к плате Ардуино.

Подтягивающее и стягивающее сопротивление

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

подключение кнопки к ардуино

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

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

Ардуино для начинающих. Урок 6. Дребезг контактов

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

Так что же такое дребезг контактов?

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

график дребезга контактов
график дребезга контактов

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

Как избавиться от дребезга контактов на Arduino?

Все очень просто. Мы делали это в прошлом уроке. Возьмем пример от туда. Схема и скетч будут следующие:

Управление яркостью светодиода
Управление яркостью светодиода
 // переменные с пинами подключенных устройств
int switchPin = 8;
int ledPin = 11;

// переменные для хранения состояния кнопки и светодиода
boolean lastButton = LOW;
boolean currentButton = LOW;
int ledLevel = 0;

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

// функция для подавления дребезга
boolean debounse(boolean last) {
	boolean current = digitalRead(switchPin);
	if(last != current) {
		delay(5);
		current = digitalRead(switchPin);
	}
	return current;
}

void loop() {
	currentButton = debounse(lastButton);
	if(lastButton == LOW && currentButton == HIGH) {
		ledLevel = ledLevel + 51;
	}
	lastButton = currentButton;

	if(ledLevel > 255) ledLevel = 0;
	analogWrite(ledPin, ledLevel);
}

Ардуино для начинающих. Урок 5. Кнопки, ШИМ, функции

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

В этом уроке используются следующие детали:

Большая макетная плата на 1600 точек с 4 шинами питания:Купить
Набор резисторов из 100 штук на все случаи:Купить
Набор светодиодов из 100 штук:Купить
5 штук кнопок в удобной форме:Купить
Соединительные провода 120 штук:Купить

Подключение кнопки к Arduino

Подключение кнопки к Arduino
Подключение кнопки к Arduino

Как видите, ничего сложно в подключении кнопки к ардуино нет. Обратите внимание, что кнопка установлена так, что каждый ее контакт подключен к разным линиям макетной платы. Так же вы можете заметить резистор на 10 кОм который притягивает контакт к земле. Это нужно для того, что бы мы на 8 контакте не ловили наводок. Попробуйте убрать этот резистор из схемы. Светодиод будет загораться при шевелении проводов или кнопки. Теперь давайте рассмотрим скетч:

 // Первый скетч. Светодиод горит при нажатой кнопке
 // переменные с пинами подключенных устройств
int switchPin = 8;
int ledPin = 13;

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

void loop() {
	// включаем всетодиод при нажатой кнопке
	if(digitalRead(switchPin) == HIGH) {
		digitalWrite(ledPin, HIGH);
	} else {
		digitalWrite(ledPin, LOW);
	}
}

В этом уроке, как и прошлом, в самом начале мы объявляем переменные со значениями пинов к которым у нас подключены кнопка и светодиод. Далее в функции setup() мы обозначаем какой пин используется как вход, а какой как выход. В функции loop() мы используем условный оператор if с оператором сравнения и проверяем приходит ли на пин 8 высокий сигнал. Если да то включаем светодиод, если нет то выключаем. Описание функций и операторов вы найдете в справочнике по языку программирования Arduino

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

 // второй скетч. меняет состояние при нажатии на кнопку
 // переменные с пинами подключенных устройств
int switchPin = 8;
int ledPin = 13;

// переменные для хранения состояния кнопки и светодиода
boolean lastButton = LOW;
boolean currentButton = LOW;
boolean ledOn = false;

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

// функция для подавления дребезга
boolean debounse(boolean last) {
	boolean current = digitalRead(switchPin);
	if(last != current) {
		delay(5);
		current = digitalRead(switchPin);
	}
	return current;
}

void loop() {
	currentButton = debounse(lastButton);
	if(lastButton == LOW && currentButton == HIGH) {
		ledOn = !ledOn;
	}
	lastButton = currentButton;
	digitalWrite(ledPin, ledOn);
}

В этом скетче мы добавили переменные для хранения состояния светодиода и кнопки. Так же мы создали новую функцию для подавления дребезга контактов debounse(). Код в цикле loop() тоже немного изменился. Теперь в условном операторе мы проверяем нажата ли кнопка и если нажата, то меняем состояние светодиода на противоположное. Потом меняем переменную с последним состоянием на текущее состояние кнопки и включаем или выключаем светодиод.

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

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

Теперь светодиод подключен к 11 пину ардуино, которой умеет делать ШИМ. И нам пришлось добавить токоограничивающий резистор на 220 Ом перед светодиодом, что бы его не спалить. Это необходимо потому, что светодиоды работают при напряжении 3.3 В, а пин ардуино отдает 5 В. Теперь посмотрим что нужно изменить в скетче:

 // переменные с пинами подключенных устройств
int switchPin = 8;
int ledPin = 11;

// переменные для хранения состояния кнопки и светодиода
boolean lastButton = LOW;
boolean currentButton = LOW;
int ledLevel = 0;

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

// функция для подавления дребезга
boolean debounse(boolean last) {
	boolean current = digitalRead(switchPin);
	if(last != current) {
		delay(5);
		current = digitalRead(switchPin);
	}
	return current;
}

void loop() {
	currentButton = debounse(lastButton);
	if(lastButton == LOW && currentButton == HIGH) {
		ledLevel = ledLevel + 51;
	}
	lastButton = currentButton;

	if(ledLevel > 255) ledLevel = 0;
	analogWrite(ledPin, ledLevel);
}

В этом примере мы изменили значение переменной ledPin на 11. Так же добавили переменную для хранения уровня ШИМ ledLevel. При нажатии на кнопку будем увеличивать эту переменную. Функция debounce() осталась без изменений. В цикле мы теперь используем функцию analogWrite().

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

Ардуино для начинающих. Урок 4. Макетная плата BREADBOARD

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

Купить макетные платы

Купить беспаечные макетные платы можно в магазине радиодеталей, на радиорынке или интернет магазине. Но самый выгодный вариант это конечно Алиекспрес. Там есть огромный выбор макетных плат,
а так же не высокие цены. Но нужно быть внимательным и покупать только у надежных продавцов. Ниже приведены ссылки на алиекспрес:

Макетная плата на 800 точек с 2 шинами питания, платой подачи питания и проводами:Купить
Большая макетная плата на 1600 точек с 4 шинами питания:Купить
Макетная плата на 800 точек с 2 шинами питания:Купить
Макетная плата на 400 точек с 2 шинами питания:Купить
Макетная плата на 170 точек:Купить
Соединительные провода 120 штук:Купить

Макетная плата (BreadBord)

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

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

Как пользоваться макетной платой

Очень просто! Главное запомнить как соединены отверстия макетки. Там все просто и понятно. По краям идут горизонтальные линии питания, обычно они помечены синим и красным цветами для удобства. А посередине идет множество вертикально соединенных линий по 5 точек. На изображении ниже видно распиновку макетной платы.

распиновка макетной платы
распиновка макетной платы

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

Ардуино для начинающих. Урок 3. Первые шаги

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

В этом уроке нам понадобится:

Arduino uno отлично подходит для начинающих. В комплекте есть провод:Купить
Макетная плата с модулем питания и проводами:Купить
Набор светодиодов из 100 штук разных цветов:Купить
Набор резисторов из 100 штук разных номиналовКупить

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

Ардуино для новичков.

Если у вас уже есть плата ардуино, то вам необходимо скачать и установить на свой компьютер Arduino IDE. Это простая и удобная программа для написания и отладки прошивок для ардуино. Я уже публиковал статью по установке и настройке Arduino IDE. Там все подробно расписано.

Если при подключении вашей ардуино в USB компьютер пишет, что устройство не опознано, это значит что вам надо установить драйвер ch340g.

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

 // Однострочный комментарий
/*
Многострочный комментарий
*/

int ledPin = 13;

// Команды в функции setup выполняются только 1 раз при включении или после перезагрузки
void setup() {
	pinMode(ledPin, OUTPUT);
}

// Инструкции в этой функции будут выполняться по кругу постоянно
void loop() {
	digitalWrite(ledPin, HIGH);
	delay(1000);
	digitalWrite(ledPin, LOW);
	delay(1000);
}

Символы «//» означают однострочный комментарий. Это значит что строка после двух слэшей выполняться не будет. Комментарии можно использовать для описания действий программы для наглядности.
Или для скрытия части кода при отладке. Для скрытия кода чаще используется многострочный комментарий начинающийся с комбинации «/*» и заканчивающийся «*/».

Строка «int ledPin = 13;» означает, что мы объявляем переменную с типом данных int, именем ledPin и значением 13. Переменные используются для того чтобы код был более понятен. Поэтому надо называть переменные понятными именами, описывающими их содержимое. Так же переменные нужны для легкого изменения кода. В нашем маленьком примере переменная ledPin используется 3 раза. Если мы подключим внешний светодиод на другой пин и захотим использовать этот скетч, то нам надо будет только поменять значение переменной в одном месте, а не искать по всей программе и менять значения. Понятный и хорошо оформленный код, с комментариями и говорящими названиями переменных легко можно использовать в других проектах. Это позволит упростить и ускорить разработку прошивок.

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

Ардуино для начинающих. Урок 2. Как устроена плата Ардуино


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

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

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

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

Ардуино для начинающих. Урок 1. Введение.

Базовый набор ардуино для начинающих:Купить
Большой набор для обучения и первых проектов:Купить
Ардуино Уно самая базовая и удобная модель из линейки:Купить

В этом уроке мы начнем знакомство с платформой Arduino. Посмотрим на самого типичного представителя семейства Arduino Uno. Это вводный урок. Пока мы не будем рассматривать программную среду и подключение модулей. Мы просто ознакомимся с чем нам предстоит работать.

Драйвер PL2303 для USB-TTL

Большинство плат Arduino производятся со встроенным USB-to-Serial преобразователем. Последнее время для этих целей используют микросхему CH340. Эта микросхема сильно снижает затраты на изготовление микроконтроллеров, а на работоспособность абсолютно не влияет. А для программирования устройств в которых нет встроенной микросхемы для связи по UART интерфейсу существуют специальные программаторы USB-to-TTL. Сейчас я расскажу о драйвере для PL2303. С помощью таких программаторов можно легко прошивать Arduino Pro Mini. Об этом мы рассказывали в этой статье.

PL2303 USB UART
PL2303 USB UART

Подобные программаторы выполняют одну и ту же задачу, но могут быть реализованы на микросхемах от разных производителей. На моем сайте уже есть статья с драйверами CH340 и CP2102. В этой статье я приведу ссылки на скачивание драйвера PL2303. Что бы определить какой драйвер нужен именно вам посмотрите в описание вашего USB-TTL конвертора или посмотрите что написано на микросхеме.

Скачать драйвер PL2303

Скачать PL2303 для Windows

Скачать PL2303 для Linux

Скачать PL2303 для MAC

Установка драйвера

  1. Скачайте драйвер для вашей операционной системы по ссылкам выше.
  2. Распакуйте архив
  3. Запустите исполнительный файл SETUP.EXE
  4. В открывшемся окне нажмите кнопку Install
  5. На этом установка завершена

Если статья оказалась вам полезна то я очень рад. А если вы воспользуетесь социальными кнопками ниже то я буду рад в 2 раза больше 🙂

Кэшбэк для Алиэкспресс

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

Почему кто-то платит вам за покупки на Алиэкспресс?

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

Как работает кэшбэк
Как работает кэшбэк

Сравнение кэшбэк сервисов для Алиэкспресс

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

Сравнение будет по самым важным параметрам, таким как:

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

EPN CashBack

EPN CashBack работает уже больше трех лет. Месячная посещаемость сайта около 10 млн посетителей. Это говорит нам о том, что этот сервис надежный и им пользуется большое количество людей. Список магазинов — партнеров не большой. На данный момент подключено 64 магазина. Основные партнеры: AliExpress, Asos, Ozon, Banggood, GearBest, Lamoda, М.Видео, Booking, Nike, Adidas, Reebok и Билайн. Основной упор сделан именно на AliExpress. Сервис заявляет о кэшбэке до 15%. Это достигается за счет прямых договоров со многими продавцами напрямую. Процент кэшбэка с алиэкспресса составляет 5% на все товары, 2.5% на мобильные телефоны.

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

Статистика кэшбэк сервиса EPN

Letyshops

Те, кто ещё не знакомы с Letyshops порой думают, что это развод или точно какой-нибудь обман, уж слишком много рекламы этого сервиса. Могу с уверенностью опровергнуть все эти подозрения, так как отзывы в сети вызывают доверие. Месячная посещаемость составляет около 15 млн посетителей. Сайт работает около 3 лет. Значит доверять ему можно.

Мобильного приложения нет. Браузерное расширение есть. Понятная статистика есть. Реферальная программа тоже. Теперь поговорим о процентах. Здесь проценты кэшбэка ниже чем у EPN. Это и не удивительно, ведь ребята очень много тратят на рекламу своего сервиса. Кэшбэк на товары с алиэкспресса 3%, а на телефоны и того ниже, всего 1.5%. Но есть жирный плюс в виде тысячи магазинов,
в которых можно получать кэшбэк.

Ebates.com

Единственный иностранный сервис в списке и может быть не самый удобный, однако он весьма популярен в мире, где 20 млн человек посещают ещё ежемесячно и подключено к нему более 1800 магазинов. Для покупок на AliExpress он предоставляет скидку 3%. Покупки можно совершать только на их сайте. Мобильного приложения нет, браузерного расширения тоже. Интерфейс на английском языке.

Kopikot

Ещё один удобный сервис для получения кешбека. Достаточно продуманный интерфейс, который сразу же познакомит с тем как в нём всё устроено. Около 360тыс. человек заходят на него ежемесячно, что говорит об уровне доверия, что опять же сильно меньше EPN или Летишопс, но всё-таки тоже достойно.

CashBack.ru

Мобильного приложения нет. Браузерное расширение есть. Ежемесячная посещаемость около 500 тыс. человек. Процент кэшбэка достаточно высокий — 6% со всех товаров, кроме мобильных телефонов.
3% с мобильных телефонов. Но в сети я нашел множество негативных отзывов об этом сервисе. Люди пишут, что сервис часто не начисляет кэшбэк, или начисляет многократно меньше. Так что доверять этому сайту или нет решать вам, но я бы не стал им пользоваться.

Рейтинг Cash Back для AliExpress

Кэшбэк сервисПроцент кэшбэка
все товары/телефоны
Минимальная сумма выводаБраузерное расширениеМобильное приложениеРепутация
EPN CashBack5%/2.5%0.2$ЕстьЕсть5
LetyShops3%/1.5%500 рубЕстьНет4
Ebates.com3% на всё10$НетНет5
Kopikot6%/3%500 рубЕстьнет3
cashback.ru6%/3%500 рубЕстьНет2

Книги по Ардуино

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

Скачать книги по ардуино на русском языке.

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

Изучаем Arduino. Джереми Блум

Изучаем Arduino. Джереми Блум
Изучаем Arduino. Джереми Блум

Данная книга описывает аспекты и принципы проектирования устройств с помощью Arduino. Рассказывает об аппаратной и программной части Ардуино. В этой книге объясняются принципы программирования в среде Arduino IDE. Показано, как правильно читать технические описания, подбирать детали для собственных проектов и как анализировать электрические схемы готовых устройств. Так же в книге описаны примеры использования разнообразных датчиков, индикаторов, разных интерфейсов передачи данных и исполнительных механизмов. Для всех примеров в книге есть перечисление необходимых деталей, монтажные схемы, примеры кода с полным описанием.

Джереми Блум Изучаем Arduino- инструменты и методы технического волшебства (2015)

Проекты с использованием контроллера Arduino. Петин В.А.

Проекты с использованием контроллера Arduino
Проекты с использованием контроллера Arduino

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

Проекты с использованием контроллера Arduino. Петин В.А.

Программируем Arduino. Саймон Монк

Программируем Arduino. Саймон Монк
Программируем Arduino. Саймон Монк

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

Программируем Arduino. Саймон Монк

Arduino и Raspberry Pi в проектах Internet of Things. Виктор Петин

Arduino и Raspberry Pi в проектах Internet of Things
Arduino и Raspberry Pi в проектах Internet of Things

Рассмотрено создание простых устройств в рамках концепции Интернета вещей (IoT, Internet of Things) на базе популярной платформы Arduino и микрокомпьютера Raspberry Pi. Показана установка и настройка среды разработки приложений Arduino IDE, а также среда макетирования Frizing. Описаны технические возможности, особенности подключения и взаимодействия различных датчиков и исполнительных устройств. Показана организация доступа разрабатываемых проектов к сети Интернет, отправка и получение ими данных с использованием популярных облачных IoT сервисов: Narodmon, ThingSpeak, Xively, Weaved, Blynk, Wyliodrin и др. Уделено внимание обмену данными с помощью платы GPRS/GSM Shield. Рассмотрен проект создания собственного сервера для сбора по сети данных с различных устройств на платформе Arduino. Показано как использовать фреймворк WebIOPi для работы с Raspberry Pi. Приведены примеры использования Wi-Fi-модуля ESP8266 в проектах “Умный дом”.

Arduino и Raspberry Pi в проектах интернета вещей

Практическая энциклопедия Arduino

Практическая энциклопедия Arduino
Практическая энциклопедия Arduino

В книге обобщаются данные по основным компонентам конструкций на основе платформы Arduino, которую представляет самая массовая на сегодняшний день версия Arduino UNO или аналогичные ей многочисленные клоны. Книга представляет собой набор из 33 глав-экспериментов. В каждом эксперименте рассмотрена работа платы Arduino c определенным электронным компонентом или модулем, начиная с самых простых и заканчивая сложными, представляющими собой самостоятельные специализированные устройства. В каждой главе представлен список деталей, необходимых для практического проведения эксперимента. Для каждого эксперимента приведена визуальная схема соединения деталей в формате интегрированной среды разработки Fritzing. Она дает наглядное и точное представление — как должна выглядеть собранная схема. Далее даются теоретические сведения об используемом компоненте или модуле. Каждая глава содержит код скетча (программы) на встроенном языке Arduino с комментариями.

Практическая энциклопедия ардуино

Быстрый старт. Первые шаги по освоению Arduino

Быстрый старт Arduino
Быстрый старт Arduino

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

Быстрый старт. Первые шаги по освоению Arduino

Драйвер CP2102

Драйвер cp210x может потребоваться вам при подключении к компьютеру устройств с чипом от silabs cp2102. Этот чип отвечает за преобразование сигнала с USB вашего компьютера в UART. Такой преобразователь устанавливается на множество устройств. Например на платы NodeMCU, программаторы и некоторые платы Arduino. Без данного драйвера эти устройства при подключении к вашему компьютеру будут определяться как неопознанное устройство.

Скачать драйвер CP210x

для Windows

для Mac OSx

для Linux версий 2.6.x

для Linux версий 3.x.x

Установка драйвера

  1. Скачайте драйвер для вашей операционной системы по ссылкам выше.
  2. Распакуйте архив
  3. Запустите исполнительный файл SETUP.EXE
  4. В открывшемся окне нажмите кнопку Install
  5. На этом установка завершена

В прошлой статье я рассказывал о драйвере CH340 который более распространен.

Драйвер CH340G для Arduino

Большинство плат Arduino производятся со встроенным USB-to-Serial преобразователем. Последнее время для этих целей используют микросхему CH340. Эта микросхема сильно снижает затраты на изготовление микроконтроллеров, а на работоспособность абсолютно не влияет. Так же ее используют в программаторах для устройств в которых нет встроенной поддержки USB соединения. С помощью таких программаторов можно легко прошивать Arduino Pro Mini. Об этом мы рассказывали в этой статье.

Как прошить Arduino Pro Mini
Как прошить Arduino Pro Mini

Есть только одно «но». По умолчанию в системе windows не установлен драйвер для работы с этой микросхемой. Из-за этого устройство может работать не правильно или вообще не опознается. Что бы это исправить необходимо скачать и установить драйвер CH340G. Ссылки на драйвер и инструкция по установке есть ниже.

Скачать драйвер CH340G

Скачать CH340G для Windows

Скачать CH340G для Linux

Скачать CH340G для MAC

Установка драйвера

  1. Скачайте драйвер для вашей операционной системы по ссылкам выше.
  2. Распакуйте архив
  3. Запустите исполнительный файл SETUP.EXE
  4. В открывшемся окне нажмите кнопку Install
  5. На этом установка завершена
Ардуино