Оглавление:

Автономный Arduino 3,3 В с внешней тактовой частотой 8 МГц, программируемый с Arduino Uno через ICSP / ISP (с последовательным мониторингом!): 4 шага
Автономный Arduino 3,3 В с внешней тактовой частотой 8 МГц, программируемый с Arduino Uno через ICSP / ISP (с последовательным мониторингом!): 4 шага
Anonim
Автономный Arduino 3,3 В с внешней тактовой частотой 8 МГц, программируемый с Arduino Uno через ICSP / ISP (с последовательным мониторингом!)
Автономный Arduino 3,3 В с внешней тактовой частотой 8 МГц, программируемый с Arduino Uno через ICSP / ISP (с последовательным мониторингом!)
Автономный Arduino 3,3 В с внешней тактовой частотой 8 МГц, программируемый с Arduino Uno через ICSP / ISP (с последовательным мониторингом!)
Автономный Arduino 3,3 В с внешней тактовой частотой 8 МГц, программируемый с Arduino Uno через ICSP / ISP (с последовательным мониторингом!)

Цели:

  • Чтобы построить автономный Arduino, который работает от 3,3 В от внешней тактовой частоты 8 МГц.
  • Чтобы запрограммировать его через ISP (также известный как ICSP, внутрисхемное последовательное программирование) от Arduino Uno (работающего при 5 В)

    Чтобы отредактировать файл загрузчика и записать загрузчик (через ISP)

  • Чтобы иметь возможность читать серийную информацию из автономного Arduino через кабель FTDI

    Чтобы иметь возможность читать серийную информацию из автономного Arduino без кабеля FTDI

Преамбула:

Я пытался создать свой автономный проект, но не видел каких-либо исчерпывающих руководств по запуску, программированию и мониторингу автономной Arduino, особенно той, которая работает от внешних часов 8 МГц и напряжением 3,3 В и запрограммирована Arduino UNO. Я собрал по кусочкам несколько отдельных руководств и попытался указать, откуда я получил информацию, чтобы отдать должное, где следует отдать должное. Это руководство является результатом того, что я много дней искал решения и находил их части в то время, когда я строил свой собственный проект. Кроме того, я связал несколько полезных продуктов, которые могут пригодиться не потому, что я связан с каким-либо из компаний, но потому, что это уместно включить конкретные элементы, о которых я говорю.

Общие вопросы перед тем, как мы начнем:

Зачем нужно программировать с ISP и контролировать через FTDI? Почему нельзя просто запрограммировать через FTDI?

Нам придется изменить настройки предохранителя, записав новый загрузчик, а вы не можете сделать это через последовательную связь. Вы должны записать загрузчик через ISP. Это также полезно для тех, у кого нет предварительно загруженного чипа ATMEGA328.

Почему бы мне просто не использовать кабель ISP для последовательного мониторинга, как этот?

Возможно, как и у меня, у вас просто случайно нет его, и вместо того, чтобы ждать его отправки, вы предпочитаете использовать то, что у вас есть! У меня есть кабель FTDI (хотя в конечном итоге вы обнаружите, что он вам даже не нужен: он просто облегчает вашу жизнь).

Разве мне не нужен переключатель логического уровня с Uno на автономную Arduino?

Да, но я покажу вам, как сделать его самостоятельно. Как и кабель ISP, у меня его нет.

Я хочу запустить его от внешнего источника питания. Как я могу это сделать?

Существует множество руководств, которые показывают, как запустить автономную Arduino от батареи. Напишу как это сделал и ссылку сюда [вставлю позже].

ГИД

Шаг 1. Создание автономной Arduino

Сборка автономной Arduino
Сборка автономной Arduino
Сборка автономной Arduino
Сборка автономной Arduino

1) Создайте автономную Arduino по этой ссылке. Единственная необходимая вам часть руководства - это «Основы ATMEGA8 / 168/328».

  • вы можете запитать автономный Arduino от 3.3V от Arduino Uno. (Вы можете пропустить первый раздел руководства под названием «Добавление цепи для источника питания».
  • Замените тактовую частоту 16 МГц на тактовую частоту 8 МГц.
  • Добавьте конденсаторы 0,1 мкФ между: VCC и Gnd (с обеих сторон), VRef и Gnd.

    • У меня их нет на картинке, но они есть в моих проектах!
    • Я знаю, что на фото это генератор 16 МГц. Я сделал снимок до того, как разобрался во всем, что делал в руководстве!

Источник изображения распиновки ATMEGA328p здесь.

Общие советы по устранению неполадок

  • Убедитесь, что вы сбросили высокий уровень через резистор 10 кОм от VCC к контакту 1 ATMEGA. Если штифт заземлен или плавающий, он не будет работать.
  • Дважды проверьте, правильно ли вы вставили провода и генератор.
  • Убедитесь, что вы используете конденсаторы 22 пФ для генератора 8 МГц. Иначе не пойдет.
  • Убедитесь, что на устройство подано питание.

Шаг 2. Подключение к Интернет-провайдеру

Интернет-провайдер
Интернет-провайдер
Интернет-провайдер
Интернет-провайдер

2) Создайте часть ISP

