PicoMiteVGA — это компьютер собранный из крошечной платы Raspberry Pi Pico с микроконтроллером RP2040 оснащеным двухъядерным процессором Arm Cortex-M0+ с 264 КБ встроенной оперативной памяти и с поддержкой до 16 МБ внешней флэш-памяти.

PicoMiteVGA работает под управлением операционной системы с полнофункциональным интерпретатором BASIC. Он поддерживает подключение монитора VGA и клавиатуры PS2.

PicoMiteVGA превращает Raspberry Pi Pico в недорогой автономный настольный компьютер, похожий на компьютеры «Boot Into BASIC» 1980-х годов, такие как Commodore 64, Apple II, Tandy TRS-80 или ZX-Spectrum.

С PicoMiteVGA Вы можете получать удовольствие от написания программ на самом простом языке программирования BASIC, учить детей вычислительной технике, играть в простые компьютерные игры и запускать различные вычисления.

Прошивка для всего этого абсолютно бесплатна для скачивания и использования.

Характеристики PicoMiteVGA:

Разрешение на VGA выходе составляет 640 x 480 px. в монохромном режиме или 320 x 240 px в режиме с 16 цветами (1 бит для красного, 2 бита для зеленого и 1 бит для синего). VGA сигнал генерируется с использованием второго ЦП на м-к RP2040 в Raspberry Pi Pico плюс один канал PIO. Поэтому, VGA контроллер не влияет на работу интерпретатора BASIC, который работает на полной скорости на первом ЦП.

Клавиатура PS2 работает как обычная клавиатура с полностью функционирующими функциональными клавишами и клавишами со стрелками. Её можно настроить в стандартной раскладке США, или для специализированных раскладок, используемых в Великобритании, Германии, Франции и Испании.

Интерпретатор BASIC обладает всеми функциями с плавающей запятой, 64-битными целыми и строковыми переменными, длинными именами переменных, массивами с плавающей запятой, целыми числами или строками с несколькими измерениями, обширной обработкой строк и определяемыми пользователем подпрограммами и функциями. Обычно он будет выполнять программу со скоростью до 100 000 строк в секунду. MMBasic позволяет встраивать скомпилированные программы C для высокопроизводительных функций, а работающая программа может быть защищена от внесения в список или изменения с помощью PIN-кода.

Поддержка SD-карт. Это включает в себя открытие файлов для чтения, записи или произвольного доступа, а также загрузку и сохранение программ. Прошивка будет работать с картами объемом до 32 ГБ, отформатированными в FAT16 или FAT32, а созданные файлы также можно читать и записывать на персональных компьютерах под управлением операционных систем Windows, Linux или Mac.

USB интерфейс к компьютеру Windows/Mac/Linux обеспечивает дополнительный интерфейс консоли. Программы можно легко переносить с настольного или портативного компьютера (Windows, Mac или Linux) с использованием протокола XModem или путем потоковой передачи программы через USB.

Поддержка графики, позволяющая программе BASIC отображать текст и рисовать линии, круги, прямоугольники, и т. д. до 16 цветов. Восемь встроенных шрифтов и дополнительные шрифты могут быть встроены в программу BASIC.

Полноэкранный редактор встроен в PicoMiteVGA и может редактировать всю программу за один сеанс. Он включает в себя расширенные функции, такие как синтаксис с цветовой кодировкой, поиск и копирование, вырезание и вставка в буфер обмена и из него.

Поддержка всех портов (pin) Raspberry Pi Pico. Они могут быть независимо сконфигурированы как цифровой вход или выход, аналоговый вход, измерение и подсчет частоты или периода. В MMBasic контакты ввода-вывода могут быть динамически настроены как входы или выходы с подтягиваниями или подтягиваниями или без них. Команды MMBasic генерируют импульсы и могут использоваться для параллельной передачи данных. Прерывания могут использоваться для уведомления об изменении состояния входного вывода. Выходы PWM могут использоваться для создания различных звуков, управлять сервоприводами или генерировать контролируемые компьютером напряжения для приводного оборудования, использующего аналоговый вход (например, контроллеры двигателей).

