查看: 95|回复: 1

给自己做一个开发板 #AnyBoard#

[复制链接]
这是一篇无聊的纯文字帖子,只是做一个记录

遇到的问题
在我的一份清单中,记录了几十个diy项目,过去的几年里,我陆续的完成了一些。一般都是利用现成的Arduino开发板通过杜邦线来连接外围模块。或者是用ok线直接通过焊接的方式连接。
这样做的优势是制作速度快,但是缺点也显而易见,体积庞大,很难装入盒子中用于实用。而且很容易因为线头脱落而损坏。
当然也可以根据需求像做产品一样重新设计一块电路板,但是layout,备料,焊接都是一些很烦人的活。对于diy来说,这样投入的人力成本有点高。
我相信很多人也遇到过同样的问题。

关于问题的思考
        隔离在家期间,我整理了diy清单中的内容。发现常用的元素无外乎就是电机,灯光,传感器,显示屏,按键。。。。。。而任何制作无非就是这些元素的排列组合而已。有意思的是有一些完全不相关的元素其实有着相同的接口,比如说舵机和ws2812以及土壤湿度传感器的接口都是 - + s ;大部分的传感器接口是i2c;有gsensor的地方一般都会用到电池。这就意味着其实元素的排列组合方式是有限的。我尝试着做了10中排列组合,竟然可以覆盖多达50种diy制作。那么我完全可以制作10块电路板来完成50多个制作。而且制作出来的东西紧凑小巧。虽然仍旧是diy产品,但是基本可以用于实际生活。这是一件很划算的事。
        然后我试图去搜索是否有相关产品,发现了m5stack,以及adafruit的feather系列。可以说是非常好的两个产品。但是因为各种各样的原因,我发现他们并不能完成我的50的制作,我应该也没有办法让他们单独为我做一些修改。
        所以我决定自己设计一款开发板来满足我的需求。

新方案的描述
想到要为自己设计一套全新的开发板还是有一些激动的,仔细想了一下,有以下问题需要考虑:
1,硬件选用什么平台
2,软件开发使用什么方式
3,电路板的结构应该如何设计

硬件平台
硬件我基本没有犹豫,直接选择了esp32,理由如下:
  • 支持使用arduinoIDE开发:对比其他的编译器,arduinoIDE非常容易上手,开发起来也非常方便。更重要的是arduino的社区做的非常好,有大量的开源驱动库可以使用,这意味着不必关心底层硬件的实现,可以专注上层逻辑开发。同时有大量的玩家开源了他们的arduino项目,遇到喜欢的可以跟着一起玩。
  • 支持蓝牙以及wifi,比单纯的mcu更有想象空间。现在大量的iot应用,都离不开这俩的支持。
  • 价格便宜,模组价格约为17rmb。这个价格对于一个240Mhz主频,4Mflash+8Mram的系统来说已经非常诱人了。
  • 性能好:最高可达240Mhz主频,支持外扩至最大16MB flash以及8MB SRAM。如此的配置甚至可以让它运行一些简单的图形引擎 。
  • 更多的想象力,目前已经可以运行micropython,lua等脚本语言的虚拟机。所以还可以基于上述脚本语言开发。

软件开发方式
第一选择:arduino
  • 丰富的库支持:基本上能想到的都有了。这样只需要关注上层逻辑就可以了。
  • 比起基于idf用c开发,arduino要方便很多。而且ide对于软件小白也更友好。
  • 运行效率高。

第二选择:脚本语言(micropython)
  • 调试方便,这是脚本两个字的精髓
  • 对于sd卡读写,显示图片这些上层功能会更简单
  • 支持多线程,真香
当然脚本致命的问题在于在esp32这种性能的cpu上跑还是有点低效,做不了实时性要求高的活。
对于脚本的选择,目前也有很多,但是对于diy来说,还是micropython比较好,因为社区维护的最好,库也最多。关于micropython有个有意思的事,adafruit fork了一个分支建立了circuitpython,circuitpython比micropython有着更强大的底层库,对diy来说这个优势非常明显。但是因为某些原因竟然不支持esp32,果断弃之。但是我还是在后面的结构设计中为此留了一个伏笔。

第三选择:IDF
也就是esp32官方推荐的开发方式,基于idf用c开发。很多嵌入式大神会倾向于这种方法,最高效,自由度最高。但是对软件的要求也最高。不是一般人能驾驭的。但是正因为很多大神使用这种方法,所以有一些有意思的项目都是基于这种方式开发的。

第四选择:makecode
图形化编程,小孩子编程才用的。但是本身是非常好的东西。

电路板的结构
因为是开发板,我考虑到所有应用都有重叠的部分,就是cpu。所以我把cpu和外围拆分了开来单独制作了一个核心板,使用的时候插在外围扩展板上就可以了。原本想做扩展板无限堆叠的,review了一下项目清单,似乎并不需要这么复杂,两层堆叠就可以搞定了。这一点似乎所有的开发板都是一样的套路。还有一个好处是,哪天我想用circuitopython的时候。换个cpu就可以了,外围照样用。

关于尺寸
扩展板的尺寸54mm*85.5mm,也就是信用卡的尺寸,这样携带比较方便
核心板的尺寸54mm*32mm,54mm的高度可以很好的匹配扩展板,32mm的宽度正好安装1.5寸的屏。
迷你扩展板可以采用32mm*85.5mm这种条状方式,用于一些宽度限制的手持设备。
另外一种尺寸和核心板一样,用于可穿戴设备。

连接方式
因为体积的限制,我抛弃了2.54mm排针的方式,使用了0.8mm间距的板对板连接器。


特点
anyboard是一种特殊的开发板。最大的特点是我事先想好了最终要完成的50个作品的形态,然后去设计的扩展板。在做完这几款扩展板以后,我几乎不在需要使用杜邦线或者飞线就可以完成制作。这一点有两个好处:
1,做出来的作品紧凑小巧,又稳定。
2,不必关心硬件,大大缩短制作周期。
3,因为降低了硬件的门槛,就像乐高一样,任何人不需要任何的技术背景,跟着说明书操作就完成这些开源硬件项目的制作。


模块清单
目前设计了一块核心模块(基于esp32),以及8种外围模块,每种外围模块可以用来做几种不同的应用。
gamebrd
grblbrd
wearablebrd
robotbrd
stickbrd
aibrd
controlbrd
matrix


rzyzzxw  版主

发表于 2020-4-3 07:53:48

老铁很有想法啊
回复

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2020 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail