该项目的主要目标是使用手机和继电器开关来远程控制家庭或公司的电器的开/关状态。设备可包括灯,风扇,泵和空调等。虽然所有家庭物品都可以自动化以更改其开/关状态,但我们的原型模型GSM遥控电路使用8个电器。

该项目包括多个用户来控制设备,并为每个应用程序使用唯一的SMS格式。开关板可以通过移动电话的SMS特征来操作,以便在家庭或办公室的电器上/关闭电器等。系统验证用户以及用户发送的消息。下面给出系统服务的选项列表。

  • Get ON/OFF状态的负载
  • 获取用户列表
  • 添加一个用户
  • 删除一个用户
  • 获取SIM账户余额
  • 重置信息反

GSM继电器控制板-电路图

GSM继电器控制板 - 电路图
GSM继电器控制板-电路图

智能开关板的特点

如果未注册的用户运行,会发生什么?

如果未注册的用户尝试操作,系统会回复模板“未注册的用户。请联系管理员。“该系统还向用户列表中的第一个用户发送短信或编程用户(如果没有添加用户)模板”试图操作开关板。“和该用户的联系人号码。以下是实时仿真输出。

程序/代码

下载程序

如何将用户添加到系统?

要将新用户添加或注册到系统,任何先前注册的用户或编程用户都应该发送号码3.作为给系统的信息。然后,用户将收到一个包含用户名和联系号码的消息模板。通过编辑并发送包含要添加用户详细信息的接收模板,系统将添加该用户。下面是用于添加用户的代码片段。

GSM继电器控制 - 添加用户的代码
GSM继电器控制 - 添加用户的代码

上面的代码将EEPROM和用户列表中的用户详细信息添加。在接收消息的相同行中编辑最多10个字符和10位连接号码的用户名,并将其发送到系统。用户将添加到系统中。以下是用于添加用户的模拟输出。现在,让我们添加前面显示的未注册的用户。

如何了解负载的开/关状态?

用户可以请求通过选项1发送负载的开/关状态1.中继状态从专用于操作继电器的输出端口读取。该数据用于帧模板,并将SMS发送到所请求的用户。绘制消息的逻辑是将“for循环”用于每个负载,然后如果数组索引到达开/关状态,则放置该负载的状态。

GSM继电器控制 -  OFF状态模板加载
off关闭状态模板

包含负载的ON/OFF状态的消息被框起来,符号' = '被用作标识符,符号' = '之后的字符被读/写为负载状态。ON状态用数字' 1 '表示,OFF状态用数字' 0 '表示。为了打开或关闭负载,需要编辑这个数字字符,并将编辑后的消息发送到系统。当系统接收到这个模板时,“=”符号的数量和符号之后的字符将被验证。如果“=”符号的数量和装载的数量不相等,或如果有一个字符后除了0或1的任何“=”符号的信息被认为是一个无效的模板和模板“无效的消息模板”选项的列表发送给用户。这个特性对新用户很有用,直到用户习惯了这个系统。

GSM中继控制-无效的消息模板通知
无效的消息模板通知

负载的名称在程序中定义,验证逻辑不考虑名称,但消息框架考虑负载的字符数。每当接收到负载开/关请求并发现它作为有效模板时,程序逻辑搜索的“=”符号和下一个字符被读取为相应的负载状态,并且它存储在加载状态阵列中。这是完成,直到读取8个负载,并且根据请求修改继电器状态。以下是用于处理来自有效用户的消息的代码片段。

GSM中继控制-读取负载控制请求和消息验证
读取负载控制请求和消息验证

如何打开/关闭负载?

响应于负载状态请求接收的相同模板用于打开/关闭负载。用户必须在此模板中编辑1和0并发送到系统。ON状态用数字' 1 '表示,OFF状态用数字' 0 '表示。以下是用于请求负载状态并打开/关闭负载的实时仿真输出。

如何获取用户列表?

由于系统仅由注册用户操作,因此需要创建用户列表。此列表存储在EEPROM中,并在每次重新启动后读取。从EEPROM读取的数据存储在微控制器的RAM中,用于用户有效性验证。移动号码的大小为10位,并与联系人姓名一起存储在二维阵列中。每当用户请求此选项时,包含包含联系人姓名和10位移动号的用户列表将发送给用户。系统被编程为存储5个用户,这可以很容易地修改。除了存储在EEPROM中的这5个用户之外,最好在程序代码中馈送联系人,以便在实时添加用户之前操​​作系统。编程微控制器后无法删除此接触。这里,用户列表的零索引被编程为永久性联系号码,并且在用户请求时未在用户列表中显示。可以再次添加相同的联系人给用户列表。

