GSM модуль не работает после отключения питания

Я делаю проект на gsm-модуле(sim 900a неофициальный шилд), когда я отправлю SMS, светодиод загорится. после загрузки кода модуль работает нормально, а светодиод включается после отправки сообщения. Но когда я выключаю sim900a и Arduino и снова включаю, он не работает, светодиод не включается после отправки сообщения, когда я повторно загружаю скетчи, он работает нормально, это означает, что каждый раз после отключения питания мне нужно снова загрузить код, я изучение c и не имеют много знаний? Мой код правильный? Или какая-то другая неисправность?

#include <SoftwareSerial.h> //программная последовательная библиотека для последовательной связи ч/б arduino & GSM

    SoftwareSerial mySerial(8, 9);//подключаем контакт Tx GSM к контакту 8 arduino && Контакт Rx GSM к контакту № 9 Arduino

    int led = 7;
    String message;


    void setup()
    {
      mySerial.begin(9600);   // Установка скорости передачи GSM-модуля
      Serial.begin(9600);    // Установка скорости передачи Serial Monitor (Arduino)
      delay(100);

      mySerial.println("AT+CNMI=2,2,0,0,0"); // AT-команда для получения живого SMS
      delay(1000);
      pinMode(led,OUTPUT);
      digitalWrite(led,LOW);
    }

    void loop()
    {
      if (mySerial.available()>0){
      message = mySerial.readString();
      }

      if(message.indexOf("ON") > -1){
          Serial.println("LED ON");
         digitalWrite(led,HIGH);
         }
        else if(message.indexOf("OFF") > -1){

          Serial.println("LED OFF");
          digitalWrite(led,LOW);

      }

      delay(10);
    }

Схема

, 👍0


1 ответ


2

Для запуска GSM требуется время. Ваша программа должна быть намного сложнее, чем простой метод «Бросьте в нее команды и надейтесь», который вы используете.

Сначала вам нужно несколько раз опрашивать модем, пока он не ответит. Обычно это делается с помощью команды AT. Последовательность будет выглядеть так:

Send: AT
(Wait for OK response or timeout)
Send: AT
(Wait for OK response or timeout)
Send: AT
(Wait for OK response or timeout)
Send: AT
(Wait for OK response or timeout)
Recv: OK

После того, как модем загрузится и будет готов принимать команды, вы можете начать отправку команд. Вы не должны просто «распечатать и отложить», как сейчас. Вместо этого вы должны отправить команду, а затем проверить ответ, чтобы увидеть, сработала ли команда ("OK") или нет ("ERR").

,

Есть ли какая-нибудь библиотека для него на GitHub, или у вас есть заранее написанный код, который отлично работает, я не очень хорошо разбираюсь в «C», я фермер, и моя ферма находится в 3 км от моего дома, поэтому я хочу сделать воду мотор-автомат, которым я хочу управлять из дома,, @Devid

@Devid Arduino IDE поставляется с библиотекой GSM в комплекте. Я никогда не использовал его, поэтому я не знаю, работает ли он с SIM900A., @Majenko