小更新
This commit is contained in:
parent
ae7a3877a9
commit
8debf39181
212
tn/2.md
212
tn/2.md
@ -249,6 +249,10 @@ ito膜一般都是$406mm宽度*裁切长度$,如果店家支持自定义长度
|
||||
|
||||
提示:ITO膜不只有$406*length$一种,还有$1250*length$,两人合购$1250*600$,再裁开$2 * 625*600$((((
|
||||
|
||||
![dummy](pics2/20230710200504.jpg)
|
||||
|
||||
**LATEX公式渲染可能存在问题,建议查看md文档原文,此写法在VSCODE自带md渲染器里不存在bug,但是github渲染会出错,会latex的大佬可以开个issue或者pullrequest帮忙解决下((,感激不尽**
|
||||
|
||||
![dummy](pics2/zizhishike1.jpg)
|
||||
|
||||
于是我们使用自制蚀刻法,
|
||||
@ -407,38 +411,221 @@ todo
|
||||
|
||||
触摸检测模块是对于已经引出出来的区块,用什么模块/IC来对是否触摸做出检测并作为一定协议的信号与主控单片机通信
|
||||
|
||||
todo
|
||||
目前主要有以下选型
|
||||
|
||||
#### MPR 121
|
||||
|
||||
价格:便宜
|
||||
灵敏度:好
|
||||
刷新率:好(与I2C速率有关,但是即使是最慢的读取方式,刷新率依然超过官方面板)
|
||||
延迟:低(低于官方面板(使用此方案制作,打歌可能出现FAST巨量,考虑在程序里面加个队列增加延迟来解决问题)
|
||||
生产状态:目前各大平台均有售卖,但是MPR121是已停产芯片
|
||||
每片支持的触摸点数:12
|
||||
总线: I2C
|
||||
支持的地址切换数:4
|
||||
电压(供电及IO):3.3v
|
||||
**严禁使用5v供电**
|
||||
|
||||
|
||||
**目前大多数人使用的都是此方案**
|
||||
**本教程提供的所有程序均基于mpr121**
|
||||
|
||||
![dummy](pics2/1688990326190.jpg)
|
||||
|
||||
此方案附加内容,地址切换教程:
|
||||
|
||||
I2C总线通过地址分别不同设备,MPR121模块默认地址一般是0x5A,我们需要修改其他片的地址,让其工作在不同地址,这样才能一个单片机的一个总线连接多个MPR
|
||||
|
||||
ARDUINO生态 开发板I2C总线已连接设备地址列出工具:[i2cdetect(arduino library)](https://github.com/mcauser/i2cdetect)
|
||||
|
||||
1. 称取一片分析纯的MPR121
|
||||
![dummy](pics2/IMG_20230710_201123.jpg)
|
||||
2. 翻到背面,切断ADD跳线,**务必保证切断同时不伤其他线路**
|
||||
![dummy](pics2/IMG_20230710_201250.jpg)
|
||||
3. 正面焊点,ADD短接GND,VCC,SDA,SCL分别获得地址0x5A,0x5B,0x5C,0x5D
|
||||
|
||||
#### ILITEK 2117A0
|
||||
|
||||
**官方面板触摸IC**
|
||||
|
||||
目前用这个的且被我知道的仅有一人,无法提供足量信息
|
||||
|
||||
价格:??
|
||||
灵敏度:官方同款IC
|
||||
刷新率:官方同款IC
|
||||
延迟:官方同款IC,但是不知道主控程序会不会影响
|
||||
生产状态:目前国内各大平台均无售卖,需要海外代购,是否停产不知道
|
||||
每片支持的触摸点数:??
|
||||
总线: I2C?
|
||||
支持的地址切换数:不需要切换,一片IC电极总数已经足够
|
||||
电压(供电及IO):??
|
||||
|
||||
#### 其他IC
|
||||
市面上还有很多各种各样的触摸IC,但是出于都没试过,无法提供信息
|
||||
|
||||
#### 其他事项
|
||||
1. 触摸优化: 据某大佬提供,在触摸IC提供的电极接口上串联适当的电阻(几十k到几百k),可组成LC滤波(但是感觉是说错了,应该是RC滤波),增加触摸的稳定性,减少虚空触发等问题。(官方面板有此操作)
|
||||
2. 高速总线走线提倡等长原则,即同一片触摸IC模块连接主控的两根信号线应该完全等长,避免数据传输错误或者无法传输。
|
||||
3. 本教程提供的程序对于mpr121的调教基本可以适配大多解决方案,但是依然有人(30%)反映少量区块存在虚空触发问题,有能力的大佬建议通过修改mprsetup里的参数,调节mpr适配自己的作品。
|
||||
|
||||
|
||||
### 5. 主控单片机(图中未拍到)
|
||||
|
||||
主控单片机说的是对于触摸检测好的信号,转换成可以连接电脑的USB/串口信号等用的芯片/开发板
|
||||
|
||||
todo
|
||||
考虑的有以下几点
|
||||
A 单片机性能,包括串口性能,I2C总线性能之类
|
||||
B 单片机电压(比如如果需要使用mpr121,则IO和供电电压需为3.3v)
|
||||
|
||||
#### 首先讨论串口
|
||||
**这部分可能非常难懂,以作者语文将近不及格的表达水平来讲解,可能更难懂,不明白的可以不看讲解部分,看加粗部分即可**
|
||||
这东西对于只知道普通串口的人比较难以理解,还有部分人借所谓9600波特率太慢来抹黑本项目,只能说,这种人可能连这些串口的原理,或者正常传输的条件都不知道。
|
||||
|
||||
目前主要有两种,
|
||||
##### 一是走usb转串口芯片,
|
||||
转变为TTL等信号,再连接单片机,此方法一般延迟较大,但是波特率是满足的,但是经过测试会影响性能。
|
||||
代表:Arduino Nano 、UNO等
|
||||
**这个方案串口最高理论速度133.3333hz刷新率,延迟较高**
|
||||
此方案讲解如下:
|
||||
|
||||
<details>
|
||||
<summary>展开查看</summary>
|
||||
<pre>
|
||||
|
||||
1. 电脑通过某种设备(板载RS232串口,USB转TTL串口(例如CH340))制造一个硬件串口,单片机一般自带硬件TTL串口
|
||||
1. 双方通过串口控制信息初始化串口,包括波特率(传输速度),数据位x位,停止位x位等
|
||||
2. 双方交叉连接,以预先被写死的串口控制信息传输串口数据信息,要求双方串口控制信息设置完全相同才能正常传输。不然假设一方以另外一方两倍的速度发送和接受,这边发两个bit那边在同样的时间接收一次,显然就会炸。
|
||||
|
||||
那么,游戏程序本身内定串口控制信息是9600的速度,游戏程序打开串口,初始化电脑端为9600波特率,电脑告诉串口设备以9600速度在那两条串口TXRX数据线上发送和接收串口数据信息,那么远端单片机就必须以9600去配合,双方才能正确的传输信息
|
||||
所以这个9600实际上是游戏程序限制的,s公司在开发这个设备的时候就确定了这个波特率,所以不管是官方面板还是自制面板一般都是要使用这个波特率的(为什么要说一般呢,因为见下USB-CDC)
|
||||
|
||||
|
||||
**以下内容可能让您感到不适**
|
||||
|
||||
有的人说“打开程序一看就知道这个方案肯定不行,波特率才9600那么慢,还好意思发出来”这样,不知道是真的不懂还是忽悠不知道串口这玩意的玩家来抹黑这个方案的。
|
||||
有本事你用这种走真实存在的串口两条线的串口,不修改游戏的前提下,做一个大于9600波特率的。
|
||||
或者说,按照你的说法,9600波特率,就是方案不行,那官方面板9600波特率,官方面板官方机台肯定不行,刷新速度那么慢,打不了大歌,官机只能打打12以下的小歌,大歌1414+打不了(((((
|
||||
就这么说吧,如果程序里面以115200速度打开串口去配合游戏程序,就像你写了个串口通信的程序,单片机程序里是115200,然后电脑串口监视器以9600波特率传输...额,这,但凡接触过串口的都知道这样必挂吧..如果我都说到这份上了还要问“你有什么证据证明官方是9600”,“9600那么慢,官方肯定不是9600,你这9600肯定不行”,我已经没话说了。
|
||||
|
||||
|
||||
</pre>
|
||||
</details>
|
||||
|
||||
##### 二是USB-CDC串口,USB-CDC
|
||||
代表:atmega32u4( Arduino Leonardo , micro , sparkfun pro micro ) ,samd21,支持usb的esp32使用usb直连电脑并打开cdc功能,支持usb的stm32使用usb直连电脑并打开cdc功能等
|
||||
**这个方案最高理论串口方面限制速度166666.6666hz刷新率,延迟极小**
|
||||
|
||||
此方案讲解如下:
|
||||
<details>
|
||||
<summary>展开查看</summary>
|
||||
<pre>
|
||||
|
||||
大家可能对这玩意不是很熟悉,但是其实大家可能接触过很多这种。
|
||||
叫名字不熟悉,那我说,atmega32u4的板子,samd21的板子之类的,走直连usb连到电脑上,电脑识别的串口就是所谓USBCDC串口,这样熟悉了吧。
|
||||
你在这类板子上一般只能看见主控一个芯片,没有ch340等串口芯片
|
||||
|
||||
我们知道官方程序里面设定的电脑以9600打开串口,其实这里可以算出官方理论最高屏幕触摸刷新率是多少,未经修改的游戏,触摸数据包每个是9个字节,也就是72个bit,9600波特率也就是9600bits/s,计算得到串口限制每秒最多133.3333个数据包,即官方最高理论极限是133.3333hz,实际上应该是达不到的,所以在这顺便也说一下,其实并不用担心用这个方案做出来的触摸面板的性能,因为官机的性能其实并不是很好,官机延迟大,刷新率低,顺便说一下,还有人说mpr121性能不够来说方案不行的,我只能说,它性能可能不是那么顶尖,但是至少够用,做出来纸面性能大于官方面板,官方面板能干的他都能干,我觉得这就足够了。
|
||||
|
||||
那么为什么说我们的方案的性能,包括刷新率,可以超过官方呢,不是说波特率都被限制到9600了吗?
|
||||
|
||||
首先我们要知道9600波特率是在硬件那两条线上面传输的一个提前约定的速度。使用两条线那种传输方式,电脑先以一个高速的线路比如usb告诉usb转串口设备串口控制信息和串口数据信息,usb转串口依靠串口控制信息描述的速度等,在两条线上面发送和接收数据。说白了就是这个9600的速度限制的是那两条线上面的速度,实际上,电脑最本身,系统里面是不管这个速度的,那么如果我们的usb设备从拿到串口控制信息和串口数据信息之后就截胡了呢?
|
||||
|
||||
usbcdc就是这样一种东西,他提供给usb设备一种通讯方式,在电脑上显示为一个串口,usb设备可以是一个单片机一类,单片机告诉电脑,自己是一个cdc设备,电脑就把他识别为串口,并当作串口去处理他,这个单片机一类的东西自带usb能力,它接收串口控制信息和串口数据信息并进行自己所需的操作:它本身可以作为usb转串口使用,你可以编写程序,让这个设备接收到串口控制信息和串口数据信息之后,像一个usb转串口,ch340一类的东西一样,以串口控制信息的参数把串口数据信息从自身的硬件串口发送出去和接收后传给电脑(官方版arduino UNO的usb转串口芯片,atmega16u2就是这样使用的),当然,自己也可以直接内部处理数据并以usb速率12Mbit/s跟电脑以一个串口的通信方式通信。比如这个单片机可以是atmega32u4,游戏程序打开串口,初始化串口为9600,他拿到串口控制信息9600和串口数据信息之后,直接扔掉了串口控制信息9600,因为他不需要这个东西,这个东西是用来控制硬件两条线串口上面的传输的。因为不经过硬件两条线,他不受波特率等约束,他自身就直接跟电脑以usb12Mbit/s速度通信,他自己自身处理好数据,把数据就直接发给电脑了,速度?12Mbit/s,这样,不受9600的限制,进行传输,没有133.3333hz的理论限制,我们就可以做到超越官方的刷新率,同时没有经过usb或者电脑内置串口芯片转换rs232的步骤,直接使用低延迟的usb通信,延迟也做的比官方低。
|
||||
|
||||
|
||||
</pre>
|
||||
</details>
|
||||
|
||||
|
||||
|
||||
CDC和普通usb转串口的讲解图片,详见读卡器说明文档最后面
|
||||
[读卡器传送门](https://github.com/HelloworldDk/stm32_aimereader)
|
||||
|
||||
#### 然后我们考虑单片机自身计算性能,电压之类的
|
||||
|
||||
i2c速度:
|
||||
|
||||
目前基于328p的nano uno等,应该是最慢的一批,基于32u4的,速度较好,使用目前通用程序这种比较慢的读取方式,依然有100hz刷新率,实测完全足够,鬼知道官机实际刷新率低到哪了。
|
||||
进阶可以选择samd21,速度较快,达到140-160hz刷新率,超越官方理论极限
|
||||
|
||||
存储空间:
|
||||
|
||||
samd21开发板碾压32u4和328p,以后要加队列加延迟的话,32u4内存难以胜任,但是samd21非常足够
|
||||
|
||||
电压:
|
||||
|
||||
基本每款板子都有对应的5v和3.3v版本,记得选择3.3v版本即可
|
||||
|
||||
#### 总结和对制作的影响:
|
||||
|
||||
显然串口方面最好选择usb-cdc串口的板子,这就去掉了arduino nano之类的板子
|
||||
i2c方面 stm32有锅
|
||||
esp32类似的板子没测试过
|
||||
考虑到综合来说
|
||||
|
||||
新手使用promicro(32u4)较稳,这东西速度略慢,因此对走线要求小,实际上测试100hz也足够打14+歌曲。**建议新手选择此款**
|
||||
老手使用samd21比较好,这个刷新率足够快比较安心,但是对走线要求较高,线要略粗,焊接稳定,等长,才能保证高速i2c正常运行,目前有samd21新手用不起来的旧例
|
||||
|
||||
|
||||
|
||||
### 6. 基层透明板
|
||||
|
||||
基层玻璃说的是将区块等内容固定加固的面板和手接触的面板,可能这样说徒增抽象,实际上就是那块手摸到的透明(玻璃一类的)板,也是要把区块贴/做上去的透明(玻璃一类的)板
|
||||
|
||||
累死宝宝了,先把最推荐选项写进来,然后休息休息以后再补
|
||||
|
||||
最推荐选项:5-7mm钢化八边形玻璃板,尺寸根据不同的屏幕大小自行计算,非常小的台(20寸以下)可以考虑亚克力,大台禁止亚克力,尺寸越小的台,玻璃板可以越薄,不会打歌时候弯曲就行,保证上面贴的ito导电面跟屏幕显示器之间有大于等于1cm的稳定空隙(越小的台,空隙可以适当减小)
|
||||
|
||||
摘抄一段之前小批教程第一批成员帮忙整理的文档
|
||||
感谢这位无私奉献并且markdown比我写得好的成员
|
||||
|
||||
- 一张较薄的亚克力板或者玻璃板,尺寸至少覆盖圆形屏幕区域。
|
||||
- 此处感觉**玻璃容易碎和不好固定**,**亚克力容易划花和弯曲**,大家自行斟酌。**新教程更新:目前推荐全部使用玻璃**
|
||||
##### 透明板厚度问题
|
||||
|
||||
> 众所周知,我们触摸面板需要距离屏幕一段空气,保证触摸不被屏幕干扰,或尽量少被屏幕干扰。
|
||||
> 屏幕可以相当于一个导电物体,他里面有很多导电细丝,跟手一样。
|
||||
> 他靠近触摸区块,会触发触摸,所以我们要保持这块距离。
|
||||
>
|
||||
> 考虑亚克力,如果你施加力量于亚克力,他会弯曲,会导致面板在使用的时候不定期靠近屏幕。
|
||||
> 所以我们需要增加厚度或者换材料来避免这个弯曲,这就确定了**厚度的下限**,也就是最薄不能太薄。
|
||||
> 关于触摸,我们肯定想要,触摸区块电极能离手越近,越容易产生电容值变化。
|
||||
> 而触摸是隔着那个透明板操作的,透明板厚度决定手最近距离区块多近。
|
||||
> 如果太厚,就是太远,难以感应,这确定了**厚度的上限**,也就是最厚不能太厚。
|
||||
> 根据不同屏幕尺寸,14 寸的透明板面积肯定比 43 寸小。
|
||||
> 施加一样的力,根据人类智慧,造成影响也不会有 43 寸那么大。
|
||||
> 一片大亚克力肯定比小的更容易产生全局的弯曲,所以需要根据屏幕大小去选择厚度。
|
||||
> 除了亚克力还有玻璃,玻璃也是会弯曲的,虽然没有亚克力那么容易,但是要考虑他造成的影响。
|
||||
> 而且玻璃还要考虑一点,就是**可能会碎**,这个考虑一下。
|
||||
|
||||
|
||||
#### 新兴方案
|
||||
|
||||
##### 双层玻璃
|
||||
|
||||
先看图,以后解释
|
||||
|
||||
ps:图右边是双层玻璃方案,左边是传统方案
|
||||
|
||||
![dummy](pics2/IMG_20230619_224416.jpg)
|
||||
|
||||
todo
|
||||
|
||||
### 7. 固定材料和大底板
|
||||
|
||||
固定材料和大底板说的是最外面把基层透明板固定,也接驳外面整体固定架子的一块板子,这样说也是徒增抽象,可以看图就是指最外面那个黑色木板和金属固定件类似物体
|
||||
|
||||
这部分实际上不属于本方案,本方案专注于那块能触摸的玻璃的部分,也就是触摸面板本体,外面的固定,底板这些属于结构范畴,暂不属于教程部分。
|
||||
|
||||
其次我不会做结构,这部分可能要等别的大佬来写
|
||||
|
||||
**此部分跳过和等待后续更新**
|
||||
|
||||
todo
|
||||
|
||||
## 第六部分 触摸屏制作详细步骤
|
||||
|
||||
#### 蚀刻基本步骤
|
||||
(dkmaiproj原创)蚀刻方法:
|
||||
ito导电面去掉保护膜,涂感光蓝油,风干
|
||||
打印菲林,白色部分为需要留下的部分
|
||||
菲林盖在ito带感光蓝油的导电面上,uv120秒
|
||||
显影液处理直到不需要的部分表面感光蓝油全部溶解
|
||||
hcl(稀)-fecl3 蚀刻液 处理
|
||||
清洗表面,后脱膜液处理,直到所有蓝油脱落
|
||||
蚀刻完成
|
||||
(个人家庭可用简化原创思路,世界首发表,hwmug design版权所有)
|
||||
|
||||
|
||||
|
||||
#### 某个步骤 打印对照纸
|
||||
@ -475,4 +662,3 @@ hcl(稀)-fecl3 蚀刻液 处理
|
||||
|
||||
![dummy](pics2/caiqie003.png)
|
||||
![dummy](pics2/3dpicplacetip.png)
|
||||
![dummy](pics2/IMG_20230619_224416.jpg)
|
||||
|
BIN
tn/pics2/1688990326190.jpg
Normal file
BIN
tn/pics2/1688990326190.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 125 KiB |
BIN
tn/pics2/20230710200504.jpg
Normal file
BIN
tn/pics2/20230710200504.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 106 KiB |
BIN
tn/pics2/IMG_20230710_201123.jpg
Normal file
BIN
tn/pics2/IMG_20230710_201123.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 MiB |
BIN
tn/pics2/IMG_20230710_201250.jpg
Normal file
BIN
tn/pics2/IMG_20230710_201250.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 417 KiB |
Loading…
Reference in New Issue
Block a user