Оглавление:

Карманный компьютер BASIC: 6 шагов (с изображениями)
Карманный компьютер BASIC: 6 шагов (с изображениями)

Видео: Карманный компьютер BASIC: 6 шагов (с изображениями)

Видео: Карманный компьютер BASIC: 6 шагов (с изображениями)
Видео: Электроника МК-85 - советский карманный компьютер 2024, Ноябрь
Anonim
Портативный компьютер BASIC
Портативный компьютер BASIC
Портативный компьютер BASIC
Портативный компьютер BASIC

В этом руководстве описывается мой процесс создания небольшого карманного компьютера под управлением BASIC. Компьютер построен на базе микросхемы AVR ATmega 1284P, которая также послужила источником глупого названия для компьютера (HAL 1284).

Эта сборка ОЧЕНЬ вдохновлена удивительным проектом, найденным здесь, и значком SuperCON BASIC.

На компьютере установлена модифицированная версия TinyBasic, хотя большая часть программного обеспечения основана на проекте dan14. Вы, конечно, можете следовать этому Руководству или, что еще лучше, улучшить его, так как я сделал несколько ошибок.

Для этого проекта я также создал руководство. В нем упоминаются некоторые ошибки и особенности выбранного монитора, но, что наиболее важно, есть список ОСНОВНЫХ операций.

После того, как это было опубликовано, я снял видео, демонстрирующее проект.

Шаг 1: детали, которые я использовал

Детали, которые я использовал
Детали, которые я использовал
Детали, которые я использовал
Детали, которые я использовал
Детали, которые я использовал
Детали, которые я использовал

Для основной ИС:

  • ATmega 1284P
  • Кристалл 16 МГц
  • Керамический конденсатор 2x 22pf
  • Резистор 10 кОм (для сброса подтягивания)
  • 4-контактная кнопка (для сброса)
  • 470 Ом Reistor (для композитного видео)
  • Резистор 1 кОм (для композитной видеосинхронизации)
  • 3-контактная перемычка (для видеосигнала)
  • Пассивный зуммер

Для управления клавиатурой:

  • ATmega 328P (как те, что используются в Arduino Uno)
  • Кристалл 16 МГц
  • Керамический конденсатор 2x 22pf
  • 12 резисторов 10 кОм (для подтягивания сброса и кнопок)
  • 51x 4-контактная кнопка (для самой клавиатуры)

Для власти:

  • Регулятор напряжения L7805
  • 3мм светодиод
  • Резистор 220 Ом (для светодиода)
  • 2x 0,1 мкФ электролитический конденсатор
  • Электролитический конденсатор 0,22 мкФ (вы можете заменить 0,22 и 0,1 0,1 на 0,33. Мне также сказали, что значения на самом деле не имеют значения, но я плохо разбираюсь в конденсаторах)
  • 2x 2-контактные перемычки (для входа питания и для главного выключателя)

GPIO (можно добавить еще пару оснований):

  • 7-контактный джампер
  • 2x 8-контактный джампер
  • 2-контактная перемычка (для 5 В и GND)
  • 3-4-контактная перемычка (для последовательной связи)

Без печатной платы:

  • 4-дюймовый ЖК-дисплей с композитным видео (у шахты входное напряжение 7–30 В)
  • Напечатанный на 3D-принтере держатель для дисплея
  • Какой-то переключатель

Шаг 2: Схема

Схема
Схема

Схема не очень красивая, и большая часть основной IC-области вдохновлена dan14. При этом это довольно простой Arduino на макетной плате. Клавиатура представляет собой простую сетку и управляется ATmega328. Две микросхемы AVR обмениваются данными через последовательные контакты UART.

И изображение, и мои файлы Eagle прилагаются и, надеюсь, их будет достаточно для воссоздания схемы. Если нет, не стесняйтесь сообщить мне, и я обновлю Instructable.

Шаг 3: печатная плата

Печатная плата
Печатная плата
Печатная плата
Печатная плата

Печатная плата является двухслойной и создается с помощью Auto Route (Ах, какая дыра!). Он имеет кнопки и светодиодный индикатор питания спереди, а остальные - сзади. Моя печатная плата была сделана из JCL PCB, и они проделали потрясающую работу с ней. Файлы, необходимые для воссоздания печатной платы, должны находиться в файлах Eagle, которые использовались ранее.

Я бы посоветовал вам изменить дизайн печатной платы, поскольку у меня есть некоторые вещи, которые я бы хотел сделать по-другому. Если вам нравится мой дизайн, у меня все еще есть (на момент написания) четыре неиспользуемых платы, которые я более чем готов продать.

На плате есть четыре просверленных отверстия, которые я использовал для установки ЖК-дисплея.

Шаг 4. Загрузка кода

Загрузка кода
Загрузка кода
Загрузка кода
Загрузка кода
Загрузка кода
Загрузка кода

И для 1284, и для 328, конечно, нужен код, и код, который я использовал, можно найти здесь: https://github.com/PlainOldAnders/HAL1284 в разделе ArduinoSrc / src. Я просто использовал IDE Arduino для изменения и загрузки кода, но прежде чем это можно будет сделать, вам нужно записать загрузчики на ИС:

ATMega328:

Это просто в том смысле, что существует большая поддержка того, как записать загрузчик и загрузить код в эту IC. Обычно я следую этому руководству, в основном потому, что все время забываю о деталях.

Код для 328 (под ArduinoSrc / клавиатура) довольно прост. Он полностью полагается на библиотеку Adafruit_Keypad-master. На случай, если что-то изменится в библиотеке, я включил версию, которую использовал на моей github-странице, в ArduinoSrc / lib.

ATmega1284:

Для меня это было немного сложно, когда я впервые получил IC. Я начал с загрузки загрузчика отсюда и следовал руководству по установке. Чтобы записать загрузчик, я просто проделал то же самое, что и с 328, и получил помощь отсюда. Для обеих микросхем я просто использовал Arduino Uno как для записи загрузчика, так и для загрузки кода (удаленная IC из Arduino Uno при загрузке).

Код (под ArduinoSrc / HAL1284Basic) слишком сложен для меня, но я смог изменить некоторые части кода:

Я добавил пару команд (те, что отмечены [A] в manual.pdf), а также изменил другие команды:

Тон: команда тонального сигнала просто использовала функцию тонального сигнала Arduino раньше, но при использовании библиотеки TVout из-за этого зуммер не работал должным образом. Я изменил его, чтобы использовать функцию тона TVout, но это означает, что штырь тона ДОЛЖЕН быть контактом 15 (для atmega1284)

Последовательная связь: поскольку клавиатура сделана своими руками, она использует последовательную связь для чтения символов. Поскольку здесь используется atmega1284, есть две доступные линии последовательной связи, и когда включен "sercom", код также позволяет писать через последовательный порт (с компьютера или другого устройства).

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

Шаг 5: Сборка

сборка
сборка
сборка
сборка
сборка
сборка

Когда код загружен, а печатная плата и детали готовы, пришло время для сборки. Все детали, которые я использовал, были сквозными, поэтому пайка не была слишком сложной (в отличие от тех, что были задиристой SMD-пайкой). Монитор был прикреплен к четырем просверленным отверстиям в печатной плате с помощью 3D-печатного держателя. Если используется другой монитор, можно надеяться, что для его установки можно использовать четыре просверленных отверстия.

Используемый здесь держатель монитора также предназначен для размещения тумблера (подключенного к перемычке «переключатель» на печатной плате) и трех кнопок управления монитором. Держатель крепится пластиковыми болтами М3 с проставками.

В качестве вилки питания я использовал разъем JST для печатной платы, хотя гладкий цилиндрический разъем был бы немного более гладким. Для питания платы я переключался между блоком питания 12 В или тремя последовательно включенными батареями 18650. Более гладкий ковбой, чем я, вероятно, мог бы разработать удобный держатель батареи для доски.

Шаг 6: ошибки и дальнейшая работа

Клавиши со стрелками: клавиши со стрелками были вставлены случайно и не выполняют особой функции. Это затрудняет навигацию

Файловый ввод-вывод: существуют возможности файлового ввода-вывода, но они не реализованы. Для борьбы с этим программное обеспечение HAL1284Com может выгружать файлы на плату. Также возможна загрузка в EEPROM.

PEEK / POKE: PEEK и POKE не тестировались, и я не уверен, что это за адреса.

Break: Break (Esc) иногда искажал весь код в бесконечных циклах.

Вывод 7: вывод 7 PWM может быть затруднен при попытке DWRITE High или AWRITE 255. Он отлично работает с AWRITE 254.

Идиот: было бы идеально иметь возможность загрузки через UART1, но выгрузка возможна только через UART0, поэтому выгрузка должна выполняться путем извлечения основной ИС. Экран и регулятор напряжения 5 слишком сильно нагреваются при длительной работе.

Рекомендуемые: