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

Punt- en hartstukken door Marc tramt
Vandaag om 19:25:26
Hengelo in 1981-1982, maar dan anders: Kassenberg in N door Mispoes
Vandaag om 19:23:35
De (3d) knutsels van Ronald. door gdh
Vandaag om 19:22:56
Welke Vallejo kleur voor drijfstangen van een DB stoomlocomotief? door Bahn-AG
Vandaag om 19:16:54
Piko NS 2015 stroomafname probleem door Ben
Vandaag om 19:08:30
Bauarbeiten im gange door ruudns
Vandaag om 18:50:26
MARDEC, de Multifunctionele ARduino dcc DECoder. door NTeering
Vandaag om 18:39:49
Mijn eerste H0-modeltreinbaan in aanbouw door aad52
Vandaag om 17:40:42
HSM D1715 door vpeters1984
Vandaag om 17:34:25
Beekdaelen in H0 door Stieven76
Vandaag om 17:17:41
Al mijn goede ideeën... door Monobrachius
Vandaag om 17:10:33
Gebruik je Arduino zonder te "programmeren" ;) door Rsd1000
Vandaag om 17:07:59
Toon hier je nieuwe (model-) spooraanwinst(en)... door Ronald69
Vandaag om 16:54:22
Ombouw/Pimpen Bolle neuzen door bollen neus
Vandaag om 15:58:15
US diorama in H0 door VAM65
Vandaag om 15:22:05
Kleine Baan in H0 (≤ 0.5m²) door Jack Black (NS1220)
Vandaag om 15:06:14
U-vorm beperkte ruimte (H0 C-rails) door Jelmer
Vandaag om 14:58:04
Onlangs gespot - gefotografeerd, de links door Jeroen Water
Vandaag om 14:33:00
N spur scenery elementen maken van gips of klei? door Dave.......
Vandaag om 14:30:06
De overeenkomst tussen een Ovaalramer en een Motorpost. door RK
Vandaag om 14:28:54
Onlangs gespot - gefotografeerd, de foto's door mass am see
Vandaag om 14:18:46
BMB-Module: “Corfe Castle Station” door Hans van de Burgt
Vandaag om 14:07:52
welk jaar ging Marklin OVP voor wagons van blauw naar wit door Railman
Vandaag om 13:40:42
GSS Jubileumbaantje (0e / 0n30) door MacArthur
Vandaag om 12:55:30
NTM P1 in Schaal-1 door MaraNCS
Vandaag om 11:39:38
Rio Grande Southern - Lizard Head Pass door Hans GJ
Vandaag om 11:30:20
Variaties op Station Zetten Andelst in HO door Duikeend
Vandaag om 10:54:40
De IJmuider spoorlijn - korte geschiedenis en plaatjes door Vislijn
Vandaag om 10:42:29
Internationale Spoor 0 en 1 dagen in Gießen, 23 en 24 maart, 2024 door bernhard67
Vandaag om 08:42:53
De Hondsrugbaan door mass am see
Vandaag om 08:15:11
  

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

spock

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

  • Online Online
  • Berichten: 4007
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: 652
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

  • Online Online
  • Berichten: 4007
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: 652
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

  • Online Online
  • Berichten: 4007
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

  • Online Online
  • Berichten: 4007
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: 652
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: 2088
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: 652
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: 652
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: 652
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