PicoMiteVGA имеет встроенные команды для прямого взаимодействия с инфракрасными пультами дистанционного управления, датчиком температуры DS18B20, модулями ЖК-дисплея, часами с батарейным питанием, цифровой клавиатурой и многим другим.

Реализован широкий спектр протоколов связи, включая I2C, асинхронный последовательный порт, RS232, SPI и 1-Wire. Их можно использовать для связи со многими датчиками (температура, влажность, ускорение и т. д.), а также для отправки данных на испытательное оборудование.

Требуемая мощность составляет 5 вольт при приблизительно 50 мА.

 Загрузка прошивки

Raspberry Pi Pico поставляется с встроенным загрузчиком прошивки, который прост в использовании. Просто выполните следующие действия:

  • Загрузите прошивку PicoMiteVGA с http://geoffg.net/picomitevga.html.
  • Разархивируйте архивный файл с пршивкой.
  • Найдите файл с прошивкой, который должн называться, примерно как, «PicoMiteVGA V5.xx.xx.uf2».
  • С помощью USB-кабеля подключите Raspberry Pi Pico к компьютеру (Windows, Linux или Mac),  удерживая белую кнопку BOOTSEL на Raspberry Pi Pico.
  • Raspberry Pi Pico должен подключиться к вашему компьютеру и создать виртуальный диск (так же, как если бы Вы подключили USB-Flash накопитель) под названием «RPI-RP2». Теперь вы можете отпустить кнопку BOOTSEL. Этот диск будет содержать два файла, на которые вы можете не обращать внимания.
  • Скопируйте файл прошивки (с расширением .uf2) на этот виртуальный диск.
  • Когда копирование завершится, Raspberry Pi Pico перезапустится и создаст виртуальный последовательный порт на вашем компьютере.
  • Светодиод на Raspberry Pi Pico будет медленно мигать, указывая на то, что PicoMiteVGA прошивка с MMBasic теперь работает.

Хотя виртуальный диск, созданный Raspberry Pi Pico, выглядит как USB  карта памяти, это не так. Файл прошивки после копирования исчезнет, и если вы попытаетесь скопировать файл любого другого типа, он будет проигнорирован.

Загрузка прошивки PicoMiteVGA может стереть флэш-память, включая текущую программу и любые программы, сохраненные в флэш-памяти и все сохраненные переменные. Поэтому убедитесь, что вы сделали резервную копию этих данных, прежде чем обновить прошивку.

Это важно, Флэш-память может быть повреждена, что приведет к необычному и непредсказуемому поведению. В этом случае вы должны загрузить файл прошивки https://geoffg.net/Downloads/picomite/Clear_Flash.uf2, который сбросит Raspberry Pi Pico до заводских настроек, затем вы можете снова попробовать загрузить прошивку PicoMiteVGA.

USB-консоль

Обычно PicoMiteVGA используется с подключенным VGA монитором и клавиатурой. Однако виртуальный последовательный порт созданный после загрузки микропрограммы, можно использовать для проверки все ли работает нормально, без подключения к монитору и без клавиатуры. 

Виртуальный последовательный порт действует как обычный последовательный порт, но работает через USB. В Windows 10 есть драйвер для этого порта, но с другими операционными системами, вам возможно, придется загрузить драйвер (см. Приложение F).

Когда порт будет подключён, вы должны записать номер порта, созданный вашим компьютером для этого виртуального последовательного соединения. В Windows это можно сделать, запустив Диспетчер устройств и проверив раздел «Порты (COM и LPT)».

Эмулятор терминала

Для работы через виртуальные последовательный порт Вам, также, понадобится программа-эмулятор терминала. Для пользователей Windows рекомендуется использовать Tera Term (Tera Term можно загрузить с: http://teraterm.en.lo4d.com).

Настройка «Порт:» зависит от того, на какой USB-порт был подключён Raspberry Pi Pico. PicoMiteVGA игнорирует скорость передачи данных, чтобы можно было установить любую скорость, кроме 1200 бод. При скорости соединения 1200 бод Raspberry Pi Pico переходит в режим обновления прошивки.

Если вы используете эмулятор терминала Tera Term, не устанавливайте задержку между символами.

Если вы используете Putty, установите символ возврата каретки.

После того, как вы настроили в эмуляторе терминала виртуальный последовательный порт и подключились к Raspberry Pi Pico, нажмите клавишу «Enter» на клавиатуре и увидите подсказку MMBasic, которая представляет собой символ «>» (больше).

Пользователи Windows и Linux могут установить PuTTY терминал:

sudo apt install putty

Лист. 1. Установка PuTTY терминала.

Основные параметры настройки PuTTY терминала показаны на следующих рисунках.

Рис. 1.

Рис. 1.

Рис. 1.

Рис. 1.

Рис. 1.

Вот ещё один пример использования эмулятора терминала в Linux:

minicom -o -D /dev/ttyACM0

Установка

Добро пожаловать в minicom 2.7.1

ПАРАМЕТРЫ: I18n 
Дата компиляции Aug 13 2017, 15:25:34.
Port /dev/ttyACM0, 22:40:34

Нажмите CTRL-A Z для получения подсказки по клавишам

Приветствие Minicom

Добро+-------------------------------------------------------------------+
     |                 Список команд minicom                             |
ПАРАМ|                                                                   |
Дата |              Команды могут быть вы                                |
Port |                                                                   |
     |               Основные функции                Прочие функции      |
Нажми|                                                                   |
     | Телефонная книга...D  Запустить скрипт...G | Очистить экран.....C |
     | Отправить файлы....S  Принять файлы......R | Конфигурация.......O |
>    | Параметры порта....P  Добавлять LF.......A | Приостановить......J |
     | Захват вкл/выкл....L  Повесить трубку....H | Выход и сброс......X |
     | Отправить break....F  Инициализировать...M | Выход без сброса...Q |
     | Настр. терминала...T  Запустить Kermit...K | Режим курсора......I |
     | Перенос вкл/выкл...W  Местное эхо вк/вык.E | Экран подсказки....Z |
     | Paste file.........Y  Timestamp toggle...N | scroll Back........B |
     | Add Carriage Ret...U                                              |
     |                                                                   |
     |Выберите функцию или нажмите Enter для выхода                      |
     +-------------------------------------------------------------------+


CTRL-A Z for help | 115200 8N1 | NOR | Minicom 2.7.1 | VT102 | Не на лин       

Справка minicom

> PRINT "hello World"  
hello World
>

BASIC

Клавишей F4 запускается встроенный в PicoMiteVGA редактор программ.

PRINT 33*56






                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
ESC:Exit  F1:Save  F2:Run  F3:Find  F4:Mark  F5:Paste  Ln: 1  Col: 12     INS

Встроенный редактор

Штатное подключение PicoMiteVGA

Raspberry Pi Pico питается через разъем USB с помощью зарядного устройства USB 5 В или персонального компьютера. Альтернативы см. в разделе «Оборудование PicoMiteVGA».

Подключение монитора VGA.

Рис. 1. Схема подключения VGA монитора.

Переменный резистор 200 Ом должен быть многооборотным подстроечным потенциометром. Его следует отрегулировать так, чтобы получить нейтральный белый цвет. Перед регулировкой, в командной строке запустите CLS RGB(WHITE).

Схема рис. 1 генерирует 16 цветов в 4-битном формате RGB121 (т. е. 1 бит для красного, 2 бита для зеленого и 1 бит для синего цвета). Вывод осуществляется в стандартном формате VGA с частотой пикселей 25,175 МГц и частотой кадров 60 Гц.

В монохромном режиме разрешение составляет 640 x 480, однако при включении цветного вывода (РЕЖИМ 1) пиксели дублируются по обеим осям x и y, что дает разрешение 320 x 240, в то время как монитор все еще видит сигнал 640 x 480.

Как в монохромном, так и в цветном режимах имеется кадровый буфер размером 38 400 байт, используемый для хранения данных кадра изображения, расположенных как 640 x 480 x 1 бит или 320 x 240 x 4 бит в соответствующих режимах. Все, что записано в кадровый буфер, появится на VGA-дисплее максимум через 1/60 секунды.

Прошивка использует второй процессор RP2040 для передачи данных кадрового буфера построчно через DMA на один из программируемых контроллеров ввода-вывода RP2040 (PIO0) для создания VGA сигнала. Поскольку ядра процессора RP2040 работают независимо , на производительность MMBasic практически не влияет формирование выходного сигнала VGA.

Если вам достаточно восьми стандартных цветов полной интенсивности в формате RGB111 (белый, черный, синий, зеленый, голубой, красный, пурпурный и желтый), вы можете использовать более простую схему, см. рис. 2.

Рис. 2.

Подключение клавиатуры

Клавиатура PS2 подключается к Raspberry Pi Pico через контакты ввода-вывода GP8 (синхронизация) и GP9 (данные). Однако большинство клавиатур PS2 работают от 5 В, и это напряжение может повредить Raspberry Pi Pico, на входы которого не должно подаваться напряжение более 3,6 В. По этой причине следует использовать переключатель уровня, чтобы Raspberry Pi Pico воспринимал напряжения сигнала в диапазоне от 0 до 3,3 В, а клавиатура — от 0 до 5 В. Есть много способов сделать это, но следующая схема является простым и недорогим решением:

Рис. 3.

Рекомендуемый МОП-транзистор — TN0702N3-G или ZVNL110A, так же, был протестирован транзистор 2N7000 и он зарекомендовал себя хорошо.

Некоторые клавиатуры могут работать при напряжении 3,3 В (несмотря на то, что по стандарту PS2 требуется 5 В). Если Вам повезло с клавиатурой, её можно запитать от выхода Raspberry Pi Pico 3V3 и напрямую подключать следующим образом:

Рис. 4.

По умолчанию предполагается, что конфигурация клавиатуры соответствует стандартной раскладке США. Однако, можно использовать команду OPTION KEYBOARD для настройки раскладок для других стран. Синтаксис команды следующий:

OPTION KEYBOARD language [,capslock][,numlock][,repeatstart] [,repeatrate]

Где 'language' — двухсимвольный код, например US для стандартной клавиатуры, используемой в США, Австралии и Новой Зеландии. Другие раскладки клавиатуры, которые можно указать: Великобритания (UK), франция (FR), германия (GR), бельгия (BE), италия (IT) или испания (ES). Подробнее о дополнительных параметрах см. команду OPTION KEYBOARD. Эту команду необходимо ввести в командной строке (не в программе), и результат будет сохранён при перезапуске PicoMiteVGA.

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

Подключение SD-карты

PicoMiteVGA полностью поддерживает SD-карты. Это включает в себя открытие файлов для чтения, записи или произвольного доступа, а также загрузку и сохранение программ. Прошивка будет работать с картами объемом до 32 ГБ, отформатированными в FAT16 или FAT32, а созданные файлы также можно читать/записывать на персональных компьютерах под управлением операционных систем Windows, Linux или Mac.

PicoMiteVGA использует протокол SPI для связи с картой, и на это не влияет тип карты. Таким образом, поддерживаются все типы (класс 4, 10, UHS-1 и т. д.).

Следует отметить, что SD-карта не требуется для нормальной работы, поскольку PicoMiteVGA имеет восемь встроенных слотов для флэш-памяти, которые можно использовать для сохранения и запуска до восьми отдельных программ без использования SD-карты.

Интерфейс SD-карты необходимо специально настроить, прежде чем его можно будет использовать. Это делается с помощью команды OPTION SDCARD следующим образом:

OPTION SDCARD CS, CLK, MOSI, MISO

Где: CS — вывод ввода-вывода, используемый для сигнала выбора микросхемы. CLK — это вывод ввода-вывода, используемый для тактового сигнала SPI. MOSI — это контакт ввода/вывода, используемый для сигнала Master Out Slave In (MISO). MISO — это вывод ввода-вывода, используемый для сигнала Master In Slave Out (MOSI).

PicoMiteVGA является ведущим устройством, а SD-карта — подчиненным.

Можно использовать любые свободные контакты (см. раздел «Оборудование PicoMiteVGA»), но в этом примере используются контакты GP13, GP10, GP11 и GP12 для выбора микросхемы, синхронизации, MOSI и MISO.

OPTION SDCARD GP13, GP10, GP11, GP12

Эту команду необходимо ввести в командной строке (не в программе), и она будет применена после перезапуска PicoMiteVGA. Эта команда приведёт к автоматическому перезапуску, побочным эффектом которого является отключение интерфейса USB-консоли, который затем необходимо будет снова подключить.

Рис. 5. Принципиальная схема подключения разъема SD-карты.

Обратите внимание, что вы можете использовать множество различных конфигураций, используя различные назначения контактов — это всего лишь пример на основе команды конфигурации, приведённойй выше.

Когда PicoMiteVGA загружается, MMBasic автоматически инициализирует интерфейс SD-карты. Выбранные выводы будут недоступны для программ на BASIC (т.е. они будут зарезервированы). Чтобы убедиться, что интерфейс работает, вы можете вставить SD-карту и просмотреть ее содержимое с помощью команды FILES.

Чтобы упростить физическое подключение SD-карты, вы можете приобрести SD-разъем установленный на печатной плате с контактами ввода-вывода, выведенными на соединения с шагом 0,1 дюйма.

Например, SD/MMC Card Breakout от SparkFun, Jaycar XC4836, Altronics Z6353.

Оборудование PicoMiteVGA

Рис. 6. Использование в MMBasic портов ввода-вывода на Raspberry Pi Pico.

Где:

  • GP0 ÷ GP28 Цифровой ввод или вывод.
  • COM1, COM2 Асинхронный последовательный ввод-вывод (выводы UART0 и UART1 на плате Raspberry Pi Pico).
  • I2C, I2C2 Порты I2C (I2C0 и I2C1).
  • SPI, SPI2 Порты ввода/вывода SPI (см. Приложение D). (SPI0 и SPI1).
  • PWMnx выход PWM (см. команду PWM).
  • GND Общий провод.
  • VBUS Питание 5В, подключено напрямую порта USB.
  • VSYS Источник питания 5 В, используемый SMPS (импульсным стабилизатором) для стабилизации 3,3 В. Его можно использовать как выход или вход 5 В.
  • 3V3EN Включение стабилизатора 3,3 В (низкий уровень = выключен, высокий = включен). 
  • RUN Контакт сброса, низкий уровень будет удерживать PicoMiteVGA в состоянии Reset.
  • ADCn Эти выводы можно использовать для измерения напряжения (аналоговый вход).
  • ADC VREF Опорное напряжение для АЦП.
  • AGND Общий провод для АЦП. 

Все контакты могут использоваться для цифрового ввода или вывода, однако их максимальное напряжение ограничено 3,6 В. Это значит, что потребуется смещение уровня, если они будут использоваться с устройствами, работающими от 5 В или выше.

В программе MMBasic к контактам ввода/вывода можно обращаться, используя номер физического контакта (т. е. от 1 до 40) или GP+n (т. е. от GP1 до GP28).

Например, следующее относится к одному и тому же выводу и работает одинаково:

SETPIN 32, DOUT

and

SETPIN GP27, DOUT

На встроенных функциях PicoMiteVGA, таких как интерфейсы SPI и I2C, не выделяются фиксированные контакты, в отличие (например) от Micromite. PicoMiteVGA широко использует команду SETPIN, и не только для настройки контактов ввода-вывода, но также и для настройки контактов, используемых для таких интерфейсов, как последовательный порт, SPI, I2C и т. д.

Штырьки должны быть размещены в соответствии с этим рисунком. Например, SPI TX может быть назначен на контакты GP3, GP7 или GP19, но его нельзя выделить для контакта GP15, который может быть назначен только для канала SPI2. Распределения не должны находиться в одном «блоке», чтобы вы могли, например, выделить SPI2 TX для контакта GP15 и SPI2 RX для контакта GP28.

Пины, которые не отображаются на Raspberry Pi Pico, по-прежнему могут быть доступны с помощью MMBasic через псевдопин.

номер или их номер GPn. Это позволяет использовать MMBasic на других модулях, использующих RP2040 процессор. Этими скрытыми контактами являются контакт 41 или GP23, контакт 42 или GP24, контакт 43 или GP25 и контакт 44 или GP29.

На Raspberry Pi Pico эти контакты используются для внутренних функций следующим образом:

Контакт 41 или GP23 — это цифровой выход, для которого установлено значение OPTION POWER. (ON=PWM, OFF=PFM) .

Контакт 42 или GP24 — это цифровой вход, который имеет высокий уровень, когда присутствует VBUS.

Контакт 43 или GP25 также является PWM4B. Это выход, подключенный к встроенному светодиоду.

Контакт 44 или GP29 также является ADC3, который является аналоговым входом, показывающим ⅓ VSYS.

Прошивка PicMiteVGA автоматически резервирует контакты 21, 22, 24, 25, 26 и 27 (GP16, GP17, GP18, GP19, GP20 и GP21) для выхода VGA и 11 и 12 (GP8 и GP9) для клавиатуры PS2.

Ограничения контактов ввода/вывода

Максимальное напряжение, которое может быть подано на любой контакт ввода-вывода, составляет 3,6 В.

В качестве выходов все контакты ввода/вывода могут по отдельности подавать или потреблять максимум 12 мА. При этой нагрузке выходное напряжение проседает примерно до 2,3 В. Более практичной нагрузкой является 5 мА, тогда как выходное напряжение обычно составляет 3 В. Для подключения красного светодиода на 5 мА, последовательно со светодиодом рекомендуется включать резистор 220 Ом. Для других цветов может потребоваться другое значение.

Максимальная общая токовая нагрузка ввода-вывода для всей микросхемы составляет 50 мА.

Источник питания

Raspberry Pi Pico имеет гибкую систему питания.

Входное напряжение от входов USB или VBUS подключается через диод Шоттки к повышающе-понижающему SMPS (импульсный источник питания), который имеет выход 3,3В. SMPS может быть запитан напряжением от 1,8В до 5,5В.

Внешняя схема может питаться от шины VBUS (обычно 5В) или от выхода 3V3 (3,3В), который может выдавать до 300 мА.

Для минимизации помех от источника питания можно заземлить 3V3EN для выключения SMPS. При выключении преобразователь перестанет переключаться, внутренняя схема управления будет отключена, а нагрузка отключена от питания. Затем вы можете подать питание на плату через линейный стабилизатор 3,3 В, подаваемый на контакт 3V3. Обратите внимание, что в этом случае вам все равно понадобится питание 5В для клавиатуры.

Тактовая частота

По умолчанию тактовая частота PicoMiteVGA составляет 126 МГц, что близко к рекомендуемому максимуму для Raspberry Pi Pico. Однако, используя OPTION CPUSPEED в командной строке, скорость процессора возможно изменить на 252 МГц. Это считается разгоном процессора, но большинство Raspberry Pi Pico работают на этой скорости без проблем. Эта опция сохраняется и будет повторно применена при включении питания.

Если Raspberry Pi Pico не может перезапуститься с новой тактовой частотой, вы можете сбросить его до заводского состояния по умолчанию, загрузив следующий файл прошивки на Raspberry Pi Pico: https://geoffg.net/Downloads/picomite/Clear_Flash.uf2.

Процедура для этого такая же, как и при загрузке любой другой прошивки.

Больше информации по MMBasic можно получить на сайтах:

http://geoffg.net/picomitevga .html

http://mmbasic.com