Doel:€250.00
Donaties:€177.50

Per saldo:€-72.50

Steun ons nu!

Laatst bijgewerkt
op 16-06-2021
Algemeen

De stichting

Recente berichten

Hoe Assen er met een gloednieuw treinstation voor wil zorgen....... door Jan-Peter
Vandaag om 01:23:20
Wat is de vereiste minimum boogstraal bij spoorwegen oor 160km/h ? door Sikje248
Vandaag om 00:22:22
BMB 00-modulebaan, Beveiliging door Marcel112
27 juli 2021, 23:38:45
NCS 7/8 tot NS 61 62 Maffei lok in spoor 0 door FritsT
27 juli 2021, 23:02:53
Een secundair lijntje in de Puy de Dome en de (Haute) Loire anno 1968 door mwdb
27 juli 2021, 22:49:38
Raadplaatje door HIJ
27 juli 2021, 22:44:36
Harzwald Hafen Bahn door Aford
27 juli 2021, 22:44:05
Oneindige Overslag 0e RC door EricZmS
27 juli 2021, 22:33:02
Koperdieven slopen in Niederau (DE) gestalde elektrische locomotieven! door 1200blauw
27 juli 2021, 22:17:58
Mijn eerste H0-modeltreinbaan in aanbouw door 1200blauw
27 juli 2021, 22:08:44
Nederlands station (Groningen) in model. Wie heeft interesse? door MOVisser
27 juli 2021, 22:06:41
Videoserie: Rocrail voor beginners door Arnold
27 juli 2021, 21:54:26
Mallnitzer Tauernbahnstrecke ÖBB N Spoor door Schachbrett
27 juli 2021, 21:46:17
Gezocht: samenstelling van olietrein Pernis-Drenthe. door Marcel112
27 juli 2021, 21:31:37
Geschikte kabel voor 2 compoorten? door MRdirect
27 juli 2021, 21:25:07
Alt Wutachbahn - Sau-Schwänzle-bahn Weizen - Zollhaus - Blumberg door Eric v C
27 juli 2021, 21:22:58
Schorumdijk Gem. Vaagburg 1940-1960. (Jaren ‘40-‘60 baan met haventje) door tijgernootje
27 juli 2021, 21:20:54
BNLS-Module: "Rvbr-Btk, Ringvaartbrug Haarlemmermeer nabij Buitenkaag" NS H0 door Marcel112
27 juli 2021, 21:16:51
De bouw van mijn modelbaan in Thailand door Rolando
27 juli 2021, 21:07:58
Gezocht: STL-file, voor een stootblok in N door MOVisser
27 juli 2021, 20:43:49
Fleischmann BR 89 008 met Fleischmann decoder rijdt slecht (niet) door heuvelbaan
27 juli 2021, 20:24:54
Great Australian Railways: The Ghan door Jeronimos
27 juli 2021, 20:12:12
GVBA 396 messing model door hrp
27 juli 2021, 19:48:17
Artitec Mat '54, materieelbespreking. door Niels B
27 juli 2021, 19:29:06
Werkplaats - (Baanplan H0) door Eric B
27 juli 2021, 19:18:03
Onlangs gespot - gefotografeerd, de foto's door Floris
27 juli 2021, 19:04:22
Kortsluiting wissel en vaste kruising door Ronald Halma
27 juli 2021, 18:38:28
Toon hier je nieuwe (model-) spooraanwinst(en)... door NS1220
27 juli 2021, 18:31:08
Tams FD/ledfunctiedecoder programmeren. door Ronald Halma
27 juli 2021, 18:29:41
Aansluiting en werking ROCO 10764 o.a. als booster door PeterNS
27 juli 2021, 17:54:29
  

Auteur Topic: Mijn DCC accessoiredecoder, maar dan anders. Met MySQL, en ESP32.  (gelezen 2136 keer)

spock

  • Offline Offline
  • Berichten: 406
Re: Mijn DCC accessoiredecoder, maar dan anders
« Reactie #15 Gepost op: 21 april 2021, 22:10:20 »
Overigens denk ik dat je dat amateur wel weg mag laten. Iemand die een MySql database optuigt en daar in een data schema definieert en de data koppelt aan de Klassen die op een ESP uitgerold zijn, is wat mij betreft dat stadium al voorbij. Overigens dit deel is ook precies waar ik de meeste interesse in heb. Misschien wat code voorbeelden?

Dank je wel voor het compliment.

Het opvragen van SQL met een ESP32 kan als volgt:

// Gebruikte library: MySQL_MariaDB_Generic

#include <MySQL_Generic_WiFi.h>

const char QUERY_POP_diensten[] = "SELECT DISTINCT accessoire.accDIENST,dienst.dienstNAAM,dienst.dienstNUMSTATES  FROM accessoire LEFT JOIN dienst ON accessoire.accDIENST = dienst.dienstID WHERE accessoire.accNODEID = %d ORDER BY accessoire.accDIENST ASC;";

void runQueryDienst(void)
{
    int funcstatus;
    funcstatus = 0;
    aantallokalediensten = 0;
    sprintf(query, QUERY_POP_diensten, node_id);
    openSQL();
    MySQL_Query query_mem = MySQL_Query(&conn);
    if ( !query_mem.execute(query) ) {  // Start de query
        Serial.print(F("Querying error : ")); 
        Serial.println(query);
        sqlleesfout = true;
        return;
    }
    row_values *row = NULL; // Lees een regel
     while ((row = query_mem.get_next_row()) != NULL) {
        strncpy(strtmp,row->values[1],29); strtmp[29] = '\0'; // copieer de naam van de dienst en terminate de string
        melddienstaan(atoi(row->values[0]),strtmp,atoi(row->values[2]));  // meld de dienst aan, [0] is global dienstid, [2] aantal states
    }
   sluitSQL();
}

Deze code is vereenvoudigd en opgeschoond voor de duidelijkheid.

mvg spock

bask185

  • Offline Offline
  • Berichten: 1550
Re: Mijn DCC accessoiredecoder, maar dan anders
« Reactie #16 Gepost op: 21 april 2021, 23:01:28 »
Spock,

Per toeval ben ik vandaag op iets gewezen in mijn eigen ontwerp.

Je kan natuurlijk zonder moeite 128 inputs maken met de MCPs. Maar Gerard van Stel wees op het idee om de matrix methode te gebruiken om toetsen in te lezen.

Met 8 IO pinnen kan je dus 16 schakelaars inlezen. En als je alle 16 IO pinnen gaat multiplexen met elkaar kan je 64 pinnen inlezen met 1 MCP23017.


Ik denk niet dat het handig voor jouw is, omdat je serieuze dingen in je code zou moeten aanpassen en jij waarschijnlijk wel uit de voeten komt met 128 IO + je code was ook al af. Maar wie weet heb je er ooit iets aan  :P

Mvg,

Bas

spock

  • Offline Offline
  • Berichten: 406
Re: Mijn DCC accessoiredecoder, maar dan anders
« Reactie #17 Gepost op: 21 april 2021, 23:29:41 »
Hallo Bas,

Bedankt voor het delen. Ik heb deze schakeling al eens eerder met een handheld apparaat en een arduino nano gebruikt.

Ik wil niet negatief overkomen, maar voor de decoder voegt het weinig toe omdat 127 inputs al overkill is. Ik wil de i2c bus zo vrij mogelijk houden voor het aansturen van de uitgangen in plaats van het aansturen en pollen van de ingangen. Qua kosten zie ik ook weinig voordelen.  Als de je kosten meerekend voor 64 knoppen dan is de prijs van een paar extra MCP's verwaarloosbaar.

Ik ga mijn tijd steken in het aanmaken van nieuwe diensten (AHOB en dwergsein). Net de dienst "Zwaailicht met flits" klaar.

mvg spock

bask185

  • Offline Offline
  • Berichten: 1550
Re: Mijn DCC accessoiredecoder, maar dan anders
« Reactie #18 Gepost op: 22 april 2021, 09:22:07 »
omdat 127 inputs al overkill is
Ja dat vermoedde ik al  ;). Ik weet nog niet of het voor mij ook afdoende is, maar dat is voor jou natuurlijk niet van belang  :P

Citaat
Ik ga mijn tijd steken in het aanmaken van nieuwe diensten (AHOB
Ik heb eerder een simpel K&K programma voor een ahob voor met 1 of 2 sporen geschreven. Misschien dat er iets van waarde in staat voor je? Als je alle digitalRead(), digitalWrite() en servo.write() functies vervangt door die van je zelf zou het ook met de MCPs en PCAs kunnen werken.

In ieder geval, ik volg het met interesse. Ik zie wel wat je er van maakt  (y)

Mvg,

Bas

spock

  • Offline Offline
  • Berichten: 406
Re: Mijn DCC accessoiredecoder, maar dan anders
« Reactie #19 Gepost op: 22 april 2021, 10:32:24 »
Hallo Bas,

Bedankt voor het meedenken.
Ik kan de software niet gebruiken omdat ik de dienst niet in de taal C schrijf maar in de statemachine.
De code en de configuratie van een dienst staan in de database (alweer die zin  ;)).

Als voorbeeld de dienst "Zwaailicht met flits".


De codes die in het blauwe kader staan zijn de recepten. De bovenste tabel komt in de dienstparameter database.
Dit heeft als voordeel dat, als ik later een frontend schrijf voor de configuratie, ik dan ga refereren aan de omschrijving in plaats van registers. Dus geen CV237786=4 meer, maar "IntensieFlits". Alle parameters kunnen per machine apart ingeregeld worden.

mvg spock

bask185

  • Offline Offline
  • Berichten: 1550
Re: Mijn DCC accessoiredecoder, maar dan anders
« Reactie #20 Gepost op: 22 april 2021, 12:48:34 »
State machines staan er ook bij  :police:, maar die staan in .graphml formaat. Ik maak simpele bollendiagrammen in yEd.

Ik ben op het werk mensen ook aan het 'motiveren' om het te gebruiken. Bollendiagrammen zijn een goede manier van communiceren tussen software en hardware mensen.

Bas

gvandersel

  • HCC!m maar toch Selectrix (RMX)
  • Offline Offline
  • Berichten: 3591
  • Als het maar elektrisch is.
    • Homepage Gerard van der Sel
Re: Mijn DCC accessoiredecoder, maar dan anders
« Reactie #21 Gepost op: 22 april 2021, 15:37:28 »
Hoi Spock,

Interessante zaken die je aan het maken bent. Doet mij denken aan een ooit door mij gemaakte tekening generator. Stond ook alles in een database. Ik heb de heren tekenaars nog nooit zo horen vloeken.
Echter ik blijf met een vraag zitten. Hoe maak je de laatste stap en waar. Van 'recept' naar code voor de machine.
Overigens als je alleen assescoires wil aansturen, zou je kunnen overwegn om je bus van DCC om te zetten naar een van de andere bussen. Die zijn vaak wel bidirectioneel. Kun je net zoveel parameters uitlezen als je wilt.

Verder nog een opmerking. DCC is niet zo snel, hoe breng je al die data voor de recepten en de recepten over van de centrale computer naar de randapparaten.
Voor een beetje modelbaan heb je gauw een stuk of wat assessoires nodig. Als die bij de opstart iedere keer geprogrammerd moeten worden,

Groet,

Gerard van der Sel.
Holzburg (IIIb/IVa) schaal N.
Kijk ook eens bij de bouw en lees de avonturen.

bask185

  • Offline Offline
  • Berichten: 1550
Re: Mijn DCC accessoiredecoder, maar dan anders
« Reactie #22 Gepost op: 22 april 2021, 15:39:47 »
Een 2e DCC bus zonder locomotieven kan misschien een uitkomst bieden? Accesoire instructies worden volgens mij niet herhaald en zijn zodoende sneller dan instructies voor locs?

spock

  • Offline Offline
  • Berichten: 406
Re: Mijn DCC accessoiredecoder, maar dan anders
« Reactie #23 Gepost op: 22 april 2021, 19:06:01 »
Echter ik blijf met een vraag zitten. Hoe maak je de laatste stap en waar. Van 'recept' naar code voor de machine.

De vertaalslag van recept naar code wordt verzorgt door de statemachine. Dat is code welke in de decoder draait. Een recept bestaat uit een commando met 3 parameters. De recepten worden regel voor regel uitgelezen en uitgevoerd.
 


Overigens als je alleen assescoires wil aansturen, zou je kunnen overwegen om je bus van DCC om te zetten naar een van de andere bussen. Die zijn vaak wel bidirectioneel. Kun je net zoveel parameters uitlezen als je wilt.
DCC is niet zo snel, hoe breng je al die data voor de recepten en de recepten over van de centrale computer naar de randapparaten.
Voor een beetje modelbaan heb je gauw een stuk of wat accessoires nodig. Als die bij de opstart iedere keer geprogrammeerd moeten worden,

DCC is alleen een inputsignaal voor DCC commando's. De decoder haalt zijn configuratie elke keer op bij het opstarten via Wifi. Dat klinkt over de top, maar daardoor kun je eenvoudig nieuwe diensten uitrollen en verbeteren zonder dat de decoder opnieuw geprogrammeerd hoeft te worden. Ik maak hier de volgende onderscheid. Programmeren is het veranderen van firmware en configureren is het veranderen van de instellingen (de data uit de database). Het opstarten is vrij snel gebeurd. Het connecteren naar het wifi netwerk en het ophalen van zijn configuratie duurt ongeveer 20 seconden.
Het concept van de decoder is anders. Het zijn geen losstaande ongecontroleerde apparaten, maar de configuratie wordt centraal opgeslagen. Er kan met 1 commando alles gebackuped worden op de database server.  In die backup zitten dan de machine's, diensten, en de instellingen (intensiteiten van de led's, servo uitslagen, etc). Als de decoder door een defect vervangen moet worden, dan hoeft alleen de nieuwe decoder het id van de vorige decoder te krijgen en bij de volgende reboot van de decoder werkt alles weer (zonder dat er iets opnieuw afgeregeld hoeft te worden). Ik vind die opstartijd niet zo'n bezwaar, de Ecos 2 doet er langer over om te booten.


mvg spock




meino

  • Offline Offline
  • Berichten: 1211
Re: Mijn DCC accessoiredecoder, maar dan anders
« Reactie #24 Gepost op: 22 april 2021, 20:56:28 »
Dank je wel voor het compliment.

Het opvragen van SQL met een ESP32 kan als volgt:
......
mvg spock

Dank voor het voorbeeld. Ik had zelf ook al het een en ander gevonden. Ik blijf het een interessante exercitie vinden, vooral het concept van recepten met een generieke "finite state machine". Eigenlijk is het een uitwerking van een een Turing machine zoals Alan Turing oorspronkelijk beschreven heeft.

Groet Meino
A clean desk is a sign of an empty mind

Kranenberg
De CanBus komt naar Kranenberg

spock

  • Offline Offline
  • Berichten: 406
Re: Mijn DCC accessoiredecoder, maar dan anders. Met MySQL, en ESP32.
« Reactie #25 Gepost op: 27 april 2021, 20:40:00 »
De diensten dwergsein en ahob zijn aangemaakt. Waar de dienst dwergsein binnen 10 minuten klaar was (ik had namelijk 10 minuten nodig om uit te zoeken dat dwergsein hetzelfde is als een ns-sein) was de AHOB toch even een ander verhaal.
Ik ben begonnen om voor de AHOB 1 dienst te maken waar alle functionaliteit in zat. Dat blijkt in de praktijk in een statemachine toch iets ingewikkelder te zijn dan eerst gedacht. Toen bedacht ik me dat de decoder al is opgebouwd om diensten zelfstandig parallel van elkaar uit te voeren.

Een Ahob bestaat eigenlijk uit een paar losse onderdelen
knipperlampen van boom en sein
2 servo besturingen voor de bomen
een constant brandende lamp aan het einde van de boom.
een signaal voor een geluidsmodule.

Ik heb een extra taak aangemaakt waarmee er een andere machine (met mode) aangeroepen kan worden.
De dienst voor de servo was er al en de dienst voor het afwisselend knipperen is extra aangemaakt.
Er is een hoofd AHOB dienst aangemaakt die de andere diensten op de juiste tijd aanstuurt.

De dienst behelst in totaal 23 parameters om hem naar smaak in te kunnen regelen, waarvan er 6 verplicht gedefinieerd moet worden (de pin aansluitingen).

Het was een leerzame exercitie.

mvg spock
« Laatst bewerkt op: 27 april 2021, 21:22:27 door spock »

spock

  • Offline Offline
  • Berichten: 406
Re: Mijn DCC accessoiredecoder, maar dan anders. Met MySQL, en ESP32.
« Reactie #26 Gepost op: 22 mei 2021, 14:47:17 »
Er is weer wat voortgang in het project.

Er is veel tijd gaan zitten in de vele punten op de vele i's.

Om even een indruk te geven hoe het er nu uitziet een paar foto's.

De decoder terwijl deze boot en de data uit de database haalt.



Het scherm als deze operationeel is.



Er staan een aantal gegevens in het scherm.
Het decoder id
Het ipnummer
Aantal gevonden uitgangen en de maximale aantal aan te sluiten servo's
Een knipperende hartslag om te zien of deze wel of niet hangt
En eventuele foutmelding(en)


De decoder heeft een wifi interface en daarmee is het mogelijk om een webserver te maken.
Ik had al een paar losstaande websites gemaakt en deze zijn nu zo aangepast dat het een logisch geheel is.

Om te beginnen de hoofdpagina



Er is een eenvoudige stelpunt pagina waar de machine veranden kan worden om even te testen. Dit is een pagina bedoeld voor gebruikers.


Rood geeft de huidige status aan. Er worden alleen de hoofd machines getoond. Bijna alle tekst in de knoppen komt uit de database. Alleen als er geen passende tekst gedefinieerd is wordt er een standaard tekst getoond.

In de hoofd pagina kan voor ouderhoud gekozen worden. In deze eenvoudige pagina worden alle machines getoond (hoofd en sub machines). Deze pagina is voor de techneuten bedoeld  ;D.


De instellingen van een machine kunnen bekeken worden onder de [parameters] knop.

Dan worden alle parameter van de machine getoond inclusief de waardes.

Wil je de parameter wijzigen druk op [Wijzig]

Hier kan de parameter gewijzigd worden.

Druk je op [Accepteer] dan wordt de waarde in het geheugen weggeschreven EN naar de database.

Door deze uitbreiding is de decoder een stuk gebruiksvriendelijker geworden.

De stabiliteit is nu best wel goed. In het begin had ik daar best wel twijfels over want een reboot na een paar minuten was niet ongewoon. Op dit moment werkt de decoder meerdere dagen zonder problemen.

Het wordt tijd om over de hardware na te gaan denken.

mvg spock