開發(fā)者nbfei 通過調(diào)用串口與測量板通信,接收測量板的測量數(shù)據(jù),并對其測量范圍進行控制。另外控制W800連接IOT studio,將數(shù)據(jù)上傳并接收控制指令,完成便攜儀器云端數(shù)據(jù)系統(tǒng)。
關(guān)于便攜儀器云端數(shù)據(jù)系統(tǒng)的實現(xiàn)過程,請見本文詳細介紹。
01項目背景
本人參加2021年電賽并取得A題THD測量裝置的國家二等獎,正在對該裝置進行全方面的升級,包括測量范圍,精度,帶寬,測量參數(shù)等方面,目的實現(xiàn)硬件便攜(口袋儀器與數(shù)據(jù)采集卡的結(jié)合),手機+PC上位機顯示,系統(tǒng)不限于特定測量儀器功能,后續(xù)可通過便捷的方式更換具有示波,信號發(fā)生,萬用表等功能的測量板擴展相應(yīng)功能。申請本開發(fā)板想要用來進行遠程控制,無線傳輸方案原型設(shè)計,以及云端數(shù)據(jù)系統(tǒng)的原型設(shè)計。
02作品簡介
由于上述內(nèi)容除了使用RVB2601實現(xiàn)云端數(shù)據(jù)系統(tǒng)外均為本人的畢業(yè)設(shè)計,所以本次作品提交以RVB2601的使用介紹為主。
圖片左端為本人設(shè)計制作的測量板第一版,主要實現(xiàn)輸入任意波形信號的采集,THD測量,頻率、VPP、諧波歸一化幅值等參數(shù)的測量,單周期波形的采集等功能,具體見第三部分。測量板將采集到的數(shù)據(jù)通過串口發(fā)送至PC,藍牙發(fā)送至手機,在本作品提交中,由于需要使用串口,因此將藍牙模塊串口斷開接至CH2601的串口0,RVB2601接收數(shù)據(jù)解析出各測量參量,然后將數(shù)據(jù)上傳至IOT studio顯示,個別數(shù)據(jù)在LCD顯示。

03各部分功能說明和解析
非常感謝平頭哥的支持,在這次評測活動中,由于前期忙著考研復(fù)試與畢業(yè)設(shè)計,至今才來發(fā)帖來分享自己對本次申請板卡RVB2601的使用體驗,我大概5月開始前前后后花了應(yīng)該有八九天的時間來使用板卡熟悉環(huán)境,構(gòu)建一個簡單的應(yīng)用。當(dāng)時申請板卡的時候,目的也是為了給畢設(shè)增加一個數(shù)據(jù)上傳云端的功能,但是后面做完前面的任務(wù)后剩余的時間裕量也不足了,但也基本實現(xiàn)了Web顯示的功能,遺憾的是暫未實現(xiàn)采集的單周期波形顯示功能。
首先我的畢業(yè)設(shè)計來源于2021年電賽A題信號失真度測量裝置,在比賽時我也是將比賽要求完成,因此畢設(shè)主要是對整個電路的集成與參數(shù)的優(yōu)化,另外增加PC上位機顯示控制功能,整體較為簡單。在畢業(yè)設(shè)計制作過程中,電路設(shè)計階段參照DSO模擬前級電路原理,單片機程序設(shè)計綜合運用等效時間采樣、平頂窗、頻譜分析等應(yīng)用原理實現(xiàn)了整個測量系統(tǒng)的設(shè)計制作。在畢設(shè)整體設(shè)計完成后,我預(yù)想使用申請的RVB2601+IOT studio實現(xiàn)WEB端數(shù)據(jù)查看與測量控制,設(shè)計過程如下。

首先接觸一個新的板卡或單片機,比如使用MSP430與MSP432時,參照官網(wǎng)提供的詳細的datasheet和usersguide,搭配例程來可以較深刻的理解工作機制并構(gòu)建應(yīng)用。剛收到RVB2601后,我是這樣想的,但奈何官方資料比較少,例程至今也比較有限,我對物聯(lián)網(wǎng)與操作系統(tǒng)的認(rèn)識僅限于使用過小熊派和LiteOS連接華為云,其主控為熟悉STM32的低功耗系列,另外我主要方向是底層的板級設(shè)計與程序開發(fā)信號處理,所以剛開始對RVB2601用起來很不習(xí)慣,在我看來只uart的操作就一次又一次的封裝,分在不同的包中,函數(shù)功能不盡相同,且各函數(shù)也不易查找,缺少注釋與文件支持。
好在我本次需要用到的外設(shè)不多,只調(diào)用一個串口即可,作用是與測量板通信,接收測量板的測量數(shù)據(jù),并對其測量范圍進行控制。另外控制W800連接IOT studio,將數(shù)據(jù)上傳并接收控制指令。
3.1 串口方面
由于本裝置的PC端與手機端應(yīng)用都是基于.NET框架開發(fā)的,本人在兩個平臺上也都使用異步接收數(shù)據(jù),對數(shù)據(jù)進行拼接解析協(xié)議,因此我在本單片機的使用中也首選異步收發(fā),這和我之前裸跑32/432不大相同,我按照GitBook指導(dǎo)文檔中CSI2驅(qū)動接口的異步收發(fā)接口說明與例程實現(xiàn)了TX但是不能實現(xiàn)非固定的字節(jié)接收,這困擾了我很長時間,為此我想了好多辦法,去串口接收寄存器讀緩存?zhèn)€數(shù)等等,但基本都失敗了。后面看了sipower的發(fā)帖,嗯,去試了試,嗯,可以,但是由于我需要快速接收數(shù)據(jù),測量板發(fā)送數(shù)據(jù)周期<100ms,每次發(fā)送300字節(jié)左右,由于我水平與時間有限,并且對操作系統(tǒng)認(rèn)識不足,所以沒能調(diào)試出來。
后面,還是使用了同步收發(fā),成功完成收發(fā)任務(wù)。
//串口接收函數(shù)
void get_input(char * str)
{
char input = 'a';
uint32_t i ;
uint32_t num = 0;
for( i = 0; i<500 ;i++)str[i] = '';
while(uart_getc() != 'T'){
num++;
if(num == 2200000)return;//超時退出
}
str[0] = 'T';
i = 1;
while(input != 'E')
{
input = uart_getc() ;
str[i] = input;
i++;
}
}
3.2 傳輸協(xié)議
解決了物理層后,需要在協(xié)議層規(guī)定數(shù)據(jù)傳輸格式,由于下位機向電腦與手機端發(fā)送數(shù)據(jù)與接收數(shù)據(jù)均采用同一格式,因此本著效果不錯就不修改方案的原則,我沒有再去改下位機單片機MSP432的程序,使用同一協(xié)議格式通信,如下:
發(fā)送:T0.67Amp0.01,0.00,0.00,0.00F10000V1.97,W 799, 875, 949,1017,1087,1150,1208,1259,1299,1334,1359,1375,1376,1375,1358,1334,1299,1256,1206,1149,1086,1017, 947, 873, 797, 721, 646, 574, 503, 437, 376, 321, 273, 233, 201, 177, 163, 160, 166, 181, 205, 238, 279, 329, 384, 445, 513, 582, 656, 732,E
接收:‘0’或‘1’(分別表示頻率測量范圍為“1k~500k”或“500k~1M”)
其中T后A前為THD,Amp后F前為歸一化幅值逗號隔開,F(xiàn)后V前為頻率,V后W前為峰峰值,W后為50個點的波形數(shù)據(jù)逗號隔開,T和E為數(shù)據(jù)開始與數(shù)據(jù)結(jié)束,通過串口接收。
串口接收任務(wù)如下:
//串口接收任務(wù)
static void uart_task(void *arg)
{
char str[500];
uint32_t i;
while(1)
{
//串口接收
get_input(str);
//printf("%s
",str);
if(str[0]=='T'){
rec_flag = 1;
//解析出各參數(shù)
char *T_adr = strchr(str,'T');
char *A_adr = strchr(str,'A');
char *F_adr = strchr(str,'F');
char *V_adr = strchr(str,'V');
char *W_adr = strchr(str,'W');
//THD
for(i = 0;i < strlen(T_adr)-strlen(A_adr)-1;i++)THD[i] = T_adr[i+1];
T_adr[i] = '';
//Amp
for(i = 0;i < 4; i++)H2[i] = A_adr[i+3];
for(i = 0;i < 4; i++)H3[i] = A_adr[i+8];
for(i = 0;i < 4; i++)H4[i] = A_adr[i+13];
for(i = 0;i < 4; i++)H5[i] = A_adr[i+18];
//FRE
for(i = 0;i < strlen(F_adr)-strlen(V_adr)-1;i++)FRE[i] = F_adr[i+1];
FRE[i] = '';
//VPP
for(i = 0;i < strlen(V_adr)-strlen(W_adr)-1-1;i++)VPP[i] = V_adr[i+1];
VPP[i] = '';
//Wave
for(i = 0;i < strlen(W_adr)-3;i++)
{
Wave[i] = W_adr[i+1];
}
}
//printf("THD = %s
",THD);
//printf("H2 = %s
",H2);
//printf("H3 = %s
",H3);
//printf("H4 = %s
",H4);
//printf("H5 = %s
",H5);
//printf("FRE = %s
",FRE);
//printf("VPP = %s
",VPP);
//printf("Wave = %s
",Wave);
aos_msleep(20);
}
}
3.3 上傳云端
和ESP8266類似,W800可以AT指令控制,所以這個過程就變得簡單了,這里使用sipower博主分享的四個AT指令控制函數(shù)和上云例程,非常感謝博主的分享。這里在IOT Studio上創(chuàng)建產(chǎn)品,增加功能定義,添加設(shè)備。在數(shù)據(jù)上傳函數(shù)中將前面的參數(shù)與后面的波形數(shù)據(jù)分開發(fā)送,波形數(shù)據(jù)用數(shù)組發(fā)送。





在這里注意:在printf里\表示,”表示”


04作品源碼
鏈接:https://pan.baidu.com/s/1Z4kLJfqyFD5iI0tun0NZxw?pwd=d8tx
提取碼:d8tx
05視頻演示
視頻鏈接:
鏈接:https://pan.baidu.com/s/1YTGGdCWo1JxIpNaMdr4-qw?pwd=6s4n
提取碼:6s4n

審核編輯 :李倩
-
數(shù)據(jù)采集
+關(guān)注
關(guān)注
40文章
7170瀏覽量
116470 -
信息化
+關(guān)注
關(guān)注
1文章
514瀏覽量
21523 -
數(shù)據(jù)系統(tǒng)
+關(guān)注
關(guān)注
0文章
19瀏覽量
10325
原文標(biāo)題:應(yīng)用速遞 | 助力數(shù)據(jù)采集 推動信息化系統(tǒng)云端發(fā)展
文章出處:【微信號:芯片開放社區(qū),微信公眾號:芯片開放社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄

高品質(zhì)存儲卡助力精準(zhǔn)數(shù)據(jù)采集


高精度流量遙測站,助力遼寧某灌區(qū)信息化系統(tǒng)再升級! #灌區(qū)信息化 #農(nóng)業(yè)灌區(qū)流量監(jiān)測設(shè)備 #灌區(qū)量測水監(jiān)測
破解設(shè)備數(shù)據(jù)孤島:盤古信息MOM系統(tǒng)驅(qū)動工業(yè)數(shù)字化轉(zhuǎn)型

DCS數(shù)據(jù)采集系統(tǒng)有什么功能

灌區(qū)渠道流量監(jiān)測,智慧灌區(qū)信息化建設(shè)方案#灌區(qū)渠道流量監(jiān)測 #智慧灌區(qū) #灌區(qū)信息化 #灌區(qū)信息化建設(shè)方案
龍芯3A5000主板:推動信息化安全高速發(fā)展的新引擎
數(shù)據(jù)采集與控制系統(tǒng)應(yīng)用說明
自動化設(shè)備數(shù)據(jù)采集系統(tǒng)介紹
大型農(nóng)田灌區(qū)信息化管理監(jiān)測系統(tǒng)方案

制造業(yè)數(shù)字化、信息化、智能化跟MES系統(tǒng)有什么關(guān)聯(lián)?
泵站信息化系統(tǒng)


數(shù)據(jù)采集模塊在應(yīng)力應(yīng)變、儀器儀表和自動化信息化領(lǐng)域的廣泛應(yīng)用
紡織工廠數(shù)據(jù)采集網(wǎng)關(guān)的功能作用有哪些
工控數(shù)據(jù)采集網(wǎng)關(guān)是什么

評論