Серия «Netduino – начинаем работу с *»

Грэг Дункан

Завершающий пятничный аппаратный пост года не может быть посвящен только одному проекту, не так ли? Давайте подарим себе набор для следующего замечательного года, который станет основой для построения некоторых замечательных проектов на Netduino с помощью серии статей «Начинаем работу…» Джероена Сварта (Jeroen Swart).

Netduino – начинаем работу с LCD

Если вам требуется более продвинутый вывод, чем мигание светодиодами, модуль LCD – хорошая и удобная вещь. Они имеют разные размеры, от двухцифровых до алфавитноцифровых матричных модулей 40х4. Также можно получить графические LCD от устройств с малым разрешением (т. е. 122x32 или 240x128 пикселей) до более профессиональный LCD-экранов (т. е. 5- или 7-дюймовых), но я буду придерживаться в этой статье алфавитноцифровых LCD.

Netduino – начинаем работу с шаговыми двигателями, без контроллера

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

Netduino – начинаем работу с шаговыми двигателями

Работа с шаговыми двигателями немного сложнее работы с обычными моторами постоянного тока. Приложите к последнему напряжение, и он начнет вращаться. С шаговыми двигателями надо прикладывать напряжение по определенному шаблону.

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

Netduino – начинаем работу с I2C

I2C – это последовательный коммуникационный протокол, используемый для коммуникаций между интегральными схемами. Он использует два провода: один для данных (SDA), другой для синхросигнала (SCL). Подробнее об этом протоколе можно прочитать в статье Википедии.

У Netduino имеется один I2C-порт на контактах A4 (SDA) и A5 (SCL). Протокол I2C работает как шина, так что к порту I2C Netduino можно подключить более одного ведомого устройства. Чтобы шина I2C правильно работала, необходимо подключить к контактам A4 и A5 два нагрузочных резистора, вне зависимости от количества устройств подсоединенных к шине.

Netduino – начинаем работу с RS232

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

Соединение двух устройств по RS232 настолько же просто, как и проведение 3 проводов между ними: для передаваемых данных (TxD), для получаемых данных (RxD) и для земли. Также можно провести еще 6 дополнительных проводов для квитирования установления связи по протоколу RS232. Квитирование используется для синхронизации связи между устройствами: т.е. дает возможность другому устройству узнать, что данные посланы или что оно готово к приему данных. С тремя проводами и без квитирования обе стороны обязаны согласится с деталями связи: скорость передачи и число стартовых и стоповых битов и битов данных.

Netduino – начинаем работу с SD

У Netduino Plus на плате есть слот для SD-карт. Он подключен к одному из SPI-портов микроконтроллера. К счастью вам не нужно самостоятельно писать код, управляющий SPI-портом. Встроенное ПО сделает это за вас, так что всё, о чем надо позаботиться – это работа с классами из пространства System.IO. Не забывайте, что это Micro .Net Framework, и она не так богата, как полная платформа .NET Framework, но у нее достаточно средств, чтобы работать с SD-картами.

Netduino – начинаем работу с АЦП

Netduino содержит несколько портов (A0 – A5), способных читать аналоговые сигналы и переводить их в цифровое представление. Эти порты также могут использоваться для цифрового ввода/вывода, но их можно настроить в индивидуальном порядке для использования внутреннего АЦП (аналого-цифрового преобразователя).

Netduino – начинаем работу с ШИМ

ШИМ (широтно-импульсная модуляция, англ. PWM– Pulse Width Modulation) – это технология, по существу помогающая цифровым цепям управлять аналоговыми цепями. Одним из применений является управлений скоростью вращения электромотора, или, как я покажу далее, яркостью светодиода.

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

Netduino – начинаем работу с транзисторами

Управлять светодиодом напрямую через порт – прекрасное решение в большинстве случаев, потому что светодиоду нужен небольшой ток, который может быть обеспечен Netduino. Но когда управляешь прибором, требующим большего тока (мощный светодиод, электромотор, реле,…) не обойтись без транзистора. Транзистор управляется небольшим током от микроконтроллера и сам управляет мощной нагрузкой. Хотя обычно транзисторы работают как усилители, их также можно использовать в качестве переключателей.

Netduino – начинаем работу с переключателями

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

Есть два пути использования цифрового ввода/вывода. В качестве входного порта (InputPort), который требует он нас постоянной проверки входного значения, или как порта прерываний, который сгенерирует событие, когда входное значение изменится. Я продемонстрирую код для обоих случаев.

Netduino – начинаем работу

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

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

Как установить, подсоединить, начать кодировать, разворачивать и отлаживать проекты Netduino, очень хорошо описано в данном документе на сайте Netduino. Поэтому нет причин для повторения этого здесь. Хотя есть один совет: используйте отдельные решения для каждого проекта. Конечно, вы можете добавлять к проекту библиотеки. Я начал с одного решения, с несколькими проектами, каждый из которых представлял отдельный аппаратный проект. Даже несмотря на то, что я устанавливал текущий проект в качестве «Startup Project», Visual Studio по-прежнему начинала с первого добавленного мной проекта при нажатии F5. Решение проблемы состоит в выборе правильного проекта в проводнике решений, открытии его контекстного меню и выбора пункта «Debug», а затем «Start new instance».

Будем надеяться, что этот материал даст разработчикам на Netduino пищу для размышлений и возможность попрактиковаться…

Вот несколько ссылок, которые могут оказаться интересными: