Forum

Forum

Univerzální UDP brá...
 
Notifications
Clear all

Univerzální UDP brána

30 Posts
3 Users
3 Likes
7,321 Views
(@budulinek)
Reputable Member
Joined: 7 years ago
Posts: 355
Topic starter  

Taky se mi to stávalo. Vypadá to na nevyprázdněný buffer.

V kódu máš toto:

// read the packet into packetBufffer
Udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE);

// for debug only
// write packetBuffer to serial
Serial.print("Packet Content: ");
Serial.println(packetBuffer);

pak bys měl buffer vyprázdnit. Jinak se ti stane, že buffer přepisuješ následujícím UDP příkazem. A pokud je následující příkaz kratší, tak poslední znak(y) zůstane nepřepsaný. Proto ti tam zůstalo viset to "F" z předchozího příkazu. Já jsem někde dohledal na vyprazdňování toto. Prostě buffer přepíšeš nulama. Na čtení dalšího UDP příkazu budeš mít nachystaný prázný buffer:

for(int i=0;i<UDP_TX_PACKET_MAX_SIZE;i++) packetBuffer[i] = 0;

   
ReplyQuote
(@budulinek)
Reputable Member
Joined: 7 years ago
Posts: 355
Topic starter  

Ještě jsem se chtěl vrátit k tomu problému s napájením LAN shieldu.

Pořád se mi to nepodařilo vyřešit. Arduino Nano napájené 12V přes Vin. Pokud odpojím a připojím napájení, tak mi LAN shield nenaběhne. Zkoušel jsem to vyřešit tímhle:

Ethernet.begin(mac, ip);

while (Ethernet.hardwareStatus() == EthernetNoHardware) {
dbgln("No HW.");
delay(1000);
Ethernet.begin(mac, ip);
}

 

Ale očividně to nepomohlo. Ty jsi ty problémy s LAN shieldem vyřešil?


   
ReplyQuote
(@killeriq)
Prominent Member
Joined: 7 years ago
Posts: 816
 

Dik , skusim...

 

ten LAN som este neporiesil - zatial len rucny restart ked to nenabehne, lebo ak dam soft reboot pri boote , tak som vlastne v nekonecnom loope a to nechceme


   
ReplyQuote
(@budulinek)
Reputable Member
Joined: 7 years ago
Posts: 355
Topic starter  

Tak problém s iniciací ethernet shieldu (snad) vyřešen. Co jsem vyčetl, tak příčina je v tom, že ethernet shield se nastartuje rychleji než samotné Arduino a to mu proto nestihne poslat příkaz reset, který je na iniciaci ethernet shieldu potřeba (nebo tak nějak, nezkoumal jsem to do hloubky). Někdo to řeší kondenzátorem mezi RST a GND na shieldu. Já jsme to nakonec vyřešil tímhle kódem, který předchází samotnému Ethernet.begin. Očividně zpoždění Ethernet.begin nestačilo, bylo potřeba udělat hard reset přes pin:



int ethResetPin = {7}; // Ethernet shield reset pin (optional)

...

void setup() {

pinMode(ethResetPin, OUTPUT);
digitalWrite(ethResetPin, LOW); // tímhle se zresetuje ethernet shield
delay(500);
digitalWrite(ethResetPin, HIGH);
delay(500);
pinMode(ethResetPin, INPUT);

mac[5] = (0xED + boardAddress);
Ethernet.begin(mac, ip);

...

}

 

Odkud se vzal pin 7? Používám Arduino Nano s ethernet shieldem (W5500) pro Nano. Tenhle shield se dá resetovat přes pin 7. U shieldu pro Uno bude tohle resetování asi složitější (viz https://arduino.cz/problemy-se-startem-ethernet-shieldu-w5100-reseni/ nebo http://www.dccmm.cz/index.php/dcc-modely/jak-na-ovladani-dcc-kolejiste-tabletem-za-pomoci-arduina/2 )


   
ReplyQuote
(@killeriq)
Prominent Member
Joined: 7 years ago
Posts: 816
 

dik za tip...siel som podla http://www.dccmm.cz/index.php/dcc-modely/jak-na-ovladani-dcc-kolejiste-tabletem-za-pomoci-arduina/2

Ale potom som si uvedomil ze on to tam prepaja este s nejakou jeho doskou, takze mi to nejde...

Budem muset objednat ten kondenzator, takze zase par tyzdnov cakacka...;)


   
ReplyQuote
(@budulinek)
Reputable Member
Joined: 7 years ago
Posts: 355
Topic starter  

Ty české weby jsou asi trochu matoucí. Tady jsou obě varianty na úpravu shieldu pro Uno. Pokud se rozhodneš pro druhou variantu, měl by ti fungovat na reset shieldu ten kód, co jsem sem dával.

https://www.hobbyist.co.nz/?q=ethernet-shield-w5100


   
ReplyQuote
(@killeriq)
Prominent Member
Joined: 7 years ago
Posts: 816
 

Nasiel som si cas aby som sa s tym hral, nahodil som novy kod s reset pinom a nabieha ok.

Tak som na skusku dal stary bez pinu a nabieha tiez, jak naschval to neviem zreplikovat...

 

inac som prehodil "ethernet.begin" na koniec "void setup" a startovalo to aj bez zapojeneho kabla na resetpin. Teda teoreticky tie "pinmode" a "digitalwrite" mozno dostatocne oneskoria nabeh Arduina a tym padom to nemrzne.

