Decodoare pentru accesorii - DIY

  • In perioada urmatoare o sa vi se solicite modificarea parolei. Pana la modificarea parolei, userul poate figura ca si blocat, odata modificata parola, userul este reactivat automat.
    Pentru orice problema va rog folositi butonul "Contact"
ah, asa apar in rocrail mesajele de eroare
Cod:
15:05:45 broken socket
15:05:35 broken socket
15:05:25 broken socket
15:05:15 broken socket
15:05:05 broken socket
15:04:55 broken socket
15:04:45 broken socket
15:04:35 broken socket
15:04:35 send() failed [10053]
15:04:35 recv() failed [10053] size=1 read=0
15:04:35 recv() failed [10053] size=1 read=0
15:04:35 recv() failed [10053] size=1 read=0
15:04:35 recv() failed [10053] size=1 read=0
15:04:35 recv() failed [10053] size=1 read=0
15:04:35 recv() failed [10053] size=1 read=0
15:04:35 recv() failed [10053] size=1 read=0
15:04:35 recv() failed [10053] size=1 read=0
15:04:35 recv() failed [10053] size=1 read=0

in clipa de fata - la teste adica - nu e nimic in layout, doar esp-ul cu RN pe el
 
Sunt la serviciu, asa ca nu pot scrie prea detaliat, dar:
- macazul ar trebui sa mearga
- problema cu zgomotul pe sine se poate rezolva. Metoda se cheama debouncing si se foloseste de obicei la contacte mecanice. Eu am senzori hall, asa ca n-am implementat debouncing. Si cu toate astea, n-am avut probleme la teste, desi le-am facut cu un fir conectat la masa pentru 0 (si cu pullup-ul activat in ESP pentru 1).
- brocken socket in Rocrail n-am mai vazut pana acum, dar cam arata a probleme la comunicatia intre Rocrail si mosquitto. Nu-s pe acelasi Raspi?
- nici mesajele "<exception text " din mosquito nu le-am avut, nici de alea nu stiu ce sa zic.

Spor,
Liviu
 
nu-i problema ca nu ai timp, nu arde, take your time
nu, nu am serverul rocrail si mqtt pe acelasi rpi
pe rpi am emularea de Central Station 2 si mtt-ul
rocrail (inca) il rulez pe windows

mesajul cu broken socket mai aparea si de la decodorul facut dupa Ellrond
cel al lui Dagnall nu mi-a dat aceasta eroare niciodata
si apropos... am sapat putin prin codul lui dagnall (ca vreau sa-l simplific, e prea alambicat, vrea sa faca prea multe) si am gasit o setare care limiteaza puterea de emisie e esp-ului
probabil a bagat asta din cauza ca zicea el ceva ca vrea sa ruleze pe baterie
insa cum la mine nu e cazul, o sa scot limitarea aia si sa vad daca se mai inneaca la fel de des
 
Ai umblat la delay-ul de la sfarsitul lui loop()?
Incearca cu valori mai mari acolo, poate (incerci sa) transmiti prea des/prea mult si poate unul din capete (banuiala mea merge spre ESP) nu face fata si taie din mesaje. Asa ca la decodificare nu mai intelege receptorul ce voiai sa zici.
De modulul lui Dagnall zici ca e mai lent, poate de aia apuca sa trimita tot ce si-a propus.

Ce de poate...
 
Mi-au dat astia la serviciu o pauza, asa ca am implementat debouncingul. Eu n-am avut cum sa testez, da' poate merge. Daca mai ai chef, poti testa noua varianta de pe github.
Perioada de debouncing e setata la 100 ms, daca-ti trebuie alta valoare modifici
Cod:
uint16_t uiDebouncingCnt = 100; //100 ms debouncing
cu cat iti trebuie tie (maxim 65535).
 
acusica.... il ard imediat pe banditu de esp

intre timp am testat cu un switch "curat" si nu are nimeni nici o problema
dar cum pun vagonu pe linie si contactu nu e constant cum apar impusuri parazite
locomotiva, fiind mai grea, genereaza foarte rar genul asta de contact imperfect
dar cu vagoane usoare apar intr-o veselie

bag acum
 
Ce senzori ai? Nume, tip, foaie de catalog, schema...
Cu cat ai detalii mai multe, cu atat mai bine/interesant.
 
senzorul propriu-zis este scurt-ul care se face intre sinele marklin
la o bucata de sina izolez o parte si speculez scurtul pe care il fac rotile (la Marklin rotile sunt in scurt)
am gasit o schema apropiata cu ce am facut eu si am editat-o, e cam stangace prezentarea dar cred ca se intelege

cam asa: http://spontan.ro/images/2017/02/02/OptoBODDI.png

am testat si alte variante, unele complicate inutile, dupa parerea mea, acelasi rezultat
am "imbunatatit" putin schema de mai sus punand un condensator in paralel cu led-ul optocuplorului (nu e in schema, am uitat de el cand am desenat-o)
voi incerca sa pun o punte, in loc de o singura dioda, pentru o redresare mai buna, si aia ar trebui sa imbunatateasca rezultatele

insa am incercat, cum ziceam mai devreme, cu un switch "curat" direct pe pin-ul esp-ului
daca impulsurile sunt rare, totul e ok
dar daca apar mai multe si grupate (cum ar fi rotile vagoanelor), chiar si cu un contact curat pe esp, acesta ingheata
cateodata isi revine dar cateodata nu, ramane agatat intr-o stare, de obicei cea de "bloc ocupat"
am pus debouncing si la 1000, am marit si delay-ul, tot felul, la fel face

cred ca ar trebui sa pun relee reed si magneti pe locomotive
as avea doar un singur impuls si nu ar mai trebui sa fie probleme (dar daca il pierde?)
sau rfid (si sa limitez vitezele la nivel "safe") insa asta deja urca preturile si parca n-ar fi prea bine sa am toti senzorii cu rfid (cred ca s-ar aglomera prea tare si inutil toata treaba)

mai trebuie sa-mi ajunga maine un pachet cu bilburele arduino si stuff printre care sunt si niste senzori de curent
o sa incerc si cu ei, sa detectez curentul consumat de locomotive
insa nu prea imi place pentru ca ar fi doar la locomotive
ca sa pun si la vagoane e mai aiurea la marklin pentru ca trebuie sa le dotez cu patina de la sina a treia si nu as complica asa de tare treaba

vedem, testam...
danke
 
Vezi ca debouncingul implementat de mine functioneaza putin altfel decat ai zis tu intr-un post anterior.
Nu inhiba detectia o anumita perioada dupa o modificare, ci atunci cand detecteaza un pin modificat, asteapta perioada programata si testeaza pinul inca o data. Daca modificarea se mentine, considera modificarea valida si o transmite.

Momentan n-am nici o idee cum ai putea sa-ti "stabilizezi" circuitul.
 
Salut Seba,

mi-a mai venit o idee.
Daca mai ai chef de teste, dezactiveaza mesajele pe seriala. De felul lor astea sunt dastul de lente, si cum am folosit destul de multe, poate de aia ti se "ineaca" modulul.

E suficient sa modifici
Cod:
  if(Serial) { //serial interface ok
    bSerialOk = true;  //variable used to inhibit the serial messages in case no serial interface si available
  }
in
Cod:
//  if(Serial) { //serial interface ok
//    bSerialOk = true;  //variable used to inhibit the serial messages in case no serial interface si available
//  }
  bSerialOk = false;  //deactiveaza mesajele la seriala

in setup() si sa recompilezi.

Spor,
Liviu
 
Mulțumesc Liviu,
O să testez curând, te anunț imediat după ce o fac
Pe moment încerc o separare intre in și out, adică să am decodoare exclusiv pentru senzori și decodoare exclusiv pentru macazuri sau semnale
În sketch-ul lui Dagnal am găsit o setare care limiteaza puterea de emisie și am impresia că și din cauza aia se cam îneca varianta lui.
Ce am observat insa și cred că ar fi de ajutor, varianta lui nu înclemează la tren de impulsuri rapide și neregulate
Are și el print la serială dar nu așa de detaliat

Tnx
 
Salut Seba,

vezi ca zilele astea am modificat destul de multe in proiect.
Asta nu inseamna ca merge mai bine (desi am eliminat majoritatea mesajelor de depanare), dar daca-s probleme o sa-mi fie mai usor sa le urmaresc/repar daca folosesti ultima varianta.
Din punctul tau de vedere nu s-a schimbat mare lucru. Doar la pornire, dupa programare, nu mai e nevoie de initializare din Rocrail. Porturile sunt configurate automat ca intrari si numerotate de la 1 .. NR_PORTURI (in ordinea in care le-ai specificat in ioPins[]). In cazul meu, pentru ESP8266 am definit porturile ca
Cod:
byte ioPins[] = {4,5}; //the ESP ports used
asa ca in Rocrail pinul 4 va fi raportat ca portul 1, pinul 5 ca portul 2.
Am inceput sa lucrez si la o mica documentatie pusa in wiki. Mai are pana sa fie utila, dar e un inceput.

Spor,
Liviu
 
cu cea mai mare placere!
si nu, nu pare a fi pentru rfid (vezi linia comentata la greu de mine, WiFi.setOutputPower(0.0)) :D
codul face parte din ESPWIFIROCNETv3
Cod:
Serial.begin(115200);

  Serial.println("-----------------------------------------------------------");
  Serial.print("           RocNetNode Client  revision:");
  Serial.print(SW_REV); Serial.println();
  Serial.println("-----------------------------------------------------------");
  ////////////WiFi.setOutputPower(0.0); //sets transmit power to 0dbm to lower power consumption, but reduces usable range
  WiFiManager wifiManager;  // this apparently does not use eeprom to store ssid  !!
  //reset settings - for testing
  //wifiManager.resetSettings();

  wifiManager.autoConnect("ROCNODE ESP AP");  //ap name (with no password) to be used if ssid password not stored/found
  //if you get here you have connected to the WiFi
  ConnectionPrint();
  ipBroad = WiFi.localIP();
  subIPH = ipBroad[2];
  subIPL = ipBroad[3];
  wifiaddr = ipBroad[3];
 
Asta facem toți... Sau unii...
Înainte nu aveam deloc documentație și munceam să scoatem o schema electrica din te miri ce reviste... Dura câteva zile...
Acum citim documentații să pricepem softurile. Durează cam o săptămână... :D
Progres!!

Fac și eu haz de necaz... Vreau o barca, cu vele... Să mă duc în lumea larga! :D
 
Salut,
ieri si azi am mai lucrat putin la proiectul asta, asa ca daca vrei sa mai testezi, as zice sa-ti "procuri" ultima varianta.
Am mai testat si eu cu Launchpad-ul si butoanele/ledurile de pe el functioneaza OK. Nu stiu ce as putea modifica sa mearga si la tine bine.

Spor,
Liviu
 
Liviule, trebuie sa te scot la o bere, la cat butonezi la astea! :D
BTW, de unde esti? sau pe unde esti acum?

cand m-ai pus sa-ti zic de senzorii pe care ii am mi-am dat seama ca am facut o greseala
am pus C-ul pe led-ul optocuplorului in loc sa-l pun pe iesirea lui
acum am modificat cateva input-uri cu un C de 10uF direct pe pinul ESP-ului si fara rezistenta de pull-up
am obtinut exact ce vroiam sa faca softul, doar ca nu am perioada reglabila
cu C de 10uF senzorul revine in startea initiala (dupa ce a disparut activarea) cam dupa 0.5-0.7 sec, ochiometric
atenueaza toate impulsurile parazite, nu mai chinuie ESP-ul cu trenul ala de impulsuri de pe input, rezultatul: nu se mai blocheaza

pe moment am in circuit un decodor "dagnall" si unul "ellrond"
maine, daca o sa am timp, bag in teste si un decodor "Liviu" :D

o alta chestie, observata in teste, conteaza al dracului de mult conexiunea wireless
cand faceam teste tineam sina/macazul C-Gleis pe masa, adica pe la vreun metru inaltime
toate bune si frumoase pana le puneam pe jos, pe pardoseala
se pare ca influenteaza si ma gandeam sa mai bag un router (repeater) wireless in aceeasi camera cu layout-ul

cred insa ca mai e o varianta care poate mai pune un plasture pe rana: QOS-ul
ce QOS se foloseste? ce tip? QOS1? 2?
nu am sapat prea adanc dar parca tin minte ca un QOS de tip 1 doar trimite pachetul catre broker fara sa ceara si confirmare
si cred ca asta se intampla la mine - cateodata - cand blocul nu mai este ocupat dar rocrail il vede in continuare ca si ocupat (din cauza ca nu ajunge pachetul cu schimbarea de stare in mqtt)
ma gandeam ca un qos de tip 2 (sau care e ala cu confirmarea de primire) ar rezolva si problema asta

seara placuta... sau.. noapte buna, mai degraba! :)
 
Salut Seba,
sebba a spus:
Liviule, trebuie sa te scot la o bere, la cat butonezi la astea! :D
Butonez ca-mi place, nu-s obligat. ;-)
sebba a spus:
BTW, de unde esti? sau pe unde esti acum?
Capsunar. :D
sebba a spus:
rezultatul: nu se mai blocheaza
Felicitari!
sebba a spus:
Ellard.
sebba a spus:
maine, daca o sa am timp, bag in teste si un decodor "Liviu" :D
Daca reuseti, posteaza-ti impresiile, te rog.
sebba a spus:
ce QOS se foloseste? ce tip? QOS1? 2?
Biblioteca folosita si de mine si de Dagnall (PatSubClient) stie numai QOS0.

Noapte buna!

LE Am "sarit" peste partea cu routerul. Daca tot vrei sa folosesti totul fara fir, poate ar fi bine sa-ti faci o retea dedicata, cu router propriu si fara internet.
 
Așa, qos0, dracu sa le ia...
Să înțeleg că nu există biblioteca cu suport pentru qos1?

Da, mă gândeam să fac rpi-ul AP, separat d restul dar înainte de asta trebuie să fac un backup și să instalez pe RPI si severul de rocrail, să fie toate acolo

Noapte bună