没有计算机,Arduino代码无法执行任何操作

时间:2019-06-11 10:38:21

标签: arduino

自从过去数周以来,我一直在进行一个涉及使用GPRS模块与数据库通信的项目。

当Arduino连接到计算机时,测试进行得很好,但是当我断开连接并使用适配器将其插入墙上时,它什么也没做(网站上没有数据)。

     #include <SoftwareSerial.h>
     #include <Wire.h>
     #include <ds3231.h>

     struct ts t;

     SoftwareSerial mySerial(7, 8); //Tx & Rx sont connectés aux broches Arduino #7 et #8

     void setup()
     {
     Wire.begin();
     DS3231_init(DS3231_INTCN);
     //Commence la communication Serie
     Serial.begin(9600);
     //Commence la communication Serie Arduino-Shield GPRS
      mySerial.begin(9600);
      Serial.println("Initialisation..."); 
      delay(1000);

     mySerial.println("AT"); //Handshaking
     updateSerial();
     mySerial.println("AT+UPSDA=2,0"); //Reset connexion
     updateSerial();
     delay(2000);
     mySerial.println("AT+UPSD=2,1,\"sl2sfr\""); //Establissement de connexion avec l'APN
     updateSerial();
     delay(2000);
     mySerial.println("AT+UPSDA=2,3"); 
     updateSerial();
     delay(2000);
     mySerial.println("AT+UPSND=2,0");
     updateSerial();
     delay(2000);
        }

      void loop()
     {
        DS3231_get(&t);
        String heure = String(t.hour);
        heure += ":";
        heure += String(t.min);
        heure += ":";
        heure += String(t.sec);
      String Date = String(t.year);
       Date += "-";
       Date += String(t.mon);
       Date += "-";
       Date += String(t.mday);

       String Equipement = "STAINS";
       String Direction = "SUD-EST";
       mySerial.println("AT+UHTTP=0");
        updateSerial();
        delay(2000);
        mySerial.println("AT+UHTTP=2,1,\"www.projetwmr.site\""); // Parametrage URL d'acces
        updateSerial();              
        delay(2000);
       String command = "AT+UHTTPC=2,5,\"/add.php\",\"post.ffs\",\"vite="; // Commande d'envoi des donnes via POST sur PHP
        float Windspeed = 80; // Recuperation des données ANALOGIQUES
        // convertion valeurs en String - Chaîne de caractères
        command += String(Windspeed);
        // or convertion précise
        // command += String(Windspeed, 2);
        command += "&equipement=";
        command += String(Equipement);
        command += "&time=";
        command += String(heure);
        command += "&date=";
        command += String(Date);
        command += "&dire=";
        command += String(Direction);
        command += "\",0"; //Fin de la commande PHP POST
        mySerial.println(command);
        updateSerial();
        delay(1000);
        delay(10000);

    }

    void updateSerial()
     {
      delay(500);
      while (Serial.available()) 
      {
        mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port
      }
      while(mySerial.available()) 
      {
        Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port
      }
     }

1 个答案:

答案 0 :(得分:0)

实际上,我无法完全确定您对GPRS模块的操作,也发现您的代码存在一些问题,例如,在updateSerial中,您要检查两次串行可用性。

无论如何,断开Arduino与PC的连接不会改变任何东西,除了使用串行端口时,这是不可用的。因此,您的代码可以运行,但如果与PC断开连接,则无法正常工作。这是因为您使用的是默认的Arduino硬件序列号,该序列号应与外部设备通信(就像您的PC一样)。在您的updateSerial函数中,您正在使用while (Serial.available())检查序列的可用性,当断开序列时,它将变成false,也许它会解释“不起作用” < / strong>。