当我尝试回复发送到机器的短信时,我的Arduino(Arduino Duemilanove克隆)重新启动。这可能是一个内存问题(它只有2048字节的RAM)?
我对变量使用的不多。只有发送工作正常。
答案 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正在重启。寻找迷路指针。