Skusim teda "ETHRESET" cast odkomentovat a uvidime ci sa mi "zasek" niekedy znova prejavi ak hej, je mozne ze by stacilo dat delay medzi jednotlive skupiny Pinmode a digitalwrite. teda by som si nezabral PIN na reset.

moznost c.2 necham ten PIN na dialkovy restart.

udp

 

 


   
ReplyQuote
(@killeriq)
Prominent Member
Joined: 7 years ago
Posts: 816
 

update:

1. aby som to zreplikoval musim nechat vypnute par minut, potom to uz nenabieha ani ked dam delay atd ako som pisal vyssie

2. ked odkomentujem ETHRESET pin cast a zapojim kabel z ETHREST pinu na RESET, tak to restartuje dokola v loope.


   
ReplyQuote
(@killeriq)
Prominent Member
Joined: 7 years ago
Posts: 816
 

update 2:

ETH Shield treba odhnut RESET PIN aby sa nespajal s Arduinom , potom sa resetne iba ETH Shield a arduino nabehne.

Takze potvrdujem funkcnost...konecne 😀


   
ReplyQuote
(@killeriq)
Prominent Member
Joined: 7 years ago
Posts: 816
 

dnes mi odisiel 1-wire modul od loxone, takze som "veeelmi" nateseny.

 

Kym to s mini vyriesim, pripadne kupim novy, tak musim zatial cez Arduino rozbehat vsetky senzory.

Ked som prepojil kable na arduino tak nic nechytilo , skusal som teda po castiach a zda sa ze Arduino zvladne max 10 senzorov na 1x pin/zbernicu. Nieco take pisu aj na sedtronic stranke...

Moze mi to niekto potvrdit? Dik


   
ReplyQuote
(@budulinek)
Reputable Member
Joined: 7 years ago
Posts: 355
Topic starter  

Aha, žil jsem v představě, že Railduino používá na 1-wire dedikovaný i2c bus driver DS2482. Proto jsem z toho svého skeče vyhazoval kód týkající se 1-wire. A teď koukám, že 1-wire sběrnice je přímo připojená na pin Arduina (Railduino to má na pinu 62) a v kódu je natvrdo nastavený limit 10 senzorů.

Tak to by ten tvůj plán mohl fungovat.

V tuto chvíli má Railduino natvrdo nastavený pin 1-wire sběrnice, ale podle mě by se dal kód upravit tak, aby bylo možné dynamicky přiřadit 1-wire sběrnici (sběrnice) na jakékoliv další digitální piny. Něco jako jsem udělal s těmi DHT senzory.

Samotného by mě to zajímalo, pokud bychom to rozběhali, doplnil bych to do své "univerzální UDP brány".


   
ReplyQuote
(@budulinek)
Reputable Member
Joined: 7 years ago
Posts: 355

   
ReplyQuote
(@killeriq)
Prominent Member
Joined: 7 years ago
Posts: 816
 

ten som pozeral, len ma tam este navyse kniznice:

#include "OneWireReading.h" - tuto som nasiel priamo v Arduine
#include <TrueRandom.h> - tuto nie, iba tu https://github.com/sirleech/TrueRandomtak dufam ze je to ta spravna

--------

Tak som dal dokopy na stole 10 senzorov a ide to,
hned jak zapojim 11ty tak nenacita nic

Teda potvrdene 10ks je MAX na jednu zbernicu

U toho kodu od Sedo je random MAC,
takze mi to po restarte bude davat inu MAC/IP, lebo to mam na routri ako MAC bind.

Skor by som to chcel napasovat na svoj kod co mi kamos daval dokopy,
ale musim pockat na neho, lebo pridat tam dalsiu zbernicu je nad moc sily :/


   
ReplyQuote
(@killeriq)
Prominent Member
Joined: 7 years ago
Posts: 816
 

Ahoj,

 

Pred sezonou som opat upravoval kod pre zahradu / sklenik (v zime sa to zase nestihlo 🙂 )

A narazil som na problem ze mi zase blbol Ethernet Shield

 

1. 1-2m kabel nabiehal bez problemu

2. 3-4m kabel nenabiehal resp az po 3-4min

 

Skusal som teda riesenie s RESET ETH PIN , ale to tiez nejako nelepsilo situaciu. Potom kable rozne, vymena Shieldu, Arduino dosky, chyby v kode atd...

 

Nakoniec som nasiel riesenie , problem je v tom ze cinanci pouzili nespravny rezistor a tym to blbne. Treba to upravit a doletovat 2x 47r pripadne 100r rezistor (osobne som mal len 100r doma). 

Potom to nabiehalo na 1 sup, mam doma asi 7 shieldov a len jeden asi uplne najstarsi je s tym spravnym 49r9 rezistorom.

 

https://reedpaper.wordpress.com/2018/09/17/arduino-ethernet-w5100-how-to-fix-the-wrong-board/

https://www.youtube.com/watch?v=3n73k1HzKLo

https://www.youtube.com/watch?v=e-GuayY6ga0

 

Verim ze to niekomu pomoze, stravil som s tym niekolko hodin...

 

 


   
ReplyQuote
(@smotek7)
Member
Joined: 7 years ago
Posts: 1896
 

@killeriq no mne davnejsie blbol tento lan shield a ani som to nevyriesil.
Musim mrknut co na nom je. 


   
ReplyQuote
Page 2 / 2
Share: