Урок 1. Введение. Общие сведения об Ардуино.

 

 

Lesson1

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

Список уроков     Следующий урок

Введение.

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

 

Сразу бросается в глаза, что программы написаны крайне непрофессионально.

  • Недостаточно хорошо обрабатываются сигналы аппаратных устройств, подключаемых к контроллеру. Например, простейшие элементы – кнопки. Существует дребезг кнопок, они могут быть подключены длинными проводами, чувствительными к помехам. В надежной системе обязательно применение цифровой фильтрации сигналов с кнопок или датчиков сухого контакта. Как правило, в примерах уроков просто считывается состояние сигналов кнопок.
  • Надежные программы микроконтроллеров требуют циклической переустановки переменных, контроля целостности данных.
  • Хороший стиль программирования микроконтроллеров подразумевает структурное программирование. Это не формальные слова. Как известно можно писать красивые, структурные программы на ассемблере, а можно и на C++ такого нагородить.
  • Наверное, самое главное это многозадачность. Почти во всех уроках – последовательные действия программы. Посмотрели состояние кнопки, затем зажгли светодиод, вызвали какую-то непонятную функцию… Результат достигается просто, но и результат какой-то ущербный.

Если взять, к примеру, мою программу контроллера для холодильника на элементе Пельтье. Как ее сделать по такому принципу? Как с помощью простых последовательных операций выполнить все необходимые действия?   Эта программа написана на ассемблере PIC контроллера. Она выполняет множество параллельных операций:

  • С периодом 10 мс опрашивает три кнопки, обеспечивает цифровую фильтрацию сигналов кнопок, устранения дребезга.
  • Каждые 2 мс регенерирует данные светодиодных семисегментных индикаторов и светодиодов.
  • Формирует сигналы управления и считывает данные с двух датчиков температуры DS18B20 с интерфейсом 1-wire. Необходимо каждые 100 мкс формировать новый бит чтения или записи для каждого датчика.
  • Каждые 100 мкс считывает аналоговые значения выходного тока, выходного напряжения, напряжения питания.
  • Усредняет значения выходных тока и напряжения за 10 мс, вычисляет мощность на элементе Пельтье.
  • Постоянно работает сложная система регуляторов:
    • стабилизация тока, напряжения, мощности на элементе Пельтье;
    • ПИД (пропорционально интегрально дифференциальный) регулятор температуры.
  • Обрабатываются защитные функции, проверка целостности данных.
  • Обеспечивает чтение и запись внутреннего EEPROM.
  • Ну и, конечно, общее управление системой, логика работы.

Все эти операции надо выполнять циклически с разными периодами циклов. И ничего нельзя пропускать или приостанавливать. Такую программу невозможно реализовать простой последовательностью действий.

Так вот, я в своих уроках программирования Ардуино собираюсь уделить внимание вышеуказанным проблемам, собираюсь научить практическому программированию. Программированию контроллеров  Ардуино, которые работают с реальными объектами.

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

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

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

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

 

Общие сведения об Ардуино.

Ардуино (Arduino) это название аппаратно-программных средств  для создания простых электронных систем автоматики и робототехники. Система имеет полностью открытую архитектуру и ориентирована на непрофессиональных пользователей.

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

Аппаратная часть представляет собой электронные платы с микроконтроллером, сопутствующими элементами (стабилизатор питания, кварцевый резонатор, блокировочные конденсаторы и т.п.), портом для связи с персональным компьютером, разъемами для сигналов ввода-вывода и т.п.

Arduino UNO R3

Благодаря простоте разработке устройств система Ардуино получила крайне широкое распространение. В одном Яндексе до 150 тысяч запросов ”Ардуино” в месяц. Несмотря на простоту разработки проектов, используя Ардуино, могут быть созданы достаточно сложные системы, особенно после появления высокопроизводительных вариантов контроллеров.

В платах Ардуино используются микроконтроллеры Atmel  AVR с прошитым в них загрузчиком. С помощью загрузчика записывается программа в микроконтроллер из персонального компьютера без применения аппаратных программаторов.

 

Для программировании Ардуино используется язык C/C++, с некоторыми особенностями.

Существует громадное число клонов аппаратной части Ардуино. Большинство из низ являются полными аналогами фирменных Ардуино, часто не уступающими по качеству.

Список уроков     Следующий урок

8

Автор публикации

не в сети 4 дня

Эдуард

285
Комментарии: 1946Публикации: 200Регистрация: 13-12-2015

