BeneluxSpoor.net forum

Vraag en antwoord => Digitaal => Topic gestart door: Curious T!mo op 01 januari 2016, 12:26:54

Titel: Arduino Nano Loconet
Bericht door: Curious T!mo op 01 januari 2016, 12:26:54
Hallo Allemaal,

Bij gebrek aan een baan ben ik vooral veel aan het spelen met kleine projectjes. Een daar van is een Loconet Interface print voor een Arduino. Heb een tweetal GCA185 van Peter Giling besteld, maar die vind ik net even te groot voor onder een baan. Daarom heb ik zelf een print ontworpen voor een Arduino Nano. Wel grotendeels gebaseerd op de GCA185 maar met wat extra's.

Ik heb de D-SUB9 connectoren laten vervallen en een aansluiting voor een PCA9685 toegevoegd. De PCA9685 kun je gebruiken voor servo's of voor PWM sturing van LED. 16 stuks per PCA9685 en 62 PCA9685 in serie dus theoretisch 992 outputs in totaal. De PCA9685 is in China al voor een euro of 3 a 4 te koop.

Verder heb ik pull-up weerstanden toegevoegd voor i2c. Te activeren dmv een jumper. Hierdoor kun je de interface gebruiken met bijna alles wat i2c praat. Denk bijvoorbeeld aan OLED en LCD displays, IC's voor extra inputs en noem maar op.

Ik heb bijvoorbeeld een MCP23016 en een PCA9685 gebruikt om mijn Marklin 6040 om te bouwen naar loconet.

De blauwe connector aan de bovenkant heeft van links naar rechts 5V - SCL - SDA - GND. SCL en SDA zijn dmv jumpers ook te verwisselen met Digitaal Pin 5 en 6.

Heb een filmpje gemaakt waarin ik de interface gebruik om via D6 een 4-tal WS2812b Leds aan te sturen. Dit zijn individueel te besturen RGB Leds die je in een string met elkaar verbind. Deze wil ik gebruiken in mijn toekomstige schaduwstation als goedkope signalen. Kleuren zijn helaas wat moeilijk te zien in het filmpje en op de fotos. Mijn iPhone heeft een beetje moeite om het ledlicht. Maar in werkelijkheid ziet het er geweldig uit en zijn de WS2812b zelfs dimbaar.

Ben op zich tevreden met het resultaat, maar ben nu wel bezig met een v2 print. Wat kleine wijzigingen. Heb de tekst voor GND en 5V verkeerd staan in de silkscreen bij 1 aansluiting en ga een LED aan het toevoegen voor de Loconet RX pin.
Verder voeg ik aan de v2 een DCC gedeelte toe met een keuze voor Arduino pin D2 of D3 dmv een jumper. Hierdoor is de v2 ook als DCC decoder te gebruiken.

Misschien heeft iemand anders er wat aan als bron voor inspiratie om ook eens met en Arduino aan de gang te gaan.

Wat kun je bijvoorbeeld met zo'n Loconet interface:
- Loconet USB computer interface
- Servo Besturing
- PWM Leds besturen met PCA9685 (https://www.adafruit.com/product/815)
- WS2812b besturen
- Knoppen/toesten verbinden met Loconet
- Loconet terugmelding. Direct of door de Arduino aan de S88 bus te knopen
- OLED of LCD Loconet visualisatie
- Treinkamer verlichting bedienen met een 230v relais
- Klik aan Klik uit besturen via loconet met een rf433 transmitter
- Klik aan Klik uit afstandsbediening -> Loconet met een rf433 ontvanger
- MP3 bestanden afspelen mbv een Arduino MP3 module (https://www.youtube.com/watch?v=Wh3c_fuP8oQ)

Kortom, verzin het.. Als je het aan een Arduino kunt hangen, kun je het met Loconet verbinden.

Groeten,

Timo

Linkje naar PCA9685 (https://www.adafruit.com/product/815)

https://www.youtube.com/v/NwDb8vO_KEs

(http://s14.postimg.org/i9fe9nljx/IMG_1410.jpg) (http://postimg.org/image/i9fe9nljx/) (http://s14.postimg.org/a2nei2vh9/IMG_1411.jpg) (http://postimg.org/image/a2nei2vh9/) (http://s14.postimg.org/jkn5i4h5p/IMG_1412.jpg) (http://postimg.org/image/jkn5i4h5p/)

(http://s14.postimg.org/x2u1uetb1/IMG_1413.jpg) (http://postimg.org/image/x2u1uetb1/) (http://s14.postimg.org/ayfajsfrx/IMG_1414.jpg) (http://postimg.org/image/ayfajsfrx/) (http://s14.postimg.org/6o0mo7aot/IMG_1415.jpg) (http://postimg.org/image/6o0mo7aot/)
Titel: Re: Arduino Nano Loconet
Bericht door: Reinout van Rees op 01 januari 2016, 13:50:02
Die PCA9685 ziet er handig uit. Lijkt me ideaal om wat stukken ledstrip aan te sturen met één arduino. Daar ga ik eens mee experimenteren. Bedankt voor het noemen van dat board.

Reinout
Titel: Re: Arduino Nano Loconet
Bericht door: Falkenberg op 01 januari 2016, 21:31:45
Leuk project! Ik zie dat je de LM311 gebruikt voor de LN_RX, zoals op de GCA185. Die wordt eigenlijk buiten zn specs gebruikt een betere oplossing is een LM393 zoals hier: http://dcc-mueller.de/signal/e-blk20a.pdf (http://dcc-mueller.de/signal/e-blk20a.pdf), zie rechtsonder. Dat zit ook op mijn shield.

dirkjan
Titel: Re: Arduino Nano Loconet
Bericht door: Curious T!mo op 02 januari 2016, 15:05:37
Bedankt voor de tip Dirkjan.

Ik heb het meegenomen in het ontwerp voor de v2 van de print.
Hier is ook een DCC interface aan toegevoegd met keuzejumpers voor pin 2 of pin 3 en een aansluiting voor een externe voeding.

Verder zit er een extra led op voor Loconet RX.

Door de toevoeging van DCC is het nu ook een leuke print geworden voor een DCC decoder. Je plaatst gewoon de componenten die je nodig hebt (DCC of Loconet), de rest laat je weg.

(http://s17.postimg.org/gx8cwnorv/Schema.jpg) (http://postimg.org/image/gx8cwnorv/)

(http://s18.postimg.org/gqbyvmaxx/pcb.jpg) (http://postimg.org/image/gqbyvmaxx/)

Groeten,

Timo
Titel: Re: Arduino Nano Loconet
Bericht door: Falkenberg op 02 januari 2016, 17:36:38
Kweenie, vond het met loconet fraaier dan een DCC-loconet mix. Loconet is wat dat betreft wat flexibeler als dcc, zeker doordat je ook kunt zenden als module.
Titel: Re: Arduino Nano Loconet
Bericht door: Timo op 02 januari 2016, 23:38:22
Leuke print :) Ook lekker bezig! Zelf net iets te weinig tijd gehad deze vakantie :/

Met de toevoeging van DCC lijkt de print wel een heel stuk groter. Weet je zeker dat je dat wilt en niet gewoon twee verschillende printen maken? Bedoel, al eens gekeken of je het dan efficiënter kan produceren.

Waarom zit de PCA9685 niet gelijk al op deze print?

Alle weerstanden onder de Arduino vind ik een beetje raar. Zeker ook omdat een groot deel gebruikt wordt voor LocoNet waarvan de opamp dan weer rechts op de print zit naar de power in. Misschien kan je het war logischer bij elkaar plaatsen. De Nano past ook prima boven een opamp.

Ik zie een 7805 voor de power. Nog steeds een leuke en universele oplossing. Maar de manier waarop hij op de print zit kan hij absoluut geen warmte kwijt (geen heatsink op de PCB als in koper plaat) en is het bijna onmogelijk een koellichaam te plaatsen. Misschien meer naar de rand? Zeker als je groepen WS2812b zit je al snel aan een redelijke stroom (en dus hitte). Misschien daarom zelfs nog interesanter om er een DC-DC converter op te zetten. Ben je de boel niet onnodig aan het opstoken. Dit kan natuurlijk ook al gewoon een kant en klare module zijn ;)

Ik heb het meer mensen zien doen, de DCC input schakelbaar maken tussen pin 2 en 3. Maar waarom? Jij bepaalt toch gewoon op welke pin het zit? Makkelijk zat om dat in de code aan te passen en nu alleen maar weer extra componenten / iets wat je kunt vergeten.

En over extra componenten gesproken. R11 voor de DCC mag je weglaten en R12 kun je vervangen door de interne pullup ;) Zelfde geld vor de I2C lijnen.


Timo
Titel: Re: Arduino Nano Loconet
Bericht door: Curious T!mo op 03 januari 2016, 14:07:24
Hallo Timo,

De PCA9685 zit niet op de print omdat deze zo makkelijk te krijgen zijn voor rond de 3 euro in China. Goede opmerking over de plaats van de opamp en weerstanden. Daar ga ik verder mee spelen.

Je hebt gelijk om de jumper voor pin 2 en 3 weg te laten. Je gebruikt eigenlijk toch alleen int0 op pin2.

@Falkenberg: Ik heb de DCC toegevoegd omdat het bijna geen componenten kost. Door het weg kunnen laten van R11 en R12 wordt het alleen maar minder. Ik zal hem over het algemeen toch alleen gebruiken voor loconet, maar het is wel handig om dezelfde print toch te kunnen gebruiken voor DCC als het een keer zo uit komt.

De print is smaller en langer geworden. De reden is dat ik wil proberen om 1 print binnen 10x5cm te krijgen. Dan kan ik namelijk 2 printen tegelijk laten maken. De max afmetingen zijn meestal 10x10cm

De i2c pullups heb ik bewust geplaatst. Ik heb namelijk een i2c OLED display die niet goed werkt met de interne pullups. Geen problemen met de externe.

De 7805 zou ik ook gewoon rechtop kunnen zetten. Scheelt weer in ruimte en koeling. Heb deze print gebaseerd op de GCA185 en daar ligt hij ook op zijn kant.

Hij is eigenlijk niet bedoeld om de WS2812b te voeden in een definitieve opstelling. Dan gebruik ik en DC-DC converter. Zelfde geld voor het voeden van een PCA968.

Maar het vervangen van de 7805 voor iets wat veel efficiënter is zou wel mijn voorkeur hebben. Ben er alleen nog niet uit wat.
Ik kan natuurlijk ook gewoon kant en klare een DC-DC converter module op de print steken.
(http://i01.i.aliimg.com/wsphoto/v0/502580915/LM2596-DC-to-DC-Buck-Converter-Step-Down-Module-Mini-Small-Power-Supply-4-40V-to.jpg)

Ideeën en schemas voor de voeding zijn welkom. Overige op of aanmerkingen natuurlijk ook.

Groeten,

Timo
Titel: Re: Arduino Nano Loconet
Bericht door: Timo op 03 januari 2016, 14:59:24
Hoi Timo,

Ah, ja, dat verklaard. Dan zou ik hem zelf ook niet op de print maken nee :D Wel zou ik dan de header vervangen door een haakse header (deze (universeel) (http://www.ebay.nl/itm/10pcs-1x40-Pin-2-54mm-Right-Angle-Single-Row-Female-Pin-Header-Connector-/301723728071?hash=item464022b8c7) of deze (6p) (http://www.ebay.nl/itm/50PCS-1x6-Pin-2-54mm-Right-Angle-Single-Row-Female-Pin-Header-Connector-J1-/351494385357?hash=item51d6b2aecd)). Dan druk je de PCA9685 er zo tegen aan en klaar. Ik zou hem denk ik alleen zelf aan de zijkant uit late komen om niet in de weg te zitten met de LocoNet aansluitingen.

Je kan volgens mij de I2C pullup an de verbinding van OE naar 5V (p5 vna de header) ook weglaten. Als ik naar de PCA9685 (http://www.aliexpress.com/item/1pc-PCA9685-16-Channel-12-bit-PWM-Servo-motor-Driver-I2C-Module-For-Arduino-Robot-Hot/32520336979.html?ws_ab_test=searchweb201556_3,searchweb201644_2_79_78_77_82_80_62_81,searchweb201560_8) kijk zou ik zeggen dat de 3 10k weerstanden rechts boven aan de OE, SCL en SDA hangen als pull up.

Als je er toch al PCA9685 en ledjes aan wilt hangen zou je net zo goed een DC-DC op het bordje kunnen plaatsen. Zelf heb ik nu een aantal keer deze (http://www.aliexpress.com/item/Free-Shipping-5PCS-Ultra-small-size-DC-DC-step-down-power-supply-module-3A-adjustable-step/1626264703.html) (op basis van de MP1584 (http://www.seeedstudio.com/wiki/images/4/4e/MP1584_r1.0.pdf)) toegepast. (Oa om seinen aan een decoder te dimmen.) Zelf heb ik ze voor 40 cent per stuk maar prijs schommelt een beetje per dag. Maar zie nu ook een alternatief opkomen, deze (http://www.aliexpress.com/item/5pcs-RC-Airplane-Module-Mini-360-DC-Buck-Converter-Step-Down-Module-4-75V-23V-to/32441663171.html?ws_ab_test=searchweb201556_3,searchweb201644_2_79_78_77_82_80_62_81,searchweb201560_8) is nog kleiner (en is op basis van het broertje, de MP2307 (https://www.adafruit.com/datasheets/MP2307_r1.9.pdf)). Beide modules zijn eigenlijk klein genoeg om als vervanging van de 7805 te dienen. Zeker de laatste, deze is net zo breed als een 7805  ;D

Goed om te zien dat je wel over de afmetingen van de print hebt gedacht  (y) Dat is ook de reden dat ik voor de adServo print ben uitgekomen op 50x33mm. Kan ik er 3 of 6 mooi kwijt op 50x100 of 100x100.

Jij werkt moet Eagle of niet? Heb namelijk wel wat footprints gemaakt (die ik nog op GitHub moet zetten  ::) ) maar ik werk met KiCad.

Is er eigenlijk nog een specifieke reden dat je hier gekozen hebt voor een Nano ipv voor een Pro Mini zoals bij de LocoNet master switch?

En mag ik vragen waar in het land je woont? De meeste andere Arduino makers lijken allemaal in het verre zuiden (Brabant) te wonen  ;D


Timo
Titel: Re: Arduino Nano Loconet
Bericht door: Curious T!mo op 03 januari 2016, 15:58:29
Hoi Timo,

Ik gebruik meestal dupon kabel (http://nl.aliexpress.com/item/New-10pcs-30cm-Dupont-Wire-Cable-6P-6P-Pin-Header-2-54mm-Pitch/32309202921.html?spm=2114.020208.3.73.MEzBn7&ws_ab_test=searchweb201556_1,searchweb201644_4_79_78_77_82_80_62_81_61,searchweb201560_2). Maar de haakse connectoren zijn een super idee (y). Waarom heb ik daar zelf niet aan gedacht  ::)

Ik ga eens een paar van die MP2307 bestellen. Die zijn ideaal voor van alles.

Normaal gesproken doe ik bijna alles met de Pro Mini, maar bij de Mini zitten SDL en SDA niet in de standaard header. Die zitten op 2 pinnen naast de standaard pinnen. Dus de nano leek het me nu handiger. Ook omdat je dan gewoon de usb kabel in kan pluggen zonder op de polariteit van je ftdi te hoeven letten. Het prijsverschil tussen de Pro Mini en Nano is sinds de komst van de ch340 ook verwaarloosbaar geworden.

Ben ook een groot fan van de ESP8266 de laatste tijd, maar de loconet library is nog niet compatible met de ESP.

Ben woonachtig in Eindhoven. Dus hoor ook bij die groep ben ik bang.

Zal eens kijken naar KiCad. Gebruik nu idd Eagle.


Groeten,

Timo
Titel: Re: Arduino Nano Loconet
Bericht door: Timo op 03 januari 2016, 16:31:53
Hoi Timo,

Haha, nog meer Eindhoven :p Woon zelf in die andere technische E  ;D

Dupond is inderdaad handig voor testen maar als je zelf een printje maakt, waarom niet niet gewoon tegen aan drukken :)

Wat betreft de I2C, dat klopt ja... Zijn een aantal smaken van de Pro Mini te krijgen. Zelf daarom eens een set met footprints gemaakt voor de Pro Mini enzo. Zou op zich ook mogelijk zijn een redelijk universele versie te maken waar je alle smaken Pro Mini in kunt drukken. Maar volgens mij heb ik die nog niet gemaakt (aka, nog niet nodig gehad  ;D De Nano is inderdaad wel goedkoop geworden maar ook de Pro Mini is gedaald. Deze  kost nog steeds de helft van een Nano :p

Zelf heb ik geen FTDI (zeker niet na FTDI gate) maar overal slingeren CH340 en Prolific PL2303 printjes, zelfs bij mijn vriendin :p

De ESP8266 is echt een leuke module. Alleen voor onder de baan wil ik gewoon geen wifi. Maar het zou een leuk hart zijn voor een handregelaar. Nog even afwachten wat de ESP32 gaat kosten.

De Open Source aard van KiCad sprak me welaan dus ben ik daar voor gegaan. Ook geen last van maximale grote van printen enzo. En zeker nu met versie 4 van KiCad is het echt wel een fijn programma.


Timo
Titel: Re: Arduino Nano Loconet
Bericht door: Curious T!mo op 09 januari 2016, 15:38:37
Heb de interface vandaag gebruikt om een Railcom Display te maken.

Ik heb een LocoRCC (http://users.telenet.be/deloof/pageNL15.html) van Hans Deloof tussen de LocoNet-B en mijn ORD-3 Booster zitten. Deze werkt de RailCom cut-out op omdat de Intellibox dit zelf niet kan.

Vanuit de booster gaat wordt dit segment gevoed via een Uhlenbrock 68500 MARCo-Empfänger. Deze verstuurd op zijn beurt het RailCom adres van de decoder door via een LocoNet OPC_MULTI_SENSE packet.

(http://www.uhlenbrock.de/intern/produkte/marcolis/I0E1F71B-001.apd/Neu2012_4.JPG)

Mijn arduino luistert op LocoNet en op het moment dat er een OPC_MULTI_SENSE packet voorbij komt wordt de informatie op het i2c LCD scherm zichtbaar gemaakt.

https://www.youtube.com/v/BiVdaP4AmLM

Ben ook de loconet library ingedoken om een callback voor OPC_MULTI_SENSE te maken. Hierdoor blijft de Arduino sketch een stuk schoner. Al met al best leuk om uit te vogelen op een regenachtige zaterdag  :)

Groeten,

Timo
Titel: Re: Arduino Nano Loconet
Bericht door: Marcel112 op 09 januari 2016, 16:12:36
Hoi Timo Eindhoven  ;D

Zeer leuk weer een Arduino "held" te zien hier op het forum.
Op de club zie ik steeds meer Arduino's verschijnen en ook steeds meer code voorbij vliegen.

Zelfs gesloten systemen gewaande systemen worden al uitgelezen en met Arduino's opnieuw opgebouwd.

Mogelijk dat je eens kunt komen kijken op de club en met onze club"helden" kunt sparren.
In levende lijve werkt daarbij toch fijner lijkt me.
Club staat hier links en in de handtekening.
Titel: Re: Arduino Nano Loconet
Bericht door: Servé op 11 januari 2016, 14:01:23
Dat RailCom-Loconet projectje is heel erg interessant! Ben je bereid hiervan de code beschikbaar te stellen? Dan kan ik het omschrijven naar gebruik met een 4-voudig 7-segement display ;D
Titel: Re: Arduino Nano Loconet
Bericht door: Geert2 op 11 januari 2016, 17:22:15
De code wil ik ook wel is inkijken, mogelijk leer ik ervan voor mijn LocoNet projecten.


Geert
Titel: Re: Arduino Nano Loconet
Bericht door: Curious T!mo op 12 januari 2016, 20:40:36
Hallo Servé en Geert2,

Heb de sketch op mijn github gezet. https://github.com/Merdeka/Arduino-ModelRail/blob/master/LocoNet_Railcom_Display/LocoNet_Railcom_Display.ino (https://github.com/Merdeka/Arduino-ModelRail/blob/master/LocoNet_Railcom_Display/LocoNet_Railcom_Display.ino)

Let wel op, dit maakt gebruik van een fork die ik heb gemaakt van de mrrwa library. Het zal dus niet compileren met de standaard master branch.
Mijn fork kun je vinden op https://github.com/Merdeka/LocoNet/tree/Extra-Call-backs (https://github.com/Merdeka/LocoNet/tree/Extra-Call-backs)

Komt er in het kort op neer dat ik het volgde aan LocoNet.cpp heb toegevoegd:
case OPC_MULTI_SENSE:
    uint16_t Locoaddr ;
    char     Zone ;
 
    switch( LnPacket->data[1] & 0xE0 )
    {
      case OPC_MULTI_SENSE_ABSENT:
      case OPC_MULTI_SENSE_PRESENT:
        Address = LnPacket->data[2] + ((LnPacket->data[1] & 0x1F) << 7) ;
        Direction = (LnPacket->data[1] & 0x20) != 0 ? true : false ;
       
        Address++ ;
       
      if( LnPacket->mstr.adr1 == 0x7D)
        Locoaddr = LnPacket->mstr.adr2 ;
      else
        Locoaddr = (LnPacket->mstr.adr1 * 128) + LnPacket->mstr.adr2 ;
       
      if ( (LnPacket->data[2]&0x0F) == 0x00 ) Zone = 'A' ;
        else if ( (LnPacket->data[2]&0x0F) == 0x02 ) Zone = 'B' ;
        else if ( (LnPacket->data[2]&0x0F) == 0x04 ) Zone = 'C' ;
        else if ( (LnPacket->data[2]&0x0F) == 0x06 ) Zone = 'D' ;
        else if ( (LnPacket->data[2]&0x0F) == 0x08 ) Zone = 'E' ;
        else if ( (LnPacket->data[2]&0x0F) == 0x0A ) Zone = 'F' ;
        else if ( (LnPacket->data[2]&0x0F) == 0x0C ) Zone = 'G' ;
        else if ( (LnPacket->data[2]&0x0F) == 0x0E ) Zone = 'H' ;
        else Zone = LnPacket->data[2]&0x0F ;
       
      if(notifyMultiSenseTransponder)
          notifyMultiSenseTransponder( Address, Zone, Locoaddr, Direction ) ;
        break ;
      case OPC_MULTI_SENSE_POWER:
        break ;
    }
    break ;

Plus nog wat toevoegingen in LocoNet.h en ln_opc.h om dit te ondersteunen.

Ik ben aan het kijken of we dit in de master branch kunnen opnemen. Maar daar zal nog het een en ander voor aangepast moeten worden denk ik.

Op mijn github staan meer sketches trouwens.
https://github.com/Merdeka/Arduino-ModelRail (https://github.com/Merdeka/Arduino-ModelRail)
En hier de libraries die ik gebruik.
https://github.com/Merdeka/libraries (https://github.com/Merdeka/libraries)

Groeten,

Timo
Titel: Re: Arduino Nano Loconet
Bericht door: Estorf op 24 maart 2017, 10:19:09
Hoi Timo,

Wellicht wat laat deze reaktie  ;)

Kun en/of wil je de layout van de v2 print delen ? (Eagle format, Gerber file ... etc.)
Vind het een praktische en heel universele print.

Groet en b.v.d.,

Theo.
Titel: Re: Arduino Nano Loconet
Bericht door: Timo op 24 maart 2017, 14:39:57
Het koste me 5 minuten voor ik weer zag dat dit een topic met twee Timo's was ::) Ik snapte al niet welke welke v2 versie  ;D


Timo
Titel: Re: Arduino Nano Loconet
Bericht door: fredjansen op 21 april 2018, 19:58:19
Hi Timo

misschien wel wat laat en misschien lees je deze berichten al lang niet meer, toch probeer ik nog een vraagje te stellen.

ik heb de railcom/loconetmonitor gebouwd. Deze module heeft ook een DCC ingang, kan deze module ook vanaf DCC de railcom data lezen en op loconet zetten ?

gr

fred jansen