CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!
  
 

Переходим от Arduino к программированию ATtiny13 на C

ATtiny13
Программирование Arduino даёт не только огромный простор для фантазии и возможностей, но, как и любой фреймворк, одновременно навязывает свой стиль и ограничивает возможности.
Поэтому, если чувствуется, что Arduino становится тесноват — можно не только перейти на 32-битные контроллеры (например, STM32), но и попробовать более низкоуровневое программирование контроллеров.

Уходя ближе «к железу» — программировать придётся на более близком к железу уровне — и если это не ассемблер, то уж язык программирования Си — точно.
Пример подобного программирования уже приводился в статье Arduino/CraftDuino и WinAVR — программируем на чистом С.
У такого стандартного программирования микроконтроллеров есть существенное преимущество перед использованием Arduino-вских скетчей.
Однако, за низкоуровневый полный контроль и возможность использовать все ресурсы микроконтроллера, приходится расплачиваться долгим и внимательным изучением документации (datasheet-а) на микроконтроллер.
Т.е., если у вас ещё не было опыта работы с конкретным микроконтроллером — то вместо быстренького набрасывания скетча для решения своей задачи — вам придётся потратить дополнительное время на изучение мат. части.

Разумеется, не всегда это может быть оправдано и если задачу нужно и можно быстро решить при помощи Arduino — то почему бы и нет?
Однако, если решение задачи на Arduino невозможно, то придётся потратить время на получение ценных опыта и знаний, которые помогут открыть все возможности, которые под силу микроконтроллеру.

Для примера, возьмём меленький, простой и дешёвый контроллер ATtiny13.

( Читать дальше )

AVR-конструктор. Продолжение

Прошел месяц с момента реализации моей идеи с отладочным конструктором для AVR. Ну и тут, как говорится всплыли все ошибки и неудобства. Перечислю их:
  • Основным минусом было то, что модулей было много (в плане количества плат) и к каждому из них необходимо было каждый раз тянуть как минимум 2 провода (VCC и GND).

  • Также обнаружено пару ошибок в разводке платы (сейчас в старых файлах все исправлено), которые исправлялись МГТФ-ом

  • Датчики для 1-wire подключались по проводам, хотя можно было их просто вставлять в гнездо





( Читать дальше )

AVR-конструктор.

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

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



( Читать дальше )

Мобильный робокомплекс. Часть3 - Алгоритмы

Мобильный робокомплекс. Часть-3


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

Аналого-цифровой преобразователь (АЦП) считывает показания датчика, затем они нормируются, и после этого высчитывается ошибка позиционирования. Ошибкой считается разность между текущими показаниями датчиков и показаниями когда робот установлен строго по центру линии. Далее регулятор на основе ошибки вычисляет управляющие переменные, которые являются коэффициентами заполнения широтно-импульсной модуляции (ШИМ) для каждого из двигателей. Коэффициенты ШИМ используются для регулирования скорости двигателей, они поступают на вход модулятора, откуда уже модулированный сигнал подается на линии Pwm1 и Pwm2 драйвера двигателей. Рассмотрим поподробнее некоторые моменты.


( Читать дальше )
  • +1
  • 31 мая 2014, 01:10
  • Skyer
  • 2

Мобильный робокомплекс. Часть2 - Электроника и язык общения с роботом

В этой части мы рассмотрим электронику робота и режим отладки, который позволяет нам общаться с роботом. А если мы можем с ним общаться — значит у нас есть и своеобразный язык, который мы также рассмотрим.
Как я уже говорил, в третьей версии платформы робот состоит из двух плат: датчика линии и управляющей платы. Мозгом робота является МК ATmega16. Тактирование осуществляется от внешнего кварцевого генератора частотой 8 МГц. Применение внешнего кварцевого генератора позволяет добиться большей стабильности частоты ШИМ, а также реализации временных задержек. Номинальное напряжение питания схемы – 5В. В качестве источника питания используется батарея из 4-х NiMh аккумуляторов. Для уменьшения помех, аналоговая часть питания контроллера подключена к источнику питания через LC-фильтр согласно документации. Питание драйвера двигателей делится на питание силовой и логической частей. С целью уменьшения влияния коммутационных помех на работу контроллера, питание силовой части отделено от питания логической части, а также от других модулей и датчиков, диодом Шоттки VD1 (защита от переполюсовки) и конденсаторным фильтром. Питание силовой части драйвера двигателей производится напрямую от батареи.



( Читать дальше )

