微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有SIM 900a的Arduino-如何将所有传入消息存储到文本文件中?

如何解决带有SIM 900a的Arduino-如何将所有传入消息存储到文本文件中?

我已将Arduino Uno与SIM 900a GSM模块连接。我想将在SIM卡中收到的所有短信连续存储到GSM模块中的文本文件中。

我可以通过下面显示代码发送SMS,但是我无法接收消息并将其保存到文件中。 正确的方法是什么?

#include <SoftwareSerial.h>

SoftwareSerial mySerial(9,10);

void setup() {
  mySerial.begin(9600);   // Setting the baud rate of GSM Module  
  Serial.begin(9600);    // Setting the baud rate of Serial Monitor (Arduino)
  delay(100);
}

void loop() {
  if (Serial.available()>0)
    switch(Serial.read()) {
      case 's':
        SendMessage();
        break;
      case 'r':
        RecieveMessage();
        break;
    }
  if (mySerial.available()>0)
    Serial.write(mySerial.read());
}


void SendMessage() {
  mySerial.println("AT+CMGF=1");    //Sets the GSM Module in Text Mode
  delay(1000);  // Delay of 1000 milli seconds or 1 second
  mySerial.println("AT+CMGS=\"+9779813546162\"\r"); // Replace x with mobile number
  delay(1000);
  mySerial.println("I am SMS from GSM Module");// The SMS text you want to send
  delay(100);
  mySerial.println((char)26);// ASCII code of CTRL+Z
  delay(1000);
}

void RecieveMessage() {
  mySerial.println("AT+CNMI=2,2,0"); // AT Command to receive a live SMS
  delay(1000);
}

解决方法

Arduino不能自然地在您的主机系统上创建文件,因此您将需要

  • 在主机系统上运行一个独立程序,该程序监视串行连接并记录Arduino产生的消息(我的建议)
  • 为Arduino附加一些存储空间(例如SD卡挡板)
  • 让Arduino假装成键盘并像输入时一样输出

独立程序

这是我推荐的路线

  • 易于使用和测试(只需检查文件中是否包含所需内容)
  • 不会“弄乱”您的Arduino
  • 可以在系统上进行其他工作和测试
  • 不需要处理存储问题

这个简单的Python脚本可以满足您的需求:Serial data logging with python

This post建议您在Linux(对于Mac可能是相同的)和Windows下都使用1-liner来完成此操作,但是可能会遇到串行端口波特率的问题。如果此答案已过时或仅获得部分输出(即单行然后退出),则可以循环运行它或进一步搜索。您需要选择正确的串行端口,因为可能有几个(或者只有一个名称不同)。

附加存储空间

许多供应商都会为此出售盾牌

请注意,闪存存储可能会令人烦恼

  • 需要弹出(也许换出)卡并定期查看它以查看结果以及结果是否正确
  • 文件系统hoopla(我应该使用FAT,exFAT,ext2 ..)
  • 确保Arduino可以编写文件系统(尽管现代的防护罩可能会为您做到这一点,至少上面建议的Adafruit可以做到这一点)

键盘仿真

首先,出于以下原因,我不建议您这样做,尽管它非常简洁,并且不需要比您更多的硬件。

  • BEWARE可能会使您的Arduino无法使用,而没有一些启动门,例如等待启用开关(计算机的干草输入:无法对其进行编程)
  • 需要在运行时完全访问计算机(否则无法使用计算机)
  • 比独立的记录器更容易配置(烦扰反复试验/等待/麻烦输入)

官方文档:https://www.arduino.cc/reference/en/language/functions/usb/keyboard/

他们有与我相同的警告

使用鼠标和键盘库的注意事项:如果鼠标或键盘库不断运行,将很难对您的电路板进行编程。 Mouse.move()Keyboard.print()之类的功能将移动光标或将击键发送到已连接的计算机,并且只有在准备好处理它们时才应调用它们。建议使用控制系统来打开此功能,例如物理开关或仅响应您可以控制的特定输入。有关一些解决方法,请参考“鼠标和键盘”示例。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。