Ардуино-шилд

Вот обещанный около-калькуляторный шилд для Наны. Клавиатурная матрица 4x10 как бы намекает :) что это похоже на клавиатуру ZX81:

// Keymap for normal use
byte keyMap[NUM_ROWS][NUM_COLS] = {
  {'5', '4', '3', '2', '1'}, 
  {'t', 'r', 'e', 'w', 'q'}, 
  {'6', '7', '8', '9', '0'}, 
  {'g', 'f', 'd', 's', 'a'}, 
  {'y', 'u', 'i', 'o', 'p'},
  {'v', 'c', 'x', 'z', 0}, 
  {'h', 'j', 'k', 'l', KEY_RETURN},
  {'b', 'n', 'm', '.', ' '}
};

// Keymap if Shift is pressed
byte keyMapShifted[NUM_ROWS][NUM_COLS] = {
  {KEY_LEFT_ARROW, '$', '\\', '@', KEY_ESC}, 
  {'T', 'R', 'E', 'W', 'Q'}, 
  {KEY_DOWN_ARROW, KEY_UP_ARROW, KEY_RIGHT_ARROW, KEY_F6, KEY_BACKSPACE}, 
  {'G', 'F', 'D', 'S', 'A'}, 
  {'Y', 'U', 'I', 'O', 'P'},
  {'V', 'C', 'X', 'Z', 0}, 
  {'H', 'J', 'K', 'L', KEY_F5},
  {'B', 'N', 'M', ',', ' '}
};

arduinaarduina2

Тут сделал видео работы хардварного теста.

Питание от одной АА батарейки через бустер, SPI SRAM память на 128 кБайт и теплый ламповый 16x2 дисплей через I2C.

Как видно нормальная клавиатура самодельщикам нужна как воздух !!! Платка с 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к₽ добрее к конкурентам. :-) Хотя их всё равно нет.

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

Ходил к друзьям его щупать. В итоге спектрум мне интересен, а пмк - не очень - годами играл на калькуляторе, зачем продолжать ? :-)

Вообще говоря кустарная вещь - это скорее МК-161. Слова "массовое производство" просто смешны на фоне мелких серий сего девайса. Кроме того присутствуют все признаки кустарности - убогий первый попавшийся корпус от мультиметра, тактовые кнопки вместо нормальных, газетная бумага в качестве упаковочного материала !!! Это в лучшем случае мануфактура, а не массовое производство. Кроме того в устройстве МК-161 использованы компоненты функционал которых не стоит своих денег: Winbondовский контроллер, экранчик (этот тип дорогой и зелёный). "Кустарная вещь" может содержать больше готовых и массовых частей, которые будут существенно удешевлять устройство. Например если внутрь МК-152/МК-161 заложить массовый одноплатный компьютер, то большую часть стоимости можно было бы вычеркнуть. Может у Семико какие то патриотические мотивы или желание делать целиком всё своё, а любителям это до лампочки, для любителей главное, не побоюсь этого слова, развлечение! Just for fun ! А если оно ещё и будет продаваться, то ещё лучше !

МК-161 это мелкосерийное производство.

Есть люди, которым интересно выпускать под видом отечественных ЭВМ чехлы для массовых зарубежных компьютеров вроде Ардуино или айфонов. Некоторые ещё за похожие подтасовки бюджетные деньги пилят.

Речь же о том, чтобы выпускать свои вычислительные машины. И на первых порах они будут дороже зарубежных, которые уже выпускаются массово. МК-161 тому пример (его цена выше зарубежных разбери-пи). В разработке отечественной техники есть свой fun. Это точно не интерес денег, чтобы сэкономить. Кто-то делает отечественное по долгу службы, но это не высшая мотивация.

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

Есть люди, которым интересно выпускать под видом отечественных ЭВМ чехлы для массовых зарубежных компьютеров вроде Ардуино или айфонов. Некоторые ещё за похожие подтасовки бюджетные деньги пилят.

А есть люди, которые выпускают нормальные отечественные устройства, на современных контроллерах и ПЛИС и не пилят никакие бюджеты. Жаль что это не Семико.

>Речь же о том, чтобы выпускать свои вычислительные машины. И на первых порах они будут >дороже зарубежных, которые уже выпускаются массово.

Облом. Машины швейцарца не выпускают массово, но они дешевле. Тут место наверное проклятое :-)

>МК-161 тому пример (его цена выше зарубежных разбери-пи).

А также выше DM42

>В разработке отечественной техники есть свой fun.

Видимо мало кто его находит, судя по засилью иностранной :-)

>Кто-то делает отечественное по долгу службы, но это не высшая мотивация.

Я не понял: если не деньги, не fun, то вашему высшая мотивация - это патриотизм что-ли ?

А что такое СВОИ вычислительные машины ? Насколько они свои, если комплектующие малость зарубежные и компилятор зарубежный ? Может быть хватит париться по этому поводу, а просто радоваться созданию чего то прикольного ?

У нас разные исходные тезисы. Поэтому, даже если пользоваться логикой, будем приходить к разным выводам. Мои утверждения:

1. МК-161 мелкосерийное производство, почти удовлетворяющее моим идеалам отечественного. Уровень, зависимый от иностранщины (W77) закрыт — следовательно, написанные для ЭКВМ программы смогут поддерживаться и на будущей 100% отечественной ЭВМ. Где даже камень будет нашей архитектуры (а не Интел).

2. Разрабатывать отечественную технику интересно. Это именно fun, а не жажда сделать продукт подешевле. И этим действительно мало кто способен заниматься — отсюда и мой респект таким людям. Которые в России таки есть.

Можно и дальше пройтись — по тем же DM или патриотизму. Но из-за разницы в мировоззрениях разговор будет долгим и бесплодным, то есть бессмысленным. К счастью, мы друг от друга финансово не зависим и в общих проектах не участвуем. То есть искать в чём-то согласия нам не обязательно. :-)

Уровень, зависимый от иностранщины (W77) закрыт

1.Следовательно если в чём угодно закрыть уровень, например в ПЛИС американской фирмы Altera(Intel) реализовать уровень, который когда нибудь в следующем столетии может быть будет реализован в отечественном процессоре - значит это будет идеал отечественного :-)

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

2. Разрабатывать отечественную технику интересно. Это именно fun, а не жажда сделать продукт подешевле.

Любой идиот может придумать продукт подороже. Попробуйте сделать подешевле, это вовсе не простой вызов! Например ZX AVR в принципе довольно простое решение на 3-х копеечных AVRках, думаю себестоимость в мелкой партии там не превышает 2 тысяч. Конечно нет экранчика, клавиатуры и аккумулятора с цепями, но что то у меня большие сомнения, что можно добраться таким макаром до ~15 тысяч отпускной цены.

Да что ZX Spectrum, возьмите практически любой 8-битный комп того времени (включая наши МК с бейсиком), он будет на порядки интереснее этих МК-161.

Можно и дальше пройтись — по тем же DM или патриотизму.

Да да пройдитесь. Почему не имея никаких огромных тиражей, на которые вы давили раньше насчёт продукции HP и TI и очевидно производя сам продукт где-то в другом месте (думается заказывается у те же китайцев), швейцарец таки может создать продукт дешевле и лучше МК-161 ? Может быть швейцарец больший патриот (своей Швейцарии), чем Семико - своей России ? :-)

Видите, снова натыкаемся на разницу в самой основе.

Для меня использование W77 это недостаток — то отличие от идеала, которое я упомянул. Закрытие этого уровня слабо компенсирует данный недостаток. Для вас W77 или Altera — признак отечественного. Вы даже предлагаете не исправлять, а развивать это направление. Мой путь к идеалу совершенно другой — процессор с отечественной системой команд. И да, это значительно дороже, чем взять зарубежный камень.

Также и про патриотизм. Это слово означает разное у разных людей, поэтому использовать его бессмысленно. Мои товарищи считают Путина предателем и все, кто ему служат или помогают (даже подчинённые лжепрезидента по государственной иерархии, если не занимаются саботажем) — враги России. Патриоты вышли на Болотную, готовят забастовку избирателей и втыкают палки в колёса бандитов НОДа. Спорить о патриотизме в далёкой Швейцарии тем более смысла нет. Политическая позиция разработчика DM41 это его личное дело, как гражданина Швейцарии.

Задача по разработке отечественного ПМК мне интересна. Если вас вдохновляет другая задача, по разработке ПМК за минимальные деньги — займитесь ею. Много есть в мире интересного, помимо развития отечественных технологий.

А разработанный в России ПМК "за минимальные деньги" не будет отечественным ?

Я не буду вдаваться в моё отношение к Путину и Ко, но ИМХО все кто занимаются саботажем, явно вредят стране, ПОД ЛЮБЫМИ ПРЕДЛОГАМИ, пускай даже самыми благими, являются преступниками и должны быть наказаны по закону !!! Т.е. можешь ненавидеть текущую власть, вреди её репутации публичными акциями и т.п., но стране своей вредить не смей! Если такой человек якобы с благими намерениями ещё и идёт к врагу за помощью, то это явное предательство. Во время войны было много таких, не нравился им Сталин, большевики, Солженицин даже сказанул, что землями с пиндоснёй поделится.

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

А ПЛИС это не усугубление, а наоборот более быстрый путь к своему процессору со своей системой команд. Можно даже сделать спец.процессор МК, который аппаратно реализует систему команд МК-61 - МК-161, это мне видится более патриотично, чем делать то же самое на STM32 :-)

Иностранный ПЛИС это временное зло, вроде W77. Которое хотелось бы не делать постоянным. Т.к. в природе человека хотеть большего. И когда реализуешь простенький процессор на ПЛИС, на следующем этапе найдётся народ, агитирующий за следующее поколение процессора на более мощной ПЛИС — вместо реализации уже сделанного в отечественном камне.

То есть так и будем ждать отечественный камень, цепляясь за не отечественный MCS-51 ?
Вот что мне не нравится у нас в стране, вечно всё с ног на голову перевёрнуто: Путин ездит щедро раздаёт миллиарды учёным на коллайдеры и прочие вундервафли, а чем на это зарабатывать, оборонкой или опять пенсионеров будет грабить ? Так и у вас с Семико, вместо того чтобы создать что-то пользующееся спросом и обеспечивающее дальнейшее развитие, лучше сделать что то убогое, но идеологически выдержанное, якобы отечественное. Я бы предложил начать с другого конца, и многие уже нАчали - брать может быть полностью зарубежное и вкраплять немного отечественного (но не ради вкрапления конечно), а потом всё больше и больше и в итоге достигнуть 100% отечественности продукта ! Ей-Богу, так достичь ваших же целей куда быстрей, чем дождаться когда с неба упадёт отечественный камень. Гораздо больше вероятности создать этот камень - иметь уже работающий отлаженный HDL на зарубежной ПЛИС. Ну а дальше 30 тыщ вечнозелёных и первая партия камней наша :-)

А от вас я слышу недовольство, что мол государство не тем помогает. Пускай так. Но неужели стоящие вещи должно создавать и финансировать исключительно государство ?

MCS-51 не отечественная архитектура. Это временный этап, затычка. Его надо будет менять на процессор с русской архитектурой. Новосибирск делает всё, чтобы разработки для ЭКВМ не основывались на MCS-51. При совместимости на уровне языка МК программы, написанные для МК-161, пойдут на следующих версиях ЭКВМ — где от MCS-51 избавимся.

Другое дело, что разработка отечественных технологий сейчас сложна. Возможно, у военных она как-то окупается. Но мало кто в России может себе позволить это, как хобби или религиозное служение («для души»). Поэтому за 10 лет отечественных альтернатив МК-152/МК-161 не появилось. Но работа ведётся. И, в принципе, стоимость разработки и выпуска русского ПМК посильна для частного мецената. Значит, однажды такой найдётся.

EDIT. Про ПЛИС со мной спорить не надо. Я поддерживаю идею сделать отечественный процессор для ПМК сперва на импортной ПЛИС — с последующей реализацией в камне. Можно даже взять уже готовый Форт-процессор, схема опубликована. Просто сейчас я вкладываю своё время в разработку входного языка. Где уже получен определённый результат и есть ещё нереализованные идеи по его совершенствованию.

Вообще конечно надо меньше чесать языком и больше делать, но периодически становится тоскливо, хочется поболтать на все эти темы про ПМК, МК и ПЛИСы :-) Оттуда и все уши флеймов растут, на самом деле нет никакого напряжения, всё это от желания утолить жажду общения. А вообще то сил нет, то времени, как белка в колесе крутишься. Давно уже пора выкатить прототип корпуса с клавиатурой на 3D принтере, я отработал много разных технологий, платок накупил и экранчиков чтобы разные варианты рассмотреть, даже библиотека BCD под ARM контроллеры проверена и работает, а нет сосредоточения, тут параллельно куча всего крутится. Убежать бы в какую нибудь в Гималаи в избушку с компом, книгами, платками,3D принтером и т.п. и там закрыться на месяц и сделать этот конкретный прототип ЭКВМ(ПМК), ну и ПЛИС ускоритель, а потом полноценный процессор вылепить ! :-)

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/