• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Arduino ESP8266 komunikacja z serwerem (PHP i GET)

Cloud VPS
0 głosów
1,717 wizyt
pytanie zadane 5 sierpnia 2019 w Mikrokontrolery przez BanditPlayGame Użytkownik (680 p.)

Witam posiadam moduł WiFi podłączony pod moje arduino uno. Za jego pomocą chciałem zrobić stację pogodową synchronizowaną z serwerem, ale mam problemy z przesłaniem danych na serwer. 

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
  Serial.begin(9600);
  while(!Serial);
  Serial.println("to dziala");
  mySerial.begin(115200);
  //mySerial.begin(9600);
  pinMode(4, OUTPUT); 
  
  while(!wyslij("AT","OK",100))
  {
   digitalWrite(4, HIGH);
   delay(1000);
   Serial.println(mySerial.readString());
   digitalWrite(4, LOW);
   delay(1000);
  }

  
  delay(3000);
  if(wyslij("AT+CWJAP=\"Wifi\",\"Dominik1\"","OK",5000));
  Serial.println("XD");

  
  
}


String s="GET /recive.php?temp_wew=3 HTTP/1.1\r\nHost: mip.cba.pl.com\r\n\r\n";


void loop() {
  Serial.println(s.length());
   mySerial.println("AT+CIPSTART=\"TCP\",\"mip.cba.pl\",80");
  delay(1000);
  Serial.println(mySerial.readString());
  mySerial.println("AT+CIPSEND=61");
  delay(1000);
  Serial.println(mySerial.readString());
  mySerial.println(s);
  delay(1000);
  Serial.println(mySerial.readString());
  delay(10000);

  
  
}
boolean wyslij(String Komenda_AT, char *Odpowiedz_AT, int czas_czekania)
{
  mySerial.println(Komenda_AT);
  delay(czas_czekania);
  while(mySerial.available() > 0)
  {
    if(mySerial.find(Odpowiedz_AT))
    {
   
      return 1;
    }
  }
  return 0;  
}

Jest to kod na Arduino, może niezbyt schludnie napisane, ale na razie wszystko testuje i przepisuję po kilka razy dlatego może to tak wyglądać

AT+CIPSTART="TCP",#mip.cba.pl",80

ALREADY CONNECTED

ERROR

AT+CIPSEND=61

OK
> 


busy s./.C⸮C!⸮Y,⸮⸮⸮ѕ⸮5

SEND OK

+IPD,1460:HTTP/1.1 4

to dostaje w porcie szeregowym. Niby wszystko ładnie ale na serwerze i w bazie danych bez zmian.

Nie mam pojęcia czemu tak się dzieje. Kiedy wszystko wklepuje w przeglądarkę (www.mip.cba.pl/recive.php?temp_wew=100     <- to tylko jeden parametr, jest ich więcej, ale testuje to nie potrzebuję na razie więcej) to wszystko ładnie działa.

<?php
    if(isset($_GET['temp_wew']))
    {
        $temp_wew;
        $temp_zew;
        $naw_wew;
        $naw_zew;
        $gleba;

        $temp_wew=$_GET["temp_wew"];
        $temp_zew=$_GET["temp_zew"];
        $naw_wew=$_GET["naw_wew"];
        $naw_zew=$_GET["naw_zew"];
        $gleba=$_GET["gleba"];

        require_once"connect.php";

        $connect = new mysqli($host, $db_user, $db_password, $db_name);

        if($connect->connect_errno!=0)
        {
            echo"Error: ".$connect->connect_errno;
        }
        else
        {

            $connect->query("SET CHARSET utf8");
            $connect->query("SET CHARSET utf8");("SET NAMES `utf8` COLLATE `utf8_polish_ci`");

            $sql = "INSERT INTO dane VALUES (NULL, '$temp_wew', '$temp_zew', '$naw_wew', '$naw_zew', '$gleba')";
            $connect->query($sql);


            $connect->close();

        }


    }



?>

Tu jeszcze kod PHP obsługujący GET i wklepujący dane do bazy danych

komentarz 5 sierpnia 2019 przez DragonCoder Nałogowiec (36,500 p.)
Nie widze polaczenia z serwerem, zeby moc przeslac te dane, jedynie uzywanie serialportu.

https://forum.arduino.cc/index.php?topic=308481.0

Tu przyklad, jak ktos wysylal dane na serwer i tez mial problem
komentarz 5 sierpnia 2019 przez BanditPlayGame Użytkownik (680 p.)
mySerial.println("AT+CIPSTART=\"TCP\",\"mip.cba.pl\",80");

to jest połączenie z serwerem. A to co podesłałeś to chodzi o arduino ethernet, a ja używam modułu ESP2866 i trzeba używać tych komend AT
komentarz 5 sierpnia 2019 przez BanditPlayGame Użytkownik (680 p.)
Tylko że w obu tych linkach programuje się sam moduł, a ja go potrzebuję używać przez Arduino bo przez niego są sczytywane dane z czujników.
komentarz 5 sierpnia 2019 przez DragonCoder Nałogowiec (36,500 p.)
https://github.com/ekstrand/ESP8266wifi/blob/master/examples/SerialESP8266_library_test/SerialESP8266_library_test.ino

 

To biblioteka do esp, tutaj jest przyklad na dole masz wysylanie danych na serwer, ktore poda uzytkownik z konsoli. Mysle, ze mozna to przerobic i zamiast wysylac input z konsoli to wysylac dane z czujnikow. Mozesz wyslac mi linl, skad wziales ten kod do wysylania danych? Powinnienem miec gdzies moduł esp, jal znajde to sam sprobuje, a poki co zapytaj moze na stacku lub na arduino forum.
komentarz 5 sierpnia 2019 przez jankustosz1 Nałogowiec (37,000 p.)

@BanditPlayGame, Jest jeszcze inna opcja. Podłączyć jakiś mały komputerek na którym byłby program pośredniczący. (dostawałby od Arduino informację przez kabel i wysyłał zapytanie do serwera)

komentarz 5 sierpnia 2019 przez BanditPlayGame Użytkownik (680 p.)
nie posiadam małego komputerka, więc ta opcja odpada.
komentarz 5 sierpnia 2019 przez BanditPlayGame Użytkownik (680 p.)

@DragonCoder, nie wiem może coś ja robię źle ale ta biblioteka mi w ogóle nie działa. Moim kodem chociaż łączyłem się z serwerem i niby coś wysyłało, a przy tej bibliotece działa tylko łączenie się z WiFi 

komentarz 6 sierpnia 2019 przez jankustosz1 Nałogowiec (37,000 p.)

Arduino jest upośledzone jak chcesz zrobić coś bardziej skomplikowanego. Próbowałem wysyłać maile przez smtp używając arduino i większość skrzynek np. Gmail nie działało bo wymagają szyfrowanego połączenia którego arduino nie obsługuje.

W ten sposób możesz się komunikować z arduino: https://www.youtube.com/watch?v=TNLp5UV0dMI  Np. c# mógłbyś robić wszystko co chcesz bez najmniejszego problemu, nie martwiąc się o niskopoziomowość.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 323 wizyt
0 głosów
0 odpowiedzi 735 wizyt

93,487 zapytań

142,420 odpowiedzi

322,772 komentarzy

62,905 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...