Следуя этому руководству, вы сделаете небольшой, но очень важный шаг.

Причина, по которой вы не можете просто следовать руководству, заключается в том, что вам не хватает важной части: вы не можете запрограммировать устройство на 3,3 В напрямую с подключений 5 В. (По крайней мере, я не мог: это не сработает, пока я не сделаю это). Вам нужно вставить переключатель логического уровня, который сдвигает сигналы 5 В с UNO на 3,3 В автономную Arduino.

Если у вас нет платы переключения логического уровня, вы можете сделать ее с помощью резисторов. Все, что на самом деле представляет собой переключатель логического уровня (до тех пор, пока вы переключаетесь вниз), - это делитель напряжения. Вам понадобится 6 одинаковых резисторов, ничего слишком высокого или слишком низкого. Я использовал резисторы 220 Ом, но уверен, что даже резисторы на 10 кОм подойдут.

Для SCK (цифровой контакт 13) и MOSI (цифровой контакт 11) используйте делитель напряжения, чтобы уменьшить напряжение на одну треть. По сути, у вас будет один Uno SCK и MOSI, затем резистор (220 Ом), затем SCK и MOSI, подключенные к автономному Arduino и 2 резистора (всего 440 Ом) на землю.

Итак, прочтите руководство, указанное в начале этого раздела, но включите делители напряжения между SCK и MOSI. Помните, что SCK, MISO, MOSI и RESET - это контакты 13, 12, 11 и 10 на Uno, но это контакты 19., 18, 17 и 1 на автономной Arduino!

Общие советы по устранению неполадок

  • ПРОВЕРЬТЕ ПРОВОДКУ

    • Если вы получаете сигнатуру устройства из всех 0 при попытке написать программу, то ваша проводка почти наверняка отключена или автономный Arduino не получает питание.
    • Также убедитесь, что у вас есть провод сброса с 10 на Uno до 1 на автономном Arduino.
  • ПРОВЕРЬТЕ ДЕЛИТЕЛИ НАПРЯЖЕНИЯ

    Убедитесь, что у вас есть делители напряжения с соотношением 1: 2 (сторона высокого напряжения: сторона низкого уровня) для резисторов как для SCK, так и для MOSI. Например. резистор 220 на стороне + 5 В, а затем 2 резистора 220 Ом (всего 440 Ом) к земле с сигналом к автономному Arduino посередине

Шаг 3. Отредактируйте файл загрузчика, запишите загрузчик и загрузите свой скетч

Отредактируйте файл загрузчика, запишите загрузчик и загрузите свой скетч
Отредактируйте файл загрузчика, запишите загрузчик и загрузите свой скетч
Отредактируйте файл загрузчика, запишите загрузчик и загрузите свой скетч
Отредактируйте файл загрузчика, запишите загрузчик и загрузите свой скетч

3) Отредактируйте файл загрузчика (boards.txt) и запишите загрузчик на автономную Arduino. Загрузите свой скетч

Редактирование файла загрузчика

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

Вы можете полностью удалить обнаружение потемнения, но я бы не рекомендовал это делать. Вместо этого мы собираемся снизить его с 2,7 В (что было на моем чипе по умолчанию) и заменить его на 1,8 В. В конечном итоге, однако, вы можете выбрать, какие настройки отключения вы хотите, используя калькулятор предохранителей здесь.

Мой файл досок находился в следующем месте:

C: / Program Files (x86) Arduino / оборудование / arduino / avr

Однако у вас может быть более одного файлаboards.txt в папке вашего оборудования, кроме / arudino /. Вы собираетесь редактировать файлboards.txt в / arduino /, потому что вы собираетесь изменять раздел ATMEGA328p (3,3 В, 8 МГц).

Вы можете потерять отредактированный файлboards.txt, если переустановите или обновите Arduino IDE (согласно этому сообщению). Это означает, что если вы обновите Arduino IDE, вам придется снова изменить эти настройки, если вы хотите создать еще один такой же автономный Arduino.

В файлеboards.txt прокрутите вниз или найдите «Pro Mini». Раздел называется «pro.name = Arduino Pro или Pro Mini». Прокрутите вниз до подраздела «pro.menu.cpu.8MHzatmega328 = ATmega328P (3,3 В, 8 МГц)».

Найдите строку с надписью "pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = _"

Измените настройки на xFE. (pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = 0xFE).

Сохранить и выйти.

Запись загрузчика

После того, как вы это сделаете, вы можете выполнить шаги с 1 по 5 в разделе «Инструкции» в руководстве ISP.

