АРДУИНО -- ЭТО ПРОСТО

уроки по использованию платформы ARDUINO

Урок первый. Ардуино может все


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


Первый вопрос, который возникает у новичка, это «что может Ардуино?». Без преувеличения можно ответить, что Ардуино может все, что способно прийти вам в голову, реализовать в металле любые ваши фантазии на тему электронных устройств. О чем вы мечтаете? Сделать таймер для каких-то своих нужд? Пожалуйста. Сделать точные часы? Запросто. Со стрелками? Легко. С циферками? Как плюнуть раз. С вакуумными лампами в качестве индикаторов? И с этим Ардуино справится. А что-то посложнее часов? Ну, допустим, робота с манипулятором, вроде Джарвиса из «Железного человека». Почему бы нет? И это возможно. А может вы хотите, чтобы свет в вашей комнате включался по хлопку в ладоши, и по нему же выключался? И это не сложно. А может вы решили самостоятельно собрать фрезерный или токарный станок с ЧПУ? Ардуино и тут справится. А может сделать автомодель, которая сама определит свои координаты по GPS, и проедет по нарисованному на карте маршруту? Запросто. А если летающую модель? Тоже не составит труда. А если хочется, чтобы какое-то устройство, от кофеварки до отопительного котла, включалось дистанционно, по СМС? Легко. Вы едете в машине, отправляете СМС с нужным словом, и Ардуино запустит любое устройство, к которому вы его подключите. И приедете вы уже в натопленную дачу, и вам не придется дрожать от холода.

А может, тогда с помощью Ардуино можно и самодельный GPS навигатор собрать, с дисплеем, и всеми делами? О! Отлично, у вас уже заиграла фантазия. Да, можно. А можно научить Ардуино определять расстояние до объектов и принимать решения? Да, можно. А можно научить ее видеть, различать предметы? Тоже получится. Ого! А может, сделать самодельный MP3 плеер? А может оформитьь его в ретро-стиле, и снабдить всеми нужными функциями, подключать несколько наушников, играть в динамики, как магнитофон? Тоже легко.

Тааак…. А если взять, и подключить Ардуино к компьютеру, можно с него давать команды, чтобы Ардуино их понимала? Можно. Прямо по USB.

Но как такое возможно?

Чтобы понять, как это возможно, нужно для начала понять, что такое Ардуино вообще. Ардуино, это небольшая плата с несколькими детальками, одной кнопочкой, несколькими светодиодами для индикации состояний, и, как правило, входом для USB (некоторые модели бывают без портовые, но они беспонтовые, и нужны только для особых случаев, так что о них поговорим позже, когда вы уже сделаете несколько своих проектов). Ардуино выпускается в нескольких вариантах, но "сердце" у всех одно -- микроконтроллер ATMega.

Мы рассмтрим Ардуино на примере сборки Arduino Nano, китайская реплика которого стоит всего около 200 рублей. Без понимания сути предмета, можно сказать, что видим мы небольшую плату, размером меньше спичечного коробка, из которй торчат 30 ножек, по 15 с каждой стороны. Для чего они нужны, мы рассмотрим позже. А пока рассмотрим, что получится, если взять эту платку Ардуино, и подключить к самому обычному компьютеру самым обычным проводо USB. Попробуем?

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

После того, как на плате загорится огонек индикации питания, операционная ситема начнет идентификацию нового оборудования, о чем сообщит плашкой "найдено новое оборудование". Если вы раскошелились на фирменную итальянскую плату, то Windows успешно найдет драйвера, если нет (или если продавец подсунал вам китайскую, вместо фирменной), то там будет стоять другая микросхема, управляющая портом USB, и вам потребуется самостоятельно установить дроайвер. Сделать это проще простого. Скачиваете драйвер по этой ссылке, запускаете его, и после этого операционная система определит Ародуино как устройство, подключенное к какому-то из COM-портов (к какому, пока не важно). Данный драйвер, написанный для чипа серии CH341 подходит для подавляющего бюольшинства китайских реплик Ардуино, так как именно этот чип на них, как правило, установлен.

А что дальше? А дальше мы разберемся, зачем из платы торчат 30 ног, и какие фокусы с ними можно проделать.

Если вы заинтересовались Ардуино, то можно предположить, что вы знаете, чем отличается "аналоговый сигнал" от "цифрового сигнала" (он же дискретный). Если вы отлично понимаете, чт оэто такое, с чем его едят, и для чего это нужно, можете смело скроллить вниз пока не дойдете до чего-то вам неизвестного. А остальным все же следует объяснить, что такое "цифровой сигнал" и "аналоговый сигнал", так как имено с ними работает Ардуино, и ни с чем больше. Вообще можно смело сказать, Ардуино, как устройство, это ни что иное, как система, предназначенная для анализа поступающих в не извне (от датчиков и других устройств) аналоговых и цифровых сигналов, для принятия решений, в зависимости от результата анализа, и для претворения этого решения в жизнь, путем установления на одной или нескольких ножках платы того или иного (нужного вам, в данное время и в данном месте) цифрового или аналогового сигнала. Конечно, если вы не знаете, что такое цифровой и аналоговый сигнал, вам может показаться, что вы не знаете, за каким лешим вообще вам могут понадобится эти сигналы, но это кажется лишь поначалу. Чтоит чутка углубиться в тему, и выпышки озарений начнут все чаще освещать нейроны вашего мозга.

Что такое цифровой сигнал, и с чем его кушают

