Doel:€250.00
Donaties:€50.00

Per saldo:€-200.00

Steun ons nu!

Laatst bijgewerkt
op 03-01-2024

Vacature: secretaris bestuur
Algemeen

De stichting

Recente berichten

Mijn eerste H0-modeltreinbaan in aanbouw door Wim Vink
Vandaag om 10:02:34
Perronhoogte TP3 door Rob Ellerman
Vandaag om 10:00:51
US diorama in H0 door MOVisser
Vandaag om 09:58:15
On traXS 15 t/m 17 maart Spoorwegmuseum Utrecht door MOVisser
Vandaag om 09:56:58
Bahnstrecke 5867 door Frank 123
Vandaag om 09:52:10
01TREFF 2024, 26&27 OKTOBER door sncf231e
Vandaag om 09:49:28
Zee. Land. door BartvD
Vandaag om 09:47:29
De bouw van mijn modelbaan in Thailand door Wim Vink
Vandaag om 09:36:22
Foto's gevraagd Den Haag CS, oude toestand door Pauldg
Vandaag om 09:22:33
Handmatige bediening van wissels d.m.v. stangen door spoorijzer
Vandaag om 09:04:33
Vraag over 20 voets container met vlakke zijwanden door henk
Vandaag om 09:02:16
Modelbaan Beltheim. door Hans GJ
Vandaag om 08:39:25
De spoorhaven van Zuidbarge. door mass am see
Vandaag om 08:25:21
BR 44 1263 UK Mit Borsig versuchs Wannentender 2'2'T 34. door Basilicum
Vandaag om 08:12:20
De Hondsrugbaan door mass am see
Vandaag om 08:07:49
Mijn Ned. N. Spoorbaan ''Echthoven'' door NS264
Vandaag om 07:49:38
Geluid NS Mat'46 vs NS Mat'54 door Thom
Vandaag om 02:40:57
Mallnitzer Tauernbahnstrecke ÖBB N Spoor door Schachbrett
Vandaag om 00:54:59
Bouw Bührtal III door Schachbrett
Vandaag om 00:36:33
Schneidersein door MartinRT
Vandaag om 00:00:05
NS/32 door RK
18 maart 2024, 23:49:38
Ijzeren Rijn: militair transport door ijzeren rijn
18 maart 2024, 23:03:28
Kranenberg, een exercitie in code 70 door wob
18 maart 2024, 22:14:45
EifelBurgenBahn door Reinout van Rees
18 maart 2024, 22:07:31
Loconet over TCP/IP door bask185
18 maart 2024, 22:00:49
bezetmelder aantal lengte en treinstellen door Bobos
18 maart 2024, 21:36:41
Les Billards du Vivarais door Hans1963
18 maart 2024, 21:36:19
Am Ende der Strecke, modulebaan op 1 M2 door Frank 123
18 maart 2024, 21:34:50
Resetten decoder via Twin Center Fleischmann door Pieter Bregman
18 maart 2024, 21:33:18
Digikeijs DR80010 door TBBW
18 maart 2024, 20:03:37
  

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

spock

  • Offline Offline
  • Berichten: 650
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: 3976
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
Train-Science.com
Train-Science github
It ain't rocket science ;-)

spock

  • Offline Offline
  • Berichten: 650
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: 3976
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
Train-Science.com
Train-Science github
It ain't rocket science ;-)

spock

  • Offline Offline
  • Berichten: 650
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: 3976
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
Train-Science.com
Train-Science github
It ain't rocket science ;-)

gvandersel

  • HCC!m maar toch Selectrix (RMX)
  • Offline Offline
  • Berichten: 3602
  • 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: 3976
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?
Train-Science.com
Train-Science github
It ain't rocket science ;-)

spock

  • Offline Offline
  • Berichten: 650
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: 2085
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: 650
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: 650
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


spock

  • Offline Offline
  • Berichten: 650
Re: Mijn DCC accessoiredecoder, maar dan anders. Met MySQL, en ESP32.
« Reactie #27 Gepost op: 30 september 2021, 23:48:16 »
In een ander draadje werd melding gemaakt dat het uitmaakt hoe het DCC signaal wordt aangesloten of de decoder wel of niet werkt met de NMRA dcc library.
Aangezien hier ook gebruik wordt gemaakt van deze library maar eens getest of hier ook dit probleem is.

Ik kon helaas ook het probleem reproduceren dat de decoder maar op 1 manier werkt qua dcc-signaal aansluiting.
Wel apart, want ik heb de decoder meermalen willekeurig  aangesloten en nooit dit probleem opgemerkt.

Ik gebruikte tot nog toe de versie 2.0.5 van de nmraDcc library.
Ik heb voordat ik echt in de library code ging duiken, eerst de library geupdate naar de nieuwste versie (versie 2.0.10).

En voila, het probleem is weg.

mvg spock