MJ och solsken

Påskhelgen har varit produktiv och avkopplande. Det blev en del trädgårdsarbeten gjorda i solskenet, men även en del MJ-aktiviteter.

Dels har jag målat om en gammal Fleishmann kranvagn så den ska likna SJs kran. Det är ju mycket som inte stämmer med förebilden, men i detta fall har jag bestämt mig för att helt ignorera det. Jag känner för att ha ett arbetståg att köra omkring med, så detta får vara “good enough”.

Läs mer

100% trådlös styrning

Nu har jag kommit så långt att styrningen kan göras helt trådlös. Jag har alltså ordnat så att all elektronik drivs av laddbara batterier.

Batteri-utmaning

Det har varit en del funderande kring användningen av batterier. Jag upptäckte nämligen att fyra fulladdade batterier ger mer än 6V ut och det klarar inte Wemos-klonen (kretskortsdatorn) riktigt av. Att istället använda tre batterier ger nackdelen att de kommer under 5V när de börjar laddas ur.

Lösningen blev att köpa ett litet reglerkort som klarar 2.7 – 11.8 V in och alltid ger 5V ut. Med en sådan krets kan jag få mer flexibilitet, men det lägger 60 kr på priset för styrningen.

Läs mer

Nu fungerar MMRC

Nu har jag äntligen fått igång växelstyrningen så som jag tänkt mig! Efter lite strul och mycket provande kan jag nu styra två stycken växelservon både lokalt och via trådlöst nätverk.

Allting fungerar nu som det ska. Först det grundläggande som var klart sen tidigare:

  • Växelns bägge lysdioder blinkar simultant när strömmer slås på, för att indikera att kortet inte vet i vilket läge växeln ligger.
  • Ett första tryck på knappen gör att växeln går till normalläge.
  • Under omläggningen av växeln blinkar lysdioden för det valda växelläget.
  • En fast lysande lysdiod visar vilket läge växel ligger i.
  • De båda växlarna kan hanteras oberoende av varandra, så även då lysdioderna.
MMRC-klienten på testbänken

Fler funktioner

Ovanstående är nu kompletterat med följande funktioner:

  • Växelarnas läge kan styras trådlöst, t.ex via en MQTT-app eller en helt egen lösning.
  • Styrkortets status, namn, funktioner etc kan man läsa av trådlöst via MQTT.
  • Kan inte styrkortet koppla upp sig mot nätverket, går det in i “webserver-läge” och visar en webbsida med möjlighet att ange SSID och lösenord.
Information och styrmöjligheter via en app

Fortfarande är det en del funktioner och inställningar som definieras i programkoden, så man måste kunna programmera en Arduino för att använda programmet. Planen är att få till detta i två steg; först lägga allting i en konfigurationsfil och i nästa steg använda “webserver-läget” för att ställa in även dessa saker. Någon tidplan har jag inte…

CLEES-stödet tillfälligt borta

Under arbetet med att få trådlös styrning, försvann tyvärr stödet för CLEES. Det beror mest på att jag anammat en helt annan struktur för MQTT-meddelanden. En som jag tror är mer framtidssäker och ger mer information och möjligheter kring styrning av modelljärnväg. Det står dock på agendan att få tillbaka CLEES-stödet i framtida versioner.

Framtida idéer

Andra idéer som ligger längre fram i tiden är att få styrkortets interna lysdiod att med blickningar visa om det väntar på konfiguration eller är redo att användas. Jag ska nog även publicera knapptryckningarna till MQTT, så att andra styrkort kan lyssna på dem och göra olika saker när en knapp trycks.

Debug-utskrifter under startsekvensen

En annan önskan är att i framtiden lägga in möjlighet för växeln att styra signaler. Det ska inte behöva vara så svårt, men innan jag kommer dit måste jag ta fram en klient för signaler. Så det lär dröja innan jag fått allt på plats.

Men för stunden är jag ändå nöjd över att nått så här långt. Och jag ser fram emot att utveckla systemet med ytterligare funktioner och klienter!

Kod på Github

Du som är nyfiken på att prova programmet eller bara se hur jag gjort, hittar koden på Github. Ännu så länge är bara koden kommenterad, det finns inte så mycket annan dokumentation.

https://github.com/mekanoid/MMRC-twoturnout

Påbörjad växelstyrning

Nu under helgen har jag fortsatt med mitt projekt att styra moduler trådlöst. Det hela började med en bortkastad kväll då jag inte lyckades lista ut hur jag skulle addressera pinnarna på en NodeMCU. Det slutade med att jag kortslöt 3.3V-utgången och sen slutade kortet att fungera. Trist.

Utvecklar med Arduino

Men jag fortsatte programmeringen med en Arduino och har nu istället koncentrerat mig på att få själva styrningen att fungera. Kortet jag jobbar med är tänkt att kunna styra två 2-vägs-växlar via servo, som vardera läggs om med en tryckknapp och har två lysdioder för att indikerar hur de är lagda.

Lysdioderna indikerar växelläget

Totalt använder jag alltså 8 pinnar och det är lagom för Wemos-kretsen som jag tänkte använda framöver. Jag har nu fått till de viktigaste funktionerna som styr lysdioderna:

  • Växelns bägge lysdioder blinkar simultant när strömmer slås på, för att indikera att kortet inte vet i vilket läge växeln ligger.
  • Ett första tryck på knappen gör att växeln går till normalläge.
  • Under omläggningen av växeln blinkar lysdioden för det valda växelläget.
  • En fast lysande lysdiod visar vilket läge växel ligger i.
  • De båda växlarna kan hanteras oberoende av varandra, så även då lysdioderna.

Bra grund för framtiden

Det som tar lite tid med programmeringen, är att jag vill göra det ordentligt, generellt och som en grund för framtida klienter. Jag har ställt upp några krav på mig själv:

  • Ordentligt kommenterad källkod.
  • “Multitasking” med Arduinos millis()-funktion så att t.ex. två servon kan röra sig oberoende av varandra och lysdioder blinka med olika frekvens.
  • Styrning ska vara möjlig både fysiskt (med knappar & dioder) och trådlöst (wifi & mqtt), oberoende av varandra.

MQTT-strukturen

Under veckan har jag även funderat mer på hur man ska använda MQTT på en bra sätt. Meddelanden hanteras ju i en slags struktur (som mappar i en dator). Precis som i en dator, kan det snabbt bli kaos, så jag vill försöka få till en logisk och genomtänkt struktur till mina klienter.

På nätet hittade jag en jättebra beskrivning av en struktur som är både flexibel och tydlig. Dessutom väl dokumenterad och fri att använda. Så jag har nu gjort några mindre namnändringar och tagit åt mig den som utgångspunkt för det som ska bli mitt “systems” ämnen eller “topics”.

Ännu så länge är det mesta bara “på gång”, så jag har inte så mycket att visa upp. Men tanken är fortfarande att göra detta tillgängligt för fler att bygga vidare på.

Styrning av moduler

Nu har jag gjort mina första tester av nya styrning av modulerna. Det hela sker med små kretskortsdatorer, wifi och ett protokoll som heter MQTT. Det finns många spännande möjligheter med detta!

Bild från videon som visar första, enkla testen
Läs mer