Random thought: #LEGO #Mindstorms #RCX(!) to LEGO #DUPLO adapter plate/housing.
Random thought: #LEGO #Mindstorms #RCX(!) to LEGO #DUPLO adapter plate/housing.
Dear chaos bubble,
during #37C3 there were two scheduled meetups: "Bällebad-Sortiermaschine // Let’s build a ball pit sorting machine (MeetUp)
flair" - Did any plans turn up from this?
Also, I could provide you with some oldschool #LEGO #Mindstorms #RCX (from the first generation).
Wooohoo. I've been able to talk to my #LEGO #Mindstorms yellow programmable #RCX brick. This time via the infrared USB(!) tower (and not the serial one)... via WebUSB in the browser. This is lacking some robustness still.. but loading firmware and user programs compiled from NQC doesn't feel to far away. Just pushed the experimental code to the #WebPBrick git repository.
Could still need some help getting my JavaScript right though (less hacky, more robust): https://chaos.social/@maehw/112832014771094684
I got a beep out of my #LEGO #Mindstorms #RCX programmable brick. Basically not a big deal... BUT: this time using the *USB* infrared tower and not the *serial* one. And on a 64-bit system. Using the WebUSB API. This is possible thanks to @HangryDave's InfraredBrickTower project, more USB analyzing and reading the device's spec docs again. So firmware update and programming in the #WebPbrick IDE seems to be doable. Pushed the hacky PoC to the github repo, check out src/communication/webusb.htm.
Wrote a "high level USB decoder" which sits on top of Saleae's USB LS/FS analyzer so that I can see the really relevant data. Should help getting me the #LEGO #USB Infrared Tower for the #Mindstorms #RCX analyzed better... and maybe provide #WebUSB support on #WebPBrick some day. Sometimes you cannot to see the wood for the trees. (I was surprised recently that this saying could be translated from German to English 1:1.) Planning to open source the tool.
Another day playing around with the #LEGO #Mindstorms #RCX:
This time, I've reactivated some #brickOS demo files. I just found out that I had installed the toolchain on my Debian-based laptop earlier but never really tried it out. It works!
You can now let a GitHub action build brickOS user programs for you: https://github.com/maehw/BrickOsTest
More details here:
https://maehw.wordpress.com/2024/06/23/using-l%cc%b5e%cc%b5g%cc%b5o%cc%b5s%cc%b5-brickos-for-the-lego-mindstorms-rcx-after-25-years/
👀 @luis_in_brief you migt be interested. :awesome: - Can you confirm that the `dll` download utility is based on LNP?
I am currently testing the #LEGO #Mindstorms #RCX analog clock. The NQC source code distributed with the original model does not compile in #WebPBrick's #WebNQC. Not too wild, as the main logic has been commented. I've added a touch sensor to initially set the clock during startup. And the light-based rotation sensor code has been replaced by code that handles the normal rotation sensor. 1/2
I've been able to fix my precious #LEGO #Mindstorms rotation sensor for the #RCX. It had the flaky wire syndrom. I then also used #WebNQC (Blockly-based) visual programming to generate some test code. I can now slowly move the axle and play sound dependent on the direction of rotation. A full circle gives 16 impulses.
After a long time, I've written another blog post. It's about the recent fun I had with the #LEGO #Technic + #Mindstorms (#RCX) plotter. I've also published my #NQC code there.
https://maehw.wordpress.com/2024/06/17/building-a-lego-technic-mindstorms-plotter/
Another iteration of the #LEGO #Technic + #Mindstorms #RCX based pen #plotter – based on set 8094. I finally understood how to retain the pen as intended by the original instructions - must have missed that before. Also added the "pen up/down" feature (another motor) - and this is why you do no longer see the inter-connecting lines from my last post. But, the pen is wobbly... and so are the lines now. Not too happy with this result. But it works. Used #WebPBrick + #NQC.
Found some more free time to work on the #LEGO #Technic + #Mindstorms #RCX based pen #plotter – based on LEGO set 8094. Thanks for pointing me to the Commodore 1520 plotter from where I took the encoded letters of the font from ROM and converted it to segment movements. The font can by the way be found as "FifteenTwenty" for the computer ‐ which helped me to have a reference. Still need to add a "pen up/down" feature and fix other issues... but it works. Kinda.
Hey, not too bad! The #LEGO #Technic plotter now basically also works with a #Mindstorms #RCX programmable brick. I've added a third switch for control (start calibration, start drawing) — so that you can calibrate without the own down. The L shape shows two half segments north/south (width) and two half segments east/west (height). The length of these segments is based on endstop calibration – basically two timer values. Next step would be to design something nicer.
First idea how the plotter of the #LEGO #Technic 8094 set could be improved... or extended to be controlled with a #Mindstorms #RCX: I've placed four touch buttons as end stop detections — two on each axis. The RCX has three sensor ports but as the motor direction is a configuration thing — it should be okay to have two switches in parallel (logically OR'ed) at one port. Let's see what the cabling will look like. This setup would allow to home the pen automatically and maybe also to calibrate.
Got me the #LEGO #Technic 8094 set. It includes a famous plotter model. After assembly, I let some kids play around. I am planning to connect it to a #Mindstorms #RCX instead of the Technic Control Center. Some neat ideas went into this set.
I've rebuilt Ben Williamson's "analog clock" #LEGO model which uses the #Mindstorms #RCX. Unfortunately, I do not have the fiber-optic component which he had used as rotation sensor. The rotation sensor I have still needs have its broken wire fixed. The clock gear defines a ratio so that the it needs to be driven with 48 discrete steps per hour (4 out of 5 minutes). Its programmed in #NQC. Mike Brandl has shared the PDF manual for this ancient technology on his website: https://lego.brandls.info/legbau.htm
Successfully dumped the #LEGO #Mindstorms #RCX' ROM. This is nothing special and has been done ~25 years ago, see http://www.mralligator.com/rcx/#Rom - but I may have been the first one doing it with bytewise with pbForth and a Python script (pyserial). Unfortunately, I stored every byte twice. :thisisfine: Of course, I also did not avoid some minor pitfalls before (e.g. trying to dump 16-bit signed(!) HEX numbers with minuses before). 🤔 🤓
TL;DR: It works! I've got a #Forth interpreter (#pbForth) running on one of my yellow #RCX programmable bricks. CC @rhempel
Wow... it seems that I was too narrow-minded - or too uncritical. 2400 baud, 8N1 did not work - that's the configuration which I read in at least one (if not two) book(s). It may have been correct in the past.. but adapted to 8O1 later - which is the same configuration as LEGO's original RCX #Mindstorms firmware. However, I do not know what version this is...
I am happy to announce: 🌐 🧱 💻 WebPBrick v0.2.0 is out. 🎉
You can now use the web-based visual programming editor called BlockNQC to generate Not Quite C (NQC) code:
https://webpbrick.com/nqc/blocknqc/
(It's based on Google's Blockly.)
The code can then be re-used in the WebPBrick IDE: https://webpbrick.com/ide/ (compile + download to the #LEGO #Mindstorms yellow #RCX brick)
The source code is on GitHub: https://github.com/maehw/WebPBrick
The website https://webpbrick.com/ has also been updated.
I am on a long train journey and had plenty of time to work on WebPBricks - the web browser based IDE for the LEGO Mindstorms RCX (the yellow programmable brick of the first Mindstorms generation). The goal was to get started in developing a block based programming frontend - and I am quite happy with these intermediate results (based on Blockly). Not published yet... but the generated code compiles successfully.
#LEGO #Mindstorms #RCX #WebPBricks #WebNQC #WASM #robotics #robots #stem #pbrick
Hi @rhempel. I might be digging in some real ancient #LEGO #Mindstorms gold for the #RCX pbrick. But I got curious and want to try out #pbFORTH. Somebody put a GitHub repository online here: https://github.com/BrickBot/pbForth/tree/master/pbSource -- can you guess if `pbSource/pbforth.srec` or `pbFirmware/pbforth.srec` is newer? Can you recommend some tutorial to get started - or a good starting point on your website from back then being stored by web.archive.org?