Settings

Theme

Can Lego City Powered Up trains be automated?

bricks.stackexchange.com

237 points by jweissman 3 years ago · 79 comments (77 loaded)

Reader

keraf 3 years ago

I added my Lego Rollercoaster on Home Assistant[0] a little while back. Nothing fancy, just cut a Power Functions extension wire to put a relay in-between and an ESP board to control it. On one side I had the power pack and the other the motor. Would have loved to switch out the power pack for a constant power source but never got to it.

If you're looking to do some Power Functions (PF) hackery, there are some interesting articles that cover the wiring and working of PF gadgets more in detail[1][2].

[0] https://twitter.com/iamkeraf/status/1274433444446113792 [1] https://www.hackster.io/Notthemarsian/take-control-over-lego... [2] https://www.philohome.com/pf/pf.htm

preinheimer 3 years ago

As someone who likes lego and programming, I love this answer. But I hate how hard lego has made it.

Yes, with some work you can make your train stop and go. But I don't think there's a good track switching solution that's lego only and automated. There's an aftermarket motor thing that connects with USB. The lego only attempts end up unwieldy and usually lacking in reliability (e.g. https://rebrickable.com/mocs/MOC-11841/1963maniac/train-trac...)

The Duplo trains ship with pretty neat functionality out of the box: lights, whistle, brick reader that activates an action when it sees a certain brick. You can't recreate this with lego with just a single power brick, as it's four things: sensor, light, motor, sound. Lego train can only do two.

  • matheweis 3 years ago

    The PyBricks that the SO questioner self answers with is actually quite capable of doing this, and runs Python to boot.

    I wish this was the default interface that LEGO provided but I’m thankful for the PyBricks team creating a solution.

  • f4c39012 3 years ago

    It is a shame that Lego Duplo and Lego trains aren't compatible. One of my favourite demos of the sheer awesomeness of Lego is connecting a 2x4 Duplo with a 2x4 Lego block. Any way round. If you've never tried this, do it now :-)

  • mc32 3 years ago

    So, while this is uhhh, off track, Legolands and such have some kind of automation, though, presumably, those are bespoke solutions and are not available to regular consumers.

    • bogeholm 3 years ago

      > Legolands and such have some kind of automation, though, presumably those are bespoke solutions

      I can vouch for that! I can say - with great confidence - that the best job I ever had was in Legoland, Billund while I was in high school. The job: keep the outdoor small models running from 15:30 when the real engineers left, until park closes. Then leave a note about the stuff I couldn’t fix myself.

      The electronics were industrial PLCs wired to a control computer, and the mechanics inside the models were made from industrial type stuff that you might see on a robot, conveyor belt or the like.

      Most of the models (trains, cars, cranes etc.) were built on a metal chassis or skeleton.

      Fond memories of getting paged by the system with “ALARM: Cars, Norway” to discover that a kid had dropped her soft ice on the highway ;)

      • mwint 3 years ago

        Please, please, tell us more about the behind the scenes system keeping all that running.

    • bombcar 3 years ago

      The Legoland trains are basically model trains wearing a Lego skin. They're also a different "scale" than the "Lego toy" trains.

      • mc32 3 years ago

        Huh! I never noticed. It makes some sense when you think about parts-wear.

        • jacquesm 3 years ago

          Lego motors are designed for about 100 hours of service life.

          • drewzero1 3 years ago

            Wow, that's not much... my kid would probably hit that within a month. (I just replaced the motor in a Bachmann Thomas that wore out in about the same amount of time.)

            • jacquesm 3 years ago

              That's why they're not fussy about replacing the few that wear out, the average use is frequently after the first purchase and then it drops off sharply so I guess they decided it wasn't worth designing around long usage. In the older trains you could replace the little motor easily, with the newer ones (starting with the infamous 'red' motor a long time ago) that practice ended and you have to replace the entire unit.

            • bombcar 3 years ago

              The motors for the trains are better than that because they're designed for continuous use (somewhat) but yeah, at the end of the day Lego is a toy.

  • bignevi 3 years ago

    Possible

  • esotericimpl 3 years ago

    I remember in middle school doing some programming on the Apple 2 in the logo language and using a lego motor to essentially schedule moving the car to the park and then making a motorized lego swing spin around.

    I think this is the first time i saw the wonder of programming, sad that its harder to do this now.

lode 3 years ago

Automating my Lego trains was my first introduction to programming, back in the late 1980s using GW-Basic. (When I was about 8 years old.)

I had several stations on a looped track, and controlled the train position by switching on the power to the motor for a certain time.

At first I used a photodiode taped to the CRT monitor (and controlling the motor by lighting up a square in the corner of the screen), later I upgraded to controlling a relay via the parallel port.

  • blobbers 3 years ago

    And then you wrote DOS as your first program as a whiz kid. We see you BillG. Don’t need to brag.

    • hyperman1 3 years ago

      I did more or less the same thing, as did lots of other people.

      Wiring the serial or parallell port to something wasn't hard. Instructions for bit banging them where generally found in the library (paper books). Serial had weird voltages but was near indestructible. Parallel was TTL just like anything else digital, so some 74 ICs got you mostly there.

      The era where you basically needed to solder if you wanted a computer was just over, so electronic knowledge was still easy to find.

  • rrobukef 3 years ago

    In 1999-ish, my two brothers and I got a box of relays and some reed sensors and solenoids (for track-switches) embedded in lego blocks.

    We're all engineers now, the box is treasured and still works. Finding a PC with a parallel port has become challenging though.

  • iancmceachern 3 years ago

    I love this photo diode solution, reminds me of duck hunt. Brilliant!

preinheimer 3 years ago

On a related note, Lego is cancelling Mindstorms. So if you were dreaming up an advanced train city with Mindstorms as the brain you'd better stock up now.

https://www.theverge.com/2022/10/28/23428766/lego-discontinu...

  • ceejayoz 3 years ago

    To be clear: Mindstorms the coding platform, but not the parts. You'll still be able to build Lego robots, just using Scratch.

  • adolph 3 years ago

    My child is starting Lego robotics courses and I was confused by the change. As close as I can tell WeDo, PoweredUp/Boost and Spike all operate similarly. The core is a hub consisting of a STM32 microprocessor with a BLE module, power management, options for internal lights and accelerometer, and varying count of IO to servos, motors and sensors. With certain kits some of motors are built in. They all use the same new proprietary connector but the usual folks are making converters for EV3 and PowerFunctions.

    While Lego promotes use of their proprietary apps, other bluetooth shims can facilitate connections. I was able to connect to a Boost hub without issue using MIT's Scratch website to execute instructions. As far as I can tell, only Spike can operate untethered by BT with the default firmware.

    I've been integrating some BBC Microbit with Geekservo Lego compatible microservos and the overall experience is similar. Lego throughout is easier to integrate but doesn't lend itself to as much customization/experimentation. Using the MIT Scratch IDE is similar to MS Makecode used for Microbit. Compose your blocks, flash your microprocessor. Some things I like about Makecode are GitHub integration and the ability to seamlessly move between blocks, JS and Python.

    There isn't enough IO and connectivity for any Mindstorm or new Lego MCU to make an advanced train city. You'd be better off with ESP8266 on ESPNow mesh operating glue-your-own or Geekservo units.

    • adolph 3 years ago

      I was wrong about the movement from WeDo through Boost to Spike:

        ## SPIKE Prime and SPIKE Essential
        All SPIKE Prime and SPIKE Essential sensors and motors are compatible with each other.
        ## MINDSTORMS® EV3 / NXT and SPIKE Essential
        MINDSTORMS EV3 and NXT components aren’t compatible with SPIKE Essential because they use different connection cables and ports.
        ## WeDo 2.0 and SPIKE Essential
        WeDo 2.0 motors, sensors, and hubs aren’t compatible with SPIKE Essential.
        ## Powered UP / Control+ and SPIKE Essential
        The Control+ L and XL motors can be plugged into the SPIKE Essential hub and detected by the SPIKE app, but other elements won’t be detected.
      
      
      https://www.lego.com/en-in/service/help/spike_prime/spike-es...
  • sschueller 3 years ago

    Isn't it being replaced with something newer and better?

als0 3 years ago

> One of the weaknesses of the City Hub currently is that it requires a tethered Bluetooth device, such as a phone, tablet or computer, in order to function. By flashing the custom Pybricks firmware to the hub, we can overcome this limitation and write programs directly to the device.

This is why I come to Hacker News

post_break 3 years ago

It's a shame they got rid of metal tracks and went to batteries. If you're rich you can buy new replacements: https://shop.fxbricks.com/pages/fx-track

