Съдържание:

Самостоятелен Arduino 3.3V W / Външен 8 MHz часовник, програмиран от Arduino Uno чрез ICSP / ISP (със сериен мониторинг!): 4 стъпки
Самостоятелен Arduino 3.3V W / Външен 8 MHz часовник, програмиран от Arduino Uno чрез ICSP / ISP (със сериен мониторинг!): 4 стъпки

Видео: Самостоятелен Arduino 3.3V W / Външен 8 MHz часовник, програмиран от Arduino Uno чрез ICSP / ISP (със сериен мониторинг!): 4 стъпки

Видео: Самостоятелен Arduino 3.3V W / Външен 8 MHz часовник, програмиран от Arduino Uno чрез ICSP / ISP (със сериен мониторинг!): 4 стъпки
Видео: Изучаем микроконтроллеры с электронным набором ЙОДО 2024, Ноември
Anonim
Самостоятелен Arduino 3.3V W / Външен 8 MHz часовник, програмиран от Arduino Uno чрез ICSP / ISP (със сериен мониторинг!)
Самостоятелен Arduino 3.3V W / Външен 8 MHz часовник, програмиран от Arduino Uno чрез ICSP / ISP (със сериен мониторинг!)
Самостоятелен Arduino 3.3V W / Външен 8 MHz часовник, програмиран от Arduino Uno чрез ICSP / ISP (със сериен мониторинг!)
Самостоятелен Arduino 3.3V W / Външен 8 MHz часовник, програмиран от Arduino Uno чрез ICSP / ISP (със сериен мониторинг!)

Цели:

  • За изграждане на самостоятелен Arduino, който работи на 3.3V от 8 MHz външен часовник.
  • За да го програмирате чрез ISP (известен също като ICSP, вградено серийно програмиране) от Arduino Uno (работи на 5V)

    За да редактирате файла за зареждане и да запишете буутлоудъра (чрез ISP)

  • За да можете да четете серийна информация от самостоятелния Arduino чрез FTDI кабел

    За да можете да четете серийна информация от стандартния Arduino без FTDI кабел

Преамбюл:

Опитвах се да изградя моя самостоятелен проект, но не видях изчерпателни ръководства за стартиране, програмиране и наблюдение на самостоятелен Arduino - особено такъв, работещ с 8Mhz външен часовник и 3.3V и програмиран от 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 MHz часовника с 8 Mhz часовник.
  • Добавете 0,1 uF капачки между: VCC и Gnd (от двете страни) VRef и Gnd.

    • Нямам тези включени в снимката, но ги имам в моите проекти!
    • Знам, че това е 16 MHz осцилатор на снимката. Направих снимката, преди да разбера всичко, което направих в ръководството!

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

Общи съвети за отстраняване на неизправности

  • Уверете се, че сте задали високо ниво чрез 10k резистор от VCC към пин 1 на ATMEGA. Ако щифтът е заземен или плаващ, той няма да работи.
  • Проверете отново дали сте поставили правилно проводниците и осцилатора.
  • Уверете се, че използвате 8pF кондензатори за 8 MHz осцилатор. Иначе няма да работи.
  • Уверете се, че устройството е захранвано.

Стъпка 2: Окабеляване на ISP

Кабелите на интернет доставчика
Кабелите на интернет доставчика
Кабелите на интернет доставчика
Кабелите на интернет доставчика

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

Ще следвате това ръководство тук с малка, но много важна стъпка.

Причината, поради която не можете просто да следвате ръководството, е, че пропускате важна част: не можете да програмирате 3.3V устройство директно от 5V връзките. (Поне не можех: нямаше да работи, докато не направя това). Трябва да вмъкнете превключвател на логическо ниво, който измества 5V сигналите от UNO към 3.3V самостоятелен Arduino.

