谷动谷力

标题: 30分钟定制数据采集与显示方案——网络篇 [打印本页]

作者: 谷谷小师妹    时间: 2023-3-7 00:02
标题: 30分钟定制数据采集与显示方案——网络篇
30分钟定制数据采集与显示方案——网络篇

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

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

Feature使用
这里假设一种最简单的方式:/*%1,%2,%3*/,%1,%2,%3为占位符,用实际数据替代。
下位机选择
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

小结





欢迎光临 谷动谷力 (http://bbs.sunsili.com/) Powered by Discuz! X3.2