Структура программы Arduino. Первая программа для Arduino. Команды Arduino и их применение. Функционирование последовательного интерфейса. Считывание строки символов через последовательный интерфейс. Схема бегущей строки на Arduino UNO. В главном цикле программы loop(), светодиоды по очереди загораются вверх путем .
Arduino и аквариум - Скорая Компьютерная Помощь. Электроника для начинающих*, DIY или Сделай Сам, Arduino. Чего общего у севера Италии и тропических рыбок? Поэтому уточню: речь пойдет об Arduino, точнее про автоматизацию обслуживания аквариума. Все началось с того, что неумолимо приближался отпуск. В отпуске хочется, как правило, сменить обстановку. Но аквариумные рыбки могут этого не понять. Мало того – могут не простить. И я заказал новый фильтр, автокормушку и таймер для бытовых приборов. Но таймера не оказалось в наличии. Поэтому решил побродить по сайту чуть ли не единственного магазина (и это в городе, считающимся миллионником!) радиокомпонентов и устройств и натолкнулся на Arduino Uno за 1. Уже не раз читал про устройство, но в руках, как говорится, не держал. И с этого момента начинается история проб, ошибок и побед. Для тех, кто не сталкивался с Arduino – поясню. Это аппаратно- программная платформа. Железо базируется на микроконтроллере Atmel ATmega и оборудовано множеством портов ввода- вывода. Программная часть – среда разработки и набор библиотек. Железо, понятно, стоит каких- то денег (на самом деле, цены, даже на оригиналы из Италии, доступные), а ПО бесплатное. Скачивается с официального сайта. С помощью ПО можно управлять портами ввода/вывода. Присутствуют порты с ШИМ. Работа с Arduino довольно таки проста благодаря наличию множества библиотек. Например, есть библиотеки для работы с температурными датчиками, цифровыми и графическими(да!) дисплеями, различными протоколами и т. В общем случае необходимо подсоединить к одному или нескольким портам Arduino электронную схему которой хотим управлять (или с которой необходимо получать данные), скачать соответствующую библиотеку (если ее нет в стандартной поставке), написать программу при помощи языка Arduino (основан на языке Wiring) и среды разработки Arduino (основана на среде Processing). Заливаем скомпилированную программу через USB в железную память Arduino, и, вуаля! И, да, программа остается в памяти железки даже после выключения питания. Самая главная задача которую я хотел поручить Arduino – управление освещением по расписанию. Да, из пушки по воробьям, но на гостя из Италии (на самом деле из Китая, но это не суть важно) у меня несколько большие планы. До сего времени освещение аквариума производилось с помощью энергосберегающей лампочки, включать и выключать необходимо было вручную. Понятно, что строгий временной режим не выдерживался, особенно по выходным. Теперь, дабы упростить задачу и сделать более долговечным освещение, было решено перейти на светодиоды напряжением 1. V. Прикупил метр влагозащищенной светодиодной ленты. Собрал схемку: Полевой транзистор выпаял из нерабочего компьютерного БП. Вообще, старался использовать максимально то, что доступно под рукой. Но можно взять чуть ли не любой, например IRFBC3. Резистор нужен для обеспечения надежности схемы: сверхмалые токи «уходят в землю» и полевой транзистор открывается и закрывается только при высоком и низком состоянии на выводе Arduino. Также рекомендуют между затвором и выводом порта ставить ограничивающий резистор на сотню- вторую Ом, но в данной схеме им можно пренебречь. В комментариях все же очень настаивают на на ограничивающем резисторе. Ставим резистор на 1. Ом между выводом Arduino и затвором. Затем нашел на просторах Интернет программку (данный пример вставил только для того, чтобы «на пальцах» объяснить структуру программы): Программа для начинающихint led. Pin = 5; // светодиод присоединён к порту 5void setup() ! Светодиоды периодически мигают. Небольшие пояснения к программе. Ведь при отключении питания и повторном включении программа запустится «с нуля». Рассматривал три варианта: использовать самодельный UPS (что реализовать не так дешево и просто); синхронизировать с Internet (соответствующая плата стоит дороже моего Arduino); синхронизировать с часами. Довольно скоро нашел на просторах всемирной паутины схему RTC (часы реального времени, да, по- русски звучит странновато) совместимую с Arduino. Очень простая схема. Резисторы можно ставить от 4,7 до 1. Ом. Также понадобится микросхема- часы DS1. Гц, батарейка. Держатель для элемента питания (CR 2. Поскольку исторически на плате у меня уже был припаян транзистор для цепи управления светодиодами – то разместил часы рядом. Если вдруг после сборки часов не получается выставить время на часах или они «стоят», то проверьте правильность соединений и их качество. Стоит отойти одному проводку от микросхемы – и часы ведут себя скверно. И, да, разместите DS1. DIP панельке. Часы необходимо инициализировать, т. Это можно сделать следующим образом. Программа инициализации часов#include < Wire. DS1. 30. 7. h> void setup(). Потом я увидел схему подключения цифрового термометра DS1. B2. 0 передающего данные по интерфейсу 1- Wire. Для этого термометра даже есть специальная библиотека под Arduino позволяющая с легкостью канатоходца и быстротой форварда Баварии получать данные о температуре в удобочитаемом виде. Подключил, игрался- игрался – показывает - 1. Оказалось, схема подключения неверная (а я выбрал схему с активным питание). Помогла документация на термометр. Мораль: схема на сайте – это хорошо, а официальная документация – лучше. Ниже правильная схема. Можно подключать несколько термометров к одной линии 1- Wire. Желательно использовать коаксиальный кабель. Небольшое лирическое отступление. Я все в этом проекте делал не правильно: паял как попало временные схемы по мере поступления идей, потом под это дело подгонял соединения, корпус, брал попавшиеся под руку детали и практически не оставил места для добавления функционала – когда- то все придется делать заново (и таки пришлось!). Поэтому призываю делать все наоборот: 1) определиться с функционалом; 2) определиться с деталями; 3) подобрать корпус исходя из первых двух пунктов; 4) развести плату исходя из первых трех пунктов. И так необходимо поступать в практически любом радиоэлектронным проекте. Если есть необходимость проверить ту или иную идею – используйте специальные макетные платы и набор соединений. Да, знаю, цены на них кусаются. Но, поверьте, сэкономите кучу времени и нервов. Затем настала очередь дисплея (ну как быть без отображения той же температуры?). Взял стандартный текстовый две строки по 1. Вывел на дисплей показания термометра и часов. Понял, что время потрачено не совсем зря. Подсветка ощутимо нагревала дисплей, поэтому ее отключил. Схема подключения дисплея. Подстроечный резистор необходим для установки контрастности дисплея. Кнопка К1 подает питание на подсветку. Известная как A0 или RS. В зависимости от того, 0 она или 1, дисплей понимает имеем ли мы на линии данных команду вроде «передвинуть курсор» или код символа для отображения. Известная, как E или Enable. Когда эта линия становится единицей, дисплей исполняет команду или выводит символ с линии данных. Известные как DB4, DB5, DB6, DB7. Часы и дисплей «в железе». Теперь настала очередь БП, так как до этого я пользовался двумя разными блоками питания: 5. V для дисплея и часов, и 9. V для Arduino и светодиодов. Опять же, под рукой оказался БП на 2. V, 1,7 А. Сразу скажу, что для светодиодов+Arduino этого маловато. Лучше брать БП на 3. А, а яркостью управлять с помощью ШИМ. Чтобы получить нужные мне 5 и 1. V собрал схемку на LM3. T. Согласно документации Arduino лучше не питать напряжением больше 1. V, светодиоды при меньшем напряжении тоже должны прослужить дольше. Поэтому решил получить 1. V. Опять же — не стал мудрить и собрал на минимуме деталей. Схема. Но если есть время, желание и возможность — все же лучше собрать полноценный импульсный БП который бы выдавал на 1. V до 2- 2,5. А. Поскольку LM3. PII (помните, были такие слотовые ЦП от Интел?), резисторы — навесным монтажом. Залил все это дело эпоксидкой. Внимание: корпус LM3. LM3. 17 для разных напряжений, то хотя бы N- 1 микросхем необходимо изолировать от радиатора. Со стороны радиодеталей я закрыл радиатор пластмассовой крышкой, а ребра оставил «голыми». Попавшийся на глаза 9- ти пиновый RS2. Пришло время собрать все вместе. И тут наступили трудности. Трудности наступили когда я начал менять временный соединительные провода на постоянные. Таковые, многожильные, я взял из попавшихся под руку телефонных четырехпроводных кабелей. Просторный корпус с запасом по размерам стоит, как по мне, неприлично дорого – 1. Если бы я развел плату под корпус — проблем бы не было, а так пришлось импровизировать. Взял корпус Maszczyk KM5. Монтажную плату пришлось разделить на две части, Arduino прикрепить к крышке. А все из- за того, что было лень переделывать. Получилось вот что. Да, выглядит, мягко говоря, не ахти. А всего лишь надо было подогнать под размеры и отверстия корпуса плату, впаять в нее штырьки и надевать на них Arduino. Было бы красиво и надежно. В общем, — не делайте так как на фото выше. В таком исполнении все это проработало не долго — недельного отпуска поделка не пережила. Поэтому пришлось переделывать. На этот раз я взял подходящую по размерам плату и разместил на ней штырьки для подключения Arduino. Вернее две платы, так как на плате контроллера по два разъема с каждой стороны и расстояние 2,5. Вышло не очень эстетично, зато работает. Разместил элементы. В сборе. На плате разместилось три разъема: термодатчики, светодиоды, питание (на всякий случай спаял разъем побольше, вдруг в будущем необходимо будет больше одного напряжения подавать). На корпусе: USB, питание Arduino напрямую (не используется), питание всей схемы (+1. V). На этот раз я отказался от двух напряжений, а подал одно — ведь Arduino выдает на один из разъемов 5. V. Правда — ток там слабоватый, но для работы часов и дисплея вполне достаточно. Через микрокнопку (видна на фото выше) подал питание на подсветку. Теперь можно кратковременно подсвечивать экран. Купил еще один термометр и изменил программу с учетом отображения двух температур: в аквариуме и в комнате. Для подключения DS1. B2. 0 лучше использовать кабель с экранирующим «минусом», но такового под рукой не оказалось — взял все тот же телефонный четырех жильный провод. Итоговая программа./*Подключаем библиотеки*/#include < Wire.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. Archives
December 2016
Categories |