STM32学習記録 - SIM900Aで中国語と英語のテキストメッセージ送信を実現

目次

デバッグ

32 コントロール

ハードウェア接続

Baidu ネットワーク ディスクのソース コード 


テキスト メッセージの送信失敗は、モジュールの電源に関連している可能性があります。GSM モジュールの信号電力が比較的大きいため、コンピュータの USB 電源の電流が比較的小さく、電力供給が不十分です。ボードの電源は外部パワーバンクから供給される必要があります。(モバイルバッテリーはコンピューターのUSBよりも大きな電流を流します)

デバッグ

まず、シリアル - USB モジュールを使用してデバッグします。

TEST (UCS2) モードで中国語と英語のショート メッセージを送信すると、ショート メッセージが SIM カードに保存されます。

AT+CMGF=1 AT+CSCS="UCS2" AT+CSCA?                      

AT+CSMP=17.167.0.25

AT+CMGS="電話番号をUNICONコードに送信するには"

>送信するコンテンツをUNICONエンコードに転送します

最後に 1A を 16 進数で送信します。

32 コントロール

stm32 を使用して SIM900A のいくつかの重要な機能を制御します。

同じ命令が関数として記述されます。


u8 sim900a_send_chmessage_zc(u8*number,u8*content)
{
	u8 cmd[100];
	sprintf((char*)cmd,"AT+CMGS=\"%s\"",number);
	if(sim900a_send_cmd((u8 *)"AT+CMGF=1",(u8 *)"OK",100))	return SIM_CMGF_ERR;
	if(sim900a_send_cmd((u8 *)"AT+CSCS=\"UCS2\"",(u8 *)"OK",100))	return SIM_CSCS_ERR;
	if(sim900a_send_cmd((u8 *)"AT+CSCA?",(u8 *)"OK",100))	return SIM_CSCA_ERR;
	if(sim900a_send_cmd((u8 *)"AT+CSMP=17,167,0,25",(u8 *)"OK",100))	return SIM_CSMP_ERR;
	if(sim900a_send_cmd(cmd,(u8 *)">",100))	return SIM_CMGS_ERR;
	UART2SendString(content,strlen((char*)content));
	//u2_printf("%s",content);
	if(sim900a_send_cmd((u8 *)0x1A,(u8 *)"+CMGS:",1500))	return SIM_CMGS_SEND_FAIL;
	return SIM_OK;
}

 送信されたコード

u8 sim900a_send_cmd(u8 *cmd,u8 *ack,u16 waittime)
{
	u8 res=0; 
	USART2_RX_STA=0;USART2_RX_REC_ATCOMMAD=1;
	if((u32)cmd<=0XFF)
	{
		while(DMA1_Channel7->CNDTR!=0);	//等待通道7传输完成   
		USART2->DR=(u32)cmd;
	}else u2_printf("%s\r\n",cmd);//发送命令
	if(ack&&waittime)		//需要等待应答
	{
		while(--waittime)	//等待倒计时
		{
			delay_ms(10);
			if(USART2_RX_STA&0X8000)//接收到期待的应答结果
			{
				if(sim900a_check_cmd(ack))break;//得到有效数据 
				USART2_RX_STA=0;
			} 
		}
		if(waittime==0)res=1; 
	}
	USART2_RX_STA=0;USART2_RX_REC_ATCOMMAD=0;
	return res;
} 

メイン機能

while(res)	//只需要修改电话号和内容即可
	{
		res=sim900a_send_chmessage_zc((u8*)"电话号码",(u8*)"内容");
	}

ハードウェア接続


モジュール RX は PA2 に接続し、TX は PA3 に接続します。

シリアル ポート 2 はモジュールに送信され、シリアル ポート 3 は印刷にのみ使用されます。

GSM モジュールが送信する信号の出力が大きく、コンピューターの USB の電源電流が小さいため、ボードの電源が不足し、外部電源を接続して電源を供給する必要があります。

コードが書き込まれた後、パワー バンクを使用してボードに電力を供給し、デバッグのためにシリアル ポートを USB からシリアル ポート 3 に接続します。シリアル ポート デバッグ アシスタントを開く方が直感的です。

Baidu ネットワーク ディスクのソース コード 

最後に、プロジェクト全体のソース コードが添付されているので、UNICON でコード化された電話番号と main 関数の内容を変更するだけで済みます。(学習用途のみ)

リンク: https://pan.baidu.com/s/1z6PluDTkZXngFkTuBAYTUw 
抽出コード: 9438
 

おすすめ

転載: blog.csdn.net/sujiaxin12/article/details/123707191