Bringing a Better Port of MicroPython to ESP8266 (Crowdfunding)

MicroPython is an lightweight implementation of Python 3 that runs on ARM Cortex-M micro-controllers such as STM32 or Texas Instruments CC3200, and since ESP8266 is so popular, work has started to port MicroPython on the Tensilica Xtensa LX106 based WiFi SoC.

MicroPython_ESP8266

The current ESP8266 port comes with some API callss specific to ESP8266, but is quite basic, uses the execution model provided by Espressif, requiring callbacks to process WiFi requests, and doesn’t include support for many of the chip’s interface such as SPI, nor support WiFi fully.

That’s why Damien George, the project lead, has launched a Kickstarter campaign to help fund development of the port, aiming to raise at least 6000 GBP (~$8,500 US). The goal is to develop “proper” Berkeley sockets for MicroPython on the ESP8266, in order to provide a true Python socket API to make development easier, optimize RAM usage, and implement the missing parts on the current port.

Since there are so many ESP8266 modules on the market, they decided to do a software only crowdfunding campaign. Backers will receive MicroPython ESP8266 firmware for their development board – It will be developed on Adafruit HUZZAH boards -, as well as tutorials  and documentation, with the source code released 6 months later, unless the 12,000 GBP stretch goal (~$17,000 US) is reached, in which case they’d just release the code at the end of the campaign.

Pledges start at 7 GBP ($10) and go up to 700 GBP (~$1,000), and the more you spent the higher support and influence (vote on modules) will be. MicroPython ESP8266 v1.0 firmware is expected to be released in May 2016.

Thank you John!

Share this:

Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress

ROCK Pi 4C Plus
Subscribe
Notify of
guest
The comment form collects your name, email and content to allow us keep track of the comments placed on the website. Please read and accept our website Terms and Privacy Policy to post a comment.
16 Comments
oldest
newest
Marius Cirsta
8 years ago

What’s with this insanity, python, LUA, even JavaScript for micro controllers ? Seriously folks, is it that hard to program in C/C++ ?
Why wast precious resources with such languages ?

bjorn
bjorn
8 years ago

This is fantastic, thumbs up! I might have to chip in on this. @Cirsta, it’s about workflows and libraries, mainly. And you shouldn’t evaluate this as a standard “compiled c vs an interpreted language” discussion inherited from the unix world. It really isn’t. It’s not like you’re bringing the interpreter itself to the esp. Sure, doing C for µCs isn’t too hard, but learning C and related C apis for this specific device, porting all your application specific libs to it, etc, takes time. Having language specific compilers like Micropython enables regular python devs to produce working code and port… Read more »

Paul
Paul
8 years ago

Thanks Jean-Luc! I wanted to ask if you would be interested to review the current state of MicroPython (after all, not every project is up and kicking 2 years after the initial Kickstarter campaign), but was too shy to ask. I mean, you can do it even with “unix” port (there’s package manager, web microframework, sample web app to try) if you don’t have a compatible embedded board (but that can be arranged too). My initial interest for MicroPython was exactly in having powerful and pleasant language for all those 4MB routers, where even OpenWRT could hardly fit. Over time,… Read more »

Paul
Paul
8 years ago

Marius Cirsta : What’s with this insanity, python, LUA, even JavaScript for micro controllers ? Seriously folks, is it that hard to program in C/C++ ? Why wast precious resources with such languages ? I wonder the same about Lua and JavaScript. But Python, Python just rules! 😉 Seriously speaking, the precious resource is human time, user time. And vendors are happy to churn out more and more chips, and there’re no (not enough) portable APIs to program them (because portability means wasting precious resources again – right? Well, not exactly, other reasons play role too.) All in all, you… Read more »

Marius Cirsta
8 years ago

For ESP8266 you can just use the Arduino stuff and libraries for which you’ll find loads of code. I really don’t think it takes much more to code using that or some C++ libs than it does with python. I’ve seen python, it’s not bad but for me uC programming is a C/C++ only deal and anything that doesn’t compile to machine code has no place on my uC. For that matter while I’m not a big fan of Apple but you can clearly see the difference between iOS compiled to native stuff and Android with their Dalvik or ART… Read more »

Paul
Paul
8 years ago

> I’ve seen python, it’s not bad but for me uC programming is a C/C++ It’s already a big progress – couple of years ago many people had that “C++ and microcontrollers?? Wwwhat??” 😉 > For ESP8266 you can just use the Arduino Ok, so you’re ok with Arduino, even though it’s well known that many operations (including I/O) aren’t efficient – just because it uses subset of C++? Well, but then it’s just natural next step to go to a scripting language. If you didn’t make that step or made an oath to never do, that’s all ok. Just… Read more »

olin
olin
8 years ago

It would be interesting to have a poll about what developers on this site think about using scripting languages on uC vs. C. I personally side with Marius on this…

Peter Scargill
8 years ago

@Marius Cirsta
I agree – all that is happening here is that people are limiting what they can do. There isn’t enough RAM to do serious stuff unless you use a compiled machine-like language such as C. No amount of development will change that because the RAM can’t be expanded on the ESPs. There are environments on both Linux and Windows and the API is well documented. There are also many examples of code. I don’t see this one flying.

Paul
Paul
8 years ago

> because the RAM can’t be expanded on the ESPs Sorry, but if you write in C, you still can’t expand RAM on ESPs. And that’s one the points – as a long-time esp8266 hacker, I know of ways to get more RAM to user, and those ways aren’t secret – they’re well discussed in hacker community. But I don’t see that ideas be tested and tried, and implemented for users’ benefits. All that “C/C++” programming evolves around munging with a weird proprietary vendor API (so if the chip is gone (or better one appears) – and that happens regularly,… Read more »

eas
eas
8 years ago

@Paul I’m glad there are people like Paul who have both the skills to improve the esp8266 port and the perspective to realize that there are people without those skills who will benefit from his effort. As for the idea that people are limiting what they can do if they use micropython on an esp8266. What nonsense. A lot of the people who use python don’t consider themselves programmers or software developers. They consider themselves scientists, architects, etc, and they use python because it provides them a good way to do what they need to do. If micropython on an… Read more »

ben
ben
8 years ago

I had attempted to port upython to an 8051 microcontroller but couldn’t get it to work.. the documentation on using upython is great, but nowhere near that level for putting it on a different platform.

Perhaps it’s gotten better since I looked into it.. anyone have any experience with the porting process to a different microcontroller (specifically the steps involved in compiling, since the 8051 compiler is non-gcc, so can’t make use of the makefile )

Paul
Paul
7 years ago

As a status update, the port (https://github.com/micropython/micropython/tree/master/esp8266) shapes up nicely. There’s pretty complete support for sockets and hardware protocols (I2C, SPI) now. More work is under way of course!

Paul
Paul
7 years ago

General availability version of ESP8266 port has been released on schedule: https://www.kickstarter.com/projects/214379695/micropython-on-the-esp8266-beautifully-easy-iot/posts/1568461 . Everyone is welcome to build it from the github repository!

Khadas VIM4 SBC