Как превратить Arduino в интернет-провайдера — Программирование ATmel ATtiny85
Опубликовано: 2017-06-13Короткие байты: иногда использование готовой платы Arduino в проекте является излишним или просто слишком большим. ATtiny85 — недорогой, но удивительно функциональный микроконтроллер, который может помочь уменьшить занимаемую площадь вашего проекта. Вот как вы можете запрограммировать ATtiny для использования в вашем проекте.
Платформа Arduino — прекрасный инструмент для обучения, но иногда поддерживаемые платы Arduino не совсем подходят для того, что вам нужно. Размер Arduino Uno (наиболее распространенная модель) составляет около 65 мм x 50 мм, и легко понять, что он может быть самым большим компонентом в некоторых проектах. Есть и другие платы, такие как Nano, которые намного меньше (моя подделка Nano имеет размеры 43 мм на 17 мм, в 4,5 раза меньше) , но даже в этом случае они иногда слишком велики. Что, если, скажем, вы хотите создать носимое устройство, может быть, это просто мигающий светодиод, который ваша собака будет носить ночью. Если учесть батарею и так далее, она может стать довольно большой.Покажите линию ATtiny, героя нашей проблемы. Тезка ATtiny очевидна. Вы можете найти его в корпусе DIP-8 (двойной рядный корпус — 8 контактов) площадью около 9 мм в квадрате. По своей природе ATtiny крошечный, но не только из-за его физических размеров. ATtiny85, который используется в этой статье, имеет только 8 КБ флэш-памяти программ, 512 байт ОЗУ и 512 байт EEPROM (постоянное хранилище вне памяти программ) .
Теперь проблема заключается в программировании одного из этих крошечных парней. Для этого есть несколько руководств в Интернете, но я обнаружил, что они немного неполные или не имеют инструкций.
Интернет-провайдер - системный программист
Системный программист (ISP) не так причудлив, как кажется. Как правило, ISP для чипа ATmel состоит из устройства с шестиконтактным разъемом USB-кабеля. Выводы ISP очень легко обнаружить на Arduino, они обычно расположены напротив разъема USB. Чипы ATmel предназначены для программирования через контакты ISP, но платформа Arduino реализовала на плате адаптер USB-последовательный порт, чтобы устранить необходимость в устройстве ISP. Несмотря на это, они оставили контакты ISP доступными на многих, если не на большинстве моделей.
Поскольку наши чипы ATtiny не имеют USB-последовательного устройства, которое есть у Arduino, требуется, чтобы они были запрограммированы с использованием интернет-провайдера. Устройства ATmel ISP довольно дорогие, по крайней мере, по сравнению со стоимостью самого Arduino, поэтому мы сэкономим деньги и время доставки, запрограммировав Arduino на работу в качестве интернет-провайдера.
Мы делаем это, открывая Arduino IDE и выбирая ArduinoISP из примеров скетчей.
Открыв файл скетча, вы увидите некоторую информацию об ожидаемом поведении кода. В этом файле мы должны внести быстрые изменения, чтобы наш интернет-провайдер правильно взаимодействовал с Arduino IDE.
В строке 220 мы находим функцию setup() .
недействительная установка () { SERIAL.begin(СКОРОСТЬ БОД); pinMode (LED_PMODE, ВЫХОД); импульс (LED_PMODE, 2); pinMode (LED_ERR, ВЫХОД); импульс (LED_ERR, 2); pinMode (LED_HB, ВЫХОД); импульс (LED_HB, 2); }
Нам нужно изменить BAUDRATE на 19200, чтобы строка читалась
СЕРИЙНЫЙ.НАЧАТЬ(19200);
Из того, что я прочитал, Arduino IDE получила обновление, которое нарушило совместимость с этой прошивкой ArduinoISP. Arduino и IDE пытались обмениваться данными с разной скоростью передачи данных, что привело к невозможности использования Arduino в качестве интернет-провайдера, несмотря на то, что прошивка прошивалась должным образом.
Библиотеки Attiny
Arduino IDE поддерживает множество различных микроконтроллеров и плат, но, к сожалению, серия ATtiny не включена. Это означает, что мы должны заручиться их поддержкой сами.
Способ, который сработал для меня, заключался в том, чтобы добавить приведенный ниже URL-адрес к URL-адресам менеджера дополнительных плат в настройках Arduino IDE,
перезапустите IDE, откройте диспетчер плат в разделе «Инструменты» -> «Плата» -> «Диспетчер плат», а затем найдите пакет ATtiny и установите его.
Как только это будет сделано, вы можете начать создавать схему для программирования вашего ATtiny.
Создание вашего интернет-провайдера
Есть несколько способов создать своего интернет-провайдера. Вы можете построить его на макетной плате без пайки, чтобы можно было повторно использовать детали, или вы можете сделать полупостоянное решение, спаяв все вместе, как это сделал я. Если вы тщательно спаиваете все это вместе, вы можете повторно использовать Arduino для другого проекта, если хотите.
Глядя на первые тридцать с лишним строк скетча ArduinoISP, мы можем найти следующую информацию о настройке Arduino для работы в качестве интернет-провайдера.
Контакт 10 | Чтобы сбросить PIN-код для Целевой микроконтроллер |
Контакт 11 | Мастер-выход SPI раб в |
Контакт 12 | Главный вход SPI раб из |
Контакт 13 | Последовательные часы SPI |
При желании вы можете подключить светодиоды к следующим контактам для индикации состояния
- Pin 9 — Heartbeat — указывает на то, что интернет-провайдер работает
- Контакт 8 — ошибка — указывает на то, что произошла ошибка
- Контакт 7 — программирование — указывает на активную связь с целью
Имейте в виду, что для этих светодиодов потребуются резисторы.
Здесь мы можем увидеть распиновку ATtiny85 и соответствующие соединения, которые нам нужно сделать обратно к Arduino. Это довольно грубый рисунок, но я пометил контакты на ATtiny85 для удобства. Следует отметить, однако, что контакты не имеют адресов 1,2,3..8, как на схеме, они обозначены в Arduino IDE, как они были помечены в тексте по диагонали.
Это гораздо более подробная схема различных соединений. Все светодиоды являются необязательными, но они полезны для устранения неполадок, в дополнение к трем светодиодам состояния, которые были рекомендованы в файле скетча ArduinoISP, есть один, который просто подключается от 5 В к земле (с резистором, конечно) , и затем есть один, подключенный ко второму контакту (контакт 3 в среде IDE) для тестирования ATtiny с помощью мигающего теста. Обратите внимание на конденсатор, который соединяет контакт сброса с землей, он необходим для того, чтобы Arduino функционировал как интернет-провайдер.
Это Arduino ISP, который я создал для микроконтроллеров ATtiny. Вы можете видеть, что я использовал разъем DIP-8 для удержания ATtiny во время его программирования. Я также оставил достаточно места справа для установки разъема DIP-28 для программирования микросхем ATmega, таких как ATmega328P. Обновление будет очень простым, требуется только подключение необходимых контактов для чипов Atmega, как у нас с ATtiny.
После того, как вы соберете свой Arduino ISP, вам наверняка захочется его опробовать. Обязательно выберите соответствующие настройки для программирования через подключенный Arduino, а не для программирования самого Arduino.
Для платы выбираем вариант ATiny 25/45/85, затем выбираем ATtiny85 в выборе процессора, и, наконец, выбираем Arduino как ISP у программистов. Это сообщает IDE все, что ей нужно знать о целевой системе, в том числе о том, как она будет с ней взаимодействовать. Теперь мы готовы открыть скетч Blink (или напечатать его самостоятельно, если вы настолько хардкорны) и попробовать его, только не забудьте переключить контакт, используемый для мигания светодиода, на тот, который вы использовали в своем схема, это контакт 3, если вы используете схему, которую я предоставил. Наконец, мы компилируем и загружаем скетч, нажав Sketch -> Upload Using Programmer.
недействительная установка () { pinMode(3, ВЫХОД); } недействительный цикл () { цифровая запись (3, ВЫСОКИЙ); задержка(1000); цифровая запись (3, НИЗКИЙ); задержка(1000); }
В общей сложности мой Arduino ISP, спаянный вместе, вероятно, стоит около трех или четырех долларов. Чипы ATtiny также могут быть очень недорогими, обычно всего около доллара за штуку. Я рекомендую покупать сокеты DIP-8, если вы планируете использовать чипы ATtiny в проектах, потому что вам может понадобиться обновить какой-то код или перепрофилировать чип. Припаять микросхему на место можно, но вы можете легко повредить ее, особенно при многократном воздействии, как в случае обновления кода несколько раз.
Кто-нибудь еще делал что-то подобное? Хотели бы вы увидеть больше материалов для Arduino? Дайте нам знать в комментариях ниже.
Читайте также: Raspberry Pi или Arduino — какая плата лучше для новичка?