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

Arduino UNO R3

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

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

Введение.

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

 

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

Arduino UNO R3

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

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

 

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

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

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

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

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