Cumu开源智能WIFI万用表首次公开:精心筹备1年,将开源进行到底

2019-12-09 13:36发布

注:Cumu项目使用STM32F030,所以发在这个版块,以后的更新文章也会在这个版块发布
一、Cumu开源智能万用表项目简介
做嵌入式开发有5个年头了,从大二接的第一个项目开始,到现在大大小小做了20几个项目,用的最多的就是身边那台50多块钱的万用表,期间想过换一台500块钱左右万用表,发现除了精度高之外并不能给我带来太多的惊喜。2014年随着WIFI产品的爆发式增长,WIFI芯片的价钱也开始亲民,
于是我有了打磨一台智能WIFI万用表的想法,首选的万用表芯片正是那台500多块钱万用表使用的FS9721,它的串口输出可以很方便的将测量数据发送给WIFI模块,并且保护功能完善、外围电路简单。
这个项目若能完成第一个阶段,你将会以100元的成本做出堪比500多元万用表性能的智能万用表,最主要的是它具有物联网功能,你身边所有的智能设备都将是这台万用表的显示窗口。
作为开源项目的发起者需要起一个响亮的名字,我头脑里闪现的第一个词语是“积雨云”,英文单词“Cumulonimbus”,简称“Cumu”,积雨云有另一个有冲击力的名字:雷暴云

这个开源项目的出发点是为了适应我自身开发需求,并没有任何商业目的,也许应用人群会非常小众,但我相信一定会有和我需求一样的开发人员:
1、身边那么多大屏显示设备(台式电脑、笔记本电脑、平板电脑、智能手机),为何不摆脱又小又单调的万用表显示屏;
2、使用万用表调试电路板时,经常因为记不住前几次测量的值而重新去测量,我需要一个聪明的Cumu万用表,用于我随时查询以前的测量值;
3、在电路板的调试或老化期间,Cumu万用表接入测量点,我可以离开工作台,随时随地拿出手机就能知道现在电路板的工作状态(以后加入反向控制,当工作不正常时,远程关闭电路板电源);
4、做开发工作需要各种各样的设备(信号发生器、频率计、多通道IO控制、多路信号采集等等),各种仪器我只做前端,一个Cumu万用表做后端就够了,这种扩张机制可降低每种仪器的成本、也能使每种仪器都有联网功能。
5、在测量特别精密的电路板时,我集中注意力将表笔放到测量点,这时多希望旁边有个人帮我读出万用表的测量值,既然不能雇佣一个人24小时为你读测量值,那么就让Cumu万用表帮你读出来吧(软件语音合成)。

2014年有的这些想法,并将需要的工作量化,2015年初设计了一个测试板,验证FS9721和WIFI芯片,当时想用WIFI芯片的SDK直接开发,这样可以省去MCU,但是在测试板上验证时发现WIFI芯片的功耗非常大,
这样不利于电池供电,果断放弃SDK开发,在论坛看到网友介绍STM32F030的性价比非常高,查看了相关资料后确定下来使用STM32F030,以前想过使用STM8L,但是RAM和ROM太少,担心以后不够用。
二、整体方案需要解决的问题和解决办法如下:
1、传统万用表切换量程是用拨盘触点,Cumu万用表需要远程切换量程,所以得更改FS9721的设计电路,使得所有档位都可通过MCU控制;
2、传统万用表的电流档与其他档位不是一个表笔孔,Cumu万用表需要自动切换,若用普通继电器吸合时很耗电,所以需要使用磁保持继电器;
3、FS9721的串行数据输出的是LCD断码信息,需要反编码成档位和数值,这部分程序我已经写完,并用C#通过串口读取FS9721验证通过;
4、使用电池供电需要尽可能的降低整体功耗,这需要后期软件优化;
5、为个让更多人接受Cumu,每个元件都精打细算,整体硬件成本控制在100元左右;
6、为提高测量精度,关键元件需要使用千分之一精度电阻,在原理图中已经标注;
7、安卓客户端由我老婆编写,将推出两个版本,手机版和平板版;
8、PC客户端还没开始设计,我学了一点C#,可以先做一个简陋的版本,还需要上位机高手帮忙设计;
9、物联网平台使用国内免费平台:乐联网、Yeelink、传感云等等;
10、加入反向控制,反向控制使用MQTT协议,需要自己搭建服务器,我已经验证通过了,使用阿里云的Linux主机安装mosquitto服务,完成MQTT协议通讯。
科普一下mosquitto与NQTT(百度百科):
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。
Mosquitto是一款实现了消息推送协议 MQTT v3.1 的开源消息代理软件,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌入式计算机、微型控制器等移动设备
另外,Mosquitto是个异步IO框架,经测试可以轻松处理20000个以上的客户端连接

11、为Cumu加入扩展机制,预留I2C接口,使用标准协议,可以很方便的加入扩展设备(信号发生器、频率计、多通道IO控制、多路信号采集等等)

12、因为不断完善程序和增加功能,所以需要很方便的升级固件,所以板载USB转串口,使用USB充电口插入电脑即可升级固件

13、在不开模具的情况下,选一个漂亮的外壳,我已经选定一个移动电源的外壳

三、语言描述永远不如图片直接,而视频将更有吸引力!

1、2015年初为了验证FS9721和WIFI模块而设计的Cumu测试版(没有MCU,直接使用WIFI模块的SDK开发)


2、正式版PCB的效果图(双面PCB、目前有几个地方需要改动)


3、正式版真实照片


4、带有外壳的照片(还没做外壳贴面)





5、各种颜 {MOD}和大小的外壳


6、最后来一张Cumu与我的工作台合影(脏乱差的工作台,正式版的PCB焊接调试花了3天时间,到最后工作台已经被元件布满了!)


7、带有外壳的效果图:


在来几张自拍照吧




测试版调试视频:

测量DC:http://v.youku.com/v_show/id_XOTU3NzAyMDY4.html?from=y1.7-1.2
测量AC 频率  占空比 :http://v.youku.com/v_show/id_XOTU3NzI2ODky.html?from=y1.7-1.2

四、关于物联网平台:
Cumu支持乐联网、YEELINK和传感云免费物联网平台,可以将测量数据上传到平台上,平台有很多玩法,比如:设置上下限、短信报警、微信获取数据等,这样Cumu的使用范围更加广阔

五、关于扩展:
Cumu另一个特点就是带有I2C扩展接口,后续我会做一些通用扩展,用户也可以自己增加一些专用扩展,比如8路开关量采集(单片机3元+8个光耦4元+PCB和其他元件5元=12元),极低的价钱就可扩展实用的功能。
以后会加入反向控制,可玩性会提高很多。

六、以后加入的新功能
1、分时测量
当测量一个交流电压时,同时显示出电压值和频率值。当测量一个PWM信号时,同时显示出频率和占空比,实现方法就是分时切换功能,然后同时显示。
2、表笔上加入功能键
在我构思Cumu时就想在表笔上加入一个按键,但涉及到设计和开模,费用比较高,只能在后期在考虑加入。
按键功能用户可自定义,比如:
1、测量时,按下按键,APP即将读数朗读出来;
2、测量时,按下按键,APP即将数值放入存储区,以便后期查看;
3、按下按键快速切换测量功能(电压、电流、频率等等);


七、按键功能和工作模式
在照片中可以看到Cumu只有一个按键,那么这一个按键如何控制的,Cumu又是如何使用的呢?

在以下介绍Cumu工作模式中,你将会了解Cumu按键功能和几个关键词:AP模式、STA模式、AP通信状态、STA通信状态、离线工作状态。以下内容中所有的显示设备(台式电脑、笔记本电脑、平板电脑、手机等)统称为客户端。
关键词简介:
1、AP模式
属于临时状态,只有刚开机才会进入这种状态,Cumu启动热点,等待客户端连接。
2、STA模式
属于临时状态,Cumu连接路由器的临时状态。
3、AP通讯状态
属于稳定状态,当有客户端连接Cumu热点之后,进入AP通讯状态。
4、STA通讯状态
属于稳定状态,当Cumu连接到路由器之后,进入STA通讯状态。
5、离线工作状态
属于稳定状态,这种状态与普通万用表一样,只可通过Cumu屏幕查看测量值。

工作模式:
关机状态下 长按按键开机;
设备开机为AP模式,若30秒内有客户端连接到这个AP,则变为AP通信状态;
AP模式30秒内,单击按键变成STA模式,主动连接保存的路由器,若连接成功,这种状态为STA通信状态。若主动连接路由器失败,则切换成AP模式,并重新计时30秒;
AP模式30秒内,双击按键关闭WIFI,这种状态为断网工作状态;
AP模式30秒后无连接,则切换成断网工作状态。
在AP通信状态、STA通信状态和断网工作状态,单击按键切换量程,长按按键关机;

工作流程图:


进入AP通信状态:
客户端连接到AP后,建立UDP服务端,等待Cumu连接,Cumu连接后发送注册包(注册包里包含设备信息),Cumu响应,连接成功,此时客户端与Cumu可以正常通信;

AP通信状态切换到STA通信状态
在客户端中设置路由器名称和密码,当点击切换到STA模式按钮后,Cumu关闭AP热点,并连接所设置的路由器,若连接成功则进入STA通信状态;

AP通信状态切换到离线工作状态
在客户端中点击进入离线工作状态后,Cumu关闭WIFI,进入离线工作状态;
进入STA通信状态:
Cumu连接路由器成功之后,用UDP向指定端口广播注册包(注册包里包含设备信息),客户端监听UDP指定的端口,收到注册包后响应(包含自身IP),
Cumu收到响应后,按照响应里的IP去连接手机的UDP(还是发送注册包),手机的UDP端口收到注册包后响应,连接成功,此时客户端与Cumu可以正常通信;

若STA通信期间Cumu与路由器断开,则客户端长时间不能收到数据,则提示用户Cumu已经断开连接,出现等待设备连接的画面,若Cumu又连接到路由器,则通讯继续;有可能设备重新连接路由器后换了IP,所以客户端要按照新IP响应;
若STA通信期间客户端与路由器断开,则Cumu发出的数据没有响应,则提示用户客户端已经断开连接,出现等待客户端连接的画面(LCD12864),此时按下按键则切换成AP模式。等待期间若客户端重新连接路由器(Cumu又能收到响应了),则继续通讯;

介绍的太详细就会有点乱,简单说明Cumu的使用方法:
1、        在没有路由器的环境下使用
长按按键Cumu开机,拿出手机(也可以是平板、笔记本电脑等)30秒内手机会搜索到Cumu热点,输入正确的密码即可连接到Cumu,这时就可以用APP查看数据和控制Cumu了,APP可以切换档位量程,APP也可以输入路由器名称和密码让Cumu主动连接路由器,单按Cumu按键切换档位量程,长按按键关机。
2、        在有路由器的环境下使用
长按按键Cumu开机,30秒内单按按键使Cumu主动连接保存的路由器,若连接成功,则Cumu会发生UDP广播,手机在同一路由器下打开APP,会搜索到Cumu,然后连接即可。
3、        离线工作模式
长按按键Cumu开机,双击按键进入离线工作模块,这时与一台普通万用表一样,若开机后30秒无任何操作,自动进入离线工作模式。

八、如何得到最新的原理图PCB和程序源码
1、15年初我做了一个Cumu网站,但是个人精力有限,网站并不完善,Cumu的开源文件会第一时间上传到这个网站,现在几个关键词已经优化到百度首页了,你们可以百度搜索以下几个关键词:Cumu、开源万用表、智能万用表、WIFI万用表
2、我也会在第一时间发到阿莫论坛,并且把软硬件的设计思路和教程发布出来,自认为电路有几个地方设计的挺巧妙的(高手莫怪,别喷我)
九、总结
Cumu项目我会不断完善,并且在可以正常使用时推出套件(软硬件全部开源,套件适合新手或者是不想DIY的人使用,当然会在成本的基础之上加一些价格,不能接受完全可以自己开板买元件去做)。感兴趣的朋友邮箱联系我吧:jiafulu@163.com
如果能得到阿莫论坛的支持就更好了

Cumu宗旨:开源、开放、自由

测试版与正式版原理图PCB稍后上传
程序还在编写,争取每个星期更新一次进度,然后发布出来

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
104条回答
srygg
2019-12-19 15:23
顶楼主一个,做出这样一个产品,不容易。
上面有提到输入接口使用4MM插座,这样的可扩展性和易用性可能更好一些。只是目前受限于外壳的选择,目前只能是这样一种形式。等有合适的外壳,可以再考虑改变。
关于大电流测试的问题,楼主做到目前400mA电流的量程足够了。因为市场上多数万用表的20A电流量程,只允许短时间测量。而且精度有限。因为20A量程里的采样电阻是一小截猛铜丝,通了大电流后会发热,导致阻值变化,所以长时间的测量并没意义。所以楼主也无需考虑更高容量的磁保持继电器。如果需要大电流的测量可以通过电流钳扩展或外接电流互感器的形式实现,可以考虑专设一个接口,通过菜单来设置相应的变比。对于通过继电器切换来实现电压、电流的测量我是比较赞同的。因为我曾经修理过一段时间的万用表,很多故障都是接线柱松动造成的,而这都是经常拔插表笔造成的。
另外建议楼主到38度发烧友论坛发个贴子,那里专业的人士比较多,他们可能会给你更多的建议和意见!
另外向你身后的贤内柱致敬!

一周热门 更多>