Для опытного программиста Arduino или что-то еще?

11

Мой фон:

Я давно занимался программным обеспечением, и я более или менее опытен в C, C ++, Java, Ruby, Erlang, Haskell, Lua и Python. Я также взял курс по лабораторной электронике, но кроме одной небольшой лаборатории с насосом, это было все о получении сигнала и A / D и оттуда в x86 с LabView ( не мой выбор среды программирования), я хотел бы вернуться к работе с оборудованием с прицелом на домашнюю автоматизацию. (Я думаю , что я могу сделать лучше , то это меньше , чем $ 500)

Вопрос:

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

(PS у меня больше времени, чем денег)

Джон Ф. Миллер
источник

Ответы:

4

Что касается плат микроконтроллеров Eval, готовых к использованию вне ворот, то, конечно, существует семейство Arduino. но также рассмотрите панель запуска msp430 за 4,30 $. хороший набор инструкций и аналогичный по производительности AVR с тенденцией к низкой мощности / стоимости. За 20 долларов вы можете получить обнаружение stm32f4 (не путать с обнаружением строки значения stm32 или семейством stm8), которое, как правило, меньше, чем вы платили бы за пригодное для использования arduino (35-50 долларов), но обводит круг вокруг arduino 168Mhz, с плавающей точкой юнит, кэши и т. д. В верхнем конце ценового диапазона Arduino есть еще одна рука mbed (mbed.org), которая, вероятно, наиболее близка к опыту с песочницей Arduino.

Если вы хотите остаться в автономном ящике и просто сделать вызовы API, вероятно, Arduino - это то место, где вы хотите жить, есть мега для повышения производительности или использования клена leaflabs, который основан на руке, но пытается предоставить опыт песочницы arduino.

Вы можете добиться гораздо большей производительности, получить максимальную отдачу и т. Д., Если вы возьмете на себя немного больше ответственности и знаний о том, что происходит. Я рекомендую все три платформы (avr, msp, arm / thumb) и несколько поставщиков (avr и msp заблокированы, но arm продается всеми, кто имеет разную периферию и ввод / вывод). Например, вы можете привыкнуть к платформе, которая не имеет подтягиваний на линиях gpio и вынуждена использовать внешние компоненты, если другой чип или поставщик предоставляет ее на чипе по сопоставимой цене / производительности. Точно так же вам может понравиться бит по последовательному порту или шине spi, но вы обнаружите, что за те же деньги, мощность, размер и т. Д. У некоторых других поставщиков есть оборудование, помогающее в этом интерфейсе.

если это ничто иное, то в ваших интересах как программиста и человека, который хочет заняться электроникой для хобби, чтобы узнать больше о том, что происходит вне песочницы. Как способ попасть в этот мир хобби электроники, Arduino - это очень очень удобный переход от программирования приложений в операционной системе. У sparkfun есть несколько наборов, которые включают в себя последовательный интерфейс и несколько периферийных устройств, есть набор lilypad (платформа arduino) и, возможно, профессиональный набор, оба не являются форм-фактором экрана arduino, если это имеет значение. Спаркфун продает в розницу в штучной упаковке и многие другие разновидности ардуино, уно и т. д. (упомянутые выше доски st и msp вы должны начать с сайта ti или st или перейти на github.com/dwelch67, и у меня есть ссылки на различные доски в моем Примеры).

Старожил
источник
8

Я также программист день ото дня. Около десяти лет назад я начал с марок BASIC от Parallax, и после долгого перерыва я недавно вернулся к встраиваемым проектам. Сначала я посмотрел на Arduino и его различные части и понял, что могу просто пропустить ценник платы Arduino, взять несколько ATMega168 и начать заново. Это работало по большей части, однако я часто сталкивался с проблемами, когда иметь предварительно собранную плату было бы неплохо, поскольку я не мог испортить базовую сборку.

В конце концов я заказал Arduino и люблю все о плате и библиотеках. Я не фанат «IDE», поэтому я нажимаю «Использовать внешний редактор» и использую IDE исключительно для компиляции и прошивки программного обеспечения на плату. Обычно я начинаю проект или идею с платы Arduino, а затем портирую ее в мега-чип. Это помогает снизить затраты за счет использования только необходимых частей для проекта, но все же позволяет мне быстро создать прототип.

Удачи!

Майкл Диллон
источник
6

Arduino - отличное введение в программирование микроконтроллера.

Существует большая разница между написанием программного обеспечения для ПК и написанием прошивки для микроконтроллера.

Arduino был бы хорошей отправной точкой для общения с периферийными устройствами и т. Д. Без необходимости увязать в специфических особенностях чипов и тому подобном.

Но, как я уже сказал, это введение.

Начните с Arduino, затем переходите к большему и лучшему.

Я довольно часто использую микроконтроллеры семейства PIC, но у меня все еще есть надежный Li Ar Lino, который я использую для быстрой проверки идей и тестирования.

Majenko
источник
6

Поскольку «Arduino» включает в себя несколько вещей, я думаю, что было бы полезно взглянуть на них по отдельности:

  • С аппаратной точки зрения Arduino-совместимое устройство - это микроконтроллер ATMega с определенным загрузчиком. Обычно готовая Arduino-совместимая плата также включает в себя другую вспомогательную электронику, такую ​​как интерфейс USB или последовательного порта, регулятор напряжения, разъемы для легкого доступа к контактам и т. Д. Аппаратные устройства вполне доступны, если вам нужна функциональность USB и вместе с предварительно запрограммированным загрузчиком это избавляет вас от необходимости покупать отдельный программатор для загрузки вашего программного обеспечения. Итак, да, Arduino (и совместимые клоны) полезны в качестве аппаратных устройств при прототипировании; для финальной сборки вы можете захотеть построить свою собственную, используя только те части, которые вам нужны, поэтому вам не нужно вкладывать один полный Arduino в каждый проект.

  • Что касается программного обеспечения, библиотека Arduino похожа на любую библиотеку программирования, и ее полезность зависит от ваших потребностей. Лично я нахожу это иногда полезным для быстрого прототипирования (например, функциональность последовательного порта), но как опытный программист мне не нравятся многие из упрощений (особенно нумерация выводов). В любом случае вы можете легко использовать оригинальные библиотеки AVR вместо или в дополнение к библиотеке Arduino, даже если вы программируете для устройства Arduino и / или используете Arduino IDE. Поэтому используйте любые библиотеки Arduino, которые вы считаете полезными, особенно при создании прототипов, но изучайте базовый AVR по мере продвижения (см. Источники Arduino и таблицу данных ATMega).

  • Наконец, Arduino IDE - это среда графического программирования с простым редактором, консолью последовательного порта, системой сборки, похожей на «make» (скрытой от пользователя), и (внешним интерфейсом для) инструментов для загрузки вашего программного обеспечения на фактическое устройство. , Лично я ненавижу IDE и никогда не использую ее, предпочитая работать в командной строке, но, очевидно, это просто вопрос личных предпочтений.

оборота Аркку
источник
1
Я не знаю, как они могут назвать это чудовище IDE. Это самая ужасная часть [вычеркнутого], которую только можно вообразить. У меня есть Anjuta, почти настроенная, чтобы сделать все для меня сейчас, что делает (не очень) IDE Arduino.
Майенко
4

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

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

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

Только вы можете сказать, что лучше для вас. Ты хочешь обнять своего внутреннего идиота и быть блаженно проведенным по саду навсегда, будучи вынужденным говорить "а?", "Что?" И "О, это так мило!" к электронным вещам? Или вы бы предпочли спуститься по длинному темному пути, чтобы появиться с одним мигающим светодиодом после большого труда и неприятностей? Вы просто хотите водить машину или узнать, как работает двигатель, чтобы вы могли получить максимальную производительность и настроить его самостоятельно?

Олин Латроп
источник
1
Олин, ты старая школа! Я имею в виду это как комплимент ... Но я с уважением не согласен с вами по этому вопросу. Работа с посредственно разработанным программным обеспечением в непродуманной операционной системе добавила ноль к моему пониманию электроники. Фактически впитал дни драгоценного времени, когда я мог учиться полезным вещам у таких знающих людей, как ты. Я говорю "Да здравствует Arduino!"
Келин Colclasure
2
@KaelinColclasure Ваш комментарий меня немного смущает. Вы не согласны с плохим программным обеспечением и ОС, но Олин не занимается этим вообще. Во всяком случае, вы можете рассмотреть, что arduino делает для вас на уровне абстракции, например, как ОС является уровнем абстракции. Научиться использовать Arduino очень мало, чтобы помочь вам стать лучшим инженером, поскольку накладные расходы приведут к дополнительным затратам, которые не нужны. С учетом сказанного, я думаю, что Arduino - отличная платформа, но ее не следует считать заменой для истинного понимания мира встроенной электроники.
Kellenjb
Ура автомобильные аналогии! Олин, для многих людей дело не в том, чтобы тащиться и изучать мелкие мелочи электроники и становиться инженером. Многие люди просто хотят выбрать инструмент, который позволит им достичь своей цели и решить свою проблему. Изучение электроники во многих случаях является средством достижения цели, а не самоцелью. Не все в этой игре по тем же причинам, что и вы.
nemik
2
Да? Тогда о чем этот разговор "обними своего внутреннего идиота"? Да брось. Вы используете свой внутренний дебил под управлением Windows, Linux или OS X вместо того, чтобы писать свою собственную ОС, как Real Man ™? Это операционные системы, покрытые сахаром, которые просто ошеломлены для масс.
nemik
1
@nemik: Принятие твоего внутреннего идиота было чем-то вроде шутки, точно так же, как уходить по длинному темному пути ... Конечно, в обоих из них есть доля правды.
Олин Латроп
4

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

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

Учитывая, насколько дешевы эти вещи (большинство из них стоят менее 50 долларов), вы можете рассмотреть возможность приобретения более одного типа.

Для тех, кто знаком с Microsoft Visual Studio и C #, Netduino - отличный выбор, поскольку у него есть набор инструментов, который вы уже знаете.

Если вы предпочитаете Unix, вам может понравиться доска типа Raspberry Pi, выход которой запланирован на январь 2012 года:

Что такое Raspberry Pi? Raspberry Pi - это компьютер размером с кредитную карту, который подключается к телевизору и клавиатуре. Это маленький ПК, который можно использовать для многих вещей, которые делает ваш настольный компьютер, таких как электронные таблицы, обработка текстов и игры. Он также воспроизводит видео высокой четкости. Мы хотим, чтобы дети всего мира использовали его для изучения программирования.

Когда устройство будет доступно для покупки? Мы надеялись, что Raspberry Pi будет доступен для заказа к концу 2011 года. Мы все еще ожидаем, что продадим на аукционе некоторые из наших первых партий бета-версий до конца года (следите за сайтом после Рождества); мы перейдем на основное производство в январе.

Сколько это будет стоить? Модель А будет стоить 25 долларов, а модель Б - 35 долларов.

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

Наконец, есть Texas Instruments MSP-430 Launchpad, который можно приобрести за 4,30 доллара США с бесплатной доставкой. По цене, что дешево, как вы не можете купить один?

JonnyBoats
источник
4

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

Позже, когда вы захотите больше функциональности (USB-устройства, Ethernet), перейдите на чипы ARM Cortex M-серии. 32-битный ARM означает, что они очень мощные и теперь часто более дешевые и имеют больше периферийных устройств, чем более качественные 8 или 16-битные чипы, такие как AVR и PIC. Mbed от NXP (http://mbed.org) - очень приятное введение в эту платформу, если вы приехали из Arduino.

nemik
источник
2

Когда люди говорят, что Arduino «прост в программировании», на самом деле они имеют в виду, что набор инструментов в основном работает. Это работает на Mac, это работает на Windows, и это работает на Linux. Вы подключаете свою доску, вы пишете свой код, вы загружаете его, и он уходит.

Чтобы немного контрастировать, я сам "обновился" до Atmel STK600 и их среды разработки AVR Studio 5. Он работает только в Windows, поэтому мне пришлось установить и запустить VMware на моем Mac. Затем мне пришлось установить привередливый USB-драйвер Jengo, что заняло целый день чтения суетливых сообщений на форуме. Затем мне пришлось выяснить, почему я мог разговаривать с платой разработчика из IDE, а не с дочерней платой ATmega2560, поставляемой с STK600 ... (Кабель JTAG был подключен неправильно, потому что я следовал иллюстрированному учебнику на Сеть, на которой оказалось изображение, показывающее кабель, подключенный назад.)

До сих пор я не писал ни строчки кода для AVR Studio 5, но, вероятно, я потратил на это больше времени, чем на общее время использования Arduino IDE. И я написал десятки эскизов Arduino.

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

Надеюсь это поможет. :-)

Келин Colclasure
источник
3
Не придираться к тебе ... но я снова с тобой не согласен. Причина, по которой люди говорят, что Arduino прост в программировании, заключается в том, что они по существу добавили слой абстракции, который вы не получите иначе. Вы также используете C ++, это очень редко можно увидеть во встроенном мире. Иногда это необходимо для конкретных проектов, но это также добавляет некоторые накладные расходы, которые вы просто не можете иметь, когда вы пытаетесь сократить каждую копейку.
Kellenjb
@Kellenjb, я могу писать на C ++ практически без издержек, иногда разделы могут иметь до 10%, но много разделов с нулевыми издержками. Но да, это редко, потому что вы должны уделять больше внимания тому, что вы делаете со своим языком, но подождите, то же самое относится и к C. Я видел, как пользователи пробовали malloc () в c до того, как внедрить его, чтобы получить не очень хорошие результаты.
Кортук
1

Arduino представляет собой гибкую платформу перехода, обеспечивающую множество цифровых входов / выходов A / D, D / A (по крайней мере, как PWM), программируемый светодиод на плате, последовательный порт на USB и готовые модули, доступные для много других видов оборудования. Если вы хотите использовать свои знания для обучения, то вам это не нужно. Если вы хотите, чтобы платформа была запущена и работала просто для удовольствия или пока вы разрабатываете недорогую аппаратную версию этого чего-то, то она готова к работе, когда вы это сделаете. Это дизайнерские, стратегические и экономические решения, которые абсолютно приемлемы для принятия любым способом, который соответствует вашим целям. Нет ничего "дебильного" в поиске компромиссов - это то, что инженеры делают - и должны делать - каждый день.

JRobert
источник
1

Опыт Джона почти полностью совпадает с моим 15 лет назад, когда я уволился с обучения информатике (в основном программированию на ассемблере и программировании) студентам. Тогда я понял, что идти в ногу с достижениями в области вычислительной техники будет непомерно дорого, поэтому моя жена предложила вернуться к электронике в качестве хобби, поскольку мне нравилось быть инженером-электриком в 1950-х годах. Это я и сделал, хотя я только ненадолго познакомился с транзисторами и никогда не видел операционного усилителя, поэтому мне пришлось многому научиться. Я сохранил свою любовь к языку ассемблера, и когда в середине 90-х появились микрочип-фото, я их зацепил.

Я не могу сравнить их с Arduino, о котором ничего не знаю, но преимущество использования Pics состоит в том, что его установка дешева, поскольку Microchip предоставляет всю информацию бесплатно, с блестящей IDE, и вы можете научиться использовать их , как и я, из того, что они публикуют. Вы можете начать с самодельного Программиста, с большим количеством проектов в Интернете, поэтому для начала работы с несколькими чипами Pic потребуется всего несколько фунтов. Но я бы порекомендовал PicKit 2, который имеет множество встроенных функций, облегчающих разработку программ. Возможно, не PicKit 3, хотя, смотрите:

http://www.eevblog.com/2009/10/21/eevblog-39-pickit-3-programmerdebugger-review/ Хотя это было обновлено, см. примечания к этой ссылке.

Существует множество книг по фотографиям, но некоторые из них - мусор, остерегайтесь. Для легкого начала, отличное введение в Pic:

«Проектирование встраиваемых систем с помощью PIC-микроконтроллеров: принципы и приложения» [Мягкая обложка] Тима Уилмшерста, 22–66 фунтов стерлингов на Amazon, в которую входят как Assembler, так и C. Я некоторое время избегал C, потому что казалось, что он лишает близости аппаратное обеспечение который дает ассемблер, но с помощью поставляемого микрочипом C-компилятора вы также можете увидеть генерируемый код ассемблера.

Для полного, хорошего, технического (не боясь поместить математику) освещения современной электроники я рекомендую: «Практическая электроника для изобретателей» 2 / E [Мягкая обложка] Пола Шерца, 19–95 фунтов стерлингов на Amazon.

Я заплатил 26–99 фунтов и 22–99 фунтов соответственно за эти книги в магазинах, и не жалею об этом вообще.

Я не могу охватить достаточно здесь, я был бы рад переписаться по электронной почте на эту тему: 417weston@gmail.com (и, на всякий случай, я очень настороженно отношусь к тому, что я читаю, скачиваю или отвечаю).

Гарри Вестон
источник