31.08.2009

Seeeduino Mega

Название: Seeeduino Mega
Процессор: ATmega1280
Тактовая частота: 16 МГц
Совместимость с Shield-платами: да
Совместимость с Arduino IDE: да
Страница проекта: www.seeedstudio.com/depot/seeeduino-mega-fully-assembled-p-438.html
Дата первого упоминания: 29.06.2009

Амбициозный инженер Альберт Миао не мог не ответить на выпуск Arduino Mega: он опять постарался превзойти своих итальянских коллег (см. мой обзор о Seeeduino):



Основные преимущества Seeeduino Mega перед Arduino Meaga: компактнее, больше выходов, есть возможность работы портов F и K от 3,3В. В остальном плата повторяет достижения Seeeduino, среди которых отключение автосброса, возможность установки дублирующего ряда колодок с шагом 2,54 мм, посадочные места для дополнительных колодок I2C и выходов FT232 - я уже писал об этом, довольно подробно.

Кстати, о колодках - в отличие от Arduino Mega, здесь они поставляются отдельно:



... остается припаять только необходимые:





Автор составил сравнительную таблицу, чтобы отличия от Arduino Mega стали яснее:

СвойствоSeeeduino MegaArduino Mega
МикроконтроллерAtmega1280Atmega1280
Питание5В / 3,3В (Порты F,K)
Входное напряжение (рекомендовано)7-12В7-12В
Входное напряжение (пределы)6-20В6-20В
Цифровые пины70 (из них 14 ШИМ)54 (из них 14 ШИМ)
Аналоговые пины1616
Макс. ток через пин40 мА40 мА
Макс. ток через 3,3В-пин5050
Flash-память128К (4К из которых занято bootloader-ом)128К (4К из которых занято bootloader-ом)
SRAM (ОЗУ)8 Кб8Кб
EEPROM4 Кб4 Кб
Тактовая частота16 МГц16 МГц
Портов UART33
Контроллеров I2C11
Размеры71 х 53 х 11,3 мм101 х 53 х 13,6 мм
Разъем питанияJST двухпиновый, шаг 2,54 мм (есть переход на 3,5мм)3,5 мм
Переключение питания Внешнее/USBПереключательАвтоматически


Теперь о цене. Если ценник на Arduino Mega колеблется около цифры в 65 USD, то Seeeduino Mega стоит лишь 50 USD.

25.08.2009

Доступ к СМП по USB (2)

Вторая версия USB-устройства чтения-записи СМП/МПО Электроника МК-90.

В схему добавлен резистор 22К, притягивающий вход измерения батарейки к GND. Он позволяет избежать чтения "ерунды", когда пин висит в воздухе – теперь будет стабильный ноль.

Также я задался риторическим вопросом о том, стоит ли тащить в схему ICSP-разъем, если и так уже есть USB. Все, что требуется - это bootloader, который будет принимать новую прошивку через USB и прошивать ее во flash-память. С одной стороны - пустяк, может и не пригодиться, с другой - доступный способ обновления, не требующий программатора.

Итак, теперь управление всегда передается bootloader-у, который опрашивает джампер JP1. Пользователь аккуратно разбирает корпус устройства (при наличии такового ;), устанавливает джампер, подключает кабель USB. По установленному джамперу bootloader понимает, что грядет обновление прошивки и ждет данных для записи. Пользователь должен запустить отдельную программу smpreader_updater.exe с единственноым аргументом - именем hex-файла с новой прошивкой. После успешного завершения программы, надо отключить устройство от USB, снять джампер и завинтить обратно.




Бутлоадер был создан на основе релиза V-USB 20090415, а также проектов AVRUSBBoot и USBaspLoader.

AVRUSBBoot мне понравился экстремальной простотой и укомплектованностью host-программой – ну просто бери и пользуйся! Не тут-то было: с момента первого (и последнего ;) релиза прошло довольно много времени, поэтому пришлось обработать напильником: учесть особенности последнего стандарта C++, обновить морально устаревшее ядро V-USB, немного подкорректировать алгоритм проверки условия активизации и корректность выхода (позаимствовал идеи из USBaspLoader).

Увы, размер необходимой памяти программ с учетом bootloader-а вырос на 2К и составил более 4К. В таком варианте ATTiny2313 использовать уже не получится, ATmega48 – только если выкинуть код измерения напряжения батарейки. Поэтому, практически безальтернативно проект собирается на ATmega8-16PU.

Схема, исходники и бинарники: smpreaderusb_2.0.zip.

Файлов с прошивками теперь стало два: сначала надо прошить программатором smpreaderboot.hex, а уже потом через USB можно заливать smpreaderusb.hex. Подробные инструкции на английском языке в виде README-файлов заботливо разложены мной по подкатагам ;)

Кстати, собрал прототип на макетной плате под пайку, выглядит так:



Вместо двух отдельных светодиодов Rx и Tx я использовал один двухвыводной, токоограничительные резисторы R3, R4 и R5 имеют номинал 330 Ом.

