Логотип

Программирование микроконтроллеров. Урок 1 (Вводная часть)

Урок 1 (Вводная часть)

Визитной карточной современного общества является человек склонивший голову над освещающим его бледное лицо смартфоном. Жуткая картина. Но, что поделать если электронные гаджеты, де факто, являются неотъемлемой частью нашей повседневной жизни. О компьютерах размером с ладонь, еще лет сорок назад мечтали только продвинутые футурологи, а сейчас каждый школьник расскажет вам о том, что вот-вот телефоны начнут вживлять прямо в сосцевидный отросток.

Но все гаджеты, какими бы изощренными они не были, требуют для своей работы программное обеспечение. И чем дальше прогресс уходит в сторону автоматизации всего и вся, тем больше потребуется людей, которые должны будут ежедневно «выдавать на-гора» программный код и обслуживать электронное оборудование.

Безусловно, можно прожить всю жизнь параллельно. Заниматься искусством, пользоваться последней версией iPhone и предпочитать розовые тона в одежде. Но для тех, кто хочет быть в фарватере цифрового мейнстрима, необходимо уже с молодых ногтей приучать себя к мышлению в стиле {do while; if else}.

И для этого накрыта большая поляна. Тут тебе и LEGO со своими Education и Mindstorms EV3, и Arduino, и Амперка с матрешками, и еще много других не менее интересных конструкторов. Аж глаза разбегаются. В интернете полно разных образовательных каналов и литературы. Можно также записаться на тематические курсы или кружки... И вроде бы все хорошо грызи гранит программирования и робототехники. Ан нет. Не везде есть кружки технической направленности, не каждый может позволить себе выложить кучу денег за начальный комплект Mindstorms. А ведь есть еще «дети», которым в радиокружок идти как-то уже не по годам. Что-им-то делать?

Намучившись в своё время с самостоятельным изучением контроллеров и посмотрев на счастливые лица ребят, которые попали на Робофест, я решил попробовать сделать небольшой курс по изучению основ программирования микроконтроллеров.

Я, к сожалению, не являюсь профессионалом не в программировании, не в электронике. И все же, имея за плечами опыт самостоятельного изучения предмета, я хотел бы поделится им с другими. И смею надеется на то, что курс будет полезен и понятен всем, и тем, кто делает первые шаги открывая для себя мир радио, и тем, кто, являясь радиолюбителем со стажем намерен приобщиться к цифровым устройствам.

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

Я планирую составить курс приблизительно из тридцати занятий. Первое вводное, затем два или три урока будет посвящено вопросам подключения микроконтроллера к компьютеру, а также необходимому программному обеспечению. Еще около двенадцати уроков будут посвящены основам программирования на языке С, радиотехнике и составлению алгоритмов. Остальные, изучению «железа» на примере микроконтроллера ATmega-8 от компании Atmel. Каждое занятие будет базироваться на обязательной практической части, которая предусматривает реальную сборку схемы и тестирование программ. Ни каких эмуляторов, только хардкор!

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

Т.к. в основе, применяемой мной методики лежат практические занятия, то и материал будет подаваться не так как он изложен в учебниках, а в порядке получения практического опыта. Более того теоретические знания мы будем черпать не из одного источника (учебника), как это делается в учебных заведениях, а сразу из нескольких при этом я буду просить вас на каждом уроке читать об одном и том же, в изложении разных авторов. Если же что-то надо будет посмотреть в интернете, то прошу не останавливаться на прочтении только одной найденной статьи, а почитать по интересующей теме как минимум две или три разные публикации. Это необходимо для того чтобы не только закрепить полученный материал, но и составить более полную картину изучаемой темы. Потому как каждый автор имеет свой взгляд на интересующий нас предмет и по-своему излагает свои мысли.

Если хотите изучить тему глубоко, то читать придется много. К сожалению, люди еще не придумали ни одного более действенного способа качественно передавать свои знания кроме как через книги и практический опыт. И да. Если при чтении этих страниц или книг вам встретятся незнакомые термины, то не стесняемся лезем в сеть за разъяснениями. Белых пятен на карте ваших знаний быть не должно.

Теперь, давайте поговорим о том, какое оборудование и материалы нам понадобятся для дальнейшей работы и как увлекательно мы будем проводить время.

Начнем с компьютера, на котором вы будете писать программы для МК. Т.к. мы ставим цель изучить программирование с минимальными финансовыми затратами, то нам вполне подойдет старенький стационарный компьютер или ноутбук. Главное, чтобы на нем был установлен Windows_XP, имелся LPT порт, и было хотя бы пару гигабайт для наших проектов.

Новомодный компьютер, если в нем есть LPT, кончено тоже подойдет. Но я не советую его использовать для обучения потому как если вы что-то перепутаете и LPT порт сгорит. Будет очень обидно.

Программное обеспечение, которым мы будем пользоваться, состоит из двух программ. Первая это последовательный программатор - PonyProg 2000, а вторая среда разработки CodeVisionAVR Evaluation. Обе программы бесплатны, компактны и не требовательны к ресурсам компьютера. CV_AVR вообще-то платная программа, но CodeVisionAVR Evaluation имея ряд незначительных ограничений распространяется бесплатно. Эти программы можно скачать с сайтов разработчиков или в других местах.

