Ещё один нудно-описательный пост. Сожалею, но без знания элементов описание приключений с подключениями будет не настолько занятным. Ну и мало ли, может кому информация пригодится. Например, если кто-то захочет сам построить что-нибудь радиоуправляемое.
В прошлый раз мы познакомились с микроконтроллером Ардуино нано, который будет центральным бортовым компьютером нашего корабля и сказали, что оптимальное напряжение для него равно 5.0 вольтам. Кроме того, эти же 5 вольт должны получать остальные устройства и сенсоры, включенные в контур управления. Ну… За некоторым исключением, о чём позже.
Но где же эти 5.0 вольт взять, если наши аккумуляторы дают, в зависимости от степени заряда, что-то между 4.5 и 3.7?
И тут к нам на помощь приходит вот этот модуль:
Знакомьтесь: повышающий преобразователь MT3068. На вход (VIN+ и VIN-) подаётся напряжение от 2 до 24 вольт, а на выходе можно получить от 3 до 28. Сколько именно, можно регулировать вон тем желтеньким верньером, что обозначен стрелкой. Важно: модуль этот умеет только повышать: если вы подали на вход 5 вольт, то получить на выходе 3 вы не сможете, только что-нибудь от 5 до 28. Но зато выставленное напряжение он держит стабильно. Соответственно, мы подключим вход к батарейке, и на выходе у нас будут стабильные 5 вольт, независимо от степени её заряда. Конечно, пока она в принципе работает.
Еще два важных замечания. Первое. Когда вы только купили эту плату, абсолютно неизвестно как выставлен регулятор. Может на 3, а может и на 28 вольт. Поэтому, прежде чем включать его в свою схему, подключите его к вольтметру, настроенному на диапазон, превышающий 30 вольт, и проверьте. При надобности, крутите регулятор. Второе. Крутить придётся долго. Может статься, что вы сделали десяток-другой оборотов, а никакого видимого эффекта не добились. Это не значит, что плата нерабочая, это значит только, что регулятор выкручен далеко за пределы… собственно регулировки. Хотя может, конечно, быть и нерабочая. С электроникой из АлиЭкспресса никогда не угадаешь. Но намного, намного чаще, просто регулятор выкручен очень далеко.
Итак, чем кормить ардуинку, у нас есть.
Теперь, как она будет общаться с внешним миром. Модуль связи NRF24L01.
Работает на частоте 2.4 ГГц, вот эта версия с внешней антенной вроде бы обеспечивает связь чуть не до километра. Правда, гигагерцовый диапазон означает, что только в прямой видимости. Впрочем, для управления моделью корабля этого хватит. Зато гигагерцовый диапазон не требует лицензирования, и платка довольно маленькая и лёгкая.
С ардуиной эта плата связывается по протоколу SPI, который в теории позволяет подключать на одну шину несколько устройств и таким образом экономить пины. В википедии про этот протокол написано, что по одному проводу (CS, chip select) передается сигнал выбора устройства, которому предназначены, или от которого поступают, данные. По двум другим передаются сами данные: MOSI = Master Output, Slave Input служит для передачи от микроконтроллера к устройствам, тогда как MISO, Master Input, Slave Output, нужен для передачи от устройств к контроллеру. Еще по одному проводу (SCLK) передается синхронизирующий сигнал от таймера на плате ардуины. Таким образом, всего устройство SPI требует 4 пина. При этом присоединение каждого нового устройства потребует только одного дополнительного провода, для его CS. При желании можно подключить еще один провод для прерываний, IRQ. Идея состоит в том, что если у устройства внезапно появляется, что сказать контроллеру, оно устанавливает «1» на этом канале и микроконтроллер, чем бы ни занимался, прерывает свои дела и обрабатывает этот сигнал. Этот метод можно задействовать, а можно и нет, а просто циклически опрашивать все устройства из главной программы. Именно так мы и поступим.
Во-от. Так протокол описан в википедии, но у NRF24L01 восемь пинов: VCC и GND для питания (+3.3 V и 0 соответственно), CSN (это CS, а «N», вероятно, от «Negative», потому что устройство выбрано, если на этом канале логический ноль), CE (вроде бы, устанавливает, работает ли модуль на прием или передачу и в стандарт SPI не входит), MOSI, SCK (то же что SCLK), IRQ и MISO. Шина питания в общем одна на всех, IRQ мы не задействуем, но вот остальное придется соединить с пинами ардуины, так что 5 пинов на одно устройство. Пины, которые ардуино использует для SPI, фиксированы. В предыдущнй части на распиновке ардуино они указаны синеньким.
Пин для прерываний тоже выбирается свободно.
Кстати, как и CS, IRQ активен, когда установлен в ноль. Соответственно, если прерывания не используются, пин IRQ на самой ардуинке лучше через высокое сопротивление подтянуть к +3.3V.
Учитывая, что других устройств SPI у нас не будет, расход пинов большой. Ну да что поделать… Радиосвязь требует жертв.Ну и чтобы вся полезная информация была в одном месте, схема распиновки NRF24L01:
Для Ардуино Нано и Уно, MOSI: D11; MISO: D12; SCK: D13.
CE и CSN выбираются свободно и указываются при создании объекта:
RF24 radio(7, 8); // CE, CSN
Подробнее про эту последнюю строчку будет в следующих выпусках. Они у нас выходят нечасто, но иногда всё-таки выходят.
Так… Ардуино у нас использует 5 вольт, а вот NRF24L1, как уже несколько раз отмечено, требует питание 3.3 V. Правда, управляющие сигналы в 5 вольт работают, так что их можно напрямую соединять с пинами ардуины. Но вот на VCC вынь на подая 3.3 вольта. И где же их взять?
А вот где. От понижающего модуля AMS117. Это совсем маленькая платка, на вход она получает 5 вольт, а отдает 3.3 вольта. Вот так она выглядит:
В общем, всё достаточно очевидно. По бокам подаются ноль (GND) и +5 вольт, с середины снимается + 3.3 вольта.
На сегодня всё. В следующем выпуске модуль управления моторами и плата зарядки аккумуляторов (если только про нее не забуду). А потом перейдём к созданию из всего этого единой схемы. И начнутся приключения!