找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5696|回復(fù): 1
收起左側(cè)

基于單片機(jī)的GSM安防系統(tǒng) 論文+原理圖+程序

[復(fù)制鏈接]
ID:140725 發(fā)表于 2016-10-11 15:54 | 顯示全部樓層 |閱讀模式
該項目并不完美,如果要做這個項目的朋友,有此項目幫助相信會容易很多。

在此說明一下該GSM發(fā)送短信的方式,這里采用的是PDU模式,但不是直接發(fā)送PDU短信,而是先把要發(fā)送的短信存到SIM卡上,再從SIM卡上轉(zhuǎn)發(fā)出去。如果要直接發(fā)送,只要再代碼內(nèi)改一下相應(yīng)的AT指令即可。

另外,PCB上與實際電路有點不符,因為當(dāng)時做出板來后,焊上元件,但是還是有小小的問題,所以在硬件上調(diào)好后,就沒有把PCB上的也改了。放心,原理圖上是正確滴。

沐雨青林在此多謝各位的支持。

若需要該項目的相關(guān)芯片資料或者GSM實際調(diào)試返回指令的可以聯(lián)系俺。對此有疑問的也可以問俺。

沐雨青林原創(chuàng)
基于AT89S52單片機(jī)的安防系統(tǒng)設(shè)計論文

指導(dǎo)老師:                                          譚雄樂

開發(fā)人員:                                          林國友
                                                                                                                徐健俊
任務(wù)分配:林國友(編寫程序、硬件測試、硬件焊接、程序調(diào)試)。                              徐健。ó婸CB電路)。


  • 功能介紹
    通過AT89S52單片機(jī)主控,掃描檢測紅外、煙霧、煤氣等傳感器信號達(dá)到監(jiān)控家里情況的效果。當(dāng)信號發(fā)生時,S52單片機(jī)就會通過串口通信連接GSM模塊向預(yù)先設(shè)定好的手機(jī)號碼發(fā)送相應(yīng)的警報情況。此時,單片機(jī)控制的外圍電路會發(fā)生警報聲,同時亮燈。只有當(dāng)單片機(jī)接收到目標(biāo)號碼發(fā)送過來的控制短信后,才會關(guān)閉警報和指示燈。(由于本人勢單力薄,所以程序的功能并不完善。在控制方面沒有用定時控制警報發(fā)生后每隔一段時間發(fā)送短信到目標(biāo)號碼,直到接收到相應(yīng)的控制短信才停止。同時在解除警報后也沒有再發(fā)送短信到目標(biāo)號碼以示情況。)
警報發(fā)生:紅外警報→發(fā)送“紅外警報”短信
燃?xì)饩瘓蟆l(fā)送“燃?xì)饩瘓蟆倍绦?/strong>
煙霧警報→發(fā)送“煙霧警報”短信
收到短信:“家里情況”→發(fā)送短信“一切正!保o警報時)
“關(guān)閉紅外”→關(guān)閉紅外警報,關(guān)閉蜂鳴器,關(guān)紅外指示燈
“關(guān)閉燃?xì)狻薄P(guān)閉燃?xì)饩瘓,關(guān)閉蜂鳴器,關(guān)燃?xì)庵甘緹?/strong>
“關(guān)閉煙霧”→關(guān)閉煙霧警報,關(guān)閉蜂鳴器,關(guān)煙霧指示燈
“關(guān)閉所有”→關(guān)所有警報,關(guān)蜂鳴器,關(guān)警報指示燈,開正常指示燈
實物圖:
硬件接線圖請參考:AT89S52單片機(jī)的安防系統(tǒng)硬件接線圖.doc
1.004.jpg
1.001.jpg 1.002.jpg 1.003.jpg
1.005.jpg
  • 程序說明及流程圖
    • 主程序流程圖
1.006.jpg
2鍵盤中斷流程圖
1.007.jpg
  • 硬件原理圖及PCB
原理圖:
1.008.jpg
AT89S52外圍I/O接口:
P1.0~P1.7為矩陣鍵盤輸入,P1.0~P1.3為行,P1.4~P1.7為列。
P0.3為蜂鳴器(低電平有效),P0.4~P0.7為LED指示燈(低電平有效)
P2.0~P2.2為安防信號掃描入口P2.1、P2.2、P2.0(高電平有效)
P2.0接紅外探測器,P2.1接燃?xì)馓綔y器,P2.2接煙霧探測器
P3.0、P3.1用作串口接收發(fā)送,P3.2用作鍵盤外部中斷輸入,P3.6、 P3.7分別接24C02的SCL和SDA
RST按鍵復(fù)位,XTAL1、XTAL2接12M晶振
P0.0、P2.4~P2.7用作NOKIA5110顯示屏。
PCB(硬件在調(diào)試時有更改,但相差不大):
1.009.jpg
  • 程序部分代碼:
主函數(shù)代碼:
  1. /****************************************************************
  2. ****************************************************************
  3. ****                            main.c  主函數(shù)                                                        *****
  4. ****                                                                                                                *****
  5. ****                                本程序都是采用PDU格式                                        *****
  6. ****************************************************************
  7. ****************************************************************/


  8. #include
  9. #include
  10. #include
  11. #include
  12. #include
  13. #include
  14. #include

  15. extern bit scan_Security();//安全監(jiān)控掃描
  16. //警報掃描初始化  初始化所有檢測電平,等待警報電平進(jìn)入
  17. extern void init_security();
  18.                
  19. extern uchar idata phonenum[15];//存放要發(fā)送對象的號碼
  20. extern uchar Nindex[];//存放發(fā)送到SIM卡中短信返回的index
  21. extern void test_code(uchar n_delay,uchar n_wait);/*測試函數(shù)*/
  22. void init_pho_msg();//號碼和短信初始化

  23. void main()
  24. {
  25.         
  26.         lcd_disp0();
  27.         I2C_Init();//I2C總線初始化

  28.         P0_4=0;//
  29.         LCD_clear();//清屏
  30.         LCD_write_String(8,4,"GSM");
  31.         disp16_16(2,2,16);//安
  32.         disp16_16(4,2,17);//防
  33.         disp16_16(6,2,18);//系
  34.         disp16_16(8,2,19);//統(tǒng)
  35.         delayms_100ms();

  36.         init_interrupt();                        //外部中斷0初始化  鍵盤
  37.         init_security();                        //警報掃描初始化

  38.         P0_4=1;//
  39.         P0_5=0;//
  40.         LCD_clear();//清屏
  41.         disp16_16(0,0,29);//指
  42.         disp16_16(2,0,30);//導(dǎo)
  43.         disp16_16(4,0,31);//老
  44.         disp16_16(6,0,32);//師
  45.         LCD_write_char(':');
  46.         disp16_16(2,2,33);//譚
  47.         disp16_16(4,2,34);//雄
  48.         disp16_16(6,2,35);//樂

  49.         init_uart();                                //初始化串口
  50.         while(!connect_gsm());                  //發(fā)送聯(lián)機(jī)指令
  51.         test_code(1,0);//

  52.         P0_5=1;//
  53.         P0_6=0;//
  54.         LCD_clear();//清屏
  55.         disp16_16(0,0,20);//制
  56.         disp16_16(2,0,21);//作
  57.         disp16_16(4,0,22);//人
  58.         LCD_write_char(':');

  59.         init_gsm();                                        //禁止回顯,設(shè)置為pdu模式
  60.         
  61.         P0_6=1;//
  62.         P0_7=0;//
  63. //        LCD_clear();//清屏
  64.         disp16_16(2,2,23);//林
  65.         disp16_16(4,2,24);//國
  66.         disp16_16(6,2,25);//友
  67.         
  68.         disp16_16(2,4,26);//徐
  69.         disp16_16(4,4,27);//健
  70.         disp16_16(6,4,28);//俊
  71.         while(!connect_gsmnet());         //獲取網(wǎng)絡(luò)注冊情況
  72.         init_sim();                                        //不接受廣播短信
  73.         test_code(5,0);//響鈴500ms提示初始化成功

  74.         init_pho_msg();//號碼和短信初始化
  75.         P0_7=1;//
  76.                                                                
  77.         test_code(1,0);//響鈴100ms提示進(jìn)入系統(tǒng)監(jiān)控狀態(tài)
  78.         while(1)
  79.         {               
  80.                 scan_Security();//安全監(jiān)控掃描
  81.                 key_out();//鍵盤處理跳出               
  82.                 Chk_Read_Do();//檢測讀取新短信執(zhí)行控制命令

  83.         }
  84.          
  85. }

  86. //號碼和短信初始化
  87. void init_pho_msg()
  88. {
  89.         uchar i,n_addr=0x0;
  90. //讀取目標(biāo)號碼到phonenum
  91.         for(i=0,n_addr=0x0;i<13;i++)
  92.                 I2C_On(I2C_SrRECV, 0xA0, n_addr++, &phonenum[i], 1);//讀n_addr地址內(nèi)容到phonenum
  93.         phonenum[13] = '';
  94.         if(phonenum[12]<0 && phonenum[12]>9)
  95.         {
  96.                 strcpy(phonenum,"8618998361948");//設(shè)定初始號碼
  97.                 for(i=0,n_addr=0x0;i<14;i++)
  98.                 {
  99.                         I2C_On(I2C_SEND, 0xA0, n_addr++, &phonenum[i], 1);//寫phonenum內(nèi)容到n_addr地址
  100.                         delayms_10ms();
  101.                 }
  102.                 phonenum[13] = '';
  103.                 while( !init_Send_sms_sim(phonenum) );                //初始化將所有要發(fā)送的短信寫到SIM卡
  104.         }
  105.         LCD_clear();//清屏
  106.         LCD_write_String(0,0,"Read Phone number");
  107.         LCD_write_String(0,2,phonenum);
  108.         
  109.         delayms_1000ms();        
  110. }
