Arduino在编写SMS时重新启动
我的Arduino(Arduino Duemilanove克隆)在我尝试响应发送到机器的短信时重新启动。这可能是内存问题(它只有2048字节的RAM)Arduino在编写SMS时重新启动,sms,arduino,gsm,Sms,Arduino,Gsm,我的Arduino(Arduino Duemilanove克隆)在我尝试响应发送到机器的短信时重新启动。这可能是内存问题(它只有2048字节的RAM) 对于变量,我不使用那么多。仅发送工作正常。GSM库占用的字节略少于1000字节。您用于调试的串行端口(假设您使用该端口),另外大约100个。因此,我猜您的内存不足,导致调试控制台出现垃圾或重新启动Arduino 您可以根据我在Arduino烹饪书中找到的信息,使用以下代码检查内存: int memory_free() { int free
对于变量,我不使用那么多。仅发送工作正常。GSM库占用的字节略少于1000字节。您用于调试的串行端口(假设您使用该端口),另外大约100个。因此,我猜您的内存不足,导致调试控制台出现垃圾或重新启动Arduino 您可以根据我在Arduino烹饪书中找到的信息,使用以下代码检查内存:
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字节,您就有麻烦了
如果SMS的缓冲区大小最大为160个字符,请将其减小到最小。一旦一切正常,将日志记录切换到调试控制台(保存超过100字节)并增加SMS大小。实际上,您可以通过发送SMS(包括内存状态)来进行调试。如果您的Arduino和GSM调制解调器位于同一电源上,则可以尝试使用更好的电源并重复测试。您也可以分离电源-一个用于Arduino,另一个用于GSM调制解调器,然后重复测试。如果GSM调制解调器靠近Arduino,您可以尝试将其移远一点。如果在所有这些措施之后仍然发生重置,则表明您有软件问题。如果电源和内存正常,则由于程序中的错误,您的Arduino正在重新启动。寻找散乱的指针。在只发送或只接收的程序中工作正常,如果是电源问题,则无法工作。我不想拔掉GSM屏蔽,让caThis看起来就是它,GSM库内存不足