跳到主要内容

基于微控制器的 GSM 控制机器人

GSM 控制机器人或 SMS 控制机器人是一种无线机器人,它通过接收一组以短信形式发送的指令来执行必要的动作。在本项目中,我们可以通过从手机发送短信来控制机器人的方向,如前进、后退、左转和右转。此前,我们已经介绍过不使用微控制器的 DTMF 控制机器人的工作原理。

本项目主要分为两个部分:一部分是移动单元,另一部分是机器人单元。固定在机器人上的 GSM 调制解调器接收由手机发送的消息,并将指令传递给微控制器以控制机器人的方向。在本项目中,我们使用 8051 微控制器与 GSM SIM 300 进行接口。控制器与 GSM 调制解调器之间通信所使用的协议是 UART(通用异步收发器)。该系统会持续检查消息,以便做出控制机器人的决策。

1. 基于微控制器的 GSM 控制机器人电路原理

当我们从手机向调制解调器发送消息时,GSM 调制解调器会发送以下命令,以表明已收到新消息:

+CMTI: “SM”,3

在上述命令中,数字 3 表示新消息的位置。现在我们需要读取这条未读消息并将其显示在 LCD 上。从 GSM 调制解调器读取消息的命令是:

at+cmgr=3

这里的数字 3 表示要读取的消息的位置。在将此命令发送到 GSM 模块后,调制解调器会发送以下命令:

+CMGR: “REC UNREAD”,”MD-WAYSMS”,,”13/05/20,15:31:48+34″
forward

在上述命令中,“REC UNREAD”表示该消息是未读消息,“MD-WAYSMS”表示发送方手机号码或名称,13/05/20 表示日期,15:31 表示时间,而“forward”是消息的内容。

我们需要从上述命令中提取用户发送的消息(forward)。然后将此消息与预定义的字符串(forward、backward、left、right)进行比较,根据结果控制机器人。

2. 基于微控制器的 GSM 控制机器人方框图

alt text
GSM 控制机器人——方框图

3. 电路图

alt text
GSM 控制机器人电路图

4. 硬件需求

  • 8051 微控制器
  • AT89C51 编程板
  • 编程电缆
  • 16×2 LCD
  • MAX 232 电平转换器
  • GSM sim 300 模块
  • L293D 电机驱动器
  • 机器人
  • 9V 直流电池——2 个
  • 5V 电源电路
  • 0.1uF 陶瓷电容器——4 个
  • 33pF 电容器——2 个
  • 10uF 电解电容器
  • 12MHz 晶体
  • 10k (1/4 瓦) 电阻
  • 单引脚连接线

5. 软件需求

  • Kiel U vision
  • Flash magic
  • Proteus

6. 电路设计

上述电路中使用的主要元件是微控制器、电机驱动器、电平转换器、GSM 模块和机器人。这里使用的是 at89c51 微控制器,它需要一个正 5V 直流电源。为了向控制器提供稳定的 5V 直流电压,使用 7805 电源电路。这里使用了两节 9V 电池,一节用于为电路供电,另一节用于驱动直流电机。

在上述电路中,16×2 LCD 连接到微控制器的 PORT1,以 4 位模式运行。LCD 数据线 D4、D5、D6 和 D7 分别连接到 P1.4、P1.5、P1.6 和 P1.7,控制引脚连接到 P1.0、P1.1 和 P1.2。这里使用它来显示接收到的消息。

GSM 调制解调器的 Tx 和 Rx 引脚连接到 max232 的 13 和 14 引脚。微控制器的 TXD 和 RXD 引脚连接到电平转换器的 11 和 12 引脚。在这里,max232 是控制器和 GSM 模块之间的中介,用于转换电压电平。有关 max232 的更多详细信息,请参阅Max232 数据手册

GSM 模块需要 5V 电源。为了与 GSM 模块通信,我们需要使用串行通信(UART 协议)发送_AT 命令_。使用 9600 波特率与 GSM 模块通信。

控制器的 P2.0、P2.1、P2.2 和 P2.3 引脚连接到 l293d 的输入引脚,这些引脚用于控制两个直流电机。该集成电路的工作电压为 5V。使用这个集成电路,我们可以操作两个直流电机,其工作电压范围为 4.5V 至 36V。我们需要在 l293d 的第 8 引脚处施加电机电源。有关电机驱动集成电路的更多信息,请参阅L293D 数据手册

7. 电路工作算法

  1. 初始化 LCD 和 UART 协议
  2. 持续检查命令 +CMTI: “SM”,3(位置编号),以确定是否收到新消息
  3. 如果收到命令,则存储消息位置编号
  4. 现在读取该特定消息并提取消息正文
  5. 在 LCD 上显示提取的内容,并将其与预定义的字符串进行比较
  6. 如果匹配,则对机器人执行必要的操作
while (rx_data() != 0x0d);
while (rx_data() != 0x0a);
if (rx_data() ==+)
{
if (rx_data() == ‘C’)
{
if (rx_data() == ‘M’)
{
if (rx_data() == ‘T’)
{
if (rx_data()==’I’)
{
while (rx_data() !=,);
a = rx_data();
delay_ms(10);
tx_string(“at”);
tx_data(0x0d);
tx_data(0x0a);
tx_string(“at + cmgf =1);
tx_data(0x0d);
tx_data(0x0a);
tx_string(“at + cmgr =);
tx_data(a);
tx_data(0x0d);
tx_data(0x0a);
while (rx_data() != 0x0a);
while (rx_data() != 0x0a);
while (rx_data() != 0x0a);
for (i=0; i<15; i++)
{
read[i]= rx_data();
}
lcd_stringxy(1,0,read);
delay_ms(5000);
}
}
}
}
}

8. 如何操作?

  1. 使用 keil 软件编写 GSM 控制机器人的程序
  2. 使用 flash magic 将程序烧录到微控制器中
  3. 按照电路图进行连接
  4. 使用电源电路为微控制器提供 5V 直流电源
  5. 将 SIM 卡(用户身份模块)插入 GSM 模块
  6. 现在打开电源
  7. 使用另一部手机向 GSM 模块发送短信
  8. 现在您可以在 LCD 上看到相同的短信
  9. 如果收到的消息与任何预定义的字符串匹配,则机器人将相应地移动。

10. 电路应用

  • 该机器人可用于机器人应用
  • 可用于军事应用

11. 电路的局限性

  • 机器人部分必须有网络才能无线接收命令。
  • 由于没有密码,任何人都可以通过发送短信来操作机器人。