Ардуино-BASIC недокомпьютер

UPDATE:переход на платформу stm32f1.

Около-калькуляторный недокомпьютерный шилд для Ардуино-Наны. Питание от одной АА батарейки через бустер, SPI SRAM память на 128 кБайт, I2C алфавитноцифровой дисплей 20x4, 8x5 матрица кнопок.
20x4

Далее идут фото со старым дисплеем 16х2:
keysarduinaarduina2

Как видно нормальная клавиатура самодельщикам нужна как воздух !!! Платка с MSP430 ??
Кстати, если выровнять кнопки, то можно и для этой платы напечатать корпус с толкателями :-)

Нет, не msp430, это Ардуино-Нано с алиэкспресса, на Atmega-328 чипе

Клавиатура нужна как воздух! Я заколебался руками эту матрицу распаивать :)

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Я кстати вот подумываю заставить 3D принтер печатать мне плёночки с трафаретами для намазывания пасты..хе хе. Для таких контактных площадок вроде не очень страшные допуски. А всякие TQFP можно и вручную напаять ???

TQFP можно и вручную запаивать, но лучше под бинокуляром или в очках, я вполне успешно перепаивал микросхемы со 128 выводами и шагом 0,5мм, но выпаивать только воздухом.

Клавиатурный тест Basic-NANO работает.

kbd test

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Почти МК-85 в макете :)

Следующий этап - портирование TinyBasicPlus. Надо переделать менеджер памяти Basic для работы с внешней SRAM. Чтобы при старте было что-то вроде:

64000 bytes free

.
Если TinyBasicPlus сюда не влезет, то переделаю этот шилд на stm32f103 - перепайка будет минимальная.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Представляю такой девайс с две визитки :-)

Главное - софт отладить, а железо можно развести какое надо

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Когда более мощное железо дешевле и проще использовать, чем слабое и низкопотребляющее.
Казалось бы прилепи Raspberry Pi Zero и вот тебе комп с любыми штуками, даже системы компьютерной алгебры вроде Максима пойдут. Всё это подрубает стимул мучиться с контроллерами и писать на голую.

Воткнул - и тебе честный линукс, и графика, и Octave с Питоном и Матплотом.
А хочется 8-битного Бэйсика :)

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

А ещё на мини клон ZX Spectrum всё время тянет. Если сделать дешёвый эмулятор на контроллере, да запихать в детский ноут - была бы тема!

Мини-клон ZX Спека я давно хочу. Есть такое вот (я даже с автором когда-то общался):
http://good-kits.ru/nabory-bloki-i-moduli/zx-spectrum/radiokonstruktor-a...

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Под AVR там кажется требуется два контроллера, один занимается видео, другой ЦПУ - эмулирует Z80. По идее себестоимость должна быть смехотворная. Под STM32 ещё лучше, но F4 довольно дорогая серия, портировать бы под копеечные F1. В идеале впихнуть Спектрум во что то габаритов тетриса, только сделать порт для клавиатуры, джойстика и подключения к телевизору.
Глядя на детские игрища могу сказать, что карапузам плевать на чём рубиться, они графеном не сильно испорчены. Правда не уверен, что это утверждение верно для школоты старше начальных классов :-) Для программирования простых вещей там хорошо Барсик вписался и другие языки есть, вплоть до Форта. Для киндеров, которые ещё читать не умеют, можно подобрать игры и развивающие программы, рисование музыка и т.п. Для школьников - обучение счёту и т.п. Всё такие там потенциал в 1000 раз выше, чем в детских "ноутбуках", которые даже не являются компьютерами ! Вот вам и прямой конкурент МК-161 :-)

Для AVR это как бы не того самого чувака исходники.

STM32F429DISCO у меня такая борда есть и исходники я скопировал:
https://www.youtube.com/watch?v=_adQIfOoyS0

Такая отладочная плата стоит сейчас на Али 2500 рэ:
ИМХО перебор. Ну и неприятно, что они скоро вообще исчезнут,а хотелось бы стабильности производства :-)
Не знаю можно ли так же быстро рисовать на самый ходкий китайский Ардуино экранчик (сенсорный!), который у китайцев продаётся ~300 рублей. По идее у спека требования по быстродействию не очень, может быть можно втиснуть в такой экранчик. Тогда берём STM32 или пару AVR + 64Кb SRAM и получается портативный спектрум, клавиатура в комплект не входит :-)
В общем бюджет деталей в розницу приближался к 2500 рублей за отладку, где всё уже готово и я задумался. Уже год думаю :-)

Есть есть шанс использовать дешёвый экранчик за 300 рэ, то можно взять такой
https://ru.aliexpress.com/item/Core407V-STM32F407VET6-STM32F407-STM32-AR...
Модуль и приделать к нему экранчик, по идее переделка с STM32F429 не должна быть сильно трудоёмкой. Но и так без корпуса и клавиатуры получаем железа на 1300 рублей. Хотелось бы чтобы оно втиснулось в стоимость дешевого детского ноута, т.е. всё целиком было не дороже 2000 рэ :-) Это повод задуматься тем кто считает цену ~15 тыр за МК-161 нормальной, ведь спек куда круче МК по функционалу !

Да, в той AVR платке, вроде, даже 3 аврки - одна отвечает за видео, вторая эмулирует Z80, а отдельно втыкается микроплатка с эмулятором аудиочипа.

Тут вот интересный проект на Распи.

И тут. :)

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Не будет кустарная вещь стоить дешевле массово производящейся. Позиционировать результат в 2к₽ означает убивать его на корню. В этом плане МК-161 за 15к₽ добрее к конкурентам. :-) Хотя их всё равно нет.

Спектрум многим дорог, как память. Но это импортная разработка. В России он интересен разве что тем, у кого в детстве не было отечественных игрушек вроде ПМК — развить которые до уровня Спектрума сравнительно несложно.

http://multicore.ru/index.php?id=1353

На в России всё что "выпускается" достать очень трудно.

Нашел интересную библиотеку - можно подключать внешнюю память (SPI SRAM, SD-card и даже компьютер, подключенный через UART) и адресовать эту память естественным способом.

Проверил на своём шилде:

    char testbuf[] = "This is a test string buffer\nThis is a test string buffer\nThis is a test string buffer\nThis is a test string buffer\nThis is a test string buffer\nThis is a test string buffer\nThis is a test string buffer";

    // Allocate 128000 bytes in virtual memory and store the address to a virtual pointer
    VPtr str = valloc.alloc(128000);

    // Set first 65000 bytes to 'A'
    memset(str, 'A', 65000);
    Serial.print("Read from str[0]: "); Serial.println(str[0]);

    // Direct access to the buffer
    str[60000] = 'B';
    Serial.print("Read from str[60000]: "); Serial.println(str[60000]);

    str[126000] = 'C';
    Serial.print("Read from str[126000]: "); Serial.println(str[126000]);

    // Copy the whole buffer 
    memcpy(&str[127200], testbuf, sizeof(testbuf));
    memset(testbuf, 0, sizeof(testbuf));
    memcpy(testbuf, &str[127200], sizeof(testbuf));
    Serial.print("Read from str[127200]: "); Serial.println(testbuf);

    valloc.free(str); // Free the virtual memory

Результат:

Read from str[0]: A
Read from str[60000]: B
Read from str[126000]: C
Read from str[127200]: This is a test string buffer
This is a test string buffer
This is a test string buffer
This is a test string buffer
This is a test string buffer
This is a test string buffer
This is a test string buffer

Нативная поддержка 128КБ памяти из Бейсика становится ближе

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Нашел более полноценный Ардуино BASIC.

The BASIC supports almost all the usual features, with float and string variables, multi-dimensional arrays, FOR-NEXT, GOSUB-RETURN, etc. Saving and Loading from EEPROM is supported, as well as auto-running a program on power-up. You can also read and write from the analog and digital pins.

Заменил oled класс на I2C LCD класс, отключил PS/2 клавиатуру и внешний EEPROM - кое-как влезло в atmega368p:
arduino-basic

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

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Имхо это уже сейчас выглядит перспективней МК! Корпусировать бы.
Экранчик большой многострочный. Красота!

разводки полноценной печатки и изготовление ее где-нибудь у китайцев.
А там дальше как пойдет. Глядя на тот Arduino-Basic проект, захотелось второй шилд: под esp32 или stm32, с экраном 20х4 символа, они дешевые как семечки.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Мне даже формфактор нравится, для начала очень даже круто, захотелось самому творить :-)
Ждём новых фоток про ваш компьютер!

Я, кстати, второй идеей обдумываю использовать этот же шилд, но воткнуть esp32 через плату-адаптер под другую разводку SPI, I2C и GPIO.

Корпус для текущего формфактора просит сделать удобный grip слева, где батарейка стоит. Удобно будет держать в левой руке :)

P.S. Заказал 20x4 ЖКИ, попробую заменить на этом шилде. Правда, будет некрасиво торчать из платы - экран длиннее

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

клавиатуры, это своего рода дизайнерская фишка будет :-)

А можно рисунок, я не понял, как?

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Поздравляю, это уже ближе к МК-185 :) особенно на stm32 :)

Но, скорее всего, сразу на esp32 переползу :)

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Идея простая, чтобы не торчало в сторону повернуть экран под углом, как на МК-161, но не целиком с корпусом, а как бы выделить его плитку отдельно, если возможно вообще сделать вращающимся в пазах внизу. Над клавиатурой корпус видится каким то изогнуто обтекаемым в духе TI 200 Voyage, с бортиком по периметру, там где кнопки фигурная утопленная зона. А ещё не забыть вашу отличную идею про держалку для руки сбоку. Хотя если в руке держать - экран нельзя слишком поворачивать (не больше угла МК-161) иначе он будет к глазам паршиво ориентирован. Да в принципе это хороший угол и для стола и для руки.

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

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Vitasam wrote: отключил PS/2 клавиатуру и внешний EEPROM - кое-как влезло в atmega368p:

Если идея расширения ОЗУ за счёт внешней SRAM не оправдывает затрат, то может добавить сохранение программ во внешней EEPROM?

Я попробую SD-карточку, если влезет. А если нет - то да, внешний EEPROM

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Заменил вызовы PS/2 клавиатуры на Serial terminal и попробовал этот код:

10 a=2
20 b=3.4
30 c=a/b
40 print "c=";c
run
print "Hello world!"

Видео результата работы на шилде (Если вдруг на OneDrive нет превью в браюзере, то надо скачать видеофайл. На Ютюбе не выкладываю - неохота "загрязнять" ленту полуфабрикатными роликами)

Похоже, в коде у меня баг - текущая строка вывода забивается BACKSPACE.

Очевидно, что 2-х строчный экран не очень удобен - с нетерпением жду с алиэкспресса 4-х строчный. Тот же контроллер - никакой переделки не надо.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

тут видео работы Бейсика.

Теперь надо заменить Serial на клавиатурную матрицу

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Хорошо смотрится, но двух строк и правда мало. Лучше чем одна в МК-85, но хуже четырех :) Нумерация строк вызывает улыбку.

смотрится забавно, уж лучше бы скроллинг в сторону, как на МК85 :)

Так что да, перехожу на 20х4 дисплей

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Для переноса можно сделать окончание строки по символу пробела, как в текстовом редакторе. Четырёхстрочный дисплей по габаритам как графический 128х64, но требует 1кб памяти и знакогенератор :)

Четырёхстрочный дисплей по габаритам как графический 128х64, но требует 1кб памяти и знакогенератор

В смысле - графический дисплей требует памяти и знакогенератор? Алфавитно-цифровому не надо

Графический экран для ардуины не хочу, может, позже, под stm32 или esp32

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

можно подцепить ипользуя шилд Gameduino3
https://www.youtube.com/watch?v=m-bdZPU4Es4 Здесь видео с проекта с подцеплением графики на плату Core746i

P.S. http://excamera.com/sphinx/gameduino3/ Сам проект Gameduino3 представлен здесь.

Я думал про графический экран, но мне хочется остаться в "бюджетной алфавитно-цифровой" концепции. Сделующий апдейт: 20x4 экран вместо нынешнего 16x2

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Заработала первая версия клавиатуры 8x5 (видео).
(Иногда кнопки дребезжат, надо подзаточить обработчик клавиатуры.)

Работает сохранение программы во встроенный EEPROM. Поддержку 128 КБАйт ОЗУ пока не добавил.

Тактильные ощущения этих кнопок напоминают МК161 :(
Для готового варианта надо будет поискать какие-нибудь более эргономичные кнопки.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Поддержу сосредоточение на создании достойного девайса. Отличаться от МК-161 не самое главное.

Ненавистников ЭКВМ вам всё равно не удовлетворить и к их похвале стремиться бессмысленно. Когда проект выйдет на стадию, сравнимую с МК-161 (мелкосерийное производство) — они и у вас найдут, к чему придраться. Здесь же не что-то личное к Новосибирску, здесь застарелая международная борьба матёрых хищников за контроль над производством.

Хорошая клавиатура — хорошо, конечно. Но не главное.

UPDATE. А можно на YouTube залить? На iOS просматривать проще будет. Как разработчик алфавитной клавиатуры для калькулятора, я заинтересовался матрицей 8x5. Это на 2 кнопки больше, чем МК-161, куда было сложно впихнуть невпихуемое. 33 русские буквы + 4 стрелки + 4 пунктуация (пробел, запятая, точка, перевод строки) это уже больше 8x5=40. Для удобства ещё должны быть BS, Shift, Ctrl, переключение алфавитов и национальный префикс для ввода украинских / белорусских букв.

На ютюб выложу обязательно, но надо видео получше сделать.
А в качестве продвинутого шилда есть смысл взять контроллер помощнее (например stm32) и добавить еще один столбец в клавиутуру, что даст 8x6 = 48 кнопок.

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

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

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

Я сделаю покачественнее видео в качестве демо для гитхаб-проекта и выложу на ютюб.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Осталось ещё spi-flash повесить в качестве диска для сохранения программ и ввод команд одной клавишей, как в спектруме :) Какой объём ОЗУ микроконтроллера используется?
Для уничтожения дребезга вместо двух проверок нажатий можно сделать три.

Тут используется ардуино-Нано с atmega638p - 2 КБ ОЗУ и 32 КБ флеш-памяти для программ. Обе памяти уже близки к пределу, так что возможности по апгрейду малы.
В планах добавить поддержку уже установленной на плате 128 КБ SPI ОЗУ. Может, поддержка SD-карточки, если место будет.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Хочу сказать отдельное большое спасибо уважаемому Электромонтеру за помощь в схемотехнике и софте опроса матрицы клавиатуры с помощью дополнительного дешифратора.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

На здоровье! Чем смог, тем помог)

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Serial RAM работает (видео).

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Проект на гитхабе.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Как и ожидалось, новый экран заработал из коробки, поменял лишь две константы: ширина и высота экрана, в символах.
Видео
ekran 20x4

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

вывода изображения не рассматриваллось?
Примерно, как здесь реализовано Fignition AVR "недокомпьютера"
https://sites.google.com/site/libby8dev/fignition
или других вариантов (подобных ZX-Spectrum на AVR) с выходом на VGA,
подобное http://www.jcwolfram.de/projekte/avr/chipbasic2/main.php
но это, по моему, уже перебор.

P.S. Конечно это уже не такое мобильное решение.

Нет, внешний ЖКИ или выход на ТВ не рассматривались, хочу остаться в рамках полностью мобильного решения.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Vitasam wrote: Как и ожидалось, новый экран заработал из коробки, поменял лишь две константы: ширина и высота экрана, в символах.
Видео

Видео захватывающее, как будто на дворе 1987 год, я сижу в классе БК-шек и набираю похожий текст. Добавлять комментарий "школоте не понять" не буду, потому как вполне поймут, если любят компьютеры :)

https://www.youtube.com/watch?v=k5RZepI91fQ

P.S. Автор, в дальнейем, похоже быстро перешёл на плату с большим LCD и плату на STM32F7.

Интересный проект. Хотя мне пока интереснее мобильный вариант - со своими кнопками

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/