К моему огорчению, по-прежнему отсутствуют:

  • GUI, печатная плата
  • инсталлятор (или хотя бы inf-файлы для драйверов)
  • Makefile для консольной сборки
  • поддержка Linux (пока – только потенциальная)
Если руки дойдут, возможно - все это и появится, следите за новостями ;)

23.08.2009

Новый V-USB

Вчера вышла новая сборка V-USB - программной реализации USB 1.1 для микроконтроллеров ATmega (именно на ней основаны AVR910 by prottoss и мой SMPReaderUSB). ChangeLog гласит:
  • исправлена бага определения End Of Packet в режиме 16.8 МГц;
  • исправлена бага с битстаффингом и рассинхронизацией в режиме 16.0 МГц;
  • дескриптор конфигурации чуть подкорректирован для USB 1.1, чтобы был установлен старший бит в bmAttributes (там, где флажок SELF_POWERED);
  • процедура подсчета CRC заменена на более быструю - но по-прежнему, необходим кварц 18.0 МГц.
Буду иметь ввиду на будущее, хотя, на первый взгляд, изменения по отношению к апрельскому релизу - минимальные. Реализация для частоты 12 МГц пока что находится вне конкруенции ;)

20.08.2009

Arduino Nano v.3

Название: Arduino Nano v.3
Процессор: ATmega328P
Тактовая частота: 16 МГц
Совместимость с Shield-платами: нет
Совместимость с ArduinoIDE: есть
Веб-сайт проекта: http://arduino.cc/
Дата первого упоминания: 13.07.2009


На текущий момент - это последняя плата, разработанная под маркой Arduino. С предыдущей версии 2.2 изменилось:
  • МК ATmega328P (32К Flash)
  • Голубой светодиод питания сверху
  • Выводы A0-A7 теперь совместимы с Arduino Pro Mini и Arduino Stamp
  • Печатная плата стала двухсторонней, проще модифицировать :)
Основаная идея этой платы - стремление к миниатюризации, но не в абсолютном понятии, как у Arduino Mini, а при сохранении USB.


Я считаю - в принципе, получилось неплохо (в ArduinoIDE 0017 эта плата уже есть в списке поддерживаемых). Плата имеет возможность внешнего питания с автопереключением, как в Duemilanove. Удалось разместить разъем ICSP, свтодиоды Rx,Tx,L и даже крошечную кнопочку сброса ;) Как и в Seeeduino, наружу выведены дополнительные входы АЦП, которых нет у МК в DIP-корпусах, а это значит, что вы получаете еще два I/O пина.

К сожалению, вилка X4 на плату не поместилась, поэтому BitBang-программирование невозможно.


Подобно BoAdruino, гнезда PBS заменены на вилку PLS: это означает, что плату можно легко воткнуть в макетку или даже в DIP-кроватку соответствующей ширины и количества ножек.

Выводы

Из плюсов: идеально подходит для макетирования, если у вас есть макетная беспаечная плата. Небольшой вес позволяет использовать ее для установки на летательные аппараты. Не нужен переходник USB-TTL.

Минусы - нужна макетка или гнезда BLS, чтобы пристыковаться, нужен разъем mini-B USB, чтобы заливать скетчи, да и процессор "в случае чего" будет не поменять. Нет возможности запустить процессор от 3,3В.


Ограниченная партия плат доступна для покупки здесь.

14.08.2009

Фоторезистор

Наконец-то ко мне в руки попала партия фоторезисторов! Сделано в СССР, датчик называется ФР-764:



Датчик работает так: в темноте его сопротивление довольно велико (минимум - 3 МОм). Когда в прозрачное окошечко попадает свет, сопротивление падает пропрционально освещенности. Соответственно, чтобы использовать его в Arduino, собирается несложная схема:



Подключаем, естественно, к аналоговому входу. Подтягивающий резистор R1 и фоторезиcтор PH1 образуют делитель напряжения питания, опорное напряжение АЦП - оно же. Производим простейшее соединение на колодках Arduino:





Пишем простейший скетч, который считывает показания АЦП и отправляет их в последовательный порт (для наглядности - с переводом строки):

int val;

void setup()
{
Serial.begin(38400);
analogReference(DEFAULT);
}

void loop()
{
val = analogRead(0);
Serial.println(val);
delay(100);
}


Только не забудьте выставить соответствующую скорость порта в Arduino IDE:



и подключиться к порту через иконку Serial Monitor:



Первым делом, можно проверить, что считывается в "темноте":



В "темноте" ;) с АЦП будет считываться значение около 1010..1020, лампа дневного света над моим столом будет выглядеть как 950-980, а вот если к сенсору приблизить настольную "галогенку", можно получить около 500-600, в зависимости от расстояния.

Вероятно, после несложной калибровки ФР-764 можно использовать в схеме датчика освещенности или же в качестве сенсора работа, ориентирующегося на свет. Максимальное напряжение, которое можно приложить к датчику - 20 вольт, максимальная длина волны - около 660 нм. Получается, что граница чувствительности приходится на красный диапазон, который закхватывается не целиком. Если это критично, надо искать ФР-765 - у него предел составляет около 700 нм.