Or try to buy old stock on ebay etc.

  • bombcar 3 years ago

    Metal tracks had some advantages, but plastic have, too.

    The "best" model railroads have electric track at a constant voltage and DCC or other controlled locomotives, so that you're not "driving" the train with the voltage on the track.

  • EamonnMR 3 years ago

    You could only run a single engine per layout and switching could cut off the power.

    Now what I really wish they'd bring back is the Space Monorail...

    • incanus77 3 years ago

      > Now what I really wish they'd bring back is the Space Monorail...

      Agreed. I still think about that thing. I was about 10 when it came out and used to go and stare at the box at the toy store. When the new Futuron LEGO minifigs came out with the first revamp to the Classic Space suit, it just looked so damn cool. To this day they always make me think of the monorail.

  • Teknoman117 3 years ago

    I didn't know I was sitting on something so valuable XD.

    It's been nearly 20 years since I last pulled out my LEGO trains... That and the Rokenbok.

  • jerrysievert 3 years ago

    you can modify non-metal tracks to work with stained glass foil, and maybe a jumper or two depending on what you’re trying to modify. i used it successfully for cross-tracks (x’s) when they came out originally.

leetrout 3 years ago

Is it weird to post the fake question and your own answer to the question at the same time?

I havent had much luck in the overflow communities so I am unsure how common this is. Is it what most people do?

  • OwlsParlay 3 years ago

    If you know the answer and it's a valid question (i.e. it's not trivial or easily googled already), it's fine to do. The point is less to reputation farm as it is to share knowledge.

  • josephcsible 3 years ago

    There's nothing "fake" about self-answered questions, and Stack Exchange even includes UI specifically for posting an answer at the same time as your question.

    • vanderZwan 3 years ago

      I suppose the part where the writing structure is "question written as if by someone who does not know the answer themselves, answer written as if it's a different person", even when explicitly posting to share knowledge, is what throws people off. I assume this is part of the SO guidelines but I can't blame anyone for being confused by that.

      • rippercushions 3 years ago

        SO allows multiple answers per question. I have on occasion asked something and given a crappy/hacky self-answer as a stopgap, with somebody else eventually chiming in with a much better one later.

      • quietbritishjim 3 years ago

        There's nothing about the question or answer that suggests that they're different people.

        FWIW I've done the same, even more like that than the post here. (Not about Lego though!) I had a problem, was disappointed not to find the answer on StackOverflow so when I came to post the solution I put the question in the way I would have written it before I figured out the solution. Seemed more likely to be found by anyone with a similar problem.

  • unwind 3 years ago

    No, it's not weird.

    At least on Stack Overflow it's a common way of sharing knowledge.

    Source: been using SO quite intensely, have many reps.

  • megablast 3 years ago

    It is called a faq.

Teknoman117 3 years ago

In the past, the LEGO trains had a port on the motor to pull power from the tracks so you could run things like lights or small motors for effects.

There was no protection on the direction the power was going, so you could attach it to a motor port of an RCX brick. And therefore you had a programmable brick on the tracks. Side effect was that now the rails are also now powered so every train starts to move...

Pybricks 3 years ago

Yes, you can automate LEGO trains with Pybricks. See https://beta.pybricks.com/

Pybricks lets you run MicroPython scripts on the hub. Once loaded onto the hub, you can just start the script again by pressing the button. No constant connection required.

You can even add sensors that count the track sleepers so you can get a constant speed no matter the load. Here's a demo with code.

https://pybricks.com/projects/sets/city/60198-cargo-train/sp...

You can also automate the switches so you can get pretty creative with your layouts:

https://www.facebook.com/Pybricks/videos/989683888156075

With enough supporters, we may eventually even add a block-coding language as an alternative to MicroPython.

primitivesuave 3 years ago

I used to make all kinds of cool projects with lejos (https://lejos.sourceforge.io/) and am now a bit tempted to get the new toys and test out the Python interface. Would be nice if Lego actually invested more time into making a standard programming interface for advanced users.

hinata08 3 years ago

I would suggest to add some Train protection system (or even ETCS if you're motivated) on your Lego railway https://en.wikipedia.org/wiki/Train_protection_system

You can see that in some railway engineering firms.

There have been train protection systems for decades, to stop trains when something is unusual (over-speed, incapacitated driver, running a red light,...), when railways aren't fully automated yet.

You can also encode information next to the tracks, and pick it up with the train ! This kind of system was a prerequisite for high speed trains. Drivers can't read signs at cruise speed, so they are replicated on their dashboard. A fun but edgy automation would be to encode cards against humanity near the tracks, and to randomly route the train, to generate text.

jameshart 3 years ago

The motivation of using a special device to untether from the app as being ‘to reduce screen time’ seems tenuous at best. Is using an app to program in a block language to control real trains in a customizable city really ‘screen time’? And even if it is, is it automatically bad?

  • Xylakant 3 years ago

    The quote from the answer suggests a slightly different motivation than reducing screen time.

    > I use a setup similar to the above to allow an automated train to run around my son's city without the need to have a screen nearby the whole time.

    It’s a criticism that I hear regularly of the requirement to use an app for various of the motorized Lego kits: Having a phone in hand often leads to the result that the kids stop controlling (or even building) the kit and rather start playing on the phone. It’s also a bit an expensive thing to hand to your six year old so they can control their Lego train.

marpstar 3 years ago

Noticed that the question and answer were authored by the same person. Skimmed their other answers for fun and they are quite the expert. Very impressive ability to identify specific LEGO bricks.

Kon-Peki 3 years ago

Is this the 3rd generation of Lego City trains?

We have the first (?) generation in which each train uses IR (I think) and each controller can deal with 2 trains at once, but are selectable to 4 "channels" - so 8 trains in total. I wanted to buy another train or two a few years ago but they had switched to a bluetooth-only system.

We also have one of the Duplo bluetooth trains and it is pretty nice as well.

  • TonyTrapp 3 years ago

    There's at least two generations before that "first (?)" generation: 12V powered trains from the 80s and 9V powered trains from the 90s. In both cases, the train tracks were conductive. No batteries needed. A controller was attached to the train tracks. Still my favorite system, as it has no parts that can ever become obsolete (dead batteries, unsupported phone apps, unsupported bluetooth protocols...)

    • jacquesm 3 years ago

      And before then the 4.5V 'blue' rails (you could upgrade from that to the 12V system by swapping out the motor and adding the middle rail, but that lost you the ability to make certain tracks because then the two rails would end up being shorted out, which is why Maerklin long ago decided to use a center track for one pole and the outside for the other).

      • incanus77 3 years ago

        I have train set 182 [1] from 1975, bought at Harrod’s in the UK and brought back to the US for a family friend who passed it on to me. It’s still in the box with styrofoam liner.

        [1] https://brickset.com/sets/182-1/Train-Set-with-Motor

        • jacquesm 3 years ago

          If it was never used it is worth a fortune.

          • incanus77 3 years ago

            Oh, it was definitely used, but appears to be all there. It's notable in that the set comes pre-assembled and in the styrofoam packing, which is how I received it. I can only imagine what new would look like.

    • mschuster91 3 years ago

      > 9V powered trains from the 90s

      You could use an RCX to control and power the train motors. Fun times from a simpler world, the downside was obviously that you could have only one train running on the grid because the power was supplied back to the rails!

      • TonyTrapp 3 years ago

        To clarify, you could run more than train but they would all go at the same time! Unless you parked them on a passing loop, of course...

      • Kon-Peki 3 years ago

        I do like the version we have, as you can theoretically have an almost unlimited number of trains running. But yeah, it was really frustrating to have them cease production.

        On the other hand, based on the photos in this article, it looks like the traction motor assembly may be common across recent generations which would allow tinkerers to make their own controllers.

greesil 3 years ago

Well there goes a weekend. I can't wait to try this out for my kids.

jpace121 3 years ago

I was not planning on buying a train set but now I may be… This looks way too fun.

extasia 3 years ago

I used to love motorised lego stuff. Building marble runs was my favourite...

cactusplant7374 3 years ago

Is there any way to use the Flipper with these trains?

  • bri3d 3 years ago

    I couldn't find an off the shelf Flipper module, but the Lego Powered Up BLE protocol is fully documented by Lego:

    https://lego.github.io/lego-ble-wireless-protocol-docs/

    So it shouldn't be too hard to add one.

    Keep in mind that as noted in this article, the default Powered Up Hub behavior is as a "passthrough pipe" to the host device, so just using a Flipper might be a bit obnoxious.

  • lini 3 years ago

    Older Lego trains use IR for control so if you just want to control motors and lights, you can get one of those and control it with the IR blaster on the Flipper. If you also want the sensors/newer programmable hub, then you need the BLE protocol.

blobbers 3 years ago

TLDR Stall at a dead end to reset the system using pybricks

  • bcraven 3 years ago

    That was part one, the final solution was to use a colour sensor to detect plates beneath the train.

alexheikel 3 years ago

Why not?

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection