Page 1 of 1

MicroPython running "bare metal" in the browser via unicorn.js

Posted: Wed May 24, 2017 9:34 am
by Damien
Hi everyone!

We have recently developed the ability to run MicroPython "bare metal" in a web browser. This is acomplished using unicorn.js, which is an Emscripted version of unicorn, which is a stripped-down version of QEMU. We have used unicorn.js to implement a Cortex-M3 based "virtual microcontroller" that runs in the browser. And then this virtual microcontroller runs a port of MicroPython, the unicorn port.

Running this unicorn port of MicroPython will give you a good idea of what it's like running MicroPython on the bare metal of real hardware, and allows you to test stuff out quickly, and get to know (new) features of MicroPython.

Find a running version at: https://micropython.org/unicorn/
Find the source code at: https://github.com/micropython/micropython-unicorn

At the moment the port is pretty minimal and doesn't have many features enabled. Plans for the future include different builds of unicorn MicroPython to show-case size vs features, as well as modules such as "machine".

Enjoy!

Damien // George Robotics.

Re: MicroPython running "bare metal" in the browser via unicorn.js

Posted: Thu Aug 17, 2017 9:48 pm
by marfis
Just saw that the link has been updated with examples to select/test virtual LEDs, Servos and ADC in the browser.

Awesome.

Re: MicroPython running "bare metal" in the browser via unicorn.js

Posted: Fri Aug 18, 2017 6:22 am
by pythoncoder
As far as I'm concerned Clarke's third law applies to this. Amazing ;)

Re: MicroPython running "bare metal" in the browser via unicorn.js

Posted: Tue Aug 29, 2017 11:42 am
by SpotlightKid
This is really helpful for demonstrating / teaching MicroPython! Well done.

Re: MicroPython running "bare metal" in the browser via unicorn.js

Posted: Thu Sep 07, 2017 10:21 pm
by deshipu
Shame it also became a victim of the ever-changing APIs.

For instance, the "Pin LED" demo errors with: TypeError: 'PIN' object is not callable

Re: MicroPython running "bare metal" in the browser via unicorn.js

Posted: Sun Sep 10, 2017 7:41 am
by Damien
deshipu wrote:For instance, the "Pin LED" demo errors with: TypeError: 'PIN' object is not callable
Thanks for pointing this out. Unicorn is still very much a work-in-progress. The ability to call pin objects was actually implemented recently (see https://github.com/micropython/micropyt ... e2ba40055d), and this commit is now deployed on the website.

Re: MicroPython running "bare metal" in the browser via unicorn.js

Posted: Wed Jul 11, 2018 1:33 am
by UltraBob
I just came by to look at micropython again after a long time away, and it is pretty great to see some of the progress. The ability to run demo code online is extremely cool. Unfortunately, the servo demos seem not to be working at the moment. No errors, just nothing actually moves. When I put in some messages to print between each servo command, they all seemed to run at the same time, so maybe that is a clue.

Re: MicroPython running "bare metal" in the browser via unicorn.js

Posted: Tue Mar 12, 2019 6:01 am
by vdb_peter
Hi Damien- thanks for this resource- using it to "spread the word"!

Any chance it can be upgraded to 1.10, please?

Many thanks
Peter

Re: MicroPython running "bare metal" in the browser via unicorn.js

Posted: Mon May 20, 2019 12:23 am
by shazz
Yes! Could we upgrade ? I like to use it to test things when I don't have my env.
Thanks !