「被解放的手变」后拨信号控制器这块神经中枢的诞生
在这篇内容里,你可以了解到:
- 不懂电路知识和硬件编程的情况下,如何更舒适有效的开始自学
- Di2发送变速命令这个信号的基本原理和如何利用电路模拟出这个信号
- 电路板设计的具体流程
- 初学后设计的第一版和积累了电路知识后的第二版的鲜明对比
如果你还没准备好阅读下面稍显“干燥”的硬货,除了先敷一张补水面膜,还可以点击这里回顾这套被hack了的无线电变系统在双人自行车上的解剖结构,或者欣赏下面这支小短片来热个身 ——
被解放的手变——Di2无线变形记_腾讯视频
实际上,Shimano Di2系统是一种总线系统。你可以把它想象成一个聊天群组,所有模块成员都在群里,每个模块发送的消息都会被其他模块看见。所以要把一个控制器hack到这个群里/适时发送“命令后拨变速”的消息,就成了我们的目标。就像在上面的图示里你看到的那样,Di2这个总线系统里的master在接收了手变发给它的“我被点按了”的信号之后,会对后拨发出“升/降档”的信号。我们的hack目标就是模拟出master发送给后拨命令它变速的那条信号。原理看起来好像很简单,但难点有两个:1. 从众多信号中分辨出那条信号;2. 把这条信号模拟出来。一个稍显轻描淡写的比喻是:想要打开一把不知道钥匙长什么样的锁。注:Di2系统的master其实是一个电池模块,Shimano把master放到电池模块里的逻辑可能是:无论系统选用了哪些模块的组合,电池永远是必须的.
在这个总线系统里,模块间交流信号的语言是一种PSK信号,形式上是一组变化的正弦波,我们使用了DDS这类电子元件来模拟这种信号。DDS可以生成正弦波,并能对正弦波做出我们所需要的变换。在最初的阶段,因为对电路硬件的接触只有arduino层面,所以直接选择了拿来就能用的AD9833模块,控制器的核心也使用了arduino mini(测试时用的是arduino nano)。开始的设想是只用一块AD9833模块就可以了,但实际开发时发现:由arduino控制一块AD9833生成的PSK信号在频率上没法满足Di2系统信号1MHz(每秒1百万个周期)频率的要求,另外AD9833生成的正弦波幅度太小,简单说就是说话声音太小,其它模块可能听不见,所以我们又在控制器里加入了另一块AD9833模块和一个放大信号的模块。同时,因为放大信号用的是运算放大器(有人说运算放大器几乎是一切中低频模拟电路的核心,可以说用好了运算放大器就可以设计大部分的模拟电路了),而运算放大器不像其它的模块那样可以单独使用,需要配合电阻电容才能工作。这样不断的测试和改进,虽然让这块初代的电路系统看起来越来越大,但总算模拟出来Di2系统能听懂的信号了。
为了把所有用到的模块都整合在一起,我们需要设计一块专属的电路板,于是就在网上发现了一个免费的开源软件KiCad,用起来还是挺方便的。就像上面的图示中你看到的:
1. 原理图编辑器中加入所有用到的电子元件,并把它们的引脚画线连接起来。
2. 在PCB编辑器中调整原理图里各个电子元件在实际电路板中的位置。
3. 使用freeRoute工具,根据原理图的连线以及PCB编辑器中的元件位置自动布线,最终确定电路板上的铜箔形状。
4. 导出与电路板加工方式对应的文件类型:我们使用的是CNC雕刻的方法加工电路板,因此导出为Gerber文件。
关于这块 20x34mm 的后拨信号控制器就介绍到这里,如果你真的开始研究和制作,并遇到了一些更细节的问题,欢迎跟我们交流。
credit:
- cover photo1 <x-ray of arduino board> by Mathew Schwartz on Unsplash
- cover photo2 <beam matrix> by Steve Johnson from Pexels (rework)
- written by necar
- photo provided by necar
- artwork by oldguitar