亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」

本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于树莓派的矩阵触摸屏键盘

发布时间:2021-08-25
分享到:

基于树莓派的矩阵触摸屏键盘

发布时间:2021-08-25
分享到:

在控制您的 PC(甚至手机和平板电脑)按键的时候,拥有一个矩阵键盘非常地方便。只需按一下按钮即可启动宏,从而加快您的工作流程。这些键盘随处可见。但是,如果您可以自己构建一个呢?

在本教程中,我将使用 Raspberry Pi Pico 和带触摸屏的 TFT制作一个属于自己地矩阵键盘。

零件清单:
用品:

  • Raspberry Pi Pico
  • 带触摸屏的 ILI9488 TFT

工具:

  • 烙铁和焊锡
  • 剥线钳
  • 冲洗刀具

第 1 步:观看视频

在开始这个项目开始之前,我的建议是先观看一下我的视频,可以让你更加直观的了解到制作的流程。

第 2 步:获取您需要的零件

该项目包含两个主要部分,Raspberry Pi Pico 和带触摸屏的 ILI9488 TFT。您可以从各种经销商处购买这些产品。您还需要找到将屏幕连接到 Pico 的方法。您可以使用面包板和面包板电线,使用原型板并将所有东西焊接在一起。

第 3 步:将 TFT 屏幕连接到 Pico

接线看起来可能让人望而却步,但是相信我,当你真正操作起来,很多问题就会迎刃而解。当您将 TFT + 触摸屏连接到 Pi Pico 时,希望上面的图片可以帮助到您。

您可以使用面包板,也可以使用原型板,也可以专门订购 PCB 来将 ILI9488 + touch 连接到 Pi Pico。我想说明的是,面包板选项只是用于测试连接和屏幕的选项。放在办公桌上不太实用,连接松动可能会导致一些电路问题。

重要的是要知道这些屏幕只能在3.3V 下运行,将它们连接到 5V 会造成电路损坏!

这些是从 Pi Pico 到 TFT 的连接:

3.3V -> VCC and LED

GND -> GND

GP20 -> CS

GP21 -> RESET

GP22 - > DC/RS

GP3 -> SDI(MOSI) and T_DIN

GP2 -> SCK and T_CLK

GP14 -> T_CS

GP0 -> T_DO

GP15 -> T_IRQ

SDO(MISO) 不用于 TFT 屏幕,因此可以在 TFT 模块上留下一个未连接的引脚。

如果您使用的是 Pico + TFT 组合器,则只有一种适合它的方式。我建议它使用头针,这样你就可以拔掉你的 Pico 和屏幕,以便在不同的项目中使用它,或者如果由于某种原因屏幕或 Pico 不工作,你可以更换它们。

第 4 步:软件:安装 Arduino IDE 库

安装 Arduino IDE 'arduino-pico' 内核。
此版本使用 Earle Philhower 的“arduino-pico”核心。

要安装此核心,请转到Arduino -> Preferences并单击Additional Board Managers URLs输入字段后面的图标。接下来,将以下链接(不带引号)复制并粘贴到弹出框中:

https://github.com/earlephilhower/arduinopico/releases/download/global/package_rp2040_index.json

单击确定和确定。接下来,转到Tools -> Board : -> Board Manager并搜索“pico”。安装最新版本的“Raspberry Pi Pico/RP2040”。并单击“关闭”。

安装 TFT_eSPI 库。
在编写此 Instructable 时,TFT_eSPI 中的 Pi Pico 支持无法通过库管理器获得。但是安装非常简单。前往

https://github.com/Bodmer/TFT_eSPI,点击“代码”和“下载.ZIP ”。在 Arduino IDE 中,转到Sketch -> Include Library -> Add .ZIP library。找到刚刚下载的库,点击“选择”,等待安装完成!

第 5 步:下载代码并准备 TFT_eSPI

简单的代码可以从 Github 下载:

https://github.com/DustinWatts/Pico-Matrix-Touch-K...

为了让这个草图与 Pi Pico 一起工作,我们必须配置 TFT_eSPI 库。为此,请在您喜欢的文本编辑器中打开以下文件:

/Documents/Arduino/libraries/TFT_eSPI/User_Setup.h

选择所有内容(CTRL+A)并点击删除。您现在有一个空的 User_Setup.h。复制下面的代码并将其粘贴到 User_Setup.h 文件中:

// Stripped down User_Setup.h version for the Pico-Matrix-Touch-Keyboard //<br>
#define ILI9488_DRIVER     // WARNING: Do not connect ILI9488 display SDO to MISO if other devices share the SPI bus (TFT SDO does NOT tristate when CS is high)

#define TFT_MISO  0
#define TFT_MOSI  3
#define TFT_SCLK  2
#define TFT_CS   20  // Chip select control pin
#define TFT_DC   22  // Data Command control pin
#define TFT_RST  21  // Reset pin (could connect to Arduino RESET pin)

#define TOUCH_CS 14     // Chip select pin (T_CS) of touch screen

#define LOAD_GLCD   // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
#define LOAD_FONT2  // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
#define LOAD_FONT4  // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
#define LOAD_FONT6  // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
#define LOAD_FONT7  // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
#define LOAD_FONT8  // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
#define LOAD_GFXFF  // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts

// Comment out the #define below to stop the SPIFFS filing system and smooth font code being loaded
// this will save ~20kbytes of FLASH
#define SMOOTH_FONT#define SPI_FREQUENCY  70000000

// Optional reduced SPI frequency for reading TFT
#define SPI_READ_FREQUENCY  20000000

// The XPT2046 requires a lower SPI clock rate of 2.5MHz so we define that here:
#define SPI_TOUCH_FREQUENCY  2500000

不要忘记保存文件!

这也是您可以在 Github 存储库中找到的文件 ( https://github.com/DustinWatts/Pico-Matrix-Touch-Keyboard/tree/main/User_Setup )

第 6 步:调试代码

打开“Pico-Martix-Touch-Keyboard.ino”后,转到“工具”->“板”并选择“ Raspberry Pi Pico ”。

您可以将所有设置保留为默认值,“ Flash 大小”除外。代码需要一小部分文件系统存储空间来,存储代码第一次运行时创建的触摸校准数据。因此,在“Flash Size”下选择“ 2MB (Sketch: 1984KB, FS: 64KB) ”

接下来,在刷写代码之前,屏幕上的每个按钮都可以有它自己的一组击键,在您按下它后将发送到您的 PC。

您可以使用其他一些有意思的小功能(您可以在此处找到详细文档:

https : //www.arduino.cc/reference/en/language/functions/usb/keyboard/)

第 7 步:设计打印一个精致的外壳

因为在物体四周放置屏幕会显得产品不好看,而且使用起来也有点困难,所以需要给屏幕单独打印一个外壳。因为尺寸与 FreeTouchDeck ( https://www.instructables.com/A-Bluetooth-ESP32-TFT-Touch-Macro-Keypad/ )完全相同,所以您可以使用相同的外壳。

如果您使用接头引脚,请选择名为“Top_for_TFT_with_Headers.stl”的前端版本。( https://www.thingiverse.com/thing:4661069 )

由于尺寸相同,您可以使用任何专为 FreeTouchDeck 设计的外壳,但是需要注意的是必须与它有接头针脚配合使用的空间。

组装完成之后,您就可以使用这款产品了,希望您能喜欢这个项目!

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论