Stránka 1 z 1

Nano -> Wemos data pošle vždy 2x

Napsal: 16 kvě 2019, 22:53
od cevepe
Ahojte,
snažím se poslat naměřená data z Arduina NANO do Wemos D1 mini Pro, který data dále přes wifi pošle do internetu. Arduino NANO simuluji přes sériový monitor, kam pošlu číslo. Wemos číslo příjme, uloží ho na internet, avšak znovu provedete jakoby další příjmutí prázdných dat a odesílá znovu - naprázdno. Celkově tedy posílá 2x ... mou vloženou hodnotu a pak prázdné.
Nevíte proč to posílá 2x?

Dále mám dotaz na použití CHAR ... potřebuji přes seriák (RX - TX) posílat krom čísel i znaky, písmena. Co místo CHAR použít, aby to bralo třeba: 23|34.5|24%

Hrozně moc děkuji za výpomoc.

Kód: Vybrat vše

void loop()
{
  if (Serial.available() != 0)
  {
    char inChar = Serial.read();
    wifiData = WiFi.RSSI();

    Serial.print("Prijata data z NANO:");
    Serial.println(inChar);    

    WiFiClient client;
    client.setTimeout(1000);
    if (!client.connect("example.cz", 80)) {
      Serial.println(F("Na example.cz se nepodařilo připojit."));
      digitalWrite(LED_WIFI_CONN, HIGH);
      return;
    }
  
    client.println("GET /data.php?data="+wifiData+"|"+inChar+" HTTP/1.1");
    client.println("Host: www.example.cz");
    client.println("Connection: close");
    if (client.println() == 0) {
      Serial.println(F("Failed to send request with connect example.cz"));
      digitalWrite(LED_WIFI_CONN, HIGH);
      return;
    } else {
      digitalWrite(LED_SEND_CONN, HIGH);
      delay(1000);
      digitalWrite(LED_SEND_CONN, LOW);
    }
        
    
    Serial.println("Data odeslána na: example.cz/data.php?data=?????");    
  }
}

Re: Nano -> Wemos data pošle vždy 2x

Napsal: 17 kvě 2019, 09:36
od KarelBrno
Co to znamená, že přijme "prázdná" data? Není to třeba znak CR (nebo LF) z toho, že v sériovém monitoru napíšeš svůj znak a pak dáš Enter (tj. pošle se i znak toho enteru)?

Jinak pokud chceš posílat přes serial i řetězce, máš dvě možnosti - buď číst znaky a ukládat si je někam do doby, kdy Serial.available() vrací že tam něco je (pozor, mezi přečtení znaku a znovuzavolání available() musí být nějaká prodleva), nebo je číst do doby, kdy se tam objeví znak představující stop-ku (třeba char(0)).

Re: Nano -> Wemos data pošle vždy 2x

Napsal: 17 kvě 2019, 09:43
od cevepe
Přes sériový monitor pošlu: 123 ... dám enter a ono to udělá tohle ... rozkouskuje to na 1 ... 2 ... 3 ... enter. Není možné to tam prostě poslat jako jednotný výstup, jak ho zadávám tj. Prijata data z NANO:123 .... a konec?

Prijata data z NANO:1
Prijata data z NANO:2
Prijata data z NANO:3
Prijata data z NANO:

Re: Nano -> Wemos data pošle vždy 2x

Napsal: 17 kvě 2019, 09:57
od KarelBrno
Ale ten tvůj program dělá přesně to, že přijme vždy jen jeden znak a ten hned odešle přes wifi.
Musel bys místo toho si ty přijaté znaky ukládat a až když přijde např. char(13) (to bude asi ten "prázdný" znak na konci), tak uložené znaky odeslat.

Re: Nano -> Wemos data pošle vždy 2x

Napsal: 17 kvě 2019, 10:06
od cevepe
Mockrát děkuji. Netušil jsem, že to takhle přesně funguje.
Na internetu jsem našel script, kterým odeslaná data se sjednotí.

Kód: Vybrat vše

   String  readString="";
   while (Serial.available()) 
   {
     delay(2); 
     char c = Serial.read();  
     readString += c;
   }

Re: Nano -> Wemos data pošle vždy 2x

Napsal: 17 kvě 2019, 10:23
od KarelBrno
Jojo takhle by to šlo. Teda za předpokladu, že ten serial monitor odesílá vše najednou a neposílá znaky okamžitě kdy je napíšeš na klávesnici... z Arduina taky budeš potřebovat posílat ten řetězec najednou, jinak by ten čekací delay(2) nemusel stačit.

Jen pro jistotu by bylo dobré to ještě "očistit" o řídící znaky, tj. něco jako

Kód: Vybrat vše

if (c >= 32)
  readString += c; 

Re: Nano -> Wemos data pošle vždy 2x

Napsal: 29 kvě 2019, 17:22
od cevepe
Pokud bych chtěl přes seriovou linku posílat pouze data TAM, ale zpět už nikoliv .... stačí nechat zapojeno jeno RX to TX .... ale opačně kablík TX to RX nezapojovat?

Re: Nano -> Wemos data pošle vždy 2x

Napsal: 29 kvě 2019, 18:49
od kiRRow
RX je přijímací pin
TX je vysílací pin

Re: Nano -> Wemos data pošle vždy 2x

Napsal: 29 kvě 2019, 19:58
od gilhad
Ale v podstatě ano - pokud nechceš potvrzení, tak ti jeden kabel stačí