本設計基于STM32和GSM做的智能家居系統,通過手機短信可控制家電開關,查詢各個模塊工作狀態。當煙霧、溫度過高便會進行蜂鳴器報警,并給主人發送報警短信
硬件接口:
1、GSM模塊:
TX-->PA9
RX-->PA10
VCC-->5V
GND-->GND
2、煙霧傳感器
VCC-->5V
GND-->GND
DO->PA4
3、溫濕度傳感器
VCC-->3.3V
GND-->GND
DATA-->PA1
4、蜂鳴器
VCC-->3.3V
GND-->GND
I/O-->PA11
5、人體紅外模塊
VCC-->5V
GND-->GND
OUT-->PA0
6、繼電器模塊
VCC-->3.3V
GND-->GND
IN-->PB6
7、運行指示燈
GND-->GND
VCC-->PB9
使用說明:
1、上電之后默認使用電話號碼15638869356,但是在上電之前通過將PB8口置高改變電話為18134414310。
2、上電后模塊需要進行初始化工作(GSM與單片機),初始化完成后運行指示燈會閃爍頻率2HZ(此過程需要20s左右)。如果長時間后初始化仍沒有完成
需要檢查線路連接(GSM與單片機),以及GSM模塊供電是否充足(可以撥打模塊電話是否能打的通,能打通說明模塊正常,打不通需要檢查模塊供電)
3、程序正常運行后(運行指示燈間歇閃爍),初次上電模塊會給設定手機號發送正常狀態。手機接收到模塊打來的短信表明通信正常,沒收到短信需要進行檢查。
收到短信后就可以通過手機發送短信對其進行控制。
4、初次上電后默認是“撤防”狀態,此模式下人員活動不會產生報警,但是煙霧過高,溫度過高(默認40度)則會報警。
5、如果主任外出需要人員活動報警的話發送begin使其進入"設防"狀態,設置成功模塊會返回 BEGIN OK!,如需撤防發送 end 即可,撤防成功模塊返回 END OK!
6、發送 changexx(其中xx為電話號碼)即可改變短信接收的電話。改變成功后模塊返回 Change Phone OK!
7、發送 onled 可以打開與繼電器相連的家電,打開成功返回 LED ON OK!
8、發送 offled 可以關閉與繼電器相連的家電,關閉成功返回 LED OFF OK!
9、發送 setxx(xx為溫度<100)可設置報警溫度,設置成功返回 Set Temperature Alarm Data OK!
10、發送 hsxx(xx為電話號)可設置方的電話號之后模塊每隔20s向對方撥打一次電話,設置成功模塊返回 HS Open OK!
11、發送 close 可關閉“呼死”功能。
12、發送 status 可查看目前各個報警狀態正常為 Normol 溫度煙霧過高顯示 High ,人員報警顯示 Warring。發送成功模塊返回當前狀態值。
單片機源程序如下:
- /**********************************************************************************
- * 工程名 :發送TEXT文本短信
- * 描述 :通過STM32開發板控制模塊發送TEXT文本短信
- * 實驗平臺:STM32F10X
- * 庫版本 :
- * 作者 :泥人通信模塊開發平臺團隊
- * 硬件連接說明
- 使用單片串口2與GPRS模塊通信 注:使用串口2可以避免下載和通信不會沖突
- STM32 GPRS模塊
- PA3 (RXD2)->RXD
- PA2 (TXD2)->TXD
- GND ->GND
- PB9 ->PWR
- PWR:這個引腳是控制模塊啟動,V1.2版本已經有自啟動電路所以不必接,老版本可以通過程序
- 控制這個引腳讓模塊開機。當然也可以使用按鍵手動開機。
- * 軟件功能說明
- 板子上電后運行指示燈RUNING_LED會以一秒的頻率閃爍
- 修改短信中心號、接收方手機號和短信內容,編譯成功后下載到單片機里面,就可以實現發
- 送一條文本短信
- **********************************************************************************/
- #include "stm32f10x.h"
- #include "stm32f10x_rcc.h"
- #include "usart.h"
- #include "hardware.h"
- #include "SysTick.h"
- #include "timer.h"
- #include "string.h"
- #include "gsm.h"
- /************* 外部函數和變量聲明*****************/
- u8 SC_Flag=0; //監控標志開關 0:關閉監控 1:打開監控 默認0
- u8 RH_D[5]; //保存溫濕度
- u8 S_F=0,T_F=0,P_F=0,B_F=0; //設置人員、煙霧、溫度、蜂鳴器標志位
- u16 M_Time=100; //報警計時
- u8 Alarm=0; //主人回應標志,0打開報警,1關閉報警,默認0
- u8 Alarm_T=40; //報警溫度默認40C
- u8 HS=0; //呼死功能開關標志 0:關 1:開 默認0
- void Control_APP(void);
- //static unsigned char *content="Hello kitty";//發送短信內容
- char Message[]="Temperature : Normol\r\nSmoke : Normol\r\nPeople : Normol \
- \r\nLED : OFF";//發送短信內容
- /*******************************************************************************
- * 函數名 : main
- * 描述 : 主函數
- * 輸入 :
- * 輸出 :
- * 返回 :
- * 注意 : 串口2負責與MG323模塊通信,串口1用于串口調試,可以避免在下載程序時數據
- 還發送到模塊
- *******************************************************************************/
- int main(void)
- {
-
- SysTick_Init_Config();
- GPIO_Config();
- USART2_Init_Config(115200);
- USART1_Init_Config(9600);
- UART1_SendString("GPRS模塊短信測試程序\r\n");
- UART1_SendString("GPRS模塊在注冊網絡\r\n");
- Wait_CREG(); //查詢等待模塊注冊成功
- UART1_SendString("GPRS模塊注冊成功\r\n");
- UART1_SendString("GPRS模塊短信模式設置\r\n");
- Set_Text_Mode();//設置短信為TEXT模式
- UART1_SendString("設置成功,短信模式:TEXT\r\n");
- // memcpy(Message+13," High ",7);
- // memcpy(Message+39," High ",7);
- // memcpy(Message+66," Warring",8);
- // memcpy(Message+96," ON ",7);
- Change_Phone();
- Send_Text_Sms(Message);//發送一條短消息
- delay_ms(1000);
- delay_ms(1000);
- delay_ms(1000);
- UART1_SendString("初始化完成\r\n");
- Timer2_Init_Config(2000,36000-1);
- TIM3_Init(250,36000-1);
- while(1)
- {
- Check_New_Message();
- if(SC_Flag==1)
- {
- Control_APP();
- }
- }
- }
- void Control_APP(void)
- {
- if(Smoke_IO==0)
- {
- S_F=1;
- memcpy(Message+39," High ",7);
- }
- else
- {
- S_F=0;
- memcpy(Message+39," Normol",7);
- }
- if(IR_IO==1)
- {
- P_F=1;
- memcpy(Message+66," Warring",8);
- }
- else
- {
- P_F=0;
- memcpy(Message+66," Normol ",8);
-
- }
- if(RH_D[2]>40)
- {
- T_F=1;
- memcpy(Message+13," High ",7);
- }
- else
- {
- T_F=0;
- memcpy(Message+13," Normol",7);
- }
- }
復制代碼
所有資料51hei提供下載:
GSM智能家居.rar
(314.29 KB, 下載次數: 287)
2018-1-10 22:38 上傳
點擊文件名下載附件
5
|