Back

Can Lego City Powered Up trains be automated?

237 points1 yearbricks.stackexchange.com
keraf1 year 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

preinheimer1 year 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.

matheweis1 year 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.

f4c390121 year 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 :-)

mc321 year 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.

bogeholm1 year 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 ;)

mwint1 year ago

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

bombcar1 year ago

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

mc321 year ago

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

+1
jacquesm1 year ago
bignevi1 year ago

Possible

esotericimpl1 year 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.

lode1 year 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.

blobbers1 year ago

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

hyperman11 year 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.

rrobukef1 year 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.

vertis1 year ago

One idea is: https://hackaday.com/2017/05/05/converting-parallel-port-cnc...

Plus there are a bunch of off the shelf solutions on Amazon (YMMV).

iancmceachern1 year ago

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

preinheimer1 year 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...

ceejayoz1 year ago

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

adolph1 year 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.

adolph1 year 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...
sschueller1 year ago

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

qzio1 year ago

Lego spike.

It is part of their education line.

https://www.lego.com/en-se/product/lego-education-spike-prim...

dolmen1 year ago

I think the real replacement is the Raspberry Pi Build HAT that allows to connect LEGO Powered Up/Boost/Robot Inventor sensors and motors to a Raspberry Pi.

https://www.raspberrypi.com/news/raspberry-pi-build-hat-lego...

kefabean1 year ago

Now that does look interesting!

Given the Powered Up (train set) remote works over bluetooth and I understand can be made to work with a Technics Hub by flashing with the Pybricks firmware, I'd been wondering whether it's possible to control the hub using a RPi but over bluetooth instead of the wired HAT connection. Is this possible?

als01 year 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_break1 year 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.

bombcar1 year 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.

EamonnMR1 year 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...

incanus771 year 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.

vertis1 year ago

I had this, and I still miss it and my other lego.

Teknoman1171 year 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.

jerrysievert1 year 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.

leetrout1 year 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?

OwlsParlay1 year 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.

josephcsible1 year 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.

vanderZwan1 year 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.

rippercushions1 year 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.

quietbritishjim1 year 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.

unwind1 year 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.

megablast1 year ago

It is called a faq.

Teknoman1171 year 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...

Pybricks1 year 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.

primitivesuave1 year 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.

dolmen1 year ago

It looks like LEGO is investing in bringing together the popular Raspberry Pi platform and its toys, and abandonning dedicated apps such as the Robot Inventor (Mindstorms) app.

https://www.raspberrypi.com/news/raspberry-pi-build-hat-lego...

Teknoman1171 year ago

I tried spinning up lejos for the RCX again a few years ago, but you do have to find a JDK 1.5 bundle somewhere.

hinata081 year 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.

jameshart1 year 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?

Xylakant1 year 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.

marpstar1 year 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-Peki1 year 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.

TonyTrapp1 year 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...)

jacquesm1 year 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).

incanus771 year 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

+1
jacquesm1 year ago
mschuster911 year 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!

TonyTrapp1 year 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-Peki1 year 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.

greesil1 year ago

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

jpace1211 year ago

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

extasia1 year ago

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

preinheimer1 year ago

The Great Ball Contraption (GBC) videos are pretty good: https://www.youtube.com/watch?v=VCmwskpxyCg

Really interesting ways to move balls around.

cactusplant73741 year ago

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

bri3d1 year 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.

cactusplant73741 year ago

Gotcha. I was hoping there was a primitive subghz protocol. That would be fun.

lini1 year 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.

blobbers1 year ago

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

bcraven1 year ago

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

alexheikel1 year ago

Why not?

fnordpiglet1 year ago
BryanBeshore1 year ago
pilif1 year ago

The question was about not using any of the built-in capabilities because they require the use of an app on a connected device which the poster thinks would be a distraction for their kid.

The answer offers some options that will work without a connected device.

Sometime it’s useful to at least visit the linked article before posting what amounts to an ad