Autootjes…

Niet alleen materieel op rails is nodig voor een baan, aankleding met auto’s moet natuurlijk ook.

Gisteren naar een modelautobeurs geweest, en daar voor een heel schappelijk prijsje flink wat kunnen aanschaffen

Geluid met Arduino

Stationsgeluiden, de bellen bij een overweg, enz enz.
Hartstikke leuk natuurlijk om die ook te laten horen op de baan. En dat moet dan toch kunnen met een Arduino? Ja, maar niet zonder slag of stoot…

Het probleem is dat er geen eenvoudige manier is waarmee je ‘gewoon’ een MP3 of WAV aan kunt bieden en dat die dan afgespeeld wordt.
Wat ik uiteindelijk heb gebruikt is https://www.hackerspace-ffm.de/wiki/index.php?title=SimpleSDAudio. Probleem daarmee is dat er nogal wat onduidelijkheden staan op die site. Ik zal hier mijn bevindingen plaatsen:

Allereerst heb je iets nodig om je geluidsbestanden op te plaatsen: een SD-kaart. Ik heb deze bij AliExpress aangeschaft: https://nl.aliexpress.com/item/1PCS-Micro-SD-Storage-Expansion-Board-Mciro-SD-TF-Card-Memory-Shield-Module-SPI-For-Arduino/32523546123.html

SimpleSDAudio leest NIET het bestand dat opgegeven wordt, maar zoekt de eerste sector op de schijf op en leest daarna domweg de volgende sectoren. Als een bestand gefragmenteerd is werkt dit dus niet. Oplossing: formatteer je SD-kaart, en plaats je bestanden. Nieuw bestand toevoegen? Geen probleem…. totdat je ook een keer een bestand hebt verwijderd 🙁

SimpleSDAudio leest geen MP3 of WAV(!), maar alleen een raw-bestand dat in feite per byte het volume weergeeft. Door dat 31250 keer per seconde te doen krijg je geluid.
Zo’n raw-bestand maak je met het meegeleverde ‘sox’. Het commando dat ik gebruik en goed werkt is:

sox spoor12.mp3 --norm=-1 -e unsigned-integer -b 8 -r 31250 -c 1 -t raw converted/spoor12.raw

Let er ook op dat bestandsnamen aan de prehistorische eis van maximaal 8+3 karakters moet voldoen.

Hierna is het een kwestie van een kleine sketch maken:

#include <SimpleSDAudio.h>

void setup() {
SdPlay.setSDCSPin(4); // sd card cs pin
SdPlay.init(SSDA_MODE_HALFRATE | SSDA_MODE_MONO | SSDA_MODE_AUTOWORKER);
play("ding.raw");
play("spoor12.raw");
}

void loop(void) { }

void play(String file) {
SdPlay.setFile(file.c_str());
SdPlay.play(); // play music
while (!SdPlay.isStopped()) { }
}

Verkeerslichten met een Arduino

Had ik al gezegd dat knutselen met een Arduino verslavend is? 🙂
Nu in een uurtje een verkeerslicht gemaakt. Nou ja, de vekeerslichten zelf zijn nog in bestelling bij AliExpress, dus maar even een paar seinen gepakt. Vandaar dat groen boven zit enz.
De sessie start met knipperend oranje. Dan klik ik op een knop op de PC en gaan even alle lichten op rood, waarna de normale groen-oranje-rood cyclus wordt doorlopen, net zo lang tot ik weer op de knop klik. Dan gaat na afloop van een cyclus even alles op rood, om daarna weer oranje te gaan knipperen.

Voor meer info zie ook http://www.alexkwak.nl/elektronica/spelen-met-arduinos/

Spelen met Arduino’s

Arduino’s zijn kleine computertjes, waarmee je heel eenvoudig zaken aan kunt sturen.

Zo had ik een tijd geleden een mini-display aangeschaft, en ben er vandaag eens voor gaan zitten om hiermee een stations-informatiebord te maken. En dat was binnen een uur gepiept. Ook de koppeling met de PC is eenvoudig gemaakt. Met een klik van de muis verandert de tekst op het display:

Wil je dit zelf doen? Dat kan eenvoudiger dan je wellicht denkt.
Wat heb je nodig:
1) Een Arduino Uno, ongeveer 3 euro, bijvoorbeeld https://nl.aliexpress.com/item/Free-shipping-UNO-R3-MEGA328P-with-usb-cable-for-Arduino-Compatible-Dropshipping/32241225914.html
2) Een display, ongeveer 2 euro, bijvoorbeeld deze: https://nl.aliexpress.com/item/1pcs-0-96-yellow-blue-0-96-inch-OLED-module-New-128X64-OLED-LCD-LED-Display/32637614958.html
3) Wat kabeltjes, ongeveer 1 euro: https://nl.aliexpress.com/item/40PIN-Dupont-Lijn-10-cm-20-cm-30-cm-Male-naar-Male-Vrouwelijke-naar-Mannelijke-en/32891879068.html Voor dit project heb je alleen male-female nodig, maar als je toch besteld, bestel dan van alles wat.
4) Een USB-kabel, type A naar type B, ongeveer 1 euro: https://nl.aliexpress.com/item/Hoge-Snelheid-Transparant-Blauw-USB-2-0-Printer-Kabel-Type-A-Male-naar-B-Male-Dual/32845453952.html
5) De code, gratis. Ik heb een voorbeeld gemaakt voor een ‘sketch’ (=programma) voor de Arduino dat twee verschillende teksten kan schrijven op het display, en een C#-programma dat een commando vanaf de Windows-PC naar de Arduino kan sturen zodat je onder andere kan wisselen van tekst. Je vindt die code op deze pagina.

Installeer de Arduino-IDE (https://www.arduino.cc/en/main/software). Open de Arduino-sketch van punt 5 hierboven. Selecteer in de Arduino-IDE het juiste apparaat en de juiste com-poort, en upload de sketch.
Verbind het display met de Arduino:
SDA -> A4
SCK -> A5
VDD -> 3.3V
GND -> GND
Je moet nu het eerste scherm al op het display zien. Herstart eventueel de Arduino.

Installeer nu Visual Studio van Microsoft (https://visualstudio.microsoft.com/downloads/, gratis!) en open het C#-project van punt 5 hierboven. Voer deze uit en in het scherm dat verschijnt select de juiste com-poort en stuur commando 254. Als antwoord moet je dan krijgen: “4;Arduino Uno;NS board”.
Stuur commando 253 en de tekst op het display zal wijzigen.

Ballast

Een tijd geleden had ik al de nodige ballast gekocht van Woodland. Hiermee heb ik bijvoorbeeld de brug gedaan. Op zich is deze ballast heel er mooi: de structuur lijkt goed op de echte ballast, en de kleur is ook mooi.

Maar… het verwerken vind ik tegenvallen. Om het vast te leggen gebruik ik transparant opdrogende voorstrijk. Die zou makkelijk in de ballast moeten vloeien, maar dat gebeurt dus niet. De druppels blijven eerst een tijdje liggen voordat deze eindelijk in de ballast trekken. Hierdoor ontstaat een soort maanlandschap, niet mooi dus.

Toevallig moest ik ook een paadje aanleggen en gebruikte ik hiervoor een soort ballast van Busch. En dat werkte echt vele malen beter! Dus op naar de winkel en het laatste zakje Busch 7070 ballast gekocht. Net zo’n mooie kleur, alleen is de korrel wat meer afgerond waardoor het net wat minder echt lijkt. Het zij zo.

De ‘oude’ laag Woodland is inmiddels verwijderd (met spiritus, gaat prima) en nu verder bezig de nieuwe laag te leggen.

LPS, Local Positioning System

Het blijft me bezighouden: hoe bepaal ik de positie van treinen en wagonnen. Dus opnieuw een idee uitgeprobeerd: met behulp van ultrasoon geluid!

Nu klinkt dat [pun intended] misschien wat raar, maar geluid gaat met een snelheid van ‘slechts’ zo’n 340 meter per seconde. Dus 34cm per milliseconde. En als je je bedenkt dat een Arduino zo ongeveer op de microseconde kan meten, dan weet je dat in principe een positiebepaling door het verschil wanneer een geluidspuls vanaf een loc bij verschillende ontvangers aankomt te meten, ook de daadwerkelijk positie heel redelijk bepaald kan worden. Eigenlijk wat een GPS-ontvanger ook doet, maar dan op kleinere schaal en met geluid in plaats van radio-golven.

Maar helaas, een eerste test verliep niet goed. Bij onze grote vriend AliExpress een stuk of wat ultrasone tranceivers gekocht, en daar mee aan het experimenteren.

Helaas blijken deze jongens heel erg richtingsgevoelig. Als je er net naast mikt wordt er meteen helemaal niets meer ontvangen. En dan wordt in de praktijk vrijwel geen enkele puls die vanaf de loc wordt verstuurd daadwerkelijk door een ontvanger ‘gezien’.

Op zoek naar een andere oplossing…