资料介绍
描述
这个想法
Rockwell AIM 65 是 70 年代早期基于 6502 的计算机之一。它有一个 20 个字符的显示屏、一个小型热敏打印机和一个相当大的键盘。标准内存是 1k 或 4k。更多细节可以在“旧电脑”页面找到。ROM上有很多软件可用。我从来没有 AIM 65。实际上,它们比我早一点流行。但我一直喜欢它的准系统外观。
该设计非常适合使用我们今天拥有的标准 Arduino 组件进行重建。
准备原型盾牌
将 PS2 键盘插座焊接在原型屏蔽罩的外侧。然后连接电线。我的布局是使用 Arduino 的引脚 2 作为 PS2 时钟和引脚 3 作为 PS2 数据线。我非常凌乱的实验原型看起来像这样
请确保您得到正确的引脚排列。PS2 键盘用错极性很容易被炸。下载 PS2 库。
Paul Stoffregen 的 PS2 库通过 Arduino IDE 提供以供下载。最新版本是 2.4。这个库在处理带有 altgr 键盘映射(如德语)的键盘映射时存在错误。如果库https://github.com/slviajero/PS2Keyboard ,我修复了我的 fork 中的错误。Paul 在他的源代码中也包含了修复程序,但来自 Arduino IDE 的代码仍然可能是旧代码。
安装和连接 LCD 显示器
Stefan 的 BASIC 支持 I2C 和直接连接的 20x4 LCD 显示器。对于我的第一个原型,我使用了一个带有并行接口的显示器,这导致了很多电缆和面包板。I2C 是更好的选择。尽管如此,并行显示代码仍在解释器中,因为它也用于 LCD 屏蔽。
将 I2C 和电压线连接到 Arduino。我使用了一个小面包板,因为我想将 I2C 接口不仅用于显示器,还用于其他传感器。
上面的两个连接器是接地和 5V。这将用于原型屏蔽和相应的插座。SDA 和 SCL 连接到 Arduino MEGA 的 PIN 20 和 21。
将所有内容放在一起并上传软件。
将原型板放在 Mega 上,插入 PS2 键盘和 USB 数据线。我将所有东西都安装在胶合板上,将 MEGA 拧在板上的小塑料床上。
将 BASIC 解释器加载到 ARDUINO IDE。您需要来自我的仓库https://github.com/slviajero/tinybasic的草图TinybasicArduino/TinybasicArduino.ino ,包括 hardware-arduino.h 和 basic.h。确保在 Arduino 库管理器中加载 PS2 库。我建议使用来自https://github.com/slviajero/PS2Keyboard 的补丁。它添加了 BASIC 解释器的某些功能所需的 keyboard.peek() 方法。
在TinybasicArduino.ino代码的开头设置以下语言设置。控制包含哪些语言功能。
#define BASICFULL
#undef BASICINTEGER
#undef BASICSIMPLE
#undef BASICMINIMAL
#undef BASICTINYWITHFLOAT
MEGA 有足够的闪存用于完整的 BASIC 语言集。
在 hardware-arduino.h 中有硬件设置。放
#undef USESPICOSERIAL
#define ARDUINOPS2
#define DISPLAYCANSCROLL
#define ARDUINOLCDI2C
#define ARDUINOEEPROM
#define STANDALONE
我们想要一个支持 EEPROM (ARDUINOEEPROM)、PS2 键盘支持 (ARDUINOPS2)、I2C 显示器 (ARDUINOLCDI2C) 和显示器完全滚动支持 (DISPLAYCANSCROLL) 的系统。最后一个设置 STANDALONE 使 BASIC 解释器在启动后使用显示器和键盘作为默认输入和输出设备。
接下来设置 PS2 引脚。这是在更远的地方完成的。根据硬件布局设置值。数据管脚可以是这里的任何管脚。IRQ 引脚需要是 MEGA 的 IRQ 就绪引脚。
#define PS2DATAPIN 3
#define PS2IRQPIN 2
如果您想使用不同的布局,请修改本节中的代码。该代码具有默认硬连线的德语键盘。相应地搜索并更改行keyboard.begin(PS2DataPin, PS2IRQpin, PS2Keymap_German)
。
上传你的程序。
享受输入您的第一个 BASIC 命令。使用这种语言集的 Arduino MEGA 256 可能有 6k 的 BASIC 内存。对于一些有趣的项目来说已经足够了。请阅读 wiki了解有关此 BASIC 方言的详细信息,包括测试和演示程序。
另请查看本教程以获取有关 Arduino 上的 BASIC 的更多信息。
添加打印机
市场上有大量小型热敏打印机,都与最初用于 AIM65 的热敏打印机非常相似。这些打印机具有串行 TTL 和 RS232 接口。它们需要大量电力,不能连接到 Arduino 5V 线路。需要一个电流至少为 2A 的额外 9V 电源。这些打印机的规格通常如下所示https://github.com/slviajero/tinybasic/blob/main/misc/ThermalprinterSpecs.pdf 。确定正确的引脚排列可能有点麻烦。
将打印机串口的 TX 线连接到 Arduino 上 Serial1 的 RX。这是针脚 19。将打印机的 RX 连接到针脚 18。还将打印机的地线连接到 Arduino 上的地线。打印机的电源通过单独的电源线连接到外部电源。
重新编译 BASIC 解释器添加设置
#define ARDUINOPRT
在代码的硬件部分。这将激活 Arduino 的 Serial1 接口并为其分配 BASIC 设备编号 &4。标准波特率为 9600,这对于这些打印机来说很常见。
PRINT &4, "Hello World"
现在应该可以工作了。可以使用 PUT 将单个字节发送到打印机
PUT &4, 10
I/O 通道双向工作。
GET &4, A
从打印机收集一个字节。这会很有帮助,因为打印机具有双向通信协议。
添加 SD 卡存储
在 BASIC 解释器中,SD 卡支持在编译时激活
#define ARDUINOSD
连接小型SD卡接口
到 Arduino 的 SPI 端口。对于 ATMEGA 2560 MOSI 是引脚 51、MISO 引脚 50 和 CLK 引脚 52。我使用引脚 53(SPI 端口的默认从属选择)来激活 SD 卡读卡器。添加一个带有 FAT12 文件系统的小型预格式化 SD 卡,您就可以开始使用了。
这是整个系统现在的样子:
请注意,启动后它只报告 4096 字节的可用 BASIC 内存。SD 卡接口的缓冲区使用 900 字节。这并不奇怪,因为 SD 卡的块大小为 512 字节。
插入预格式化的 SD 卡后,像CATALOG
, LOAD
,这样的命令SAVE
现在应该可以工作了。有关文件命令的详细信息,请参见SD 卡命令。
添加实时时钟
市场上有许多用于 Arduino 项目的时钟模块。我已将带有 EEPROM 的 DS3231 库集成到 BASIC 解释器中。这些设备看起来像这样
它们可以连接到也用于显示器的 I2C 端口。我的原型将时钟直接安装在显示器后面
我不使用 Adafruit 的标准 RTC 库,因为它们带来了 BASIC 解释器所具有的许多功能。代替 BASIC 使用 uRTCLib 和 uEEPROMLib。两者都可以在 Arduino IDE 中下载,也可以直接从下面的 github repos 下载。
编译 BASIC 解释器
#define ARDUINORTC
并将其加载到 Arduino 中。
现在在 BASIC 中提供了一个特殊的数组 @T():@T(0) - 秒,@T(1) - 分钟,@T(2) - 小时,@T(3) - 天,@T(4) - 月,@T(5) - 年,@T(6) - 工作日,@T(7) - 温度。除了温度,所有数组元素都是读/写的。
使用数组的小时钟程序如下所示
10 CLS
20 PRINT @T(2);":";@T(1);":";@T(0)
30 PRINT @T(3);"/";@T(4);"/";@T(5)
40 PRINT "Temp:",@T(7)/100
50 DELAY 1000
60 GOTO 10
时钟的 4k EEPROM 模块作为内置 EEPROM 的扩展出现。Arduino MEGA256 启动后应显示 8k EEPROM 空间。第一个 4k 是微控制器的内置 EEPROM,第二个块是时钟的 EEROM。时钟 EEPROM 非常慢,因为所有访问都需要通过有线接口。
更多的东西来
我集成了 RF2401 无线电,我正在为这个系统开发以太网,使其成为物联网的小型基站。
使用的库
https://github.com/PaulStoffregen/PS2Keyboard
来自 Arduino IDE 的 uRTClib
费用
这个项目成本真的很低。最昂贵的组件是 35 欧元的 MEGA 256。包括 I2C 适配器的显示器是 10 欧元。SD 卡、SD 接口和时钟需要另外 10 欧元。一个 PS2 键盘可以在 Ebay 上以 10 欧元的价格购买。总共花费 75 欧元,您就拥有了一台可以正常工作的计算机。
最后的话
为什么选择基于 BASIC 的 Arduino 家用电脑?因为建造它很有趣。而口译语言有很多优点。人们可以用它测试电路和物联网,而无需为每次更改重新刷新 Arduino。
BASIC 的发展远远超出了本项目中描述的功能。与此同时,它拥有 Wire、许多不同的显示器、网络,并且可以为更大的计算机供电。我还为它移植了大部分 Arduino 示例库。
如果您对此感兴趣,请点击这些链接中的任何一个
Arduino 库中的所有标准示例都在我的仓库中。
- 65C02计算机开源
- STM32从零开始 - 前言:硬件准备
- 图文详解:从零开始学电源资源下载 87次下载
- 大话计算机教程之狂想计算机PDF电子书免费下载 0次下载
- 从零开始Android游戏编程(第二版) 0次下载
- 从零开始android游戏编程 3次下载
- [Arduino编程从零开始].[英].Simon.Monk 12次下载
- 从零开始学习单片机 22次下载
- 从零开始搭建3D打印机 0次下载
- 计算机测控系统设计 0次下载
- 从零开始MQX开发之一编译MQX库 0次下载
- 从零开始走进FPGA-例程代码汇总 131次下载
- 电脑组装从零开始
- 从零开始学电路基础 0次下载
- 计算机应用基础教案 0次下载
- 算力系列基础篇——算力与计算机性能:解锁超能力的神秘力量! 104次阅读
- 什么是工业计算机(IPC)? 385次阅读
- 计算机控制器的结构和功能 792次阅读
- 机器视觉与计算机视觉的区别 795次阅读
- 计算机视觉的主要研究方向 488次阅读
- 工业计算机与普通计算机的区别 609次阅读
- 什么是计算机视觉?计算机视觉的三种方法 4138次阅读
- 计算机辅助技术有哪些_计算机辅助技术的应用 3.9w次阅读
- 什么是量子计算机_量子计算机原理_量子计算的两种有效方法 1.1w次阅读
- 计算机编程语言的发展趋势分析 5150次阅读
- 人脑为什么如此高效与计算机相比究竟谁的问题解决能力比较强呢? 5248次阅读
- 计算机视觉零基础入门 9075次阅读
- 计算机的存储器主要作用_计算机的存储器的分类介绍 1.1w次阅读
- 电子管计算机是第几代_电子管计算机如何存储数据 4.3w次阅读
- 计算机网络有哪些作用_计算机网络硬件有哪些 1.1w次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多