Вот, у нас на Ардуинке, подключенной к компьютеру, горит светодиод, являющийся индикатором питания. Это питание, в виде +5 вольт, подается напрямую из USB-разъема компьютера. Эти +5 вольт -- самое высокое напряжение, с каким может работать Ардуино. А если их, эти 5В продключить не к Ардуино, а к чему-то еще? Ну, например, к светодиоду. Что будет? Сгорит ваш светодиод, из него дым пойдет, и он будет пахнуть жженой пластмассой :) Потому что напряжение -- это только один из двух важных параметров, которые описывают электрический сигнал. Второй важный параметр - -- это ток, протекающий через электрическую цепь. Я сейчас не буду вдаваться в тонкости закона Ома, хотя, попозже, он вам все равно понадобится, но сейчас вам важно понимать, что работу в электрической цепи совершает не напряжение, а ток. А напряжение нужно толmко для того, чтобы создать нужную для работы устройства силу тока в данной конкретной электрической цепи.

На самом деле, как это ни удивительно, проще всего понять работу электрической цепи на такой наглядной аналогии, как обычный водопровод. При этом источник напряжения (батарейку) можно смело представить как насос в водопроводной трубе. Нет насоса, нет давления. А нет давления, не потечет вода по трубе. Поэтому можно сказать, что давление, создаваемое насосом в трубе полностью аналогично напряжению, создаваемому батарейкой или блоком питания, а вот объем воды, который протекает по трубе за какой-т отрезок времени, полностью аналогичен силе тока в проводнике. Запоминаем. Давление == напряжение. Объем == ток.

Теперь представим, что у нас стоит носос и качает воду через шланг. Мы направляем шланг на водяную вертушку, и она, естественно, закрутится, если ей хватит объема воды, падающего на лопасти. А если не хватит, то она не закрутится -- слишком тугая и тяжелая, ей нужно больше воды. Точно то же самое будет с любым электрическим устройством. С моторчиком, светодиодом, реле -- с чем угодно. Если тока (объема воды) хватит, оно заработает. А если тока (объема воды) не хватит, то не заработает. И от напряжения (давления воды) это мало зависит. У нас давление в шланге может быть огромным (или напряжение в розетке), но если дырочка на выходе шланга маленькая, то нужно для работы вертушки объема воды через нее не протиснется. Только давление будет большое в шланге, и все. Вода будет еле капать, и не сможет ракрутить вертушку.

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

Зачит, у нас одинаково справедливы такие утверждения:

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

2. Чем больше сечение трубы, тем больше объем через не может протечь

3. Чем больше сечение трубы, тем меньше давление в трубе

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

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

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

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

Но почему бы тогда не взять напряжение меньше, чем 5 вольт? Тогда ведь и ток, протекающий через светодиод будет поменьше, и светодиод не сгорит. Очень правилный вопрос! В ответе на него и кроется суть цифрового сигнала, которую нам надо понять из этой статьи. Дело в том, что цифровой сигнал может принимать всего два занчения. Он либо есть, либо его нет. То есть. его уровень либо высокий, либо нулевой (или почти нулевой). И третьего не дано.

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

Мы уже писали выше, что у Ардуино тридцать ног. Часть из них -- это цифровые контакты. Что значит "цифровые"? Это значит, что на каждом из них по нашему желанию может либо появиться 5 вольт, либо нет. И все. Думаете, этого мало? Как бы не так! Этим простым действием создаются все чудеса современного цифрового мира, от смартфона, до космического аппарата, бороздящего просторы вселенной. И мы будем учиться эти чудеса создавать.

Оглавление Глава 2. Старик и море

Первое чудо. Учим Ардуино мигать светодиодом

Как заставить Ардуино мигать светодиодм с нужной нам скоростью? В этом (как и во всем), нам поможет то, что мы узнали из написанного выше текста. Мы помним, что на любом из цифровых контактов Ардуино по нашему желанию может либо возникнуть 5 вольт, либо пропасть 5 вольт. И, конечно, нас так и подмывает взять, да и припаять к одной из ножек Ардуино светодиод, сказать волшебную фразу: "Лампочка, зажгись!", и наслаждаться результатом. Но если бы все было так просто, то все люди на земле были бы великими электронщиками, заработали все деньги, и давно бы отправили человека к звездам. А раз этого до сих пор не произошло, значит, есть какие-то подводные камни на этом пути.

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

Мы уже знаем, что если подключить светодиод к цифровой ноге Ардуино, и попросить сделать на ней 5 вольт (а другого значеняи Ардуино сделать не может, мы уже знаем), то светодиод сгорит. Слишком велик будет для него объем протекаемого тока. Значит, "трубу", по которй течет ток, надо сделать уже, то есть, увеличить ее сопротивление, тогда ток, именно на этом участке схемы, снизится. Вот для этого фокуса инженеры и придумали радиодеталь под названием "резистор". Резистор, благодаря своему сопротивлению, ограничивает ток именно там, где его нужно ограничить, ровно до того значения, которое нам понадобится.

Как видно на картинке, резисторы бывают разного номинала, разной мощности, разного размера и цвета. Но все их объединяет одно свойство -- они обеспечивают нужный ток на нужном участке цепи. А как узнать, какой ток нам нужен? А это зависит от того. что мы включаем. В паспорте на каждый электронный прибор (по-аншлийски называется datasheet), даже на такой маленький. как светодиод, который мы хотим зажечь, среди прочих параметров обязательно указан ток, необходимый для этого прибора. Он обозначается английской буквой "I". В паспорте может быть указан максимальный ток (max.), или номинальный ток (current)