Для выполнения практических заданий необходимо будет обзавестись минимальным набором инструментов (плоскогубцы 120мм, бокорезы 120мм, пинцет 150мм, шило, ножницы тупоконечные прямые 140мм, нож-скальпель, небольшой плоский напильник для заточки жала паяльника и паяльник (20…30 Ватт) с медным жалом и подставкой), расходными материалами (сосновая канифоль, припой ПОС-61 трубчатый с канифолью диаметром 1…2 мм) и мультиметром. Прибор может быть любой. Главное, чтобы в нем были три основные функции: омметр, вольтметр и амперметр. Помимо инструментов для занятия вам понадобятся радиодетали и макетная плата со стабилизатором на 5 и 3,3 вольта, а также соединительные провода.

Макетная плата

Макетная плата

Этот комплект, в который входит стабилизатор, макетная плата и соединительные провода я приобрел на Али за 250 рублей, а все радиодетали купил на радиорынке. Перечисленных ниже радиокомпонентов должно хватить для первых пятнадцати занятий.

1. Микроконтроллер Atmega-8А - 1 шт. Микроконтроллер должен быть строго в DIP корпусе.
   2. Резисторы выводные мощностью 0.125 Вт:
      100 Ом - 10шт.
      300 Ом - 10шт.
      500 Ом - 10 шт.
      1 кОм -10 шт.
      10 кОм. - 10 шт.
      100 кОм - 10 шт.
   3. Конденсаторы керамические выводные: 100 нф - 10шт.
   4. Конденсаторы электролитические:1000 мкф х 10 вольт - 2шт.
   5. Светодиоды(можно приобрести и аналоги):
      L-1154GT зеленый 3мм - 10шт.
      L-1154ID красный 3мм - 10 шт.
      L-1154YD желтый 3мм - 10шт.
   6. Кнопки тактоваые (tc-3121) - 5 шт.
   7. Диод FR-101 - 1 шт. По большому счету подойдет любой диод на 50 вольт или больше, мощностью 1…2 ампера.
   8. Реле HLS-14F1L-DC5V-C - 1 шт. Подойдет любое малогабаритное реле с управляющей катушкой на 5 вольт.
   9. Транзисторы:
      КТ814 - 3 шт.
      КТ815 - 5 шт.
   10. Микросхема дешифратор для управления индикаторами (к155 ид1) - 1 шт.
   11. Индикаторы светодиодные:
      CPD-05212SR1/A - 1 шт.
      E30361-1-K-8-W - 1шт.
   12. Энкодер с кнопкой (PEC11R-4215K-S0012) или аналогичный - 1 шт.
   13. LCD дисплей Nokia 5110 - 1шт. Такой дисплей на Али стоит 130 руб. шт. с доставкой.


Всё сразу можно не покупать. На первых парах достаточно будет приобрести макетную плату и детали с 1 по 9 позицию. Затем все остальное. Если вдруг, я что-то упустил, то в конце каждого урока буду писать о том, какие детали нам понадобятся на следующем занятии.

Также для изготовления программатора необходимо приобрести:

  Разъем DB-25M с корпусом - 1шт.
     Резисторы 160 Ом - 4 шт.
     Кабель плоский, FRC-9-28 1,27мм, 9 жил - 1 метр,
     разъем одноштырьковый BDS1071-1x1, - 5шт.
     Вилка штыревая 2.54мм 1x10 прямая тип1 DS1021-1x10 -1 шт.
     Термоусадочный кембрик 2....3 мм. – 200 мм.
     Термоусадочный кембрик 8...10 мм. – 100 мм.


Макетная плата

Макетная плата

Изготовлением программатора мы займемся на следующим занятии, а пока необходимо почитать об инструментах, организации рабочего места радиолюбителя, пайке и технике безопасности:

В.Ю. Иваницкий «Советы начинающему радиолюбителю» 1982 год. Страницы 6…25 и 118…126.
   С.А. Никулин, А.В. Повный «Энциклопедия начинающего радиолюбителя» 2011 год. Страницы 188…234.
Также не лишним будет посмотреть в интернете видеоролики по этой тематики. Их там превеликое множество.


Всю литературу, на которую я буду ссылаться придется самостоятельно найти в сети и скачать. Надеюсь, пользоваться «Яндексом», никого обучать не надо. Все добытые книги советую сохранять в одном месте. Мы к ним не раз будем обращаться. Если у кого есть другая литература по программированию и радиоделу, то нужно почитать и её.

Также поищите в интернете статьи и видео уроки по работе с мультиметром. В жизни пригодится. И не обращайте внимания на то, что я рекомендую к прочтению литературу прошлого века. Конечно за это время радиоэлектроника сделала гигантский скачек от лампы до многоядерных процессоров. Но поверьте, в организации рабочих мест, техники безопасности и физических принципах на которых базируется радиотехника, существенно ничего не поменялось. Только ручная дрель стала аккумуляторным шуруповертом, а рукоятки шарнирно-губцевого инструмента стали повсеместно облачать в диэлектрический пластик.

На сегодня всё. Удачи.


16.04.18


Если вдруг найдете в статье неточности или заблуждения. Напишите мне об этом. Я подправлю.