Итак, мы приступаем к созданию системы управления кораблём. Сегодня мы начнём знакомство с элементами, из которых она будет построена. Хочу заметить, что рассказ будет достаточно кратким, исключительно для того, чтобы понять, как всё работает в этом проекте. Функции, которые я не использовал, упоминаться не будут.
Для связи мы будем использовать радиомодуль NRF24L01, который работает на частоте 2.4 ГГц, а вся система работает под управлением микроконтроллера Ардуино Нано, который и будет настоящим мозгом корабля. Вот с него и начнём.
Микроконтроллер - это, собственно, такой маленький компьютер, который умеет общаться с внешним миром. Как и для всякого компьютера, для него можно писать разнообразные программы, так, чтобы он управлял кораблём, автоматизированной системой поливки цветов, клапанами в пэтч-кламп установке, да и вообще… много чем. Вычислительная мощность его, конечно, не очень велика. Разрядность - 8 бит (у бортового компьютера корабля «Аполлон» уже 16 бит), но зато у ардуино 32 регистра, а у Аполлона - 4; тактовая частота - 16 МГц (у Аполлона 2 МГц), программная память 32 kB, оперативная память 2 kB, энергонезависимая память 1 kB. У Аполлона: оперативная память 4 kB, постоянная: 72 kB. В общем, я бы сказал, сопоставимо. Выглядит микроконтроллер вот так:
На 15-дюймовом мониторе вы видите его практически в натуральную величину.
Клавиатуры и монитора нет, но зато есть множество ножек-пинов, и с помощью этих ножек он может общаться с внешним миром. Для удобства, на следующем рисунке приведена их схема, на жаргоне, распиновка.
Vin и GND - это, как и повсюду, питание. GND это «-», Vin это "+". В документации пишут, что Ардуино ест от 5 до 12 вольт, но… На самом деле, оптимально для нее ровно 5 вольт. Если дать больше, то встроенный регулятор понижает напряжение до 5 вольт и передаёт их на основную схему, при этом избыток энергии рассеивается в виде тепла. Так что на самом деле кормить ардуинку лучше заранее стабилизированными 5 вольтами. Иногда в интернете можно видеть совет: если у вас заранее установленные 5 вольт, подавать их не на Vin, а на пин 5V. В этом случае вы обходите ненужный в таких условиях регулятор и можете сэкономить чуть-чуть энергии. Я однако не уверен, что это блестящая идея. Экономия там грошовая, а… Errare humanum est, и если вы по ошибке подадите 12 вольт на Vin, у вас будет несколько секунд, а то и минут, в зависимости от нагрузки, чтобы осознать свои заблуждения, а вот если вы ради экономии подадите такое напряжение на 5V, то дым пойдёт сразу же.
Пины, обозначенные D1-D13 - это цифровые входы и выходы. 0 вольт - это ноль, 5 вольт - единица. С их помощью можно читать или передавать бинарные состояния каких-то устройств. «Вкл»-«Выкл». Ножки A0-A7 гораздо интереснее. Это аналоговые входы. Если на такой пин подается напряжение в интервале от 0 до 5 вольт, оно транслируется в цифровые значения от 0 (при нуле вольт), до 1024 (5 вольт). Тем самым, эти пины можно присоединять к самым разнообразным сенсорам, будь то термистор, фоторезистор, или верньер с реостатом и считывать их значения.
Настоящих аналоговых выходов нет, но… видите, некоторые цифровые написаны фиолетовым? Эти пины способны задавать квазианалоговый сигнал с помощью ШИМ - широтно-импульсной модуляции, она же PWM, pulse-width modulation. Идея состоит в том, что этот пин выдает прямоугольный импульс амплитудой 5 вольт с очень высокой частостой, при этом ширина импульсов варьируется от 0 (импульса вообще нет, просто 0 вольт) до ширины, равной периоду, так что соседние импульсы сливаются (эффективно передается 5 вольт). Если ширина импульса равна полупериоду, то это приблизительно эквивалентно 2.5 вольт. Опять-таки, программа, выполняемая на ардуино, устанавливает на пин значение от 0 до 1024, а оно кодируется в ширину импульса, и таким способом можно градуально менять… что-нибудь. Яркость светодиода, скорость вращения мотора, угол поворота руля. Помните, в предыдущем посте я упоминал серво, один из проводов которого принимает управляющий сигнал? Он может идти как раз от такого ШИМ-пина ардуинки.
Пожалуй, на сегодня хватит. О других схемах, задействованных в проекте, поговорим в следующий раз.