GSM中继控制-用户列表
GSM中继控制-用户列表

SMS如何处理?

这类系统的设计是基于一些预先定义的模板进行操作。因此,需要按照设计读取消息。当从用户接收到SMS时,将对SMS进行处理,以获取有用的详细信息,如联系人号码、联系人姓名,最后是消息。下面是用于SMS处理的代码片段。详细的说明,请通过我们的文章接口GSM模块-使用PROTEUS接口GSM模块

GSM中继控制-程序-读取数据从短信
程序 - 从短信中读取数据

从接收到的短信中提取数据后,验证用户是否有效。如果有效,则处理消息并执行相应的操作。如果用户当时没有注册,则发送通知。

用户如何验证?

对于每一条收到的短信,用户的联系号码都被验证,无论它是否在用户的列表中。如果联系人号码存在于列表中,则将该用户视为有效用户,并处理该消息。在另一种情况下,如果联系人号码在列表中不存在,那么就会向用户发送一条短信,说明该号码无效。用户有效性验证的代码片段如下所示。

GSM继电器控制 - 程序 - 用户有效性验证
程序 - 用户有效性验证

如何删除注册用户?

系统可以在其存储器中保持5个用户,可以通过修改程序来增加这一点。任何注册用户都可以从内存中删除用户。选项第4号专用于此目的。通过将4发送到系统作为消息,系统将用户列表与其索引一起回复。然后用户必须记住应该删除的用户的联系号码的索引,并将该索引作为模板发送。

例如,发送“RU1”来删除用户1。系统在收到这个RU模板的消息时,将读取要删除的用户的索引,并从内存(包括EEPROM)中永久地删除相应的用户。然后调整用户列表,使其没有空索引,即,如果一个索引为2的用户从包含4个用户的列表中删除,那么第4个用户将移到第二位。第四个用户的地址位置用255填充。因此,可以删除注册用户。

如果列表中只有一个注册用户,则会提醒用户,因为如果删除此用户,则系统可以仅由编程用户操作。在删除用户之后,递减用户的数量,并且结果存储在EEPROM的零位置以供将来使用。下面提供了用户删除的代码片段。

GSM继电器控制 - 程序 - 删除注册用户
程序 - 删除注册用户

如何获取SIM卡帐户余额?

GSM模块的拨号功能用于此目的。通过发送'5.“作为对系统的消息,系统理解请求帐户余额并拨打* 123 #并存储所收到的帐户对帐单。然后,系统将向请求的用户转发相同的帐户语句。系统计算它发送的消息数。发送短信后,命名为“消息计数”的变量。此消息计数与帐户余额一起发送,以便用户可以在事先上为SMS计划(如有必要)给予充值。

GSM中继控制- SIM帐户声明
GSM Relay Control - SIM帐户语句

如何重置消息数?

发送短信后,邮件计数变量递增。这是两个数字号码,并在99后重置为零。通过发送“,该变量可以故意重置为零6.'作为一条消息。使用SMS计划时,此功能非常有用。每次充电后,都可以重置,以了解系统发送的消息数。在每次发送消息之后,在EEPROM中更新消息计数,并且在消息计数重置操作之后也会更新。

EEPROM如何更新?

在大多数情况下,所使用位置的EEPROM数据将是一个十进制值255,但它也可能是一个未知值。最好是在将程序加载到微控制器时加载一个用户的详细信息,或者在存储用户列表的位置写入十进制值255。每当微控制器上电或复位时读取EEPROM数据。用户的姓名和联系号码被给定为10个地址位置的大小,而联系人列表中未使用的位置则用十进制值255填充。地址位置由用户定义。读写EEPROM数据的代码片段如下所示。

GSM继电器控制 - 读取EEPROM数据写的代码
读取EEPROM数据写的代码

下面的仿真显示了EEPROM是如何更新的。

作者

5.注释

  1. 弗朗西斯

    我真的很欣赏你使用智能板的继电器控制,我一直在寻找这样一个项目,我很高兴你提供了一个!!。我试图下载代码,但是当我尝试打开它时in my tablet it gives a message “can’t open file” please advice on how to go about it.
    提前感谢你。
    弗朗西斯

  2. Baleet Singh.

    这在atmega328p或mega2560上可以工作吗?

ezoic.报告这个广告