マシンに送信された SMS に応答しようとすると、Arduino (Arduino Duemilanove クローン) が再起動します。これはメモリの問題でしょうか (2048 バイトの RAM しかありません)。
変数はあまり使いません。送信のみOK。
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 が再起動しています。漂遊ポインタを探します。
Arduino と GSM モデムが同じ電源にある場合は、より良い電源で試して、テストを繰り返すことができます。電源を Arduino 用と GSM モデム用に分けて、テストを繰り返すこともできます。GSM モデムが Arduino の近くにある場合は、さらに離してみてください。これらすべての対策を行った後でもリセットが発生する場合は、ソフトウェアに問題があります。