基于arduino2560的tc35 GSM的使用

本文介绍如何使用XC-TC35模块通过短信实现远程控制功能。利用AT指令配置模块参数,并演示了接收短信后根据内容进行相应操作的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近些天一直在研究XC-TC35 模块,此模块使用起来特别方便,只要熟悉一些AT指令及简单的单片机编程即可轻松使用

废话不多说,下面粘出我写的代码

下面粘出代码

//收发
#include<string.h>
#define Buf_Max 100
unsigned char Rec_Buf[Buf_Max];
unsigned char i = 0;
void setup(){
    Serial.begin(9600);//此串口调试时使用
    Serial1.begin(9600);//通信使用
    Serial1.println("AT");//握手连接
    delay(100);
    while(strstr((const char*)Rec_Buf,"OK") == NULL)SerialRec();;
    Serial.println("AT");
    Serial.println("OK");
    CLR_Buf();
    Serial1.println("AT+CSCS=\"UCS2\"");//
    delay(100);
    while(strstr((const char*)Rec_Buf,"OK") == NULL)SerialRec();;
    Serial.println("AT");
    Serial.println("OK");
    CLR_Buf();
    
    Serial1.println("AT+CMGF=0");//PDU
    delay(100);
    while(strstr((const char*)Rec_Buf,"OK") == NULL)SerialRec();;
    Serial.println("AT+CMGF=0");
    Serial.println("OK");
    CLR_Buf();
    
    Serial1.println("AT+CNMI=2,1");//短信输出方式
    delay(100);
    while(strstr((const char*)Rec_Buf,"OK") == NULL)SerialRec();;
    Serial.println("AT+CNMI=2,1");
    Serial.println("OK");
    CLR_Buf();
    Serial1.println("AT+CMGD=1");//删除短信
    delay(100);
    while(strstr((const char*)Rec_Buf,"OK") == NULL) SerialRec();;
    Serial.println("AT+CMGD=1");
    Serial.println("OK");
    CLR_Buf();
}
void loop(){
    SerialRec();
    while(strstr((const char*)Rec_Buf,"+CMTI")){
        CLR_Buf();
        Serial1.println("AT+CMGR=1");
        delay(100);
        while(strstr((const char*)Rec_Buf,"OK") == NULL)SerialRec();;
        
        if(strstr((const char*)Rec_Buf,"5173")!=NULL){
            Serial.println("led turn off");
            CLR_Buf(); 
            Serial1.println("AT+CMGS=19");//基数为15,一个汉字对应两个字节
            delay(100);
            while(strstr((const char*)Rec_Buf,">") == NULL) SerialRec();;
            Serial1.print("0011000D91685165950629F30008AA045173706F");
            //0011000D91685165950629F30008AA  04表示发送的字节的个数   5173706F关灯的unicode码 
            delay(100);
            Serial1.write(0x1A);//结束符
            delay(100);
            while(strstr((const char*)Rec_Buf,"+CMGS") == NULL) SerialRec();;
            Serial.println("sendding message is successful");
            CLR_Buf();
        }
        else if(strstr((const char*)Rec_Buf,"5F00")!=NULL){
            Serial.println("led turn on");
        }
        CLR_Buf();
        Serial1.println("AT+CMGD=1");//删除短信
        delay(100);
        while(strstr((const char*)Rec_Buf,"OK") == NULL)SerialRec();;
        delay(100);
        CLR_Buf();
    }
}
void SerialRec(){
    while(Serial1.available()){
        Rec_Buf[i] = Serial1.read();
        i++;
        if(i>Buf_Max){
          i = 0;
        }
    }
 }
void CLR_Buf(){
    for(unsigned k=0;k<Buf_Max;k++){
        Rec_Buf[k]=0;
    }
    i=0;      
}

转载于:https://my.oschina.net/u/2424848/blog/517781

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值