编写短信时Arduino重新启动

时间:2012-05-23 13:51:30

标签: sms arduino gsm

当我尝试回复发送到机器的短信时,我的Arduino(Arduino Duemilanove克隆)重新启动。这可能是一个内存问题(它只有2048字节的RAM)?

我对变量使用的不多。只有发送工作正常。

3 个答案:

答案 0 :(得分:2)

GSM库只需不到1000个字节。你的串口用于调试(假设你使用它),另外100个左右。所以我猜你的内存不足导致调试控制台出现垃圾或者重启Arduino。

您可以根据我在Arduino Cookbook中找到的信息检查您的记忆:

int memory_free()
{
    int free_value;
    if ((int)__brkval == 0)
        free_value = ((int)&free_value) - ((int)&__bss_end);
    else
        free_value = ((int)&free_value) - ((int)__brkval);
    return free_value;
}

根据我的经验,如果返回的字节少于150个字节,则表示您遇到了麻烦。

如果最多160个字符,则将SMS的缓冲区大小减小到最小。一切正常后,将任何内容记录到调试控制台(保存超过100个字节)并增加SMS大小。您实际上可以通过发送短信来进行调试,包括内存状态。

答案 1 :(得分:2)

如果您的Arduino和GSM调制解调器使用相同的电源,那么您可以尝试使用更好的电源并重复测试。您也可以分开电源 - 一个用于Arduino,另一个用于GSM调制解调器,然后重复测试。如果GSM调制解调器靠近Arduino,您可以尝试将其移动得更远。如果在所有这些措施之后仍然发生重置,则表明您遇到了软件问题。

答案 2 :(得分:2)

如果电源和内存都正常,那么由于程序中的错误,您的Arduino正在重启。寻找迷路指针。