Micropython+RPC+DAC+ADC
m24h2023/02/10原创 电子技术 IP:上海

已上传XXXXXXXXXXXXXXXXXX/m24h/ESP8266ADDA  

.............................................................

不知道大家有没有感觉 编程技术在未来可能是人人都需要掌握的基本技能

既然人类要发展下去 怎么样的技能算基础技能 这一点显然应该不断拔高 几百年前可能不识字不会乘除都没问题 但是几百年后 可能小孩子就得随手解偏微分方程 各种工作中都会充满从简单到复杂的编程需要

而研究工作者 以前可能使用专门的仪器设备 通过定式的过程得到定式的结果 到使用类似Labview之类的半定制图形化工具 再到自己直接编写程序 从原始数据开始处理到编程绘图 也有这样的趋势

尽管我不喜欢Python 但是还是得承认 它不光具备易开放性 而且很流通 其计算结果的可靠性也逐渐得到研究界认可的 穷研究员和学生也不再需要面对许多需要按年付租金的软件

我最近下载了myopenlab 修改了一些代码让它跑起来(它最新版本还是只能认JDK版本是一位数 否则会出错 天啊 多少年前JDK版本就超过10了(当然也是因为以前的版本模式都是1.x))试用觉得可惜了 想法很完美 框架很完美 Java语言也很完美 甚至有和Arduino的接口 但是已经不合适时代和其面对的对象了

所以我打算试一下 使用ESP8266/ESP32带A/D D/A芯片 软件装上Micropython 再找一个基于Python的RPC服务端 计算机上装Python和RPC客户端 就可以在Python上完成自动化测试 控制和产生结果

目前A/D打算用ADS1115 4路16位 可差分输入 带PGA D/A采用MS5614 4路12位 其中两路(因为MS5614已经带缓冲了 这是增强)输出使用AD8532再缓冲 大电流(250mA)可以直带轻负载 关键是这一套。。。便宜 精度12位也满足大多数需要

Python/Micropython是现成的 ESP32/ESP8266我有 就是不确定ESP8266是否够用 RPC套件可能使用zeroRPC(可能需要改改)

而目标是通过WiFi空中接口 实现不怎么快速(ADS1115不快)和精确的伏安循环曲线采集和绘图显示 不用恒电位电路 差分输出±5V 差分采集电流和参考电极上的电压

目前八字还没一撇 慢更

[修改于 1年1个月前 - 2023/03/24 21:21:47]

来自:电子信息 / 电子技术
14
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
smith
1年2个月前 IP:广东
916225

我之前做的USB CPLD逻辑分析仪就可以用python, cy7c68013 + cpld + tvp5150 采集CVBS视频, 用pyusb采集数据和解析,可以解码出图像, 调试很方便

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
m24h作者
1年2个月前 IP:上海
916535

真糟糕 zerorpc根本不合适用在micropython 主要是它底层两个东西不是纯Python的

网上也未找到合心意的可用的 看来只能手搓了 RPC是很有用的东西 micropython至少也该嵌一个xmlRPC哪怕jsonRPC也好

手搓的目标是实现基本类型数据作为参数和结果传递的简单RPC 并且加上eval和exec功能 这样的话 实际的功能实现都可以在PC端定制 而不再需要再写flash(除了需要包的情况)

我也想了两天 要不要干脆实现跨网络的远程对象调用 让参数和结果都可以是远程对象 比如流 但是总觉得太超规格了 如果不在底层实现 效率也不够好 所以只是想想

网络层应该采用异步实现的长连接 带心跳和重传 数据层可能使用json或者自己搞个二进制编码

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
m24h作者
1年2个月前 修改于 1年2个月前 IP:上海
916861

有空先把电路图画了 原理基本如此 细节可能布线时候再调整

sch.png

U1B输出应该是OUT_B 。。。可能还有其他错误

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
warmonkey
1年2个月前 修改于 1年2个月前 IP:广东
916870
引用m24h发表于2楼的内容
真糟糕 zerorpc根本不合适用在micropython 主要是它底层两个东西不是纯Python的...

网络层用PPP,跑标准的ip协议就行。

RPC可以考虑下simplerpc,这个够简单了。

AD/DA可以考虑买成品的Modbus模块,可选的产品很多,标准化的。


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
m24h作者
1年2个月前 IP:上海
916875
引用warmonkey发表于4楼的内容
网络层用PPP,跑标准的ip协议就行。RPC可以考虑下simplerpc,这个够简单了。AD/DA可...

我看了一下 simple RPC还不够simple 有些包在micropython没有 而且使用线程来服务client 我觉是在micropython最好用异步IO减少开支

如果用现成的Modbus模块 我还需要做啥事 PC直接访问不就行了么 而且模块又不便宜 也不能做到速度比较快的动作 比如我可能需要输出kHZ的自定义波形

这个。。。PPP 。。。并不是网络层 也不容易的 涉及的概念一般是专线和专门的网络设备 

可能你是做工控系统习惯了自己采用现有模块 但是这并不是一个需要实现的系统需求 只是个爱好者用的便宜廉价的底层方案 。。。话说就算我以前工作上做过一个数千点的Modbus/IP系统 也是自己把Modbus模块设计了的

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
warmonkey
1年2个月前 IP:广东
916964
引用m24h发表于5楼的内容
我看了一下 simple RPC还不够simple 有些包在micropython没有 而且使用线程...

我会优先选择已有的协议,可以用现成的工具,大幅度加快开发。

也许可以参考IIOD

XXXXXXXXXXXXXXXXXXXXXXX/resources/tools-software/linux-software/libiio_internals

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
m24h作者
1年2个月前 IP:上海
917057

设计完电路部分了 好巧不巧 最终PCB是一个正方形 49*49的 因为usb口引脚短  板子只能用0.8mm厚的

尽量各地分离 但是ADC部分接地很难绕到全局共地点 如果情况不好只能割开连接处另外飞线

最终除了接口 所有元件表面封装化(用了几个47uF的贴片电容) 对外插头插座全部反装 元件朝下摆放 这样可以防止不小心落杂物导致短路 ...甚至 做个方盒子就可以灌封了

sch.png

pcb_f.png

pcb_b.png

3d.png

引用
评论
1
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
m24h作者
1年1个月前 修改于 1年1个月前 IP:上海
917803

板子还没做好 不过核心中的核心代码写好了 其实我最关键的想法 是代码本地化而不是写到mcu的flash  需要时候把功能代码通过RPC方法传过去 然后本地调用远程功能 结果本地显现 把板子作为电脑的延伸部件 ...至少 不用担心flash寿命了

这个RPC功能虽然真实代码才200行 但是并行异步处理 双向调用 密码认证 CPython/uPython双兼容 心跳检测 等功能都全的 也是少见的  因为自己感觉能用在很多地方 所以单独开源了出来

XXXXXXXXXXXXXXXXXX/m24h/arpc

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
m24h作者
1年1个月前 IP:上海
917986

今天总算把板子完成了 目前状态:通电没烧 ESP8266的灯有闪烁

fotor_1678628045734.jpg fotor_1678628093770.jpg

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
m24h作者
1年1个月前 IP:上海
918015

初步验证OK 今天做了壳子/底座

fotor_1678699812308.jpg

fotor_1678702365210.jpg

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
m24h作者
1年1个月前 修改于 1年1个月前 IP:上海
918068

今天粗测了指标 以我台式表为准 ref5025误差为+0.9% ADS1115增益误差为-0.17% AD8532输出电流最大63mA 。。。大抵上 我在网上买到的都不是正品了。。。我承认买的都是标散新翻新的那种 原本就预期功能可行指标不足 否则要贵上成倍或者几倍。。。另一个原因是 即使我买了贵上几倍的 也未必能保证是正品 这个环境很难信任。。。能勉强用吧

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
m24h作者
1年1个月前 修改于 1年1个月前 IP:上海
918303

终于完成第一个验证型功能 一个粗糙的循环伏安仪

fotor_1679228357189.jpg

试了试喜闻乐见的硫酸铜 

fotor_1679197822481.jpg

fotor_1679228243042.jpg

再检查检查 优化一下 看看还可以做什么用途 就可以开源了

其实程序挺复杂的 首先运行在板子的代码是每次都通过RPC的exec临时上载的 做完一看居然进程流程有4层 数据在板子底层定时的循环中获得 通过环形缓冲送到RPC服务层 通过网络到PC端的工作线程 然后再通过队列消息给tkinter的窗口应用层 

不过做了一个 以后的跟着套框架就可以了


引用
评论
1
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
m24h作者
1年1个月前 修改于 1年1个月前 IP:上海
918503

做了校准的界面 花了半天时间认真测了一下

看来我的ADS1115应该是真的 准确度还可以 

但是MS5614指标不好 而REF5025和AD8532应该是假货 精度太差 而且输出稳定度不好

calibration.png

白天进不去G 晚上上传吧

另一个问题是ESP8266跑Micropython真有点勉强 频繁操作总会内存不足分配而需要重启 要长时间工作必须任务单一不变 连接也需要保持 而不能为了一个调用就连一次然后断开 我的另一块ESP32就稳定许多

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
m24h作者
1年1个月前 修改于 1年1个月前 IP:上海
918602

这两天GHUB太难了 连SSH都断多通少的 反而是HTTPS偶尔能连上 今晚深夜再试试

又抽空做了个采样界面 发现Micropython/ESP8266上不光么有线程没有硬Timer也没有硬IRQ, 软IRQ最多到每秒50次

也许当初用esp32 性能会好很多 也没有内存问题 我最近还发现ESP8266会没有任何错误输出地网络停止响应

不过采样界面上倒是放了不少处理功能 FFT 滤波都有

Sampler1.png

Sampler2.png

........

还有几个图片没传成 不过主要部分已经传完了 感谢GHUB又重新允许https上传

至于ssh的无论是原本的接口和443端口的ssh主机 都是验证时候中断 开始以为是技术问题 直到偶尔成功了两次 才觉得与我无关 还好https偶尔能成

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
所属分类
上级专业
同级专业
m24h
进士 学者 机友
文章
48
回复
799
学术分
1
2020/01/22注册,7时58分前活动

无聊地过着没有意义的日子 偶尔期待一点意思

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:上海
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}