開發者nbfei 通過調用串口與測量板通信,接收測量板的測量數據,并對其測量范圍進行控制。另外控制W800連接IOT studio,將數據上傳并接收控制指令,完成便攜儀器云端數據系統。
關于便攜儀器云端數據系統的實現過程,請見本文詳細介紹。
01項目背景
本人參加2021年電賽并取得A題THD測量裝置的國家二等獎,正在對該裝置進行全方面的升級,包括測量范圍,精度,帶寬,測量參數等方面,目的實現硬件便攜(口袋儀器與數據采集卡的結合),手機+PC上位機顯示,系統不限于特定測量儀器功能,后續可通過便捷的方式更換具有示波,信號發生,萬用表等功能的測量板擴展相應功能。申請本開發板想要用來進行遠程控制,無線傳輸方案原型設計,以及云端數據系統的原型設計。
02作品簡介
由于上述內容除了使用RVB2601實現云端數據系統外均為本人的畢業設計,所以本次作品提交以RVB2601的使用介紹為主。
圖片左端為本人設計制作的測量板第一版,主要實現輸入任意波形信號的采集,THD測量,頻率、VPP、諧波歸一化幅值等參數的測量,單周期波形的采集等功能,具體見第三部分。測量板將采集到的數據通過串口發送至PC,藍牙發送至手機,在本作品提交中,由于需要使用串口,因此將藍牙模塊串口斷開接至CH2601的串口0,RVB2601接收數據解析出各測量參量,然后將數據上傳至IOT studio顯示,個別數據在LCD顯示。
03各部分功能說明和解析
非常感謝平頭哥的支持,在這次評測活動中,由于前期忙著考研復試與畢業設計,至今才來發帖來分享自己對本次申請板卡RVB2601的使用體驗,我大概5月開始前前后后花了應該有八九天的時間來使用板卡熟悉環境,構建一個簡單的應用。當時申請板卡的時候,目的也是為了給畢設增加一個數據上傳云端的功能,但是后面做完前面的任務后剩余的時間裕量也不足了,但也基本實現了Web顯示的功能,遺憾的是暫未實現采集的單周期波形顯示功能。
首先我的畢業設計來源于2021年電賽A題信號失真度測量裝置,在比賽時我也是將比賽要求完成,因此畢設主要是對整個電路的集成與參數的優化,另外增加PC上位機顯示控制功能,整體較為簡單。在畢業設計制作過程中,電路設計階段參照DSO模擬前級電路原理,單片機程序設計綜合運用等效時間采樣、平頂窗、頻譜分析等應用原理實現了整個測量系統的設計制作。在畢設整體設計完成后,我預想使用申請的RVB2601+IOT studio實現WEB端數據查看與測量控制,設計過程如下。
首先接觸一個新的板卡或單片機,比如使用MSP430與MSP432時,參照官網提供的詳細的datasheet和usersguide,搭配例程來可以較深刻的理解工作機制并構建應用。剛收到RVB2601后,我是這樣想的,但奈何官方資料比較少,例程至今也比較有限,我對物聯網與操作系統的認識僅限于使用過小熊派和LiteOS連接華為云,其主控為熟悉STM32的低功耗系列,另外我主要方向是底層的板級設計與程序開發信號處理,所以剛開始對RVB2601用起來很不習慣,在我看來只uart的操作就一次又一次的封裝,分在不同的包中,函數功能不盡相同,且各函數也不易查找,缺少注釋與文件支持。
好在我本次需要用到的外設不多,只調用一個串口即可,作用是與測量板通信,接收測量板的測量數據,并對其測量范圍進行控制。另外控制W800連接IOT studio,將數據上傳并接收控制指令。
3.1 串口方面
由于本裝置的PC端與手機端應用都是基于.NET框架開發的,本人在兩個平臺上也都使用異步接收數據,對數據進行拼接解析協議,因此我在本單片機的使用中也首選異步收發,這和我之前裸跑32/432不大相同,我按照GitBook指導文檔中CSI2驅動接口的異步收發接口說明與例程實現了TX但是不能實現非固定的字節接收,這困擾了我很長時間,為此我想了好多辦法,去串口接收寄存器讀緩存個數等等,但基本都失敗了。后面看了sipower的發帖,嗯,去試了試,嗯,可以,但是由于我需要快速接收數據,測量板發送數據周期<100ms,每次發送300字節左右,由于我水平與時間有限,并且對操作系統認識不足,所以沒能調試出來。
后面,還是使用了同步收發,成功完成收發任務。
//串口接收函數
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 傳輸協議
解決了物理層后,需要在協議層規定數據傳輸格式,由于下位機向電腦與手機端發送數據與接收數據均采用同一格式,因此本著效果不錯就不修改方案的原則,我沒有再去改下位機單片機MSP432的程序,使用同一協議格式通信,如下:
發送: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后V前為頻率,V后W前為峰峰值,W后為50個點的波形數據逗號隔開,T和E為數據開始與數據結束,通過串口接收。
串口接收任務如下:
//串口接收任務
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;
//解析出各參數
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指令控制函數和上云例程,非常感謝博主的分享。這里在IOT Studio上創建產品,增加功能定義,添加設備。在數據上傳函數中將前面的參數與后面的波形數據分開發送,波形數據用數組發送。
在這里注意:在printf里\表示,”表示”
04作品源碼
鏈接:https://pan.baidu.com/s/1Z4kLJfqyFD5iI0tun0NZxw?pwd=d8tx
提取碼:d8tx
05視頻演示
視頻鏈接:
鏈接:https://pan.baidu.com/s/1YTGGdCWo1JxIpNaMdr4-qw?pwd=6s4n
提取碼:6s4n
審核編輯 :李倩
-
數據采集
+關注
關注
39文章
6236瀏覽量
113889 -
信息化
+關注
關注
1文章
493瀏覽量
21165 -
數據系統
+關注
關注
0文章
19瀏覽量
10221
原文標題:應用速遞 | 助力數據采集 推動信息化系統云端發展
文章出處:【微信號:芯片開放社區,微信公眾號:芯片開放社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論