Я понимаю Arduino: что теперь?

18

Хорошо, я достаточно поиграл с Arduino, и я чувствую себя довольно комфортно с ним. Все, что делается сейчас, больше изучает электронику, чем ее Arduino.

Какой следующий шаг для моего обучения? Arduino - это комбинированный программист / контроллер, так что, вероятно, мне нужно разорвать эту связь и начать работать с чипом контроллера отдельно от контроллера, я полагаю? Может ли кто-нибудь указать мне правильное направление?

Крис Б. Беренс
источник
У вас есть конкретная цель или проект?
Я согласен. Для меня это все о получении конкретных вещей. Arduino просто инструмент, как и все остальное.
Дирк
Сейчас я работаю над мультиплексной светодиодной матрицей. Не так сложно в Arduino, но я хочу избавиться от тренировочных колес. Я имею в виду, в конечном счете, на плате Arduino есть чип ATmega168. Если бы я мог понять, как работать с ним напрямую, я думаю, что это удовлетворило бы то, чего я пытаюсь достичь.
Крис Б. Беренс
Вы на самом деле довольно прямо к чипу с Arduino. У него не так много драйверов или чего-либо еще, прикрепленного к контактам. Заголовки идут прямо туда. Возможно, панировщик?
AngryEE
@angryee - Я думаю, что Крис имеет в виду, программировать чип ATmega напрямую, без библиотек Arduino IDE +, которые можно рассматривать как учебные колеса.
Дж. Полфер

Ответы:

12

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

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

Попробуйте другую IDE, например AVR Studio или Code :: Blocks. Изучите GCC toolchain. Попробуйте более продвинутые методы кодирования - модульные тесты, покрытие, профилирование, проверка ворса / шины. Поставьте ОСРВ на Arduino.

Комбинированный программист / контроллер не является признаком слабости - это просто выбор дизайна. Единственная слабость, которая может возникнуть из-за этого, - отсутствие внутрисхемной отладки. Купите дракона AVR, и вы получите его за 50 долларов.

AngryEE
источник
9

Я думаю, что учить дальше, зависит от того, что вы хотите сделать, чего не может делать Arduino. То есть, я не вижу особого смысла в программировании аналогичного чипа для того же, но с более сложными средствами.

Вот некоторые недостатки Arduino:

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

Я могу представить себе два направления:

  1. Более мощные встроенные платы с небольшими операционными системами, такие как Beagleboard или Gumstix
  2. Повышение производительности из небольших чипов Atmega с помощью аппаратных прерываний.

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

pingswept
источник
Забавно ... программирование подобного чипа для того же, но с более сложными средствами - это именно то, что я имею в виду :). Немного предыстории - я архитектор программного обеспечения с многолетним опытом. Программное обеспечение, вычисления, файловая система ... это все для меня легко. То, против чего мне действительно нужно биться, - это электроника. Причина, по которой я стремлюсь выйти за рамки Arduino, заключается просто в том, что я хочу иметь возможность создавать устройства специального назначения, которые не имеют физических (и ценовых) накладных расходов на плате Arduino. Я думаю из того, что вы сказали, # 2 - это то, что я ищу.
Крис Б. Беренс
Вау ... этот комментарий звучал действительно эгоистично. Я не это имел в виду ... во всяком случае, я просто имел в виду, что я хочу избавиться от колес для обучения аппаратному обеспечению, которые дает мне Arduino. В частности, я работаю над светодиодной матрицей, похожей на LOLShield, хотя думаю, что вместо этого я собираюсь ее мультиплексировать. Я могу сделать это с Arduino, но без этого мне нужно какое-то направление. ТИА.
Крис Б. Беренс
Ах, больше электронных вещей вместо программных ... вещей. Может быть, вы получили бы хороший опыт работы с интерфейсом датчиков / регистрации данных. Это не гламурно, но чтобы подключить датчики к вашей плате, вам нужно узнать немного больше об оборудовании. В Arduino на самом деле не так много колес для обучения аппаратному обеспечению - конечно, не так много, как для программного обеспечения. Может быть, робот, который включает в себя несколько различных типов датчиков - ультразвук, инфракрасное расстояние, датчик положения вала и т. Д. Конечно, это возможно только с Arduino и множеством аппаратных средств.
AngryEE
7

Изучите I2C, SPI, 1wire и попытайтесь связать датчики с такими интерфейсами. Прочитайте много таблиц таких датчиков и постарайтесь все понять в них. Задавайте вопросы, когда застряли. Изучите протокол MODBUS (RTU / ASCII / TCP) или аналогичный протокол, который может открыть ваше устройство для мира, как только вы вставите его в устройство. Изучите общую электронику и попытайтесь связать реле, триаки, что подтягивать и опускать, что такое источники и понижения, как рисовать схемы и подключать основные драйверы к вашему MCU.

Avra
источник
6

Для начала вы можете перейти от Arduino в качестве платформы к AVR в качестве платформы. То есть, научитесь программировать / использовать первозданный микроконтроллер AVR для своих проектов вместо Arduino. Таким образом, вам не придется покупать другую доску Arduino для каждого проекта, который вы делаете, или для выполнения проектов с друзьями. Это довольно простой шаг (Arduino - это обычный микроконтроллер Atmel AVR, но со специальной платой и загрузчиком), но он очень важен для продажи / передачи проектов друзьям. Набор инструментов тоже похож: вы используете avr-gcc или avr-g ++ с make вместе с утилитой программирования для установки вашей программы.

Дж. Полфер
источник
Довольно просто загрузить загрузчик на чип и припаять свою плату, если вы хотите отдать проект. Или закажите комплект RBBB за $ 12,50 ( goo.gl/0yqr ), не нужно покупать плату за $ 30 + для каждого проекта Arduino.
Даворак