Doel:€250.00
Donaties:€122.50

Per saldo:€-127.50

Steun ons nu!

Laatst bijgewerkt
op 18-04-2021
Algemeen

De stichting

Recente berichten

Märklin 2021 H0, nieuws van de fabrikant. door Daan!
Vandaag om 00:10:54
Mijn eerste H0-modeltreinbaan in aanbouw door Wim Vink
Vandaag om 00:02:05
NS 5500 / HSM 700 spoor 0 / 1 door FritsT
07 mei 2021, 23:55:02
De bouw van mijn modelbaan in Thailand door Wim Vink
07 mei 2021, 23:46:00
Bahnstrecke 5867 door Wim Vink
07 mei 2021, 23:43:46
Mallnitzer Tauernbahnstrecke ÖBB N Spoor door Schachbrett
07 mei 2021, 23:38:17
PWM, kun je pulsen afvlakken? door NS1220
07 mei 2021, 23:08:43
De bouw van een modulebaan met Nederlands landschap. door AntonM
07 mei 2021, 22:58:05
Onlangs gespot - gefotografeerd, de foto's door Floris
07 mei 2021, 22:41:00
Artitec: Plan E, serie 2020, materieelbespreking door damngrazy
07 mei 2021, 22:39:23
Rivarossi IRM: defecte kruiskoppeling door System-M
07 mei 2021, 22:28:58
Rivarossi onderdelen bestellen door phdirk
07 mei 2021, 22:25:03
"Litter Bin" voor Brits spoor en Britse modelspoorprojecten door St00mboy
07 mei 2021, 22:24:32
Verlichting ruimte door Menno
07 mei 2021, 22:03:47
Piko Hondekop geschikt maken voor Permaloog door Klaas Zondervan
07 mei 2021, 22:00:58
Ostmühle, rangeerbaan in spoor 0 door Marc tramt
07 mei 2021, 21:54:16
Toon hier je nieuwe (model-) spooraanwinst(en)... door ingenium secundus
07 mei 2021, 21:40:07
Raadplaatje door eemstede
07 mei 2021, 21:36:53
Toon hier je (model)treinfoto's door eemstede
07 mei 2021, 21:23:08
Allereerste (voorzichtige) stapjes in scratchbuild door Pascal77
07 mei 2021, 21:21:30
Zelf bouwen. door St00mboy
07 mei 2021, 21:15:07
Toon hier je (model)TRAM foto's. door eemstede
07 mei 2021, 21:02:36
K40 Chinese lasersnijder 300x200 door Marcel112
07 mei 2021, 20:49:19
Probeersel in schaal 0, als dat maar wat wordt! door Hans1963
07 mei 2021, 20:46:50
Heen, En en Weer door Huup
07 mei 2021, 20:42:31
Opschrift verwijderen, hoe? door VAM65
07 mei 2021, 20:40:31
Spooraccessoires in diverse schalen, 3D-geprint. door spoorzeven
07 mei 2021, 20:30:37
3D/RM IG: Anycubic Photon en Resin printers voor modelbouw, gebruikservaringen door Gerco van Beelen
07 mei 2021, 20:25:18
Werkplaats - (Baanplan H0) door martijnhaman
07 mei 2021, 20:01:35
Vrije vertaling van station Arnhem jaren 80 door Niels B
07 mei 2021, 19:46:53
  

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

spock

  • Offline Offline
  • Berichten: 391
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: 1377
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: 391
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: 1377
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: 391
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: 1377
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: 3589
  • 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: 1377
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: 391
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: 1151
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: 391
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 »