Ако нямате платка за превключване на логическо ниво, можете да я направите с помощта на резистори. Всичко, което в действителност е превключвател на логическо ниво (стига да се измествате надолу) е делител на напрежение. Ще ви трябват 6 същите резистора, нищо твърде високо или твърде ниско. Използвах 220 ома резистори, но съм сигурен, че дори 10k резистори ще работят.

За SCK (цифров щифт 13) и MOSI (цифров щифт 11) използвайте делител на напрежение, за да намалите напрежението с една трета. По същество ще имате един Uno SCK и MOSI, след това резистор (220 ома), след това SCK и MOSI, свързани към самостоятелния Arduino и 2 резистора (общо 440 ома) към земята.

Така че, прочетете ръководството, свързано в началото на този раздел, но включете разделители на напрежение между SCK и MOSI., 18, 17 и 1 на самостоятелния Arduino!

Общи съвети за отстраняване на неизправности

  • ПРОВЕРЕТЕ СВЪРЗВАНЕТО

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

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

Стъпка 3: Редактирайте файла за зареждане, запишете устройството за зареждане и качете вашата скица

Редактирайте файла за зареждане, запишете устройството за зареждане и качете вашата скица
Редактирайте файла за зареждане, запишете устройството за зареждане и качете вашата скица
Редактирайте файла на Bootloader, запишете Bootloader и качете вашата скица
Редактирайте файла на Bootloader, запишете Bootloader и качете вашата скица

3) Редактирайте файла за зареждане (board.txt) и запишете буутлоудъра в самостоятелния Arduino. Качете вашата скица

Редактиране на файла за зареждане

За да стартирате самостоятелния Arduino, ще трябва да редактирате настройките на предпазителя за изгаряне на буутлоудъра. В противен случай ще можете да запишете буутлоудър на него, но няма да можете да стартирате никакви скици.

Можете напълно да премахнете зачервяването, но не бих го препоръчал. Вместо това ще го понижим от 2.7V (това, което се появи на чипа ми по подразбиране) и ще го заменим с 1.8V. В крайна сметка обаче можете да изберете какви настройки на затъмнение искате, като използвате калкулатора на предпазителите тук.

Файлът на дъските ми беше на следното място:

C: / Program Files (x86) Arduino / hardware / arduino / avr

Възможно е обаче да имате повече от един файл files.txt във вашата хардуерна папка, различен от /arudino /. Ще редактирате файла board.txt в / arduino / местоположението, защото ще модифицирате раздела ATMEGA328p (3.3V, 8 MHz).

Може да загубите редактирания файл Board.txt, ако преинсталирате или актуализирате Arduino IDE (според тази публикация). Това означава, че ако актуализирате Arduino IDE, ще трябва да промените тези настройки отново, ако искате да създадете друг от същия самостоятелен Arduino.

Във файла board.txt превъртете надолу или потърсете „Pro Mini“. Разделът е озаглавен "pro.name = Arduino Pro или Pro Mini". Превъртете надолу до подраздел „pro.menu.cpu.8MHzatmega328 = ATmega328P (3.3V, 8 MHz)“.

Потърсете реда, който казва "pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = _"

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

Запази и излез.

Записване на Bootloader

След като направите това, можете да следвате раздела „Инструкции“в ръководството на ISP от стъпки 1 до 5.

Някои неща за изясняване:

  • Когато качвате скицата „Arduino като ISP“, трябва да се уверите, че сте избрали правилния COM порт и процесор.

    В този случай това означава, че сте избрали COM порта на вашия Arduino в Tools-> Port: COM X (Arduino Uno) и дъската е Arduio Uno

  • Изберете правилния програмист: под Инструменти-> Програмист-> Arduino като ISP.

    НЕ ArduinoISP или ArduinoISP.org

  • Преди да запишете буутлодера, сменете платката "Pro или Pro Mini" и Процесора на "ATMEGA328p (3.3V, 8 MHz)".

    Няма да видите секцията за процесор, докато не изберете правилния тип платка

Запишете буутлоудъра на самостоятелния Arduino ПРЕДИ да опитате да напишете скици върху него.

Качване на скицата

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

Когато качвате скицата си, уверете се, че щракнете върху Инструменти -> Качване с помощта на програмист ИЛИ щракнете върху Ctrl+Shift+U. Можете също да задържите Shift и да щракнете върху иконата със стрелка, но не щракнете върху иконата със стрелка, без да задържите shift.

Общи съвети за отстраняване на неизправности

  • Включете подробния изход за отстраняване на неизправности.
  • „Сигнализаторът на устройството е 0!“[Това е много вероятно да се случи.]

    • вижте раздела за окабеляване на интернет доставчика. Или сте свързали неправилно самостоятелния Arduino или той не се включва.
    • Уверете се, че сте избрали правилния COM порт и платка / процесор. Когато записвате буутлоудъра, ТРЯБВА да се уверите, че записвате Pro Mini 3.3V 8 MHz буутлоудъра върху него или предпазителите няма да се настроят правилно.
  • "Редактирах файла.txt, но не виждам редакциите"

    Уверете се, че сте редактирали правилния файл files.txt. Опитайте да актуализирате Arduino IDE, ако редакциите не работят, или премахнете временно други папки във вашата / хардуерна / папка

  • „Не мога да намеря професионалната секция на board.txt!“

    Не търсите в правилния файл files.txt. Проверете папката Arduino // hardware/arduino/

Стъпка 4: Серийна комуникация

4) Наблюдавайте самостоятелното устройство чрез серийна комуникация

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

Ако нямате FTDI кабел

След като сте изгорили буутлоудъра и сте написали желаната програма, можете (много внимателно и като си спомните в коя ориентация се връща) да премахнете ATMEGA328 DIP чипа от Arduino Uno. Препоръчвам да използвате плоска глава за това.

Можете да свържете самостоятелния RX на Arduino към RX на Uno и TX към TX. Да, обикновено е обратното, но можете да мислите, че Uno „препраща“информацията към серийния монитор на IDE. Ето защо в този случай не свързвате RX към TX и TX ro RX. Когато изпълнявате програмата си, уверете се, че сте избрали COM порта на Arduino Uno и отворете сериен монтор. Ще можете да видите серийния изход на самостоятелния Arduino.

(Това решение е кредитирано с Robin2 тук.)

Ако имате FTDI кабел / платка

(Използвам FTDI платката на Sparkfun, която преобразувах в 3.3V с помощта на подложката за спойка на гърба)

Просто свържете GND на пробивната платка към самостоятелната земя на Arduino и свържете RX на пробивната платка към TX на Arduino и TX към RX. (Ако сте само сериен мониторинг и не пишете нищо обратно, можете просто да свържете RX на макетната платка към Arduino TX).

Имайте предвид, че на този етап имате възможност да захранвате самостоятелния Arduino чрез кабела Uno ИЛИ FTDI. Не свързвайте двата източника на захранване едновременно! Имайте предвид, че ще трябва да промените COM порта, тъй като той ще бъде различен от COM порта на Arduino Uno.

Общи съвети за отстраняване на неизправности

  • - Не виждам нищо!

    • Проверете дали сте активирали правилния COM порт.
    • Проверете дали имате най -новите драйвери за FTDI.
    • Уверете се, че заземяването е свързано.
  • "Всичко, което виждам, е извеждането на боклука в серийния монитор!"

    • Получавате нещо, което е добър знак.
    • Проверете обаче напрежението на платката FTDI.
    • Самостоятелният Arduino извежда 3.3V на своя TX и платката FTDI може да не го вземе, ако очаква 5v.
    • Проверете скоростта на предаване.
    • Уверете се, че сте свързани със земята и само един източник на захранване! (Т.е. не захранвайте самостоятелния Arduino от Uno И вашата FTDI платка.

Препоръчано: