从WaveForms SDK发送数据到ThingSpeak.com

概述

由MathWorks创建的ThingSpeak是一个收集、查看和分析云数据的在线平台。本指南通过将你的WaveForms SDK兼容的Digilent测试和测量设备捕获的数据发送到ThingSpeak所需的步骤,并以两个可选的例子结束。

一个示例使用PMOD MIC3捕获声音,然后,从测量中,使用的测试和测量设备计算噪声水平。在相应的东西吞噬通道上,噪声水平测量以四种不同的方式可视化。另一个例子使用模拟发现板和阻抗分析器来测量不同电子元件的电阻,电抗和电容,然后将数据发布在意见通道上。

有关如何在Linux模式下运行Analog Discovery Pro的噪声级测量示例的详细说明,请选中以下指南:库存

硬件

注意:波形可以通过以下方式安装配置ThingSpeak频道

thingseak.com.然后注册或者注册。

渠道菜单选择我的频道并创造一个新渠道

配置通道设置、名称和字段。该字段将是数据的容器。为每个要存储/处理的数据类型配置一个字段。

API,请注意API关键这将是将数据从自定义应用程序或脚本推到服务器所需要的。的API关键可用于访问存储的数据。

当向ThingSpeak频道上传数据时,它将在不同的图上逐字段显示。要修改这些默认图形,或向通道添加其他数据可视化方法,您可以使用可视化或小部件预设,您可以修改默认图形的MATLAB代码,或者您可以编写自己的代码来可视化数据。

要使您的可视化/数据公开,请转到分享并选择要设置的选项。“iframe”某些图形元素的-s也可以嵌入到你的网页中。


例子

要查看ThingSpeak通道在项目中的使用情况,您可以尝试本指南中提供的示例,也可以创建自己的示例。

噪声污染监测
硬件设置

在此示例中,PMOD MIC3麦克风模块将与数字测试和测量装置一起使用,以测量噪声水平。PMOD在SPI接口上通信,将连接到测试和测量设备的数字I / O线,如下所示:SS到DIO线0(DIO 24在数字发现上),味噌DIO 1(DIO 25在数字发现)和SCK到DIO 2(DIO 26在数字发现上)。对PMOD的电源也由使用的测试和测量装置提供,因此VCCPmod的引脚应该连接到设备的正极电源(数字发现上的VIO),两个设备的接地端连接在一起,如图右侧所示。

软件

完整的源代码可以从这里下载:使用Pmod MIC3与Arduino Uno

在脚本开始时,导入必要的模块,然后定义ThingSpeak通道的地址。要进入你自己的频道,请使用你自己的频道API输入地址。

这里还定义了用于与Pmod通信的DIO行,以及控制通信和数据处理的全局变量。在从WaveForms SDK中调用任何函数之前,有必要先加载动态库。

进口模块”“”“进口sys这个模块提供了访问解释器使用或维护的一些对象以及与解释器进行强交互的函数的权限进口时间#此模块提供了各种功能来操纵时间值ctypes进口*# Python中的C数据类型进口信号#此模块提供使用信号处理程序的机制进口请求#请求HTTP库# ----------------------------------------------------------------------------------------------------------"""与ThingSpeak沟通的变量"""url=“https://api.thingspeak.com/update?api_key=E ************** 7”# ----------------------------------------------------------------------------------------------------------连接和SPI的变量#定义通信频率,单位为Hzspi_frequency=1E6.#引脚用于芯片选择(diom24 on Digital Discovery)spi_CS=0.#引脚用于主进从出(dio25在数字发现)spi_miso.=1#引脚用于串行时钟(DIO 26在数字发现上)spi_SCK=2#平均样本平均=1000# ----------------------------------------------------------------------------------------------------------"""加载波形SDK"""如果sys平台startswith“赢”的): dwf=cdll。LoadLibrary“dwf.dll”的)在Windows上#elsys平台startswith“达尔文”的): dwf=cdll。LoadLibrary“/图书馆/框架/ dwf.framework / dwf”的)#在macOS别的: dwf=cdll。LoadLibrary“libdwf.so”的)在Linux上#

对于重复的任务,如重置和关闭使用的仪器,显示错误消息和读取SPI上的数据,使用用户定义的函数。某些关键字和中断处理程序也必须在使用它们之前定义。

“”“函数重置所有乐器,关闭设备并quit”“defclose_device.=0.框架=0.的):符号=框架#假框架=#假打印“设备断开连接\ n的)DWF。FDwfDigitalSpiResetHDWF.的)DWF。fdwfditigitaloutreset.HDWF.的)DWF。FDWFDIGITIALINRESET.HDWF.的)DWF。FDwfAnalogIOEnableSetHDWF.c_int错误的的)的)DWF。fdwfdeviceClose.HDWF.的)sys出口的)# ----------------------------------------------------------------------------------------------------------"""函数显示上次的错误信息"""defdisplay_errorerr_msg=“没有错误”的)如果err_msg==“没有错误”:err_msg.=create_string_buffer512.的)DWF。FDwfGetLastErrorMsgerr_msg的)err_msg=strerr_msg。价值的)[2:-1]如果err_msg==:err_msg.=“未知错误”打印“错误: ”+ err_msg +\ n的)返回err_msg# ----------------------------------------------------------------------------------------------------------"""函数读取spi数据"""defspi_read的): lsb=c_int的)最高有效位=c_int的)DWF。FDwfDigitalSpiSelectHDWF.spi_CS的)#激活时间睡觉措施的)#毫秒spi_command=c_int0.的)DWF。FDwfDigitalSpiWriteReadHDWF.spi_modec_int8.的)byrefspi_command的)c_int1的)byreflsb的)c_int1的)的)#读取1字节DWF。FDwfDigitalSpiWriteReadHDWF.spi_modec_int8.的)byrefspi_command的)c_int1的)byref最高有效位的)c_int1的)的)#读取1字节时间睡觉措施的)#毫秒DWF。FDwfDigitalSpiSelectHDWF.spi_CS的)#禁用返回lsb。价值|MSB。价值<<8.的)# ----------------------------------------------------------------------------------------------------------“”“键盘中断处理程序和关键字”“信号信号信号sigint.close_device.的)=c_int1的)=c_int0.的)dwfdigitaloutidlezet.=c_int3.的)

在使用测试测量设备之前,需要将其连接到主机上。为了安全连接它,应该避免设备被其他软件使用,或由于其他原因而无法使用的情况。

"""打开连接的T&M设备"""device_count=c_int的)DWF。FDwfEnumc_int0.的)byrefdevice_count的)的)#计算设备如果device_count。价值==0.#如果没有连接设备,则终止程序display_error“未检测到连接的设备”的)sys出口的)为了device_index.范围device_count。价值的)#获取设备的名称device_name=create_string_buffer64的)DWF。FDwfEnumDeviceNamedevice_index.device_name的)#连接设备HDWF.=c_int的)DWF。fdwfdeviceopen.device_index.byrefHDWF.的)的)#检查是否成功如果HDWF。价值!=0.打破如果HDWF。价值==0.#如果设备不能被连接,终止程序display_error的)sys出口的)#显示消息device_name=strdevice_name。价值的)[2:-1]打印device_name +“连接\ n的)

为了开始与连接的Pmod通信,它必须通电。在支持该特性的设备中,电源的输出电压应该设置为3.3V,因为这是Pmod的推荐工作电压。然而,根据其数据表,5V的电源电压不应损坏pmod。

麦克风通电后,需要对SPI接口进行初始化。设置完通信参数后,执行虚拟读操作,以开始驱动串行时钟。

“”“启动电源”“”如果device_name==“数字发现”device_name==“模拟发现Pro 3450”device_name==“模拟发现Pro 3250”:DWF。FDwfAnalogIOChannelNodeSetHDWF.c_int0.的)c_int0.的)c_double3.3的)的)数字电压设置为3.3Veldevice_name==“模拟发现2”device_name==“模拟发现工作室”:DWF。FDwfAnalogIOChannelNodeSetHDWF.c_int0.的)c_int0.的)c_double真正的的)的)#启用正电源DWF。FDwfAnalogIOChannelNodeSetHDWF.c_int0.的)c_int1的)c_double3.3的)的)#设置电压为3.3Veldevice_name==“模拟发现”:DWF。FDwfAnalogIOChannelNodeSetHDWF.0.0.1的)#启用正电源别的: display_error“无法启动电源。设备不兼容。”的)close_device.的)DWF。FDwfAnalogIOEnableSetHDWF.c_int真正的的)的)#主启用打印“电源开始\ n的)时间睡觉5.的)#秒# ----------------------------------------------------------------------------------------------------------初始化spi通信"""DWF。FDwfDigitalSpiFrequencySetHDWF.c_doublespi_frequency的)的)#设置时钟频率DWF。fdwfditalspiclockset.HDWF.spi_SCK的)# SCK销DWF。FDwfDigitalSpiDataSetHDWF.c_int1的)spi_miso.的)#mico pin.DWF。fdwfditalspiidleeset.HDWF.c_int1的)dwfdigitaloutidlezet.的)#idle状态spi_mode=c_int1的)#莫西人/味噌模式DWF。FDwfDigitalSpiModeSetHDWF.c_int0.的)的)# CPOL=0 CPHA=0模式DWF。FDwfDigitalSpiOrderSetHDWF.c_int1的)的)# MSB第一DWF。FDwfDigitalSpiSelectHDWF.spi_CS的)# CS销#dummy读取开始驾驶频道,时钟和数据DWF。fdwfditalspireadone.HDWF.c_int1的)c_int0.的)c_int0.的)的)打印“SPI接口初始化\ n的)时间睡觉1的)#秒

测量是连续进行的,直到按下Ctrl+C。测量结果平均,然后转换为DB(该转换只是真实噪声水平的近似值)。

转换的结果被推到截止口通道。如果出现通信错误,或者进程中断,则使用使用的仪器,并且程序完成。

测量并发送数据到ThingSpeak打印“测量和上传数据。按ctrl+c停止…\ n的)真正的试一试#接收初始数据水平=0.#平均数据为了指数范围平均的):水平+=spi_read的)/10的)/平均#计算噪音水平D b=729.0532027级*0.4239354122+ \战俘水平2的)*0.8875384813*1的军医-  \战俘水平3.的)*0.6195715088*1 e-8#发送数据并检查错误send_state.=请求。得到URL +“&field1 =”+strD b的)的)如果send_state。status_code.!=200: display_error“无法用ThingSpeak交流”的)close_device.的)除了KeyboardInterrupt#退出,如果按Ctrl+C打破# ----------------------------------------------------------------------------------------------------------复位并关闭设备"""close_device.的)
结果

指示器可以从通道中添加私人/公共视图,添加可视化添加小部件MATLAB分析,或MATLAB可视化纽扣。

可以绘制测量的噪声水平,或者在仪表小部件上显示。也可以显示测量值的直方图,以及虚拟领导,表示危险的噪声水平。在数据处理中使用的一个重要MATLAB功能是thingSpeakRead ()

阻抗分析仪
硬件设置

在这个例子中,将使用阻抗分析仪和模拟发现板来测量不同电子元件的电阻、电抗和电容。在本指南中阻抗分析仪的模拟发现将用于模拟发现2。如果您计划使用Analog Discovery Studio或Analog Discovery 2而不使用阻抗分析仪,请检查本指南中的连接图:

软件

在使用测试测量设备之前,需要将其连接到主机上。为了安全连接它,如果设备被其他软件使用,或者由于其他原因无法使用,应该向用户发出信号。

版本=create_string_buffer16的)DWF。fdwfgetversion.版本的)打印“DWF版本:”+str的版本。价值的)的)HDWF.=c_int的)szerr=create_string_buffer512.的)打印“开放第一设备”的)DWF。fdwfdeviceopen.c_int-1的)byrefHDWF.的)的)如果HDWF。价值==hdwfnone。价值:DWF。FDwfGetLastErrorMsgszerr的)打印strszerr。价值的)的)打印"打开设备失败"的)辞职的)

初始化阻抗分析仪,具有1MΩ(阻抗分析器板的参考电阻)的参考电阻,并丢弃一个测量以强制启动新的。

sts=c_byte.的)频率=1E3参考=1E6.电容=c_double的)电阻=c_double的)电抗=c_double的)打印“参考:“+str参考的)+“欧姆频率:”+strfrequnecy /1E3的)+“赫兹”的)DWF。FDwfAnalogImpedanceResetHDWF.的)# 0 = W1-C1-DUT-C2-R-GND, 1 = W1-C1-R-C2-DUT-GND, 8 = AD IA适配器DWF。fdwfanalogimpedancemodeset.HDWF.c_int8.的)的)DWF。FDWFANALOGIMPENCHEREFERCESET.HDWF.c_double参考的)的)参考电阻值,以欧姆为单位DWF。FDwfAnalogImpedanceFrequencySetHDWF.c_double频率的)的)频率(赫兹)DWF。FDwfAnalogImpedanceAmplitudeSetHDWF.c_double1的)的)DWF。FDwfAnalogImpedanceConfigureHDWF.c_int1的)的)#开始时间睡觉1的)#忽略上次捕获,强制一个新的DWF。FDwfAnalogImpedanceStatusHDWF.没有一个的)

测量是连续进行的,直到按下Ctrl+C。测量结果上传到给定的ThingSpeak频道。如果出现通信错误,或进程中断,所使用的仪器停止,程序结束。

打印“按Ctrl+C停止…”的)试一试为了一世范围1000的)时间睡觉60的)#秒如果DWF。FDwfAnalogImpedanceStatusHDWF.byrefsts的)的)==0.:DWF。FDwfGetLastErrorMsgszerr的)打印strszerr。价值的)的)辞职的)如果圣。价值!=2打印“没有完成测量”的)继续DWF。fdwfanalogimpedanceStatusmeasureHDWF.DwfAnalogImpedanceResistancebyref电阻的)的)DWF。fdwfanalogimpedanceStatusmeasureHDWF.DwfAnalogImpedanceReactancebyref电抗的)的)DWF。fdwfanalogimpedanceStatusmeasureHDWF.DwfAnalogImpedanceSeriesCapactancebyref电容的)的)打印str一世的)+“抵抗:“+str反抗。价值的)+“欧姆电荷:”+str电抗。价值/1E6.的)+“莫姆电容:”+str电容。价值*1 e12汽油的)+“pF”的)R.=请求。得到URL +“&field1 =”+str反抗。价值的)+“&field2 =”+str电抗。价值/1E6.的)+“&field3 =”+str电容。价值*1 e12汽油的)的)如果r。status_code.!=200打印R.的)打破除了KeyboardInterrupt# Ctrl + C经过DWF。FDwfAnalogImpedanceConfigureHDWF.c_int0.的)的)# 停止DWF。fdwfdeviceClose.HDWF.的)
结果

下一步

既然数据可以在测试和测量设备之间传输,并且可以根据需要修改脚本。

有关Waveforms SDK的更多信息,请参阅其测试和测量勤勉论坛的部分。