谷动谷力

 找回密码
 立即注册
查看: 1214|回复: 0
打印 上一主题 下一主题
收起左侧

30分钟定制数据采集与显示方案——网络篇

[复制链接]
跳转到指定楼层
楼主
发表于 2023-3-7 00:02:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
30分钟定制数据采集与显示方案——网络篇

前言
作为一个嵌入式软件工程师,数据采集与可视化是一门基本功课。
在技术发展日新月异的今天,有很多种方式可以实现以上目标,今天所说的方法,只需花一点时间,就能定制你的采集方案,快速完成原型开发与验证。
你的需求可能是这样的:采集温度值,然后电脑上实时显示,必要时还可以保存到本地,如果能实时绘图,那就更好了。
上一节介绍了串口传输方式,本节介绍网络传输方式。

上位机选择
Serial Stduio
https://serial-studio.github.io/

Feature
  • 开源项目
  • 支持串口、网络和MQTT方式获取数据
  • 易显示、处理与导出你项目中的数据

使用
  • 下载、安装、打开软件
  • 定制通信协议

这里假设一种最简单的方式:/*%1,%2,%3*/,%1,%2,%3为占位符,用实际数据替代。
  • 保存协议为 json 文件
  • 连接网络获取数据

下位机选择
Arduino (需使用 Sheild 实现网络通信)或者 ESP32

Feature
  • 开源项目
  • 参考资料全面
  • 易使用、快速上手

使用
有多种方法可以模拟设备上传数据,比如说使用一些串口/网络调试工具或助手。
网络通信用起来挺方便的,建立 wifi 连接后,使用 socket 编程即可。
按照上面定义的通信协议编写代码。
这里使用 CircuitPython (基于MicroPython)固件编写App。
import time
import wifi
import socketpool
from secrets import secrets  # hold your AP name and password

print("Connecting to a AP ..")  # connect to wifi
wifi.radio.connect(secrets["ssid"], secrets["password"])
pool = socketpool.SocketPool(wifi.radio)
print("Connected! my IP: {}".format(wifi.radio.ipv4_address))

# make a native socket to creat a UDP Server
sock_udp = pool.socket(pool.AF_INET, pool.SOCK_DGRAM)  # SOCK_STREAM, SOCK_RAW
# UDP Server (Host): name, and port
udpHostName = str(wifi.radio.ipv4_address)
udpHostPort = 1688
print("Creat a UDP Server")
sock_udp.settimeout( None )  # timeout must be set into None!
sock_udp.bind( (udpHostName, udpHostPort) )

a=1
b=2
c=3
while True:
    sock_udp.sendto("/*"+str(a)+','+str(b)+','+str(c)+'*/', ('192.168.0.107', 1200) )
    time.sleep(1)
    a = a+1
    b = b+2
    c = c+3
终端设置
终端数据
左边为 hex 格式,右边为 ASCII 格式。

终端 GUI

小结
  • 随着IoT技术日益普及,小型设备具有网络通信的特性也很普遍了。

+10
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-4-30 18:27 , Processed in 0.080059 second(s), 42 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表