×

基于ESP32和FabGL的 BASIC 解释器代码实现

消耗积分:0 | 格式:zip | 大小:0.00 MB | 2023-06-21

分享资料个

本教程是关于在 FabGL 和 ESP32 微控制器系列的基础上用 BASIC 解释器构建一个 80 年代风格的家用电脑。该系统支持声音、图形和网络。输入设备是PS2键盘。

微控制器硬件是TTGO生产的一块板子,已经安装了VGA、PS2和音频插座。它最初是为复古计算和运行70年代和80年代操作系统的模拟器而设计的。这里的项目展示了一个新开发的 BASIC 解释器。

由于软件设置和电路板的一些功能不完全是初学者水平,我被要求发布一个关于细节的教程。这里是。

poYBAGSAcxyAT3KIAADVf-U6ybQ690.png

键盘和显示器

你需要什么

要构建计算机,您将需要以下硬件组件:

TTGO ESP32 显示板。我直接从全球速卖通的货源那里得到了我的。目前价格约为 15 欧元。

VGA 显示器或带有 VGA 输入和 VGA 电缆的旧电视机。

PS2键盘。

5V供电,最好带2A电源输出。

微型 SD 卡。

带 3.5mm AUX 输入的扬声器

所需的软件组件是

Arduino IDE,版本 1.8.15 或更高版本。

ESP32 开发板定义。

FabGL 库。

有关这些库的详细信息以及如何将它们放在一起的详细信息将在本教程中进一步介绍。这很简单,但需要注意库版本和设置。

简要了解 TTGO 董事会

poYBAGSAcx6AQpDcAAA-M5j8DAc816.png

该板专为复古计算和游戏而设计。它的核心是一个ESP32微控制器。该芯片驱动计算机的所有功能。声音信号、VGA 信号和键盘处理都在软件中完成。

它有一个 VGA 连接器,使用 8 个 ESP32 的 GPIO 引脚。鼠标和键盘连接器使用另外 4 个引脚。SPI 总线连接到板上的 SD 卡插槽。可以使用标准微型 SD 卡。总线也在电源插头旁边的一小块区域引出。SPI 在引脚 12、2 和 14 上,其中 13 是 SD 卡的芯片选择。引脚 39 和 34 也可免费使用。

pYYBAGSAcyGAcXB7AAFsjMJjLlA927.jpg

该板设计用于 FabGL 库http://www.fabglib.org 。该库包含许多有用的软件组件,如声音发生器、ASCII 终端和仿真器。该库可以从 repo 或 Arduino IDE 库管理器下载。

凭借其 520 kB RAM,它有足够的内存用于图形缓冲区和用户程序。时间和中断在板上很棘手。软件开发对初学者来说没什么。

下载软件组件

您将需要 Arduino IDE,版本 1.8.15 或更高版本。我自己在1.8.15上开发,不时在2.0上测试。IDE 可以从https://www.arduino.cc/en/software 下载。

除了 Arduino IDE,您可能还需要一些 USB 转串口芯片的驱动程序。有些与 IDE 捆绑在一起。ESP 网站上有一些关于驱动程序的信息。在这里可以找到分步安装指南https://www.instructables.com/Installing-ESP32-on-Arduino-IDE-the-Easy-Method/

读取开发环境的下一步是安装板定义。转到 Arduino IDE 的首选项菜单。在底部,您会看到一个用于附加板 URLS 的框。添加以下行

 

 

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json

 

 

如图所示。

pYYBAGSAcyOAXt67AAHAGT9cJug198.jpg

完成此操作后,您需要打开板管理器菜单并安装 esp32 板定义。可以在此处找到一些屏幕截图:https://www.instructables.com/Installing-ESP32-on-Arduino-IDE-the-Easy-Method/ 。

poYBAGSAcyWAc6qCAADAUi8EJQ8970.jpg

我使用的是 2.0.5 版。请确保您使用更新的 2.0.x 版本。最初的版本有点问题。

准备好 IDE 后,您仍然需要下载 FabGL。转到 Arduino IDE 的库管理器并在搜索框中输入 fabgl。下载最新版本。我现在使用 1.0.8。这经过测试可与 ESP 2.0.5 板定义一起使用。旧版本的 FabGL 无法在 ESP 2.x 内核上编译。

现在你已经设置好了 IDE。

下载并编译 BASIC 解释器

从我的仓库https://github.com/slviajero/tinybasic/tree/main/IoTBasic下载 BASIC 解释器。

该目录中的所有文件都是必需的。IoTBasic.ino 是解释器,basic.h 是头文件,hardware-arduino.h 是硬件定义文件。IoTBasic 是一个功能齐全的 BASIC 解释器,是使用各种来源的概念从头开始开发的。

打开 IoTBasic.ino 以设置语言功能。在文件的开头附近,您将看到硬件定义部分。确保它看起来像这样

 

 

#define BASICFULL
#undef BASICINTEGER
#undef BASICSIMPLE
#undef BASICMINIMAL
#undef BASICTINYWITHFLOAT

 

 

这会激活解释器的所有功能,包括字符串、数组、浮点运算和其他一些新功能。

接下来查看 hardware-arduino.h。在部分

 

 

#undef USESPICOSERIAL 
#undef ARDUINOPS2
#undef ARDUINOUSBKBD
#undef ARDUINOZX81KBD
#undef ARDUINOPRT
#undef DISPLAYCANSCROLL
#undef ARDUINOLCDI2C
#undef ARDUINONOKIA51
#undef ARDUINOILI9488
#undef ARDUINOSSD1306
#undef ARDUINOMCUFRIEND
#undef ARDUINOGRAPHDUMMY
#undef LCDSHIELD
#undef ARDUINOTFT
#undef ARDUINOVGA
#undef ARDUINOEEPROM
#undef ARDUINOI2CEEPROM
#undef ARDUINOEFS
#undef ARDUINOSD
#undef ESPSPIFFS
#undef RP2040LITTLEFS
#undef ARDUINORTC
#undef ARDUINOWIRE
#undef ARDUINOWIRESLAVE
#undef ARDUINORF24
#undef ARDUINOETH
#undef ARDUINOMQTT
#undef ARDUINOSENSORS
#undef ARDUINOSPIRAM 
#undef STANDALONE

 

 

一切都应该是#undef。这是回购协议中的默认值。

再往下是电路板部分。这些是预定义的硬件设置。

 

 

#undef UNOPLAIN
#undef AVRLCD
#undef WEMOSSHIELD
#undef MEGASHIELD
#define TTGOVGA
#undef DUETFT
#undef MEGATFT
#undef NANOBOARD
#undef MEGABOARD
#undef UNOBOARD
#undef ESP01BOARD
#undef RP2040BOARD
#undef RP2040BOARD2
#undef ESP32BOARD
#undef MKR1010BOARD

 

 

确保只选择了 TTGOVGA,所有其他设置都是#undef。

要编译 BASIC 解释器,请转到开发板菜单的 ESP32 部分并为“TTGO T7 1.4 mini32”编译。这是具有正确引出线的电路板定义。

编译上传。将电路板连接到键盘和显示器。一段时间后,应该会出现欢迎消息。

下一步是什么?

pYYBAGSAcyiAZvqjAAIoJt3htAA213.jpg

许多演示程序都移植了这种 BASIC 方言。您可以从示例部分的repo 文件夹https://github.com/slviajero/tinybasic/tree/main/examples下载演示。最好从教程开始。

使用 MANDELV.BAS 计算 Mandelbrot 集很有趣,而 ELIZA.BAS 是众所周知的在线收缩。

https://github.com/slviajero/tinybasic/blob/main/MANUAL.md中有关于所有语言功能和命令的手册。在这个特定的硬件上有一个特殊的部分https://github.com/slviajero/tinybasic/blob/main/MANUAL.md#esp32-vga-with-fabgl包括声音命令。

 

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !