1、溫濕度傳感器使用概述
土壤溫濕度傳感器是將土壤水分和土壤溫度傳感器集中于一體,具有攜帶方便,密封,高精度等優(yōu)點(diǎn),是土壤墑情,土壤溫度測量的理想選擇。本文采用德國 Heraeus 公司進(jìn)口 A 級(jí) ST-1-PT1000傳感器通過RS485轉(zhuǎn)接板轉(zhuǎn)換成TTL信號(hào)接在九聯(lián)開發(fā)板的TTL 接口(ttyS01),從硬件上來講完全可以接在開發(fā)板的485接口,但是目前切換USB還有點(diǎn)問題,所以先使用轉(zhuǎn)接板后期再直接連接到485端口。
1.1 傳感器RS485串口設(shè)置
標(biāo)準(zhǔn) Modbus-RTU 協(xié)議,波特率:9600;校驗(yàn)位:無;數(shù)據(jù)位:8;停止位:1
1.2 溫濕度數(shù)據(jù)轉(zhuǎn)換
土壤溫濕度傳感器在土壤飽和含水率范圍內(nèi)具有良好的線性特征,以下是典型的標(biāo)定公式,用戶可以參考使用,如果要獲得更高精度,需進(jìn)行二次標(biāo)定。
1.3 溫濕度串口數(shù)據(jù)協(xié)議
1.3.1 修改傳感器地址
若傳感器接收正確,數(shù)據(jù)按原路返回。
備注:如果忘記傳感器的原地址,可以使用廣播地址0XFE代替,使用0XFE時(shí)主機(jī)只能接一個(gè)從機(jī),且返回地址仍為原地址,可以作為地址查詢的方法。
1.3.2 查詢傳感器數(shù)據(jù)
查詢傳感器(地址為1)的數(shù)據(jù)(土壤溫度,土壤濕度),主機(jī)→從機(jī)
若傳感器接收正確,返回以下數(shù)據(jù),從機(jī)→主機(jī)
PC機(jī)測試
實(shí)驗(yàn)之前可以先找個(gè)USB 轉(zhuǎn)串口,先在PC機(jī)上做一些簡單的協(xié)議測試,如下是使用ModeBusRTU調(diào)試工具查詢傳感器數(shù)據(jù):
2、九聯(lián)開發(fā)板和傳感器的硬件連接
硬件清單:
溫度傳感器-> 485轉(zhuǎn)TTL小板子 -> 九聯(lián)開發(fā)板TTL 接口(ttySL0)
3、DEMO流程
本次實(shí)驗(yàn)包括了源碼文件修改,編譯,下載,上板測試。
3.1 源碼文件解析及修改
移植倉庫中的UART代碼到開發(fā)板中,源代碼倉庫如下:
https://gitee.com/openharmony/vendor_unionman/tree/master/unionpi_tiger/sample/hardware/gpio
首先把uart的整個(gè)文件夾拷貝到某個(gè)目錄下,我這里復(fù)制都o(jì)penhamony/vendor/uniopi/unionpi_tiger/sample/hardware/下面,并在/openharmony/device/unionpi/a311d/BUILD.gn文件中增加該文件的路徑。如下:
-
在main.c文件中根據(jù)自己的需要增加代碼,我這里做的測試是給傳感器發(fā)送一個(gè)查詢數(shù)據(jù)的指令,然后把傳感器返回的數(shù)據(jù)打印出來。
3.1.1 打開串口
在這里可以定義使用哪個(gè)串口
`
(左右移動(dòng)查看全部內(nèi)容)
打開串口
char *uart_dev = UART_TTL_NAME;
fd = open(uart_dev, O_RDWR);
(左右移動(dòng)查看全部內(nèi)容)
3.1.2 初始化串口設(shè)置
ret = uart_init(fd, 9600L);`
// 設(shè)置波特率
int uart_init(int fd, int uartBaud)
{
set_baud(fd, conver_baudrate(uartBaud));
// uart param /
if (set_params(fd, 8L, 1, 'n')) {
printf("Set uart parameters fail.
");
return -1;
}
return 0;
}
(左右移動(dòng)查看全部內(nèi)容)
3.1.3 讀寫串口
串口的讀寫與普通文件一樣,使用read,write函數(shù)
read(fd, buf ,8);
write(fd,buff,8);
(左右移動(dòng)查看全部內(nèi)容)
main 修改demo
以下給出一個(gè)溫濕度模塊數(shù)據(jù)查詢和顯示的例子:
static int fd;
// 從串口讀的線程
void *_serial_input_task(void)
{
int i = 0;
int j = 0;
int ret = -1;
int buf = 0;
int recv[4] = {0};
char cmd_buf1[] = { 0x01, 0x03, 0x00, 0x00, 0x00, 0x02, 0xC4, 0x0B};
printf("temperature Sensor Ready!
");
while (1) {
//------------向urat發(fā)送數(shù)據(jù)查詢數(shù)據(jù)-------------------
for (i = 0; i < 8; i++)
printf("%#X ", cmd_buf1[i]);
count = write(fd, cmd_buf1, 9);
if (count != 9) {
printf("send failed
");
return -1;
}
//------------等待傳感器返回?cái)?shù)據(jù)-------------------
for (i = 0; i < 9 ; i++) {
ret = read(fd, &buf, 1);
//ret = data_proce(recv);
printf("%#X ", ret);
if (ret == -1) {
printf("data process error
");
exit(0);
}
}
}
int main(int argc, char **argv)
{
char *uart_dev = UART_TTL_NAME;
int ret = -1;
fd = open(uart_dev, O_RDWR);
if (fd == -1) {
printf("open file error
");
return ERR;
}
ret = uart_init(fd, 9600L);
if (ret == -1) {
printf("uart init error
");
return ERR;
}
// 創(chuàng)建線程 一直執(zhí)行讀操作
pthread_t pid_t;
pthread_create(&pid_t, NULL, (void *)_serial_input_task, 0);
while (1) {}
close(fd);
return 0;
}
(左右移動(dòng)查看全部內(nèi)容)
3.2 編譯,下載,測試
開發(fā)板上電之后串口進(jìn)入/bin 目錄下 執(zhí)行./uart_test
程序啟動(dòng)之后會(huì)發(fā)送一串查詢指令給傳感器,并將接收到的數(shù)據(jù)打印出來,并從數(shù)據(jù)包中解析出溫度和濕度的讀值。
-
這是接到到的數(shù)據(jù)包
0X10X30X400XE400X1F0XFB0XCC -
這是溫度值
temprature now is0XE4
-
這是濕度值
humidity now is 0X1F
總結(jié)
本文主要使用了串口來查詢溫濕度傳感器數(shù)據(jù),主要包含的串口的讀寫功能測試,以及溫度傳感器的數(shù)據(jù)包解析。源碼編譯的要點(diǎn)基本再GPIO編譯測試?yán)锩娑加刑岬?。另外還有個(gè)問題,串口原來的計(jì)劃是使用485接口來調(diào)試,485串口需要切換到USB2.0,根據(jù)倉庫里的說明并沒有操作成功,這部分后面還需要再研究一下。
計(jì)劃接下來的工作是把485傳感器聯(lián)動(dòng)GPIO信號(hào)。GPIO外接繼電器驅(qū)動(dòng)用電設(shè)備。當(dāng)溫濕度超過設(shè)置的閾值觸發(fā)用電設(shè)備工作。
更多熱點(diǎn)文章閱讀
- 最新爆料!RK3588 適配 OpenHarmony 的新進(jìn)展
- 移植speexdsp到OpenHarmony標(biāo)準(zhǔn)系統(tǒng)②
- 移植speexdsp到OpenHarmony標(biāo)準(zhǔn)系統(tǒng)③
- 移植speexdsp到OpenHarmony標(biāo)準(zhǔn)系統(tǒng)④
-
證通電子人臉支付終端設(shè)備ZT8623通過OpenHarmony兼容性測評(píng)
提示:本文由電子發(fā)燒友社區(qū)發(fā)布,轉(zhuǎn)載請(qǐng)注明以上來源。如需社區(qū)合作及入群交流,請(qǐng)?zhí)砑游⑿臙EFans0806,或者發(fā)郵箱liuyong@huaqiu.com。
原文標(biāo)題:九聯(lián)科技Unionpi Tiger開發(fā)板體驗(yàn):使用串口調(diào)試土壤溫濕度傳感器
文章出處:【微信公眾號(hào):電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
電子發(fā)燒友
+關(guān)注
關(guān)注
33文章
556瀏覽量
33106 -
開源社區(qū)
+關(guān)注
關(guān)注
0文章
94瀏覽量
485
原文標(biāo)題:九聯(lián)科技Unionpi Tiger開發(fā)板體驗(yàn):使用串口調(diào)試土壤溫濕度傳感器
文章出處:【微信號(hào):HarmonyOS_Community,微信公眾號(hào):電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論