Вводную я дал в первой части. Напомню что такие вещи я рассказываю как полный "новичок" в этом деле. И так, что я сделал и как "побаловался" с платой.
Для начала скачал пакет программ с сайта Arduino. Пакет представляет собой простенькую среду разработки с редактором кода, компилятором и программатором. Самое главное в ней конечно большое количество встроенных библиотек, сильно облегчающих начальное знакомство с платой и микроконтроллерами. Достаточно лишь подключить плату по USB, поставить драйвера из комплекта, открыть какой-либо пример и нажатием кнопки он собирается и заливается в плату. Конечно никто не мешает писать код в более серьезных средах (есть компиляторы с языка Си например), что я собственно тоже попробовал дальше. Но остановимся на простом варианте среды Arduino.
Для начала я конечно попробовал самые "азы" - моргание светодиодом. Тут всё просто. Либо используем SMD светодиод, установленный на плате (на 13ом выводе), либо подключаем свой на любой из выводов (не забываем при этом токоограничивающий резистор). Дальше в коде нам нужно элементарно установить режим работы вывода в выход: pinMode(НОМЕР_ВЫВОДА, OUTPUT). А дальше просто устанавливаем на этом выводе сигнал логической 1: digitalWrite(НОМЕР_ВЫВОДА, 1). Вот и всё, так светодиод горит. Поставим 0, и он потухнет. Дальше я не буду рассказывать основы и примеры программирования - их легко можно найти в сети с более детальным описанием. Всё это слишком обширная и отдельная тема.
Теперь что-то более "практичное". На eBay я заказал себе пару цифровых датчиков температуры DS18B20. Подключаются они очень просто, примерно по такой схеме. На картинке можно видеть как это быстренько собрано на макетной плате. Скачал библиотеку для работы с протоколом OneWire для Arduino и запустил пример из библиотеки, исправив в нём вывод, к которому был подключен датчик. Пример инициализирует датчик, и периодически опрашивает его, заставляя выдавать температуру. Затем полученные значения он конвертирует и отправляет на компьютер с помощью виртуального COM-порта, висящего на USB подключении. В среде Arduino есть некий простенький эмулятор терминала, позволяющий смотреть (и отправлять) данные по этому порту. Т.е. прямо сразу на "компе" видим показания и информацию с датчика, полученную и обработанную микроконтроллером:
Как видно, температура у меня в комнате была примерно 26 градусов. Показания у датчика очень неплохие по точности и реагирует на изменения он достаточно быстро. Достаточно прикоснуться пальцем к датчику и температура начинает расти (от тепла тела). Да, кстати на скриншоте выше видно, что работают 2 датчика. Это я последовательно подключил сразу оба для сравнения (протокол OneWire позволяет на одном проводе держать много различных устройств).
Что я сделал еще? У меня дома давно есть HTPC. Когда-то давно я собрал к нему простенький ИК-приемник, чтобы им можно было управлять с пульта ДУ (подходит любой, у меня от какого-то DVD). Схему нашел в Интернете (примерно такую), подключается он через устаревший нынче COM-порт (как я говорю, это было давно). У меня она сделана на базе приемника 536AA3P (аналог TSOP1736).
Какое-то время назад он перестал работать. Как-то без средств сложно было диагностировать в чем дело, а без диагностики просто попробовать всё пересобрать было лень. С получением Arduino я просто отпаял сам датчик и подключил его к плате ардуино. С "ноги", где должны были идти данные, я просто перевел порт на вход и считывал с него уровень, выводя данные на виртуальный COM-порт (и следовательно наблюдая их в мониторе). По умолчанию датчик "подтянут" к питанию, т.е. уровень логической 1. Когда идут данные, датчик "опускает" линию в землю и следовательно получаем 0. Проверил - так и есть. Просто стоит - всё-время идут 1. Если поднести любой пульт и нажать любую кнопку, то пойдет поток данных с нулями. Значит датчик сам работает.
Ну и дальше решил подробнее проверить. Нашел библиотеку для IR-датчиков и загрузил пример в Arduino. Примерно тоже самое, но теперь я увидел не просто 1 и 0, а именно дешифрованные коды сигналов кнопок с ИК-пульта. Убедился, что каждая кнопка дает свой код без сбоев. Т.е. лишний раз удостоверился, что проблема не в датчике. Ну и методом дальнейшей диагностики нашел в чем проблема. Резистор полетел, заменил его, собрал назад схему для COM-порта и она вновь заработала.
С другой стороны на базе микроконтроллера (МК) можно собрать такой же приемник, который будет работать гораздо лучше и через USB. Можно и на Arduino (что я соб-но и сделал), только больно "жирно" пускать на такую простую задачу целиком плату. Тут обычно собираются собственные узконаправленные устройства, которые и поменьше и подешевле получатся.
В общем примерно как-то так. А применений, как я уже говорил в прошлой части, может быть очень много. Если заинтересовало - ищите, в сети полно информации по этой теме.
Также в прошлой части я сказал, что части будет две. Пожалуй всё-таки будет еще 3-я часть, в которой я расскажу, как можно всё это дело посмотреть и проработать и без физической платы. Да, есть специальные программы, позволяющие симулировать МК и электрические цепи. Об одной такой я напишу в следующей части...
PS: Я обновил первую часть, в конце найдете дополнение от сегодняшнего дня. Там я написал, где можно купить сам Arduino и различные компоненты еще дешевле.
Добавить комментарий