28 комментариев на «Урок 1. Введение. Общие сведения об Ардуино.»

  1. Спасибо за ваш труд!
    Достаточно давно программировал на ассемблере AVR, сейчас возникло желание возобновить. Прикупил Arduino UNO, буду штудировать ваши уроки.
    Ещё раз спасибо.

    0
  2. Прочитал несколько «Урок №1» на разных сайтах. Не знаю как дальше, но пока он на мой взгляд лучший из всех мной прочитанных. Хочу попробовать позаниматься сам и попробовать сына 2-классника заинтересовать.
    Спасибо за Первый Урок.

    0
  3. Здравсвуйте, Эдуард!
    Можно ли скачать Ваши уроки в PDF? Удобно было бы распечатать на бумаге для лучшего усвоения.

    0
    • если вы спрашиваете разрешения, то да, можно.
      а если не знаете как это сделать, то очень просто:
      в правом верхнем углу кликните по значку «настройка и управление» и в открывшемся меню кликните «печать».
      и будет вам — можно сразу на принтер, можно в файл пдф.

      0
  4. Эдуард, прошу прощения за дурацкий вопрос, но почему Вы не считаете ардуино удачным компонентом ??? По-моему штука вполне ладная. Правда никогда под них не писал, да и сама среда основанная на компиляторе С вызывает определенные сомнения (как-то немного стрёмно писать на С для 8-битного камня). Но на ассемблере для AVR писал в свое время достаточно много. Плюс стандартизация различных плат по разъёмам, что само по себе ценность. Сейчас буду делать свой вариант контроллера холодильника на элементе Пельтье (вариант для конченных лентяев, таких как я, на основе покупного блока питания). Заложился в нём именно на ардуино мега. Правда только потому, что она у меня уже была (хотя и покупалась для совершенно другой цели, до которой руки так и не дошли).

    0
    • Здравствуйте!
      Я имел в виду именно программную среду. Не подконтрольные переменные, указатели, стеки… Достаточно одного сбоя и система перестанет правильно работать.

      0
      • Да, уже посмотрел. Отстой полный. И даже программы называются скетчами, курам на смех. Увы, Atmel Studio у меня под wine так и не запустилась. Поэтому закачал себе avr-gcc, avr-gdb, simulavr, плагины для эклипса и буду работать с этим. Наверно на асме, хотя может и рискну на С (надо ещё будет посмотреть какой код он генерит). Задача (контроллер холодильника) у меня хоть и не жесткий риалтайм, тем не менее блоком питания желательно управлять побыстрее. Хотел приделать туда еще и jtag, но лень. Мега это в принципе (по выведенным портам) позволяет, но придется разбираться с бутлоадером. Вобщем надеюсь обойтись без внутрисхемной отладки.

        0
    • Евгений решил показать свою крутость как программиста и обосрал автора. Жалкое зрелище. Эти уроки не для таких, как ты. Автору респект.

      2
  5. Спасибо за уроки. ( Одни из лучших в рунете). Изучаю ардуинку для себя, для души и не большую автоматику по дому соорудить. У меня характер работы разъездной долго в пути есть время почитать ваши уроки, забить теорию себе в голову, что бы по приезду перейти к практике. Соорудил не большое приложение для себя, что бы быстро находить материал. Надеюсь Вы не против.
    https://yadi.sk/d/yjtnmIEpi9Ehzg

    0
    • Здравствуйте!
      Спасибо за отзыв.
      Насчет приложения, конечно, не против. Я разрешаю перепечатку материалов при наличии активной ссылки на мой сайт.

      0
  6. Эдуард, здравствуйте! Прочитал первый урок, попутно зашел по ссылке на «шаговые двигатели» и «элемент Пельтье». Могу сказать, что выкладка материала получается достаточно доступная для ознакомления и обучения. Не всем профессианалам удается доступно излагать информацию или, лучше сказать, свои знания, доступным языком для начинающих. Для этого надо, как минимум, уметь «снизиться» на их уровень. Благодарю Вас за благородное дело и интересное изложение.

    0
  7. Основательный у Вас инженерный подход к вопросу; прямо-таки лучик света в темном царстве сделай-на-коленке-как-написали-и-не-думай Рунета. Спасибо.

    0
  8. Эдуард, привет!

    Я тоже программист и по достоинству оценил Ваши уроки и стиль программирования. Спасибо.

    0
  9. Спасибо большое за Ваши уроки!
    В течение 2-х недель по 6 часов искал вразумительные ответы на свои «вопросы начинающего».
    Ваш труд воспринят ЛИЧНО МНОЮ с БЛАГОДАРНОСТЬЮ!
    Сжато, чётко, логично.
    Не всё понятно с первого раза: Вы — «технарь», я — «гуманитарий»,
    но это уже мои образовательные пробелы.
    Ещё раз — СПАСИБО!

    0
  10. Ваши уроки очень полезны, до многого сам бы очень долго «доходил». Начал с программирования ПЛК, но после ваших уроков отношение к Arduino и МКК поменялось, кое что из этого теперь использую при программировании ПЛК.
    Благодарю.

    0
  11. Здравствуйте. Настоящий новогодний подарок получил — обещал и сделал Вартан — спасибо!
    Мне важно, что это рукопись, можно распечатать, проработать урок в свободную минутку, подумать. И я не отвергаю видео уроков, нотам как то все галопом.
    Теперь у отца трех детей в мои 56 появилась надежда освоить программирование и передать основы детям, через свой пример, а не моду на роботизацию мозга робототехникой.
    С Уважением Андрей (СО2)

    0
  12. Здравствуйте Эдуард…Вы большой молодец! Спасибо вам за ваш труд!!! Мне очень понравились ваше статьи!

    0

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных".