標(biāo)題: 基于DL-LN33無(wú)線網(wǎng)絡(luò)的STM32環(huán)境監(jiān)測(cè)系統(tǒng)設(shè)計(jì)資料與源碼 [打印本頁(yè)]
作者: Gavin.K 時(shí)間: 2018-4-20 11:11
標(biāo)題: 基于DL-LN33無(wú)線網(wǎng)絡(luò)的STM32環(huán)境監(jiān)測(cè)系統(tǒng)設(shè)計(jì)資料與源碼
基于無(wú)線網(wǎng)絡(luò)的環(huán)境監(jiān)測(cè)系統(tǒng)
0.jpg (43.31 KB, 下載次數(shù): 89)
下載附件
2018-4-20 16:35 上傳
系統(tǒng)主要包括了數(shù)據(jù)采集節(jié)點(diǎn)和環(huán)境管理計(jì)算機(jī)。采用STM32F103單片機(jī)和溫度、濕度、光照強(qiáng)度等傳感器組成節(jié)點(diǎn)環(huán)境采集系統(tǒng);主計(jì)算機(jī)通過(guò)通過(guò)USB串口和zigbee無(wú)線模塊組成數(shù)據(jù)處理系統(tǒng)。各個(gè)節(jié)點(diǎn)通過(guò)zigbee無(wú)線網(wǎng)絡(luò)組網(wǎng)。如下圖所示:
圖1 環(huán)境無(wú)線監(jiān)控系統(tǒng)示意圖
節(jié)點(diǎn)系統(tǒng):
節(jié)點(diǎn)系統(tǒng)采用STM32F103單片機(jī)+溫濕度傳感器(DHT11DHT22)+光照強(qiáng)度傳感器(TSL2561/BH1750)+無(wú)線模塊(DL-LN33)。節(jié)點(diǎn)系統(tǒng)定時(shí)將數(shù)據(jù)采集并發(fā)給主機(jī)。
主機(jī):
主機(jī)由計(jì)算機(jī)和無(wú)線模塊組成。數(shù)據(jù)采集到計(jì)算機(jī)后,通過(guò)可視化軟件顯示并記錄于數(shù)據(jù)庫(kù)。如下圖所示:

圖2 可視化軟件
可視化軟件采用Visual Studio 2010開(kāi)發(fā)。使用C#語(yǔ)言,windowsForm應(yīng)用程序。軟件主要涉及了串口通信,曲線圖,sqlce數(shù)據(jù)庫(kù)等。
樣機(jī)視圖如下:

圖3 樣機(jī)視圖
通信協(xié)議:
序號(hào) | 定義 | 內(nèi)容 | 說(shuō)明 | 備注 |
0 | 0xFE | 幀頭 |
|
|
1 | 0x0A | 包長(zhǎng) | 數(shù)據(jù)長(zhǎng)+4=10 |
|
2 | 0x90 | 源端口號(hào) |
|
|
3 | 0x91 | 目的端口號(hào) |
|
|
4 | 0xXX | 遠(yuǎn)程地址L |
|
|
5 | 0xXX | 遠(yuǎn)程地址H |
|
|
6 | 0xXX | 溫度數(shù)據(jù) | 0~150,T=N-50; |
|
7 | 0xXX | 濕度數(shù)據(jù) | 0~100 |
|
8、9 | 0xXXXX(H1,H2) | 光強(qiáng)0 | L=H1*250+H2,0<=H1,H2<=250 | 可見(jiàn)光+紅外光 |
10、11 | 0xXXXX(H1,H2) | 光強(qiáng)1 | L=H1*250+H2,0<=H1,H2<=250 | 紅外光 |
12 | 0xFF | 幀尾 |
|
|
單片機(jī)源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "sys.h"
- #include "key.h"
- #include "usart.h"
- #include "lcd.h"
- #include "spi.h"
- #include "flash.h"
- //#include "ds18b20.h"
- #include "timer.h"
- //#include"tls2561.h"
- #include "BH1750.h"
- #include"myiic.h"
- #include "DTH11.h"
-
- extern unsigned int timercount;
- extern u8 timerProcess ;
- extern u8 receiveM;
-
- uint lux_out[2];
- uint (*lux)[2] ;
- int main(void)
- {
- int dis_data=0;
- u8 Mm=0;
- u8 temperature=0;
- u8 humidity=0;
- uchar datao=0;
- //u8 outdatabuff[13]={0xFE, 0x0A, 0x90, 0x91, 0x65,0x12 ,0x00,0x00,0,0,0,0,0xFF} ;
- u8 outdatabuff[13]={0xFE, 0x0A, 0x90, 0x91, 0x16,0x0D ,0x00,0x00,0,0,0,0,0xFF} ;
- // u8 outdatabuff[13]={0xFE, 0x0A, 0x90, 0x91, 0x65,0x12 ,0x00,0x00,0,0,0,0,0xFF} ;
- // short temp;
- lux_out[0]=lux_out[1]=65535;
- SystemInit(); //系統(tǒng)時(shí)鐘設(shè)置
- delay_init(72); //延時(shí)初始化
- NVIC_Configuration();
- uart_init(115200);//串口1初始化
- LED_Init();//LED初始化
- // LCD_Init();//初始化液晶
- Timerx_Init(5000,7199);//10Khz的計(jì)數(shù)頻率,計(jì)數(shù)到5000為500ms
- IIC_Init();
- delay_ms(5);
- // POINT_COLOR=RED;//設(shè)置字體為紅色
- //LCD_ShowString(60,50,"Mini STM32");
- //LCD_ShowString(60,70,"DS18B20 TEST");
- //LCD_ShowString(60,90,"ATOM@ALIENTEK");
- //LCD_ShowString(60,110,"2011/1/1");
- //while(DS18B20_Init())//初始化DS18B20,兼檢測(cè)18B20
- //{
- //LCD_ShowString(60,130,"DS18B20 Check Failed!");
- //delay_ms(500);
- //LCD_ShowString(60,130,"Please Check! ");
- //delay_ms(500);
- // LED0=!LED0;//DS0閃爍
- //}
- // LCD_ShowString(60,130,"DS18B20 Ready! ");
- // POINT_COLOR=BLUE;//設(shè)置字體為藍(lán)色
- // LCD_ShowString(60,150, "Temperate: . C");
- LED1=0;
- while(DHT11_Init()) //DHT11初始化
- {
-
- delay_ms(100);
- LED0=!LED0;
- Mm++;
- if(Mm>10) break;
-
- }
- Mm=0;
- // TSL2561_Write(CONTROL,0x03); //設(shè)置TSL2561未開(kāi)啟狀態(tài)
- Init_BH1750(); //初始化BH1750
- delay_ms(200);
- Single_Write_BH1750(0x01); // power on
- // while(datao!=0x03)
- // {
- //
- // datao=TSL2561_Read(CONTROL);
- // delay_ms(200);
- // LED0=!LED0;
- // Mm++;
- // if(Mm>5) break;
- // }
- Mm=0;
- // printf("TSL2561 Inial Success!\n");
- // printf("%d\n",TSL2561_Read(CONTROL));
- lux=(uint(*)[2])malloc(2*sizeof(uint));
- if(!lux)
- {
- // printf("malloc failed!/n");
- }
- while(1)
- {
-
- if(timerProcess)
- {
- if(timercount%5==0)
- {
- // lux=Read_Light(); //讀取光強(qiáng)
- // lux_out[0]=(*lux)[0];
- // lux_out[1]=(*lux)[1];
- // // printf("Temp:%dHUM:%dGQ:%d,%d\n",temperature,humidity,(*lux)[0],(*lux)[1]);
- // free(lux);
-
- }
-
- if(timercount%10==0)
- {
- // LED0=0;
- //DHT11_Read_Data(&temperature,&humidity); //讀取溫濕度值
-
- //LED0=0;
- DHT11_Read_Data(&temperature,&humidity); //讀取溫濕度值
- // lux=Read_Light(); //讀取光強(qiáng)
- // lux_out[0]=(*lux)[0];
- // lux_out[1]=(*lux)[1];
- // free(lux);
- // Single_Write_BH1750(0x01); // power on
- Single_Write_BH1750(0x11); // H- resolution mode
- // Delay_mms(800); //延時(shí)180ms
- delay_ms(800);
- mread(); //連續(xù)讀出數(shù)據(jù),存儲(chǔ)在BUF中
- dis_data=BUF[0];
- dis_data=(dis_data<<8)+BUF[1]; //合成數(shù)據(jù)
- // printf("Temp:%dHUM:%dGQ:%d,%d\n",temperature,humidity,lux_out[0],lux_out[1]);
- if(temperature>100)temperature=100;
- if(humidity>100)humidity=100;
- outdatabuff[6]=temperature+50;
- outdatabuff[7]=humidity;
- // outdatabuff[8]=(lux_out[0]/256)%256;
- // outdatabuff[9]=lux_out[0]%256;
- // outdatabuff[10]=(lux_out[1]/256)%256;
- // outdatabuff[11]=lux_out[1]%256;
- outdatabuff[8]=(dis_data/250)%250;
- outdatabuff[9]=dis_data%250;
- //outdatabuff[10]=(lux_out[1]/256)%256;
- //outdatabuff[11]=lux_out[1]%256;
- LED1=!LED1;
- for( Mm=0;Mm<13;Mm++)
- {
- USART1->DR=outdatabuff[Mm];
- while((USART1->SR&0X40)==0);//等待發(fā)送結(jié)束
- }
-
-
- }
- else
- {
- // LED0=1;
- }
- timerProcess=0;
- }
- if(receiveM)
- {
-
- receiveM=0;
- }
-
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
STM32F103C8_ZNYJC_GY30.zip
(394.17 KB, 下載次數(shù): 118)
2018-4-20 11:11 上傳
點(diǎn)擊文件名下載附件
單片機(jī)節(jié)點(diǎn)源碼
下載積分: 黑幣 -5
作者: lou0-0lou 時(shí)間: 2018-4-23 20:11
好厲害
作者: lou0-0lou 時(shí)間: 2018-4-24 09:29
大神,我想問(wèn)一下,網(wǎng)頁(yè)與底層程序的接口在哪。比如說(shuō)我新增一個(gè)光敏模塊,怎么在網(wǎng)頁(yè)上顯示出來(lái)?
作者: jxchen 時(shí)間: 2019-1-20 20:57
下載學(xué)習(xí),謝謝分享
作者: mokangxin 時(shí)間: 2019-1-31 21:09
樓主,這個(gè)好像只有單片機(jī)節(jié)點(diǎn)的程序,有沒(méi)有主機(jī)節(jié)點(diǎn)的程序(上位機(jī)程序)?
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |