*** ВНИМАНИЕ: Блог переехал на другой адрес - demin.ws ***

четверг, 19 января 2012 г.

Maximite - 8-bit nostalgia with a soldering iron / Ностальгия по временам Радио-86РК и Спектрума с паяльником в руках

The English version of this post is below.


Некоторое время назад я наткнулся на интересный проект - Maximite.

Это микрокомпьютер на базе Microchip PIC32 со встроенным Бейсиком. Прелесть тут в том, что собрать его можно за пару часов.

http://geoffg.net/Images/Maximite/icon.jpg

По возможностям он немного мощнее Радио-86РК и классического Спектрума. Но вот периферия у него сказочная: SD/FAT карточка, USB, VGA, PS/2, таймеры, RS232, I2C, SPI, PWM, ADC/DAC и просто одиночные порты-пины общего назначения.

Если собирать на макетной плате, то цена будет, по заявлению автора, менее десяти австралийских долларов.

Проект полностью открытый. Автор дает схемы, исходные коды прошивки и рекомендации по наладке.

Если даже быстро пролистать документацию, видно, возможностей прорва. Можно практически на коленке создавать различные мини-контроллеры чего угодно. Работа со всей выше перечисленной периферией ведется прямо из Бейсика.

Программы и данные можно хранить на SD карточке. Если на карточке есть файл "AUTORUN.BAS", то прошивка автоматически запускает его при старте.

Мне это все понравилось, но паять мне было лень. А в интернете продавались только конструкторы.

В итоге я заказал конструктор у Altronics.

И вот он пришел. На плате запаян только микропроцессор, ибо для пайки такого корпуса надо либо иметь паяльную станцию, либо большое умение.

Поехали.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0099.jpg

Вот тут я уже припаял несколько элементов. Я в пайке не совсем новичок, но держал паяльник в руках последний раз лет пять назад. Кислоты у меня не было, поэтому для ускорения процесса я выкрашивал канифоль прямо на точки пайки. Эффект примерно такой же. Паяльник (тот, что в тарелке) с острым жалом.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0102.jpg

Первый час я возился с несколькими элементами, но потом дело наладилось.

Вот тут уже готова половина.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0103.jpg

Но еще через час все было готово.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0106.jpg http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0107.jpg

Maximite может питаться либо от внешних 9 вольт, либо от USB. Я подключил вторым способом.

Итак, запуск. Подключаем USB и VGA к монитору. Работает!

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0110.jpg

Бейсик готов выполнять команды, но пока нет клавиатуры. Чисто PS/2 клавиатуры у меня не было, поэтому я попытался через USB-PS/2 переходник. Увы, воткнуть не получилось.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0111.jpg

На следующий день я взял у наших айтишников старую PS/2 клавиатуру и таки подключился.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0119.jpg

Корпус.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0114.jpg http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0115.jpg

В закрытом виде.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0112.jpg http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0113.jpg

Надо отдать должное - конструктор от Altronics отличного качества. Отверстия на плате металлизированы, что значительно упрощается пайку. Корпус моментально собирается.

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

Maximite имеет встроенную возможность обновления прошивки, и специальный программатор не нужен. Надо открыть корпус и перезапустить Maximite, удерживая специальный микро-выключатель. Устройство впадает в состояние boot loader'а, и специальной утилитой через USB можно заливать обновление.

Maximite видится в USB-подсистеме как стандартное CDC устройство. Но для Windows нужно все равно сначала поставить драйвер для создания виртуального COM-порта. На Маке этот драйвер встроен.

Подключаем.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0116.jpg

Заливаем.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0118.jpg

Ура. Прошивка обновлена с 2.1 до последней 3.0A.

Как я уже говорил, Maximite поддерживает VGA для дисплея и PS/2 для клавиатуры. Но это не все. Если подключить Maximite через USB к компьютеру, то кроме питания можно запустить программу эмулятор терминала, которая через виртуальный порт RS232 (работающий через USB) может обмениться данными с Maximite. Все, что Maximite выводит на VGA также дублируется в порт, а все что Maximite получает из порта расценивается как принятое с клавиатуры.

То есть можно вообще отключить VGA и PS/2 и работать чисто через терминал. Это офигительная возможность.

Например, картинка с VGA (вольтметр):

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/dsc01130.jpg

И одновременно с экрана терминала:

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/dsc01129.jpg

Забавно, экран у Maximite работает с точками, а не со знакоместами. Когда на экран выводится символ, то он дублируется, как я уже сказал, в терминале. А если рисуется графика, то она, естественно, в терминале не видна.

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

На сайте автора есть архив с программами на Бейсике, демонстрирующие некоторые возможности Maximite.

Я приведу несколько картинок.

Часы.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/dsc01125.jpg

Редактор знакогенератора.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/dsc01123.jpg

Вольметр.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/dsc01132.jpg

Пару головоломок.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/dsc01128.jpg http://github.com/begoon/blog/raw/master/2012_01_19_maximite/dsc01133.jpg

А что это, думаю, объяснять не надо.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/dsc01126.jpg http://github.com/begoon/blog/raw/master/2012_01_19_maximite/dsc01131.jpg

Ну, конечно, привет Хабру!

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/dsc01134.jpg

Заключение

Каждая копейка, потраченная мной на этот эксперимент, стоила полученного кайфа.

Сам проект Maximite удивляет своей законченностью. Все как-то очень органично и просто. И самое главное - это работает!

Как мне кажется - для начинающих, даже детей, интересующихся микропроцессорной техникой, Maximite - это просто находка. Элементарная сборка, не требующая настройки. Я, как полный дилетант, собрал все за несколько часов.

Когда мой брат лет двадцать назад собирал Радио-86РК и Спектрум, ходила шутка про устройства для самостоятельной сборки, описываемые в журнале "Радио" - если авторы говорят, что устройство не требует наладки, то значит есть хотя бы минимальный шанс его наладить, ну я если авторы говорят, что требуется минимальная наладка...

В общем, хотите тряхнуть восьмибитной стариной с паяльником в рукам - соберите Maximite.



Recently I have come across an interesting project - Maximite.

This is a micro-computer based on Microchip PIC32 running BASIC. It is so simple that even a novice can build it in a few hours.

http://geoffg.net/Images/Maximite/icon.jpg

It is a bit more powerful than Radio-86RK and ZX Spectrum 48. But its peripherals are fantastic: SD/FAT card, USB, VGA, PS/2, timers, RS232, I2C, SPI, PWM, ADC/DAC and individial general purpose pins.

If you build it on a mock up board buying parts by youself, it will cost less then ten Australian dollars.

The project is open-sourced (schematics, PCB artwork, sources).

Even if quickly flip through the documentation, no doubts - a list features is impressive. All peripherals are available directly from BASIC.

Programs and data can be stored on a SD card. If there is a "AUTORUN.BAS" file on the card, BASIC will run at the start.

I liked Maximite, but soldering is not my favourite activity. Unfortunately it is only possible to buy a kit, but not a fully assembled unit.

I ordered the kit from Altronics and soon after it arrived.

Only the microprocessor was already soldered because soldering such form factor chip isn’t an easy task.

Anyway, screw it, let’s do it.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0099.jpg

Here a few parts are already in place. I’m not a complete newbie in soldering but last time I took a soldering iron in my hands was about five years ago. I had no acid for soldering, so I was crumbling rosin right to soldering points. The effect is similar to acid. The soldering iron (the one on the plate) with a sharp sting.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0102.jpg

I spent the first hour struggling with only a few parts, but eventually it went smoother.

A half is ready.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0103.jpg

After one more hour it was all done.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0106.jpg http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0107.jpg

Maximite can be powered from an external 9V source or form USB. I used USB.

Plug into USB and VGA. An off you go!

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0110.jpg

BASIC is ready but there is no keyboard. I hand’t a proper PS/2 one and I tried a USB-PS/2 connector. Alas, it didn’t fit.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0111.jpg

Next day I found the PS/2 keyboard and finally connected.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0119.jpg

The case.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0114.jpg http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0115.jpg

Fully assembled.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0112.jpg http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0113.jpg

I have to admit - the kit from Altronics is a very good quality product. The holes are metallized on the board, and the case fits perfectly.

Then I had to upgrade the firmware to the latest version. Maximite can flash itself over USB without a special programmer. Just open the case and hold a special button when swithing Maximite on. It goes to a boot loader mode.

Maxitite is a standard CDC device in USB infrastructure. Windows still requires a driver though, but Mac has it built-in.

Plug-in.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0116.jpg

Flashing.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/img_0118.jpg

Right, the firmware is upgraded up to 3.0A.

As I said, Maximite supports VGA and PS/2, but you can also connect it to a PC via USB. In this case Maximite mirrors the VGA output to that serial connection to the PC, also treats the data coming from that connection as keyboard input.

So, it is possible to detach VGA and PS/2 at all and talk to Maximite over the serial USB connection only.

For example, VGA dispay (voltmeter):

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/dsc01130.jpg

The same data on in a terminal emulation application on the PC:

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/dsc01129.jpg

Interestingly, Maximite works with pixels, not characters. So when a character is being displayed, it is also copied to the console, but when Maxitile draws graphics it is not visible in the serial console.

BASIC language in Maximite gives full control over the peripherals using operators.

There is an archive of BASIC programs running on Maximite available of the project website.

There are a few screenshots.

Clock.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/dsc01125.jpg

Character editor.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/dsc01123.jpg

Voltmeter.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/dsc01132.jpg

Puzzles.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/dsc01128.jpg http://github.com/begoon/blog/raw/master/2012_01_19_maximite/dsc01133.jpg

I believe, no comment here.

http://github.com/begoon/blog/raw/master/2012_01_19_maximite/dsc01126.jpg http://github.com/begoon/blog/raw/master/2012_01_19_maximite/dsc01131.jpg

Conclusion

Every penny I have spent on Maximite is worth that fun I’ve got.

The Maximite project is surprisingly solid. Everything is nice and simple. And it works!

For beginners, even kids, interested in microelectronics, Maximite is simply a godsend. Easy and nice to build. I as an amateur have built everything in a few hours only.

When my brother was building Radio-86RK and Spectrum about twenty years ago, there was a joke about DIY projects published in radio electronics magazines: if a author says that his device doesn’t required any tuning, there is at least a little chance to get it working; but the author says that his device does require some minor tuning...

Anyway, if you want to come back to your 8-bit youth with a soldering iron in hands — build Maximite.

Комментариев нет:

Отправить комментарий