STM32 MSN&Dial實(shí)驗分析及原理
一.實(shí)驗內容
基于stm32平臺控制手機模塊撥打電話(huà),取消撥打電話(huà)以及發(fā)送短信。
按下WKUP鍵撥打電話(huà),按下Tamper鍵則取消撥打,按下SEL鍵就以短信形式發(fā)送一串英文字符到手機。
二.實(shí)驗流程
三.實(shí)驗結果
按下WKUP鍵,撥通手機;按下Tamper鍵截斷通話(huà);按下SEL鍵往手機發(fā)送短信。
四.實(shí)現原理
4.1撥打電話(huà)命令為atd+電話(huà)號碼+分號+回車(chē),只要通過(guò)串口往手機模塊發(fā)送這一串命令就可以實(shí)現撥打電話(huà)
功能。
4.2截止撥號命令為ath+回車(chē),理解方式是at+hold(舉起或停下來(lái)),同樣,撥打的相對應at指令為atd可以理
解為at+dial(撥打)
4.3發(fā)送短信的命令相比撥打電話(huà)和截止撥號有點(diǎn)復雜,具體分為三步。第一步設置短信消息的格式,第二步
設置接收短信的手機號碼,第三步就是編寫(xiě)短信消息的內容。AT+CMGF=1rn,作用是設置短信消息為英文
格式,手機模塊接到這串命令之后會(huì )返回 OK rn,那么STM32不停循環(huán)檢測串口返回來(lái)的信息,直至出現
回車(chē)符才進(jìn)行下一步動(dòng)作。接著(zhù)往手機模塊發(fā)送AT+CMGS=13800138000rn,作用是設置短信接收的手
機號碼,接著(zhù)手機模塊會(huì )返回''>''符號,同理STM32不停循環(huán)檢測串口接收的信息,直至出現''>''才進(jìn)行下一步
動(dòng)作。下一步就是往手機模塊發(fā)送We are the best team!x1a,“We are the best team!”為信息的內
容,字符” x1a”為鍵盤(pán)“CTRL+Z”的ASCII碼值。這里分為三步,每一步都要完成動(dòng)作之后才能進(jìn)行下一
步,假如不循環(huán)檢測串口返回的信息,一連串往手機模塊發(fā)送三串命令,手機模塊會(huì )相應不來(lái),導致丟失部
分命令的后果。
主循環(huán):
while(1)
{ //如果按下WKUP鍵,則撥打號碼為“13800138000”的手機
if(!GPIO_Keypress(GPIO_WKUP, BUT_WKUP))
Serial_PutString(atd13800138000;rn);
while(!GPIO_Keypress(GPIO_WKUP, BUT_WKUP));
//如果按下Tamper鍵,則截止通話(huà)
if(GPIO_Keypress(GPIO_KEY, BUT_Tamper))
Serial_PutString(ATHrn);
while(GPIO_Keypress(GPIO_KEY, BUT_Tamper));
//如果按下SEL鍵,則調用MSN()函數,達到發(fā)送短信的目的
if(GPIO_Keypress(GPIO_KEY, BUT_SEL))
MSN();
while(GPIO_Keypress(GPIO_KEY, BUT_SEL));
//延遲的作用為簡(jiǎn)單的防按鍵抖動(dòng)功能
Delay(100);
}
發(fā)送短信的命令:
void MSN(void)
{u8 word;
Serial_PutString(AT+CMGF=1rn); //設置短信消息為英文格式
while(1)
{word=USART_ReceiveData(USART3);
if(word==''n'')
break;
}
Serial_PutString(AT+CMGS=13800138000rn); //設置短信接收的號碼
while(1)
評論