• 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)

VPS Starter Arubacloud
0 głosów
1,305 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 (35,880 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 (35,880 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 247 wizyt
0 głosów
0 odpowiedzi 461 wizyt

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...