復(fù)制代碼

AT89S52單片機(jī)的安防系統(tǒng)硬件接線說明
紅外:藍(lán)(信號負(fù)輸入)青(信號正輸入)黑(9V電源負(fù))紅(9V電源正)
燃?xì)猓核{(lán)(信號負(fù)輸入)青(信號正輸入)黑(9V電源負(fù))紅(9V電源正)
煙霧:藍(lán)(信號負(fù)輸入)青(信號正輸入)黑(9V電源負(fù))紅(9V電源正)
具體接線請看圖上注解
1.005.jpg

1.012.jpg
注意:燃?xì)夂图t外的藍(lán)色線不需要接上
1.018.jpg
1.019.jpg
1.020.jpg
1.021.jpg
1.022.jpg
1.023.jpg
1.024.jpg
1.025.jpg
1.026.jpg

元件清單:
芯片:AT89S52、MAX232、TLP521-4光耦。
傳感器:紅外、煙霧、燃?xì)?/font>


按鍵 17個
串口(針) 1個
AT89S52 底座 1個
16針底座 2個
DC直插式電源座(普通) 1個
蜂鳴器 1個
11.0592晶振 1個
PNP管 1個
HT7133A 1個
LM7805穩(wěn)壓管 1個
電容104
電容22uF(復(fù)位鍵用) 1個
電容22pF(晶振用) 2個
LED燈 5個
電阻10K(復(fù)位) 1個 (R10)
電阻1K 7個 (R1,R2,R3,R5,R6,R14,R15,R16,R20)
電阻330 3個 (R4,R7,R8)
二極管(鍵盤用) 4個
排針、排座若干


注意:原理圖中的C1電容在PCB封裝中刪除了,那是不對的,當(dāng)時我們做好后,就因為這個原因,屏幕顯示就出問題了。

具體請看原件參數(shù)圖
0.png
0.png
0.png 0.png

0.png
所有資料打包下載地址(包含論文+程序+原理圖等全套資料):
http://www.torrancerestoration.com/bbs/dpj-4591-1.html

相關(guān)帖子

回復(fù)

使用道具 舉報

ID:289826 發(fā)表于 2021-9-26 21:51 | 顯示全部樓層
謝謝分享哈, 正在學(xué)習(xí)發(fā)送短信。。。。。。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表