LXF156:Arduino
|
|
|
Электроника Хотите встроенные часы? Приспособьте свой Arduino
=Arduino: Сами соберем плату=
Устали нечаянно палить платы Arduino? Ник Вейч решает собрать свою собственную и обнаруживает, что это проще, чем он думал.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
На этом уроке мы уйдем немного в сторону от обычных статей, в которых мы собирали схемы из компонентов, и соберем собственную плату Arduino. Эта идея пришла мне в голову, когда я вывел из строя загрузчики на нескольких схемах и понадобилось перепрограммировать их, превратив Arduino в программатор.
Вообще-то собрать схему заново проще, чем перепрограммировать микроконтроллеры, но вам стоит получить хорошие практические навыки, сделав это самим.
Содержание |
Зачем собирать самим?
Типичный ответ – потому что это дешевле. Это справедливо, если у вас много запасных компонентов и свободного времени; но, правду говоря, готовые платы Arduino не так дороги. Итак, зачем?
Помните: свобода свободного ПО не в том, что оно бесплатно, а в том, что его можно изменить. Есть масса причин, по которым вы можете захотеть собрать собственную плату Arduino – может, вам нужны встроенные часы, или дополнительная память EEPROM, или какая-то другая схема с несколькими транзисторами или реле на плате.
По сути, все, что можно сделать с платами-расширениями Arduino [Arduino shields], можно сделать и на самом Arduino. Если немного похитрить, можно сделать схему Arduino-совместимой до степени совместимости с другими расширениями.
Впрочем, прежде чем делать печатную схему для проекта, нужно развернуть ее на макете. Выбранные компоненты и соединения между ними могут привести к разнообразным проблемам, поэтому проверка схемы на макете – важный шаг в любой пользовательской сборке.
Если вам нужна только запасная Arduino, вас вполне осчастливит сборка компонентов на макете – так с ними определенно проще экспериментировать.
Первое, о чем нужно подумать – источник питания. Если от него не будет запитываться слишком много устройств, можно избежать USB (в зависимости от того, что будет подключаться, доступный ток может составлять всего несколько сотен мА – этого не хватит для удивительной системы автоматического освещения, которую вы планируете); кроме того, можно не беспокоиться о подключениях по USB.
Схему, безусловно, можно запитать напрямую от батареек. Микросхемы ATmega168/328 имеют допуск по входному напряжению от 2,7 до 6 В. Последовательно соединив четыре элемента AA, вы получите напряжение от 4,8 до 6 В (заряжаемые аккумуляторы обычно имеют напряжение 1,2 В, а не 1,5 В), которое прекрасно подходит для большинства ситуаций, но кое-чего следует опасаться:
- Приложения, зависящие от аналоговых входов, могут работать нестабильно. Если вы сравниваете напряжение с сигналом 5 В, это прекрасно, пока оно действительно равно 5 В. Но батарейки разряжаются, и можно получить значительно меньшее напряжение.
- Недостаточное питание микросхемы способно привести к неожиданным последствиям. Она может все еще работать с напряжением 3 В, но не с той же самой скоростью, что может вызывать разнообразные проблемы.
- Нестабильное напряжение питания ведет к нестабильному поведению – в идеальном случае оно либо есть, либо его нет. Напряжение батареек будет постепенно снижаться по мере их разрядки, и вы можете не узнать о том, что устройство работает неправильно, пока не произойдет что-то ужасное.
- Хотя микросхемы ATmega/Arduino способны нормально работать с такими напряжениями, могут отказать другие компоненты. Многие устройства, особенно интегральные схемы, ожидают стабильного известного напряжения.
По этим и другим причинам стоит включить в плату некоторую схему регулировки напряжения. Конечно, можно купить регулируемый источник питания 5 В, но отдельная схема регулировки напряжения позволит вам использовать более дешевые нерегулируемые источники питания или другие источники.
К счастью, сделать это довольно просто. Серия интегральных схем 78xx существует уже давно и доказала свою надежность и популярность, что отразилось и в доступной цене. У этих микросхем, как и почти у всех подобных регуляторов напряжения, три вывода – вход, земля и выход.
Для сглаживания и буферизации входного сигнала им также потребуются внешние конденсаторы – их параметры будут приведены в инструкции производителя, но не стоит привязываться к значениям: для наших целей для работы с L7805 прекрасно подойдут конденсаторы емкостью 100 мкФ, и сгодятся любые конденсаторы от 22 до 470 мкФ.
Небольшое предупреждение: не пользуйтесь для этой цели керамическими конденсаторами. Они прекрасно подходят для других частей схемы, имеют малые размеры и стоимость. Однако их недостаток в том, что при нагреве, который в этой схеме весьма вероятен, они демонстрируют плохую чувствительность и огромные нелинейные изменения в емкости.
Регулятор снизит входное напряжение на пару вольт, поэтому лучше всего воспользоваться блоком питания от бытовой сети на 7,5 В, хотя прекрасно подойдут и другие с напряжением до 12 В. Впрочем, лишние вольты переходят в тепло, поэтому учтите – преобразование 12 В в 5 В может потребовать теплоотвода.
Микросхемы и компоненты
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Разобравшись с источником питания, подумаем о микросхеме ATmega. Конечно, ее можно разместить прямо на макете, но для ее работы нужны кое-какие дополнительные компоненты. Она может работать от внутреннего генератора импульсов, но если подключить к ней подходящий кварцевый генератор, она зеработает гораздо быстрее.
Иногда вам встретятся микросхемы со внутренним генератором, которому не нужны добавочные конденсаторы. Основная причина – они дешевле и работают не хуже. Они и вправду работают не хуже, но, согласно разным источникам, сильной экономии не получится, даже если покупать их сотнями. Зато они занимают меньше места на плате, если это имеет для вас значение. В любом случае, между выводами 9 и 10 ATmega168/328 нужно подключить осциллятор или кварцевый генератор и конденсаторы.
У микроконтоллера также есть выделенная линия сброса, которая всегда пригодится, если что-то пойдет не так, и на эту линию можно повесить кнопочный переключатель, как и сделано в настоящем Arduino.
Микроконтроллер сбрасывается, когда сигнал на этой линии переходит в «ноль», т. е. соединяется с землей. Даже если мы не навесим здесь кнопку, нужно добавить повышающий резистор, чтобы значение на выводе не «плавало» и не приводило к случайным сбросам.
Для этого достаточно подключить резистор сопротивлением 10 кОм между этим выводом и плюсовым выводом источника питания. К тому же эта схема не повлияет на работу кнопки, если мы захотим ее добавить.
Хотите верьте, хотите нет, но теперь достаточно лишь заставить ATmega работать, и наш Arduino почти готов. Чтобы он стал более узнаваем и, что более важно, допускал проверку, добавим несколько светодиодов.
В стандартном Arduino на цифровом выводе 13 есть светодиод, который очень часто используется в схемах-примерах, в том числе в простейшей – «Мигание [Blink]»; с ее помощью также легко определить, работает Arduino или нет.
Цифровой вывод 13 с корпуса Arduino уходит на вывод 19 самой микросхемы, поэтому в обычном случае мы могли бы подключить туда светодиод и токоограничивающий резистор около 270 Ом. Однако у немногих выводов микросхемы ATmega есть только одно назначение. У вывода 19 их тоже два – он выступает как последовательная линия синхросигнала при «программировании в системе [In System programming – ISp]». Этим мы наверняка воспользуемся, поэтому нужно убедиться, что наш светодиод не помешает нам. При повышении сопротивления токоограничивающего резистора до 1–47 кОм большинство светодиодов все еще должны гореть, к тому же отвод тока будет не настолько велик, чтобы повлиять на сигналы для программирования схемы.
Программирование ATmega168/328
Теперь у нас есть нечто вроде Arduino, и осталось разобраться с тем, как мы будем его программировать. Тут есть три варианта. У настоящего Arduino есть последовательный USB-интерфейс. Это очень удобно, но трудно реализуется на макете или на печатной плате, если вы вздумаете ее изготовить, так как интерфейсные микросхемы очень сложно паять вручную. Можете воспользоваться переходной платой от таких производителей, как Adafruit (www.adafruit.com) со схемой последовательного интерфейса и USB-разъемом на небольшой плате, которую удобно подключить на макет или к стандартному разъему.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Второй вариант – воспользоваться программатором, предназначенным для работы с интерфейсом ISP. Существует несколько моделей, но, пожалуй, лучшая из них – USBTiny (опять же, разработанная Adafruit и широко распространенная). Этот программатор прост, недорог, его легко подключить к компьютеру, и он поддерживает различные устройства Atmel, а не только отдельные микросхемы, используемые в Arduino.
Третий вариант – программировать Arduino с помощью самого Arduino. Это может показаться странным, пока вы не поймете, что все эти программаторы «определенного назначения» по сути представляют собой тот же Arduino, разве что используют более простые микроконтроллеры. (См. врезку «Программатор Arduino».)
В первом варианте можно воспользоваться ПО для Arduino как обычно; во втором и третьем варианте придется войти в мир командной строки и AVRdude.
На самом деле AVRdude используется самой средой разработки Arduino. Каждый раз при нажатии кнопки Upload (Загрузить) в редакторе Arduino происходят следующие действия:
- Файл «примера» преобразуется в стандартный код на C с включением библиотеки ‘Wiring’ и необходимых заголовков функций.
- Затем этот файл компилируется avr-gcc, компилятором Gnu для микропроцессора AVR.
- Скомпилированный файл линкуется, и создается стандартный файл ELF.
- Файл ELF преобразуется в формат ‘Intel Hex’.
- Файл в шестнадцатеричном формате отправляется в микросхему через AVRdude.
Пользуясь AVRdude напрямую, мы можем обойтись без этой части с кодом в IDE и, следовательно, от необходимости последовательного подключения по USB на нашей плате. Вообще-то можно выполнить все эти шаги вручную, но, честно говоря, первый шаг довольно сложен (или, по крайней мере, на нем легко допустить ошибки, которые проявятся только гораздо позже), поэтому, чтобы сэкономить время, скинем всю трудную работу на IDE.
Подробный режим
Если при нажатии кнопки Verify (Проверить) в IDE удерживать клавишу Shift, программа переключится в подробный режим, и на нижней панели будут появляться сообщения о происходящем.
Среди них будет информация о расположении временного шестнадцатеричного файла, скомпилированного из вашей программы – потому что в процессе проверки на самом деле выполняются все этапы сборки, кроме последнего: загрузки прошивки в схему. Файл будет сохранен в каталоге для временных файлов, обычно где-то в /tmp – более подробную информацию см. во врезке «Шаг за шагом».
Получив шестнадцатеричный файл, можно загрузить его в схему с помощью AVRdude. Если у вас есть переходная плата для USB или вы хотите, чтобы схема была Arduino-совместимой, также неплохо установить загрузчик. Оно всяко не повредит – немного места загрузчик отнимет, но позволит легко обменять микросхему с настоящим Arduino.
Прежде всего убедимся, что AVRdude работает и видит программатор и микросхему. Для этого нужно передать ему два параметра. Первый – название микросхемы, которую мы хотим запрограммировать. Программа поддерживает большой набор микроконтроллеров, но для Arduino вы скорее всего будете использовать m168 и m328p. Программатор – та программа, с помощью которой информация записывается в микросхему – например, usbtiny, arduino или любая другая, которая у вас есть (информацию о поддерживаемых устройствах см. на сайте AVRdude – http://savannah.nongnu.org/projects/avrdude).
$ avrdude -p m168 -c usbtiny
На экране должно появиться сообщение на несколько строк, что устройство готово. Если возникнет ошибка «устройство не найдено», скорее всего дело в правах доступа (попробуйте снова запустить команду от имени root). Ошибка «инициализация завершена неудачно» означает, что программатор работает нормально, но не может найти микросхему, которую нужно запрограммировать – проверьте подключение и расположение кабелей.
Загрузчики для различных микросхем, используемых в Arduino, хранятся в вашей системе вместе с ПО Arduino. В зависимости от используемого дистрибутива, они будут находиться в каталоге вроде /usr/share/arduino/hardware/arduino/bootloaders.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить Их имена соответствуют назначению, но, на мой взгляд, слишком длинны; вы можете сделать копии с именами покороче.
Энергонезависимые регистры
Когда все заработает, можно загрузить загрузчики и приложение. Первым делом зададим значения «предохранителей» (о них особо не беспокойтесь – это набор энергонезависимых регистров, управляющих специальными возможностями микросхем ATmega, в том числе защитой загрузчика):
$ avrdude -p m168 -c usbtiny -e -u -U lock:w:0x3f:m -U efuse:w:0x00:m -U hfuse:w:0xDD:m -U lfuse:w:0xFF:m
Параметр -e стирает информацию в микросхеме, а параметр -u позволяет задать значения «предохранителей». За параметром -U следуют наборы значений в формате: область памяти, индикатор операции – чтение/запись или проверка, загружаемое значение или файл и формат файла. Это немного нагляднее, когда мы загружаем один файл, например, наше приложение:
$ avrdude -p m168 -c usbtiny -v -U flash:w:Blink.cpp.hex:i
Также нужно загрузить загрузчик и установить блокировку его перезаписи при обновлении приложения в будущем:
$ avrdude -p m168 -c usbtiny -Vv -U flash:w:at168.hex -U lock:w:0x0f:m
Теперь у нас есть рабочая плата, которую можно программировать, добавлять к ней компоненты для расширения схемы перед ее превращением в печатную плату или просто продолжать эксперименты – два Arduino пригодятся вам для экспериментов по обмену данными, которыми мы займемся в следующий раз.