Некоторые вещи, которые нужно уточнить:

  • Когда вы загружаете скетч «Arduino as ISP», вам необходимо убедиться, что у вас выбран правильный COM-порт и процессор.

    В этом случае это означает, что вы выбрали COM-порт вашего Arduino в Tools-> Port: COM X (Arduino Uno), а плата - Arduio Uno

  • Выберите правильный программатор: в Инструменты-> Программист-> Arduino как ISP.

    НЕ ArduinoISP или ArduinoISP.org

  • Перед записью загрузчика замените плату «Pro или Pro Mini» и процессор на «ATMEGA328p (3,3 В, 8 МГц)».

    Вы не увидите раздел процессора, пока не выберете правильный тип платы

Запишите загрузчик на автономный Arduino ПЕРЕД тем, как вы попытаетесь написать на нем скетчи.

Загрузка скетча

Это очень важно. Теперь вы можете программировать Arduino: Uno и Standalone. Если вы не выполняете загрузку на правильное устройство, вам придется повторить описанный выше раздел и переписать Arduino как программу ISP на Uno.

Когда вы загружаете свой эскиз, убедитесь, что вы выбрали Инструменты -> Загрузить с помощью программатора ИЛИ нажмите Ctrl + Shift + U. Вы также можете удерживать Shift и щелкнуть значок стрелки, но не щелкайте значок стрелки, не удерживая Shift.

Общие советы по устранению неполадок

  • Включите подробный вывод для устранения неполадок.
  • "Подпись устройства - все нули!" [Это очень вероятно.]

    • см. раздел «Подключение ISP». Либо вы неправильно подключили автономный Arduino, либо он не включается.
    • Убедитесь, что вы выбрали правильный COM-порт и плату / процессор. Когда вы записываете загрузчик, вы ДОЛЖНЫ убедиться, что вы записываете на него загрузчик Pro Mini 3.3V 8 MHz, иначе предохранители не установятся правильно.
  • «Я редактировал файлboards.txt, но не вижу изменений»

    Убедитесь, что вы отредактировали правильный файлboards.txt. Попробуйте обновить Arduino IDE, если правки не работают, или временно удалите другие папки в папке / hardware /

  • "Я не могу найти раздел pro mini в файлеboards.txt!"

    Вы не смотрите в нужный файлboards.txt. Проверьте папку Arduino // hardware / arduino /

Шаг 4: Последовательная связь

4) Мониторинг автономного устройства через последовательную связь

Вы действительно можете сделать это двумя способами, поэтому, если у вас даже нет кабеля FTDI / коммутационной платы, это еще не конец света. И помните, скетч, который вы загрузили в автономную Arduino, должен содержать операторы Serial.print, которые вы можете прочитать: если вы не написали его в программе, вы ничего не увидите!

Если у вас нет кабеля FTDI

После того, как вы записали загрузчик и написали нужную программу, вы можете (очень осторожно и запомнив, в какой ориентации он возвращается) удалить DIP-чип ATMEGA328 из Arduino Uno. Я рекомендую использовать для этого плоскую головку.

Вы можете подключить автономный RX Arduino к RX Uno и TX к TX. Да, обычно все наоборот, но вы можете думать о Uno как о «пересылке» информации на последовательный монитор IDE. Вот почему вы не подключаете RX к TX и TX ro RX в этом случае. Когда вы запускаете свою программу, убедитесь, что у вас выбран COM-порт Arduino Uno, и откройте последовательный монитор. Вы сможете увидеть последовательный вывод автономного Arduino.

(Это решение предоставлено Robin2 здесь.)

Если у вас есть кабель / плата FTDI

(Я использую плату FTDI от Sparkfun, которую я преобразовал в 3,3 В с помощью паяльной площадки на задней панели)

Просто подключите GND коммутационной платы к земле автономного Arduino и подключите RX коммутационной платы к TX Arduino, а TX к RX. (Если вы ПРОСТО отслеживаете последовательный порт и ничего не записываете в ответ, вы можете просто подключить RX макета к Arduino TX).

Имейте в виду, что на этом этапе у вас есть возможность подключить автономный Arduino через Uno ИЛИ через кабель FTDI. Не подключайте оба источника питания одновременно! Обратите внимание, что вам придется изменить COM-порт, поскольку он будет отличаться от COM-порта Arduino Uno.

Общие советы по устранению неполадок

  • "Я ничего не вижу!"

    • Убедитесь, что у вас включен правильный COM-порт.
    • Проверьте, установлены ли у вас самые последние драйверы FTDI.
    • УБЕДИТЕСЬ, ЧТО ЗЕМЛЯ ПОДКЛЮЧЕНА.
  • «Все, что я вижу, это вывод мусора на последовательном мониторе!»

    • Вы получаете что-то, что является хорошим знаком.
    • Однако проверьте напряжение на плате FTDI.
    • Автономный Arduino выдает 3,3 В на своем TX, и плата FTDI может не поднять его, если ожидает 5 В.
    • Проверьте скорость передачи.
    • Убедитесь, что у вас подключено заземление и подключен только один источник питания! (То есть не включайте автономный Arduino от Uno И вашей платы FTDI.

Рекомендуемые: