注: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稍后上传
程序还在编写,争取每个星期更新一次进度,然后发布出来
我觉得也是,而且容易和另一个USB口插混
一周热门 更多>