Ардуино Мега против Уно

Мы программируем систему распознавания дверных звонков и решили использовать Arduino для управления большей частью схемы. Единственное, в чем я не уверен, так это в программной емкости Arduino Uno по сравнению с Arduino Mega. Я знаю, что у Uno всего около 32 КБ флэш-памяти, но наша программа рассчитана на тысячу строк кода (что, как я полагаю, превысит порог в 32 КБ).

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

Насколько сложно (и долго) добавить EEPROM в Uno? Не лучше ли остановиться на Меге?

Кроме того, было бы проще просто использовать ПК (с платой сбора данных или чем-то еще) или Raspberry Pi а не Arduino?

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

Причина, по которой код проецируется примерно на тысячу строк, заключается в том, что мы можем реализовать в нем связь мобильного приложения, запирание/отпирание двери и т. д. Я делаю предположение, что 32 КБ (от Uno) недостаточно, исходя из размеры некоторых моих программ на C (которые находятся в диапазоне тысяч строк), которые обычно составляют около 100 КБ.

По сути, нам нужно, чтобы он был масштабируемым до такой степени, что программа может быть больше, чем наш прогнозируемый размер или даже меньше, чем он. Мы не хотим покупать несколько плат, если одной будет достаточно.


person Buten    schedule 10.06.2013    source источник
comment
Не зная, что такое система распознавания дверного звонка, трудно сказать, какая доска будет работать лучше. Однако разница в цене невелика, поэтому, если вы сомневаетесь, выбирайте Mega.   -  person spring    schedule 10.06.2013
comment
Тысяча строк кода (на C?) — это практически ничего, что могло бы бросить вызов Mega32 или больше. Библиотеки, на которые вы можете ссылаться или не ссылаться, могут в значительной степени способствовать использованию флэш-памяти, то же самое касается постоянных данных, хранящихся во флэш-памяти. Вы можете взглянуть на ATmega64 или ATmega128, которые должны поставляться в версиях, совместимых по выводам с Mega32, если окажется, что требуется больше флэш-памяти.   -  person JimmyB    schedule 10.06.2013


Ответы (3)


32 КБ в микроконтроллере — это много памяти для программ. 1000 строк кода, скорее всего, сократятся до нескольких килобайт, и все библиотеки Arduino, скорее всего, все равно будут больше, чем ваша программа.

Насколько я помню, я не думаю, что какая-либо из ATMegas поддерживает внешнюю память программ. Если у вас есть что-то вроде большой таблицы поиска, вы можете получить I²C EEPROM и загрузить его туда.

Что касается ПК/Raspberry Pi, то некоторая плата I/O для компьютера вероятно, будет стоить намного дороже, чем Uno или Mega, то же самое с Raspberry Pi, особенно если вам нужны аналоговые входы или ШИМ.

Я бы сказал, что на данный момент придерживайтесь Uno, но сохраните все контакты, которые вы используете как #defines, таким образом, если у вас закончится ПЗУ программы, вы можете легко перенести его на Mega.

person Matt Sieker    schedule 10.06.2013
comment
Это правда, что ни один из 8-битных AVR не может выполнять программный код из чего-либо, кроме встроенной флэш-памяти. - person JimmyB; 10.06.2013
comment
Это зависит от вашего определения кода. Если вы реализуете интерпретатор во флэш-памяти, то интерпретируемый код может быть где угодно. Если интерпретатор оказывается четвертым интерпретатором, это, вероятно, все еще очень эффективно. - person Udo Klein; 10.06.2013
comment
Я согласен с тем, что вы говорите о pi / pc, вероятно, в конечном итоге это будет стоить дороже. У меня нет большого опыта работы с arduino, но если бы моя программа на C была размером около 100-200 КБ, знаете ли вы (приблизительно), будет ли она собираться до размера, который будет использоваться в uno? Было бы безопаснее сделать ставку на мега? - person Buten; 13.06.2013

Все зависит от того, какая у вас на самом деле схема распознавания дверного звонка. Если для этого требуется БПФ и/или причудливая арифметика с плавающей запятой, то вы можете легко исчерпать SRAM AVR. Если это всего лишь какой-то прославленный конечный автомат с несколько приличной реализацией, я был бы удивлен, если бы это исчерпывало Uno.

Но самый главный вопрос: что вы строите? Прототип? Один из? Или пилот для сериала? Если это не серия, то время разработчика стоит дороже всего --> в первую очередь выбирайте более крупную машину. Если вы разрабатываете для серийных вычислений стоимость аппаратного обеспечения и время разработки --> стремитесь к самому дешевому контроллеру, который будет соответствовать вашим потребностям. То есть: возьмите самый большой из семейства Atmel и, как только у вас будет работающий прототип, уменьшите его. ИМХО, любой дверной звонок должен вписываться в ATiny.

person Udo Klein    schedule 10.06.2013
comment
Это единичный случай для проекта, над которым мы работаем, поэтому было бы неплохо получить мега, однако, если мы сможем сэкономить деньги в долгосрочной перспективе с помощью uno, это тоже сработает. - person Buten; 13.06.2013

Микроконтроллеры Atmel не поддерживают внешнюю программную шину, которая позволила бы добавить ПЗУ и расширить объем кода. Некоторые устройства поддерживают расширение шины данных, что позволяет добавить оперативную память. Я бы сказал, что это одно из ключевых различий между микроконтроллером и микропроцессором, хотя в этом разделении может быть некоторая нечеткость. Поэтому, когда у вас заканчивается код или память, вы застреваете в поиске эффективности или сокращении функций. Мой совет при выборе микроконтроллера: сначала решите:

Я ограничен по стоимости или времени?

Если стоимость ограничена, вы выбираете устройство, которое можете себе позволить, и подстраиваете свое приложение. Если вы ограничены во времени, выберите самое большое устройство, которое вам может сойти с рук.

Вы говорите, что ограничены во времени и не уверены в масштабе кода. Если есть какой-либо способ, которым вы можете оправдать плату ПК + ввод-вывод за 1000 долларов, идите по этому пути. Дороговато для дверного звонка...

person jdr5ca    schedule 10.06.2013
comment
На самом деле, некоторые устройства AVR изначально поддерживают внешнюю SRAM. - person JimmyB; 10.06.2013
comment
Да, исправил ошибку в ответе. Не ПЗУ, да ОЗУ. Несмотря на то, что вы читаете комментарий выше, у вас нет внешней программной шины, но если вы транслируете внешние данные и выполняете, означает ли это, что внешние данные являются кодом? Надо было остановиться на нечетком. - person jdr5ca; 11.06.2013
comment
Я думаю, что граница здесь как бы размыта. В любом случае можно было принимать данные из любого вообразимого источника и выполнять части кода, хранящиеся во флэш-памяти, в зависимости от полученных данных. Тогда это будет интерпретатор для какого-то языка (который я на самом деле не считаю исполняемым кодом). С другой стороны, благодаря способности AVR к самопрограммированию можно передавать скомпилированный собственный код AVR в виде данных на микроконтроллер, заставлять загрузчик сохранять его во флэш-памяти, а затем выполнять его оттуда. - person JimmyB; 11.06.2013
comment
Для этого проекта мы ограничены как стоимостью, так и временем, однако, если нам нужно потратить немного больше, чтобы сэкономить время, это было бы лучше, но не слишком много. Поскольку у меня нет большого опыта работы с платами Arduino, я не уверен, насколько хорошо программа размером 100-200 КБ поместится на микроконтроллере с 32 КБ памяти. - person Buten; 13.06.2013
comment
Ааа, так это реальный проект, где он должен быть дешевым и быстрым :) Вот почему вы покупаете набор инструментов и серию микроконтроллеров. Начните с малого и посмотрите, как низко вы сможете опуститься. Сохраняйте возможность перехода к следующему более мощному процессору в качестве стратегии смягчения последствий. В случае с Arduino и другими цепочками инструментов AVR вы можете переходить с одного микроконтроллера на другой практически без изменений кода. - person jdr5ca; 13.06.2013