Doel:€250.00
Donaties:€42.50

Per saldo:€-207.50

Steun ons nu!

Laatst bijgewerkt
op 10-05-2021
Algemeen

De stichting

Recente berichten

De bouw van mijn modelbaan in Thailand door Wim Vink
Vandaag om 18:49:19
Show je realistische treinsamenstelling door HuubvG
Vandaag om 18:47:08
Korenschoven, bestaan ze in model, of zelf maken? door Thai-Bundesbahn
Vandaag om 18:44:06
Jouef wissel, kun je de aandrijving uit het zicht plaatsen? door Ferdinand Bogman
Vandaag om 18:35:27
Stoomtrein Goes-Borsele: Wat zijn we aan het bouwen door Reinier Z.
Vandaag om 18:34:12
Bouw "Bahnhofsvorfeld" door Die Bahn
Vandaag om 18:26:56
Toon hier je nieuwe (model-) spooraanwinst(en)... door ron.kraaijkamp
Vandaag om 18:20:15
Jos en Sven bouwen een nieuw H0e diorama voor Rail 2019 door Sven
Vandaag om 18:08:18
Havenbaantje, Duitse havenstad, periode 2e wereldoorlog. door Thai-Bundesbahn
Vandaag om 18:05:45
Vrije vertaling van station Arnhem jaren 80 door Ronzol
Vandaag om 17:58:33
Mijn eerste H0-modeltreinbaan in aanbouw door Thai-Bundesbahn
Vandaag om 17:55:58
Containervervoer bij Deutsche Reichsbahn door Quinzeedied
Vandaag om 17:52:34
Tolhuisje door Reinout van Rees
Vandaag om 17:43:53
Verlichting ruimte door Klaas Zondervan
Vandaag om 17:21:12
Roco BR44, onderdeel los gekomen van aandrijfasje. door Basilicum
Vandaag om 17:09:13
"Litter Bin" voor Brits spoor en Britse modelspoorprojecten door Robkop
Vandaag om 17:01:11
Team Mitropa - OHMB - Gezamenlijke modelbaan "Krommeveer" door Mitchell
Vandaag om 16:59:45
Probeersel fotodijk, door Dick55. door Dick55
Vandaag om 16:56:32
Pimp m’n ICE3, van 403 naar 406 EUROPA door Chris Westerduin
Vandaag om 16:51:54
Depot + vervolg Vlieringen-2 door spoorzeven
Vandaag om 16:50:04
Ingekleurde film over stoomtrams in de jaren 20-30 van de NZH en de GTM door Bert van Gelder
Vandaag om 16:32:38
VERPLAATST: Ingekleurde film over stoomtrams in de jaren 20-30 van de NZH en de GTM door Bert van Gelder
Vandaag om 16:31:36
Harzwald Hafen Bahn door tijgernootje
Vandaag om 16:04:33
Raadplaatje door Marc tramt
Vandaag om 16:03:21
NL baan: Frotterdam in h0 door Chrissie
Vandaag om 15:59:07
Toon hier je (model)TRAM foto's. door Hans Reints
Vandaag om 15:57:21
De bouw van een ponton met kraan door MOVisser
Vandaag om 15:52:27
Santa Maria 2.0 (H0m, 2,85 x 1,75m, Rhätische Bahn) door Leolin
Vandaag om 15:50:10
Wenen-Berlijn in dik vier uur......(over jaar of 12) door BrightonBelle
Vandaag om 15:44:40
Fotodijkje van NS1220 door NS1220
Vandaag om 15:42:04
  

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

spock

  • Offline Offline
  • Berichten: 392
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: 1389
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: 392
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: 1389
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: 392
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: 1389
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: 3590
  • 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: 1389
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: 392
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: 1153
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: 392
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 »