1

Téma: ultrazvukové čidlo HC-SR04

Ahoj,
dotaz na zkušenější, myslíte si, že by šlo nějakým způsobem připojit a ovládat např. toto ultrazvukové čidlo HC-SR04 ( http://elecfreaks.com/store/download/HC-SR04.pdf )určené pro Arduino? Má rozsah od 2cm do 4m a lze ho velice levně pořídit. Šlo by to použít v mnoha aplikacích, třeba v tolik diskutovaném měření hladiny.
Díky a SDS zdar

2

Re: ultrazvukové čidlo HC-SR04

Jestli jsem dobře četl, výpočtem dostáváme mikrosekundy, což je asi za možností SDS. nicméně dá se vypnout krokování po 1ms a pak nevím co nastane. Adamn snad poradí víc ohledně HW.

Programově by asi nebyl problém. Na D0 výstup poslat impuls, na S0 čekám odpověď, rozdíl je čas který lze přepočítat na cm (inch...). Ale ty uS budou oříšek.

3

Re: ultrazvukové čidlo HC-SR04

Fungovat by to mohlo. Na vstupu (pro spuštění měření) chtějí impuls o délce 10 usec, což by s SDS mělo jít udělat.
Pak to provede vlastní měření, a "vrátí to" puls, jehož délka je délka spouštěcího pulsu násobená změřenou vzdáleností.

Vymyslím si hodnoty pro příklad (ve skutečnosti je v PDF uvedený vzoreček):
Takže když se pošle (příklad) 1 msec puls, a vzdálenost bude 10 metrů, tak výsledný pulz bude 10 msec.
Je to pěkně vidět i na grafu, který v PDF je.

SDS ale na S0 rozhraní neměří délku pulzu (ta je pro S0 bez významu), ale vzdálenost mezi pulzy.
Takže to nakonec asi použít nepůjde (leda že by se použil nějaký mezi - procesor, který by to zpracoval, to by bylo stále přijatelně levné řešení).

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

4

Re: ultrazvukové čidlo HC-SR04

adamn napsal:

SDS ale na S0 rozhraní neměří délku pulzu (ta je pro S0 bez významu), ale vzdálenost mezi pulzy.
Takže to nakonec asi použít nepůjde (leda že by se použil nějaký mezi - procesor, který by to zpracoval, to by bylo stále přijatelně levné řešení).

No a nebo ten signál z čidla invertuju - na to mi stačí jeden tranzistor - a okamžitě to pro SDS nebude délka pulzu, ale vzdálenost mezi pulzy.....  A to už měřit umí....

5

Re: ultrazvukové čidlo HC-SR04

Povedlo se vám to čidlo už nějak zakomponovat?
Mě se to povodlo zatím na Arduinu Nano a teď bych to rád začlenil do SDS a hledám nejvodnější řeení jak na to. To Arduino tam můžu primárně nechat (na DX za necelých 5 USD) a z něj pak realizovat výstup do SDS. Napadají mě tři řešení:
1) komunikace RS 233 -  v mém případě rozhranní na SDS bohužel obsazeno pro řízení a monitorin tepelného čerpadla
2) Na Arduinu informaci převést pomocí vnitřního PWM generátoru a jednoduchého RC filru na analogové napětí a to číst pomocí analogového vstupu
3) Na Aduinu vygenerovat pulsy  které budu načítat pomocí SDS
4) spíše teooretické - k Arduinu pořídit Ethernet (či spíše nový modul s Ethernetem přímo ) a pak propojení pomocí "http_get"

Rešen 2) mi přejde nejjednodušší na realizaci,bude se tam ale zbytečně vnášet další nepesnost. Asi budu muset nastudovat to měření impulsů pomocí S0.

6

Re: ultrazvukové čidlo HC-SR04

K tomu http GET mám poznámku:
No já řeším DHT22 ( což je čidlo vlhkosti)
chtěl jsem to odeslat přes http GET na sys140, ale narazil jsem na nějaké problémy se zápisem hodnot do sys140.
Nejsem schopný zapsat načtenou hodnotu z DHT22, ale pokud pošlu jen nějaké pevně nastavené číslo v http GET zobrazí například správně 123, ale hned zatím je přidána další divná hodnota a celé je to pak ve tvaru 1236412.
SDS totiž nevezme tu hodnotu z DHT22 (ikdyž to odesílám vanásobené stvokou a jen celé číslo) přidá se tam asi nějaký znak a SDS do sys zapíše jen 0. Takže pokus o odeslání a příjem tam proběhne. Arduino možná přidává nějaký znak (ale pouze pokud chci odeslat proměnou z DHT22 (což je divné).

Taky mám jedno toto ultrazvukové čidlo doma a chci ho vrazit do studny.

nějaké ukázky kódu zde: http://forum.merenienergie.cz//viewtopic.php?id=552

7

Re: ultrazvukové čidlo HC-SR04

Díky za info, nebudu to komplikovat půjdu přes měření šířky signálu S0. Na Arduinu jsem si již připravil prográmek který generuje pulsy šírky 10ms s frekvencí úměrné změřené vzdálenosti v cm, zbývá to napojit na SDS a hlavně namontovat do jímky na dešťovku. Původně jsem na měření hladiny pořídil tlakové čidlo, které jsem zatím nezapojil, tak budu mít možnost porovnat oba druhy měření v praxi.

8

Re: ultrazvukové čidlo HC-SR04

Používáš DHT22 v SDS? Nebudeš mít program na čtení z čidla ke zveřejnění? Díky

Kdo nic nezkusí, nic nezíská.

9

Re: ultrazvukové čidlo HC-SR04

No snažím se, ale nějak se to nedaří rozchodit. viz. předchozí odpověď. Program funkční je.
Jen je někde problém u toho přidání proměnné h1, která se do SDS neuloží, zapíše se totiž jen nula (ale pokud proměnnou sys140 přepíšu na jinou hodnotu, tak se po dalším odeslání dat z arduina opět přepíše na nulu.
client.println( "GET /sdscep?p=6&sys140=1234"); tohle již funguje a zapisuje to jen 1234 a nepřidává to další znaky.
Chci to i kvůli jiným čidlům (např. čidlo tlaku BMP085....)

#include <SPI.h>
#include <Ethernet.h>
#include "DHT.h"

#define DHTPIN 2     // pin kde je DHT
#define DHTTYPE DHT22   // DHT 22  (AM2302)
byte mac[] = { nastavit zde vlastní };                                      

EthernetClient client;
char server[] = "192.168.XX.XX"; // IP SDS
int  interval = 3600; // čekání na další odeslání hodnot

DHT dht(DHTPIN, DHTTYPE);
void setup() {

  Serial.begin(9600);
  Ethernet.begin(mac);
  dht.begin();

  Serial.print("IP Address        : ");
  Serial.println(Ethernet.localIP());
  Serial.print("Subnet Mask       : ");
  Serial.println(Ethernet.subnetMask());
  Serial.print("Default Gateway IP: ");
  Serial.println(Ethernet.gatewayIP());
  Serial.print("DNS Server IP     : ");
  Serial.println(Ethernet.dnsServerIP());


}

void loop() {
  int h = dht.readHumidity();
  int h1 = (dht.readHumidity()*100); // nasobení kvůli sdsku
  Serial.print("Humidity: "); 
  Serial.print(h);
  Serial.print(h1);

  delay(1000);
  
  if (client.connect(server, 80)) {
    Serial.println("-> pripojeno");
    client.println( "GET /sdscep?p=6&sys140=");
    Serial.println( "GET /sdscep?p=6&sys140=");
    client.println(h1);
    Serial.println(h1);    
    client.println();
    Serial.println();
    //Serial.println( " HTTP/1.1");
    //client.println( " HTTP/1.1");
    //Serial.println( "Host: 192.168.1.10" );
    //client.println( "Host: 192.168.1.10" );
    //client.println("User-Agent: Arduino");
    //Serial.println("User-Agent: Arduino");
    //client.println("Content-Type: text/html");
    //Serial.println("Content-Type: text/html");
    //client.println("Connection: close");
    //Serial.println("Connection: close");
    client.println();
    Serial.println();
    client.stop();
  } 
  else {

    Serial.println("Spojení slehalo");
  }
  delay(interval);
  }
 
nějaké ukázky kódu zde: http://forum.merenienergie.cz//viewtopic.php?id=552

10

Re: ultrazvukové čidlo HC-SR04

Viz specifikace HTTP protokolu.

Tohle je špatně:

client.println( "GET /sdscep?p=6&sys140=");
client.println(h1);
client.println();

Tohle je správně:

client.print( "GET /sdscep?p=6&sys140="); // bez ln
client.print(h1); // bez ln
client.println(" HTTP/1.1"); // a podle HTTP specifikace je 0x0D 0x0A az tady !
client.println( "Host: 192.168.1.10" ); // atd. atd. atd., SDS to stejne vse ignoruje
client.println(); // a nakonec (az uplne nakonec) timto pridame druhe okamzite 0x0D 0x0A, viz specifikace HTTP

Chyba je v tom, že println v původním kódu (předchozí příspěvek) vkládá 0x0D 0x0A tam, kde ještě nepatří.

Plus nezapomeňte až na úplném konci dotazu dát dvakrát odřádkování (println), nikdy dříve to nemá být dvakrát, viz specifikace HTTP.

Samozřejmě vhodné je počkat na odpověď od SDS, jestli je to 200 OK (jinak opakovat po chvíli).

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

11

Re: ultrazvukové čidlo HC-SR04

Děkuji, ale bohužel jsem to nebyl schopen stále do SDS z arduina poslat. Arduino si načte IP a odesílá, ale v sys140 SDS se stále nic neukazuje.

  
 if (client.connect(server, 80)) {
    Serial.println("-> pripojeno");
    client.print( "GET /sdscep?p=6&sys140="); // bez ln
    client.print(h1); // bez ln
    client.println(" HTTP/1.1"); // a podle HTTP specifikace je 0x0D 0x0A az tady !
    client.println( "Host: 192.168.1.10" ); // atd. atd. atd., SDS to stejne vse ignoruje
    client.println(); // a nakonec (az uplne nakonec) timto pridame druhe okamzite 0x0D 0x0A, viz specifikace HTTP
    client.println();
    client.stop();
  } 
  else {

    Serial.println("Spojení slehalo");
  }
  delay(interval);
  }
nějaké ukázky kódu zde: http://forum.merenienergie.cz//viewtopic.php?id=552

12

Re: ultrazvukové čidlo HC-SR04

Spustťe si web server na svém PC, a současně Wireshark. Sledujte Wiresharkem co vám váš program pošle (samozřejmě ho to nechte poslat tak, aby to šlo na ten PC web server).
Odsud se pak dá pokračovat s radami dále.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

13 Naposledy upravil: sidbin (2015-09-20 13:43:58)

Re: ultrazvukové čidlo HC-SR04

No web server XAMPP a wireshark jsem na PC spustil, na PC to všechno zapisovalo do txt souboru:
20150920124917;2015-09-20;12:49:17;58
V logu Apache bylo toto:
192.168.1.52 - - [20/Sep/2015:12:49:17 +0200] "GET /test.php?vlhkDHT1=5800 HTTP/1.1" 200 168 "-" "-"
wireshark vypsal toto:

No.     Time           Source                Destination           Protocol Length Info
   4803 903.572947000  192.168.1.49          192.168.1.52          HTTP     407    HTTP/1.1 200 OK  (text/html)

Frame 4803: 407 bytes on wire (3256 bits), 407 bytes captured (3256 bits) on interface 0
    Interface id: 0
    Encapsulation type: Ethernet (1)
    Arrival Time: Sep 20, 2015 12:49:17.998685000 Střední Evropa (letní čas)
    [Time shift for this packet: 0.000000000 seconds]
    Epoch Time: 1442746157.998685000 seconds
    [Time delta from previous captured frame: 0.002481000 seconds]
    [Time delta from previous displayed frame: 0.002481000 seconds]
    [Time since reference or first frame: 903.572947000 seconds]
    Frame Number: 4803
    Frame Length: 407 bytes (3256 bits)
    Capture Length: 407 bytes (3256 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: eth:ip:tcp:http:data-text-lines]
    [Number of per-protocol-data: 1]
    [Hypertext Transfer Protocol, key 0]
    [Coloring Rule Name: HTTP]
    [Coloring Rule String: http || tcp.port == 80]
Ethernet II, Src: HonHaiPr_ab:0b:e3 (00:16:cf:ab:0b:e3), Dst: 54:34:41:30:30:31 (54:34:41:30:30:31)
    Destination: 54:34:41:30:30:31 (54:34:41:30:30:31)
        Address: 54:34:41:30:30:31 (54:34:41:30:30:31)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Source: HonHaiPr_ab:0b:e3 (00:16:cf:ab:0b:e3)
        Address: HonHaiPr_ab:0b:e3 (00:16:cf:ab:0b:e3)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Type: IP (0x0800)
Internet Protocol Version 4, Src: 192.168.1.49 (192.168.1.49), Dst: 192.168.1.52 (192.168.1.52)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))
    Total Length: 393
    Identification: 0xcc45 (52293)
    Flags: 0x02 (Don't Fragment)
    Fragment offset: 0
    Time to live: 128
    Protocol: TCP (6)
    Header checksum: 0xa973 [validation disabled]
    Source: 192.168.1.49 (192.168.1.49)
    Destination: 192.168.1.52 (192.168.1.52)
    [Source GeoIP: Unknown]
    [Destination GeoIP: Unknown]
Transmission Control Protocol, Src Port: http (80), Dst Port: blackjack (1025), Seq: 1, Ack: 62, Len: 353
    Source port: http (80)
    Destination port: blackjack (1025)
    [Stream index: 115]
    Sequence number: 1    (relative sequence number)
    [Next sequence number: 354    (relative sequence number)]
    Acknowledgment number: 62    (relative ack number)
    Header length: 20 bytes
    Flags: 0x018 (PSH, ACK)
        000. .... .... = Reserved: Not set
        ...0 .... .... = Nonce: Not set
        .... 0... .... = Congestion Window Reduced (CWR): Not set
        .... .0.. .... = ECN-Echo: Not set
        .... ..0. .... = Urgent: Not set
        .... ...1 .... = Acknowledgment: Set
        .... .... 1... = Push: Set
        .... .... .0.. = Reset: Not set
        .... .... ..0. = Syn: Not set
        .... .... ...0 = Fin: Not set
    Window size value: 17460
    [Calculated window size: 17460]
    [Window size scaling factor: -2 (no window scaling used)]
    Checksum: 0xc58a [validation disabled]
        [Good Checksum: False]
        [Bad Checksum: False]
    [SEQ/ACK analysis]
        [Bytes in flight: 353]
Hypertext Transfer Protocol
Line-based text data: text/html

No.     Time           Source                Destination           Protocol Length Info
   4804 903.573453000  192.168.1.49          192.168.1.52          TCP      54     http > blackjack [FIN, ACK] Seq=354 Ack=62 Win=17460 Len=0

Frame 4804: 54 bytes on wire (432 bits), 54 bytes captured (432 bits) on interface 0
    Interface id: 0
    Encapsulation type: Ethernet (1)
    Arrival Time: Sep 20, 2015 12:49:17.999191000 Střední Evropa (letní čas)
    [Time shift for this packet: 0.000000000 seconds]
    Epoch Time: 1442746157.999191000 seconds
    [Time delta from previous captured frame: 0.000506000 seconds]
    [Time delta from previous displayed frame: 0.000506000 seconds]
    [Time since reference or first frame: 903.573453000 seconds]
    Frame Number: 4804
    Frame Length: 54 bytes (432 bits)
    Capture Length: 54 bytes (432 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: eth:ip:tcp]
    [Coloring Rule Name: HTTP]
    [Coloring Rule String: http || tcp.port == 80]
Ethernet II, Src: HonHaiPr_ab:0b:e3 (00:16:cf:ab:0b:e3), Dst: 54:34:41:30:30:31 (54:34:41:30:30:31)
    Destination: 54:34:41:30:30:31 (54:34:41:30:30:31)
        Address: 54:34:41:30:30:31 (54:34:41:30:30:31)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Source: HonHaiPr_ab:0b:e3 (00:16:cf:ab:0b:e3)
        Address: HonHaiPr_ab:0b:e3 (00:16:cf:ab:0b:e3)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Type: IP (0x0800)
Internet Protocol Version 4, Src: 192.168.1.49 (192.168.1.49), Dst: 192.168.1.52 (192.168.1.52)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))
    Total Length: 40
    Identification: 0xcc46 (52294)
    Flags: 0x02 (Don't Fragment)
    Fragment offset: 0
    Time to live: 128
    Protocol: TCP (6)
    Header checksum: 0xaad3 [validation disabled]
    Source: 192.168.1.49 (192.168.1.49)
    Destination: 192.168.1.52 (192.168.1.52)
    [Source GeoIP: Unknown]
    [Destination GeoIP: Unknown]
Transmission Control Protocol, Src Port: http (80), Dst Port: blackjack (1025), Seq: 354, Ack: 62, Len: 0
    Source port: http (80)
    Destination port: blackjack (1025)
    [Stream index: 115]
    Sequence number: 354    (relative sequence number)
    Acknowledgment number: 62    (relative ack number)
    Header length: 20 bytes
    Flags: 0x011 (FIN, ACK)
        000. .... .... = Reserved: Not set
        ...0 .... .... = Nonce: Not set
        .... 0... .... = Congestion Window Reduced (CWR): Not set
        .... .0.. .... = ECN-Echo: Not set
        .... ..0. .... = Urgent: Not set
        .... ...1 .... = Acknowledgment: Set
        .... .... 0... = Push: Not set
        .... .... .0.. = Reset: Not set
        .... .... ..0. = Syn: Not set
        .... .... ...1 = Fin: Set
    Window size value: 17460
    [Calculated window size: 17460]
    [Window size scaling factor: -2 (no window scaling used)]
    Checksum: 0x82ab [validation disabled]
        [Good Checksum: False]
        [Bad Checksum: False]

výpis z arduina:
https://www.dropbox.com/s/g9zhr7n1k5v2aqr/serial.png?dl=0

nějaké ukázky kódu zde: http://forum.merenienergie.cz//viewtopic.php?id=552

14

Re: ultrazvukové čidlo HC-SR04

Vidím: GET /test.php?...
Ale SDS očekává GET /sdscep

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

15

Re: ultrazvukové čidlo HC-SR04

Já jsem měl na PC spuštěn ten webserver a posílal jsem data na soubor test.php který zpracoval přijatý get a zapsal ho do TXT souboru. Mám to otestovat jinak?

nějaké ukázky kódu zde: http://forum.merenienergie.cz//viewtopic.php?id=552

16

Re: ultrazvukové čidlo HC-SR04

Tak špatně jsem to povhopil :-) já jsem dělal webserver s PHP na PC. Měl jsem udělat z PC router! :-) tohle asi hledáme:
GET /sdscep?p=6&sys140=5170 HTTP/1.1\r\n