Мобильный робокомплекс. Часть1 - Механика

Начало


В данном цикле статей я расскажу как собирал первого своего робота, который потом вылился в мой диплом. Все началось на 4-ом курсе, когда в качестве задания на курсовую я начал писать код для робота, который бы ездил по линии. В понимании того, как это должно работать мне помогла статья «Desktop Line Following Robot» товарища ChaN'а. Мозгом был выбран микроконтроллер ATmega16. Код должен был писаться на ассемблере (предмет то назывался «Языки низкого уровня»)
Для начала я внимательно просмотрел код из вышеуказанной статьи. Некоторые идеи я подчерпнул оттуда. Впоследствии в процессе разработки и отладки часть кода была только отлажена, а часть претерпела значительные изменения. Но для начала я расскажу о том, как я придумывал самого робота — шасси и крепление всех элементов. Именно придумывал, поскольку поиск оптимальной конструкции длился до середины 5-ого курса :)



( Читать дальше )

Своя среда разработки (MellowAVR)

Привет всем, я сново с вами :)

Сегодня я хотел бы написать о своей проге на Питоне, как ни странно, я не люблю Ардуино, не знаю почему, но меня, как ценителя GCC — псевдо С бесит. Я написал свою IDE для удобной работы с AVR. Дело в том, что я не оч люблю Виндовс, а использую GNU/Linux Ubuntu и прочие дистрибутивы и мне после перехода с Windows стало трудно программировать AVR, не хотелось использовать готовые IDE под всеобщее использование типа CodeBlock или eclipse, так как мне всего то нужно собрать проект и прошить.

Я решил сначала писать на С++, но оказался слишком жирным для моих целей. Потом я решил взять Питон, потому что давно хотел поднять свой скилл в нем. Использовал я библиотеку pyQt для интерфейса программы, написал парсер makefile, парсер для поиска файлов проекта (*.c/*.h) и библиотеку для работы с avr-gcc.

( Читать дальше )

Работа с EEPROM в AVR-GCC

Перевод очень хорошей статьи от Dean Camera на русский язык. В ней содержатся пояснения о самой EEPROM, работа с встроенной библиотекой eeprom.h, приведены примеры для записи\чтения byte, word и block, работа с EEMEM. В статье рассматривается компилятор AVR-GCC. Это больше адаптация, нежели перевод. Часть текста я выкинул, посчитав лишним, где-то добавил от себя. Статья рассчитана на тех, кто не работал с EEPROM и хочет на простых примерах научиться с ним работать.



( Читать дальше )

Класс-родитель для устройств на базе SPI, или веселый и удобный C++ для AVR

Мне всегда нравилась идея объектно-ориентированного программирования. Это очень удобно и легко, особенно, когда программа раздувается до больших размеров, или есть несколько очень похожих элементов, но с разными настройками. И меня всегда интересовали нестандартные, красивые решения и новинки языка — шаблоны, лямбда-функции, тернарные операторы… К сожалению, я все никак не мог к ним подобраться — то времени не было, то мозг был не готов. В общих чертах знал, что это, но сам никогда не пробовал. Но вдруг в одной из программ для AVR я увидел интересное использование шаблона, которое очень сильно облегчало работу. Мне стало интересно — и время нашлось, и желание… И вот родилась идея этой статьи. Результат — родительский класс для легкой работы с устройствами на базе SPI (сдвиговые регистры, трансиверы, Ethernet etc), в Hardware и Software реализации. Интересно — просьба под кат.

tl;dr — в конце все ссылки из статьи, в том числе готовый код и примеры.

WARNING 1: под катом много букв и о ужас ни одной картинки, а также огромная куча низкокачественного лапшеобразного замечательного кода.
WARNING 2: автор не крут в шаблонах, поэтому извиняется, если что-то реализовано ужасно.
WARNING 3: пока что — только Master, Slave-версия будет через год некоторое время.
WARNING 4: автор обожает варнинги и тег s неправда!!


( Читать дальше )

WeatherStation. Часть 2: Ethernet модуль

Часть 0: Описание и концепция
Часть 1: Основной модуль

Ethernet модуль — далеко не последняя по важности деталь в проекте WeatherStation (кто не в курсе — погодная станция, отображающая дату, время, погоду\влажность за окном и прогноз погоды на утро, день, вечер и ночь). В этой статье я опишу, как и с каких ресурсов я беру время и погоду, в каком формате читаю, как обрабатываю и как передаю основному модулю.



( Читать дальше )