器件介紹
1、GPRS模塊 GA6(網(wǎng)絡(luò)、短信)
實物圖2.jpg (108.74 KB, 下載次數(shù): 69)
下載附件
2019-9-27 08:56 上傳
實物圖.jpg (117.11 KB, 下載次數(shù): 65)
下載附件
2019-9-27 08:56 上傳
引腳圖.jpg (90.67 KB, 下載次數(shù): 71)
下載附件
2019-9-27 08:56 上傳
u GA6 尺寸 22.8mm x 16.8mm x 2.2 mm; u正常工作溫度:-30°C ~ +80°C, u 受限工作溫度:-40°C ~ -30°C 及+80°C ~+85°C* u工作電壓 3.5V-4.2V; u開機(jī)電壓>3.5V; uSLEEP 模式下的耗流為 0.9mA; u 四頻:GSM850, EGSM 900 和 DCS 1800,PCS1900 可以自動的搜尋 四個頻段。 l 符合 GSM Phase 2 / 2+ l GPRS Class 10; u靈敏度<-107; u支持語音通話; u支持 SMS 短信; u支持移動和聯(lián)通2G,以及全球的GSM網(wǎng)絡(luò) uGPRS 數(shù)據(jù)特性,最大數(shù)據(jù)速率,下載 85.6Kbps,上傳 42.8Kbps; u支持符合 GSM 07.10 協(xié)議的串口復(fù)用功能 u支持 2 個串口,一個下載串口,一個 AT 命令口; uAT 命令支持標(biāo)準(zhǔn) AT 和 TCP/IP 命令接口; u支持?jǐn)?shù)字音頻和模擬音頻,支持 HR,FR,EFR,AMR 語音編碼; u支持FCC,CE認(rèn)證; uSMT 42PIN 封裝;
2、溫濕度模塊 DHT11
005.png (34.88 KB, 下載次數(shù): 56)
下載附件
2019-9-27 09:17 上傳
006.png (26.02 KB, 下載次數(shù): 68)
下載附件
2019-9-27 09:17 上傳
采用的傳統(tǒng)的溫濕度傳感器
3、土壤傳感器
007.png (22.55 KB, 下載次數(shù): 64)
下載附件
2019-9-27 10:25 上傳
土壤傳感器數(shù)字量和模擬量輸出,這個設(shè)計采用的是模擬量輸出;
模擬量通過 AD采集(ADC0832)計算出土壤濕度。
制作完成是實物
1.如果有電話呼入,LED7就會亮起來。
2.按下KEY1鍵可以接聽電話,電話接聽成功就會點亮相應(yīng)的LED。
3.按下KEY2鍵可以掛斷電話,電話掛斷成功就會點亮相應(yīng)的LED。
4.按鍵和LED對應(yīng)的端口,請參考程序。
- /**************************************************************
- GA6 模塊
- 51 單片機(jī)例程
- 實驗內(nèi)容 : 接聽和掛斷電話實驗
- KEY1 : 接聽 KEY2 :掛斷
-
- 本例程使用11.0592MHZ時鐘---->必須為11.0592M
- 串口設(shè)置為:9600,8,n,1.
- 技術(shù)支持: 杜工
- ******************************************/
- #include <reg52.h>
- #include "string.h"
- #include "GA6_module_errors.h"
- typedef unsigned char u8;
- typedef unsigned int u16;
- typedef unsigned long u32;
- /************* 本地常量聲明 **************/
- #define Buf_Max 70 //串口1緩存長度
- #define STABLE_TIMES 10 //等待AIR200上電后穩(wěn)定
- /************* 本地變量聲明 **************/
- //串口1發(fā)送回車換行
- #define UART1_SendLR() UART1_SendData(0X0D);UART1_SendData(0X0A)
- /*LED端口定義*/
- sbit LED0 = P1^0;
- sbit LED1 = P1^1;
- sbit LED2 = P1^2;
- sbit LED3 = P1^3;
- sbit LED4 = P1^4;
- sbit LED5 = P1^5;
- sbit LED6 = P1^6;
- sbit LED7 = P1^7;
- /*KEY端口定義*/
- sbit KEY0 = P2^4;
- sbit KEY1 = P2^5;
- sbit KEY2 = P2^6;
- sbit KEY3 = P2^7;
- /************* 本地變量聲明 **************/
- xdata u8 Uart1_Buf[Buf_Max];
- u8 First_Int = 0;
- u16 count_20ms;
- u8 find_string_flag = 0;
- u8 has_call_flag = 0;
- /************* 本地函數(shù)聲明 **************/
- void delay_ms(u16 ms); //延時ms個20ms ms*20ms
- void CLR_Buf(void); //清串口接收緩存
- u8 Find(u8 *a); //查找字符串
- void UART1_SendData(u8 dat); //串口1發(fā)送 1字節(jié)
- void UART1_Send_Command(char *s);
- u8 UART1_Send_AT_Command(u8 *b,u8 *a,u8 wait_time,u16 interval_time);//at命令發(fā)送
- u8 Wait_CREG(u8 query_times);
- void Timer0Init(void) //20毫秒@115200
- {
- TMOD &= 0xF0;
- TMOD |= 0x01; //
- TL0 = (65536-20000)%256; //
- TH0 = (65536-20000)/256; //
- TF0 = 0; //
- ET0 = 1; //
- TR0 = 1; //開始計時
- }
- void Uart1Init(void) //9600bps@11.05926MHz
- {
- PCON &= 0x7F; //
- SCON = 0x50; //
- TMOD &= 0x0F; //
- TMOD |= 0x20; //
- TL1 = 0xFD; //
- TH1 = 0xFD; //
- ET1 = 0; //
- TR1 = 1; //
- ES = 1; //
- }
- int ack_call(void)
- {
- int ret;
-
- ret = UART1_Send_AT_Command("AT","OK",3,50);//測試通信是否成功
- if(ret == 0)
- {
- return COMMUNITE_ERROR;
- }
-
- ret = UART1_Send_AT_Command("AT+CPIN?","READY",2,50);//查詢卡是否插上
- if(ret == 0)
- {
- return NO_SIM_CARD_ERROR;
- }
-
- ret = Wait_CREG(3);//查詢卡是否注冊到網(wǎng)絡(luò)
- if(ret == 0)
- {
- return SIM_CARD_NO_REG_ERROR;
- }
-
-
- ret = UART1_Send_AT_Command("ATA","OK",2,50);//接聽電話
- if(ret == 0)
- {
- return ATA_ERROR;
- }
-
- return 1;
- }
- int hang_call(void)
- {
- int ret;
-
- ret = UART1_Send_AT_Command("ATH","OK",2,50);//掛斷電話
- if(ret == 0)
- {
- return ATH_ERROR;
- }
-
- return 1;
- }
- /**********************************************/
- /*設(shè)計思路:
- (0)進(jìn)行串口、定時器初始化工作。
- (1)開機(jī)等待10秒,等待模塊準(zhǔn)備好。
- (2)發(fā)送相應(yīng)的指令。
- ************************************************/
- void main(void)
- {
- u8 i;
- int ret;
-
- Uart1Init(); //串口初始化
- Timer0Init();//TIM0初始化
- EA = 1; //開啟總中斷
-
- for(i = 0;i < STABLE_TIMES;i++)//等待網(wǎng)絡(luò)穩(wěn)定
- {
- delay_ms(50);
- }
-
- has_call_flag = 1;
- while (1)
- {
- delay_ms(25);
- LED0 = ~LED0;//進(jìn)入主程序的指示燈
-
- if(find_string_flag == 1)
- {
- delay_ms(10);
- if(Find("RING"))
- {
- LED7 = 0;
- if(KEY1==0)
- {
- delay_ms(1);
- if(KEY1==0)
- {
- while(!KEY1);
- ret = ack_call();//接聽電話
- if(ret == 1)
- {
- LED1 = 0;
- }
- else
- {
- LED1 = 1;
- }
- }
- find_string_flag = 0;
- }
- }
- else
- {
- LED7 = 1;
- find_string_flag = 0;
- }
- }
-
- if(KEY2==0)
- {
- delay_ms(1);
-
- if(KEY2==0)
- {
- while(!KEY2);
- ret = hang_call();//掛斷電話
- if(ret == 1)
- {
- LED2 = 0;
- }
- else
- {
- LED2 = 1;
- }
- }
- }
-
- }
- }
- /*******************************************************************************
- * 函數(shù)名 : Timer0_ISR
- * 描述 : 定時器0中斷服務(wù)入口函數(shù),1ms中斷一次
- * 輸入 :
- * 輸出 :
- * 返回 :
- * 注意 :
- *******************************************************************************/
- void Timer0_ISR() interrupt 1
- {
- TR0=0;//關(guān)定時器
- TL0 = (65536-20000)%256; //重設(shè)定時器初值
- TH0 = (65536-20000)/256; //
-
- if(count_20ms > 0) //20ms延時計數(shù)器
- {
- count_20ms--;
- }
-
- TR0=1;//開定時器
- }
- /********************* UART1中斷函數(shù)************************/
- void UART1_ISR (void) interrupt 4
- {
- if (RI)
- {
- RI = 0; //清除RI位
- Uart1_Buf[First_Int] = SBUF; //將接收到的字符串存到緩存中
- First_Int++; //緩存指針向后移動
- if(First_Int > Buf_Max) //如果緩存滿,將緩存指針指向緩存的首地址
- {
- First_Int = 0;
- }
-
- if(has_call_flag == 1)
- {
- if(First_Int > 8)
- {
- find_string_flag = 1;
- }
- }
- }
- if (TI)
- {
- TI = 0; //清除TI位
- }
- }
- /*******************************************************************************
- * 函數(shù)名 : CLR_Buf
- * 描述 : 清除串口2緩存數(shù)據(jù)
- * 輸入 :
- * 輸出 :
- * 返回 :
- * 注意 :
- *******************************************************************************/
- void CLR_Buf(void)
- {
- u8 k;
- for(k=0;k<Buf_Max;k++) //將緩存內(nèi)容清零
- {
- Uart1_Buf[k] = 0x00;
- }
- First_Int = 0; //接收字符串的起始存儲位置
- }
- /*******************************************************************************
- * 函數(shù)名 : Find
- * 描述 : 判斷緩存中是否含有指定的字符串
- * 輸入 :
- * 輸出 :
- * 返回 : unsigned char:1 找到指定字符,0 未找到指定字符
- * 注意 :
- *******************************************************************************/
- u8 Find(u8 *a)
- {
- ES = 0; //改進(jìn)程序
- if(strstr(Uart1_Buf,a)!=NULL)
- {
- ES = 1;
- return 1;
- }
- else
- {
- ES = 1;
- return 0;
- }
-
- }
- /*******************************************************************************
- * 函數(shù)名 : Wait_CREG
- * 描述 : 等待模塊注冊成功
- * 輸入 :
- * 輸出 :
- * 返回 :
- * 注意 :
- *******************************************************************************/
- u8 Wait_CREG(u8 query_times)
- {
- u8 i;
- u8 k;
- u8 j;
- i = 0;
- CLR_Buf();
- while(i == 0)
- {
- UART1_Send_Command("AT+CREG?");
- delay_ms(100);
-
- for(k=0;k<Buf_Max;k++)
- {
- if((Uart1_Buf[k] == '+')&&(Uart1_Buf[k+1] == 'C')&&(Uart1_Buf[k+2] == 'R')&&(Uart1_Buf[k+3] == 'E')&&(Uart1_Buf[k+4] == 'G')&&(Uart1_Buf[k+5] == ':'))
- {
-
- if((Uart1_Buf[k+7] == '1')&&((Uart1_Buf[k+9] == '1')||(Uart1_Buf[k+9] == '5')))
- {
- i = 1;
- return 1;
- }
-
- }
- }
- j++;
- if(j > query_times)
- {
- return 0;
- }
-
- }
- return 0;
- }
- /*----------------------------
- UART1 發(fā)送串口數(shù)據(jù)
- -----------------------------*/
- void UART1_SendData(u8 dat)
- {
- ES=0; //關(guān)串口中斷
- SBUF=dat;
- while(TI!=1); //等待發(fā)送成功
- TI=0; //清除發(fā)送中斷標(biāo)志
- ES=1; //開串口中斷
- }
- /**********************************
- 發(fā)送命令
- **********************************/
- void UART1_Send_Command(char *s)
- {
- CLR_Buf();
- while(*s)//檢測字符串結(jié)束符
- {
- UART1_SendData(*s++);//發(fā)送當(dāng)前字符
- }
- UART1_SendLR();
- }
- /*******************************************************************************
- * 函數(shù)名 : Second_AT_Command
- * 描述 : 發(fā)送AT指令函數(shù)
- * 輸入 : 發(fā)送數(shù)據(jù)的指針、希望收到的應(yīng)答、發(fā)送等待時間(單位:interval_time*20 ms)
- * 輸出 :
- * 返回 :
- * 注意 :
- *******************************************************************************/
- u8 UART1_Send_AT_Command(u8 *b,u8 *a,u8 wait_time,u16 interval_time)
- {
- u8 i;
- CLR_Buf();
- i = 0;
- while(i < wait_time)
- {
- UART1_Send_Command(b);
- delay_ms(interval_time);
- if(Find(a)) //查找需要應(yīng)答的字符
- {
- return 1;
- }
- i++;
- }
-
- return 0;
- }
- void delay_ms(u16 ms)
- {
- count_20ms = ms;
- while(count_20ms);
- }
復(fù)制代碼
GA6資料下載
GA6_硬件規(guī)格書_V1.04.pdf
(1.19 MB, 下載次數(shù): 18)
2019-9-27 10:33 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
GA6源程序下載
GA6-51單片機(jī)例程.zip
(129.08 KB, 下載次數(shù): 29)
2019-9-27 10:32 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
DHT11技術(shù)資料下載
DHT11說明書.pdf
(998.76 KB, 下載次數(shù): 13)
2019-9-27 10:21 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|