Host: 192.168.1.10\r\n
\r\n
https://www.dropbox.com/s/u3xgzqdaoq19z9x/sdsard.png

nějaké ukázky kódu zde: http://forum.merenienergie.cz//viewtopic.php?id=552

17

Re: ultrazvukové čidlo HC-SR04

Webserver na PC, ktery nedělá nic, jen tam stojí aby se k němu mohlo zařízení připojit a něco mu poslat. A to něco zachytit wiresharkem, což se nakonec povedlo. Teď bych to rád viděl jako .pcap soubor (wireshark - soubor - ulozit oznacene pakety) tzn. označit všechny TCP pakety a uložit do pcap souboru (pak pro ověření otevřít ten soubor, někdy se to nepovede uložit).

Problémů může být několik, až uvidíme ten pcap tak se to přiblíží. Důležité zřejmě bude, na kolik paketů to ten odesílatel rozloží... jestli by to nebylo lepší odeslat v jednom, tzn. pomocí jediného volání client.print(celytext).

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

18

Re: ultrazvukové čidlo HC-SR04

No popravdě mě tohle mě bylo divné, když jsem pocházel ten LOG tak mě zarazilo tohle:
https://www.dropbox.com/s/1vthr8nhb28pe03/log.png?dl=0
Protože to udělá mezeru za prvním číslem cca takhle: .....sys140=5 170....

nějaké ukázky kódu zde: http://forum.merenienergie.cz//viewtopic.php?id=552

19

Re: ultrazvukové čidlo HC-SR04

To je jen způsob zobrazení ve wiresharku, který tam tu mezeru dává aby to bylo čitelnější...
Je potřeba se podívat na jednotlivé pakety a jejich bajtový obsah. To je to co má jako jediné význam.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

20

Re: ultrazvukové čidlo HC-SR04

Poslal jsem PM.
na arduinu běžel tento program:

#include <SPI.h>
#include <Ethernet.h>
#include "DHT.h"

#define DHTPIN 2     // pin kde je DHT
#define DHTTYPE DHT22   // DHT 22  (AM2302)
byte mac[] = { MAC };                                      

EthernetClient client;
char server[] = "192.168.1.49"; // IP SDS
//int  interval = 3600; // čekání na další odeslání hodnot

DHT dht(DHTPIN, DHTTYPE);
void setup() {

  Serial.begin(9600);
  Ethernet.begin(mac);
  dht.begin();

  Serial.print("IP Address        : ");
  Serial.println(Ethernet.localIP());
  Serial.print("Subnet Mask       : ");
  Serial.println(Ethernet.subnetMask());
  Serial.print("Default Gateway IP: ");
  Serial.println(Ethernet.gatewayIP());
  Serial.print("DNS Server IP     : ");
  Serial.println(Ethernet.dnsServerIP());


}

void loop() {
  int h = dht.readHumidity();
  int h1 = (dht.readHumidity()*100); // nasobení kvůli sdsku
  Serial.print("Humidity: "); 
  Serial.print(h);
  Serial.print(h1);

  delay(1000);
  
  if (client.connect(server, 80)) {
    Serial.println("-> pripojeno");
    client.print( "GET /sdscep?p=6&sys140="); // bez ln
    Serial.print( "GET /sdscep?p=6&sys140=");
    client.print(h1); // bez ln
    Serial.print(h1);
    client.println(" HTTP/1.1"); // a podle HTTP specifikace je 0x0D 0x0A az tady !
    Serial.println(" HTTP/1.1");
    client.println( "Host: 192.168.1.49" ); // atd. atd. atd., SDS to stejne vse ignoruje
    Serial.println( "Host: 192.168.1.49" );
    client.println(); // a nakonec (az uplne nakonec) timto pridame druhe okamzite 0x0D 0x0A, viz specifikace HTTP
    client.stop();
  } 
  else {

    Serial.println("Spojení slehalo");
  }
  delay(36000);
  }
 
nějaké ukázky kódu zde: http://forum.merenienergie.cz//viewtopic.php?id=552

21

Re: ultrazvukové čidlo HC-SR04

Takže program podle .pcap (z PM) odesílá celkem 12 paketů s daty; v nich je rozkouskovaný aktuální HTTP GET požadavek.

Např.

/sdscep?p=6&sys140=4830

není odeslán v jediném paketu, ale následujících:
(1) paket: /sdscep?p=6&sys140=
(2) paket: 4830

Tomu odpovídá tento úryvek kódu:

client.print( "GET /sdscep?p=6&sys140="); // bez ln
client.print(h1); // bez ln

tzn. při každém zavolání print() se odešle jeden TCP paket.

To je poměrně nebezpečné - požadavky (hlavičky) by (ideálně) měli chodit v rámci jediného paketu, a né se kouskovat.
Šlo by zkusit toto:

 client.print( "GET /sdscep?p=6&sys140=%d", h1);

Další problém vidím u println() funkce - doporučím ji zcela nepoužívat a nahradit print() s tím, že na konec textu se dá \r\n
příklad:

 client.print("Host:192.168.1.49\r\n");

Jde o to, že zmíněný program při zavolání println() pošle 0x0D a 0x0A každý v samostatném paketu !

SDS by si s tím sice mělo poradit, ale zkuste to předělat, co se stane. Plus zkontrolovat wiresharkem.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

22

Re: ultrazvukové čidlo HC-SR04

No tohle IDE arduina neprojde, hlásí to chybu u těchto řádků:
client.print( "GET /sdscep?p=6&sys140=%d", h1"); // bez ln
client.print(" HTTP/1.1\r\n"); // a podle HTTP specifikace je 0x0D 0x0A az tady !


_24092015pokussPC:43: error: missing terminating " character
_24092015pokussPC.ino: In function 'void loop()':
_24092015pokussPC:44: error: expected ')' before 'client'

nějaké ukázky kódu zde: http://forum.merenienergie.cz//viewtopic.php?id=552

23

Re: ultrazvukové čidlo HC-SR04

Evidentně chybí jedna uvozovka

Viz rozdíl:
client.print( "GET /sdscep?p=6&sys140=%d", h1"); // spatne
client.print( "GET /sdscep?p=6&sys140=%d", "h1"); // spravne

24

Re: ultrazvukové čidlo HC-SR04

pardon, možná je správně

client.print( "GET /sdscep?p=6&sys140=%d", h1);

smile

25

Re: ultrazvukové čidlo HC-SR04

Tady to přesně píše kde je chyba:

_24092015pokussPC:43: error: missing terminating " character

tzn. ta přebývající uvozovka za h1

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !