The nice thing is that micropython comes with a full blown networking stack , encryption and the whole hoopla. All the annoying crap nobody wants to deal with is already handled. you don't need to muck with libraries.
But surely at some point - SOMEONE
Of course. but with MicroPython it has already been done. Benefits me directly. Too many devkits come with a massive lump of code you have to dig through to get it running. I have not seen a single devkit that comes with turnkey systems. It takes several days to understand the toolchain. MBED is getting there but it still is a royal pain in the patooie sometimes.
Compare to freeRTOS which also gives you this stuff, with its own API for the features that will be about the same as the micropython hardware API. except freeRTOS is years older, and so years more developed, with support all over the place for numerous chips (actively supported and encouraged for use by most cortex M manufacturers!) And if you have a problem with FreeRTOS, it's all there in your project to dig into and look at if needed
i don;t wan tto dig in. i have an application to write. i do not want te learn about operating systems, have to find a librarary that handles tcp/ip transport or ble transport , find a library that can handle json and encryption and figure out how to make all these things work nicely together. i am a visual basic programmer : meaning i am used ot a rich set of instruction provided by the development tool. in a few lines of code i can do what i want as the 'operating system' already provides everything.
I have seen people try to develop an embedded module that configures an i2c slave properly, get data bytes out , format them as human readable text , and get the data loaded somewhere on a server.... using the regular tools. it takes days and the learning curve is very steep.
do the same thing using an electric-imp or a laird BLE600 and it is peanuts. why ? because all the heavy lifting is already done. simply do something like this :
while 1(
if handle = void then
handle = connect(gateway,hostname,username,key)
if handle=void then toggle_red_led
else
red_led=off
data = readsensor <- i will write the code for 'readsensor'
transmit (handle, jsonformat(data,formatstring)
toggle blue_led
end if
or something along those lines.
this checks for a connection , if none exists : open it. if failse : blink red led. if works : read sensor data, format it and send it. blink blue led.
how much more complicated do you want it ?
this is the problem with all these iot things : i have a ton of idea's , unfortunately my coding skills are none to very mediocre. i need simple stuff. i can hack an i2c and spi bus like the best. but i have no clue how to write the underlying code to set up a ble or wifi link to a server and get data there. that 'heavy lifting' needs to be done for me.
Any microcontroller manufacturer that wants to win the market needs to provide the fabric to do that. ( that is what espressif is doing ) People simply don't want to deal with that complicated stuff. It is time consuming , error prone and reinventing the wheel. The silicon itself is worthless these days. Any 32 bit machine can be had for 1 to s$. I don't care where i buy it from. My selection criteria is : what is MY time to market. And that is heavily dependent on the tools/examples/code provided and how easy it is to pick it up and work with it.
you can use these parts with a C compiler, too.
even in assembly or using a hex editor. but why do you want to torture yourself ? and go through endless , compile, download, reset , doesn't work , alter , compile again. flash again...
with an interpreter i can alter a few lines and directly run. i can scatter debug code left and right and then simply comment it out. i can get a command prompt and execute a few lines interactively.
Having the capability to just type in a few commands and see immediate response is a dream to develop code.
OK, now using serial port debugging from inside your python application,
interactive prompt. simply type i2c_send_start <enter> and wathc the SDA and data lines toggle.
nothing beats the capabiltiy to call the functions from a prompt. (or jiggle the pins interactively) once you figure out how to do it then you can craft the routine properly.
you try tracing what happens when the I2C driver compiled into the executive
not my problem. the executive is supposed to work.
the memory allocation code
not my issue. executive issue .
Or the way the generic OS sleep
not my issue ..
I split my code form that what is provide and assumed to work properly. Gone ar ethe days where you develop everytinhg yourself , from scratch. Whoever gets me the richest, easiest to use platform at the lowest price will win my business.
And having all the relevant code for even looking at what might actually be happening under your application locked away
Micropython is fully open source. you can dig as deep as you want. down to bare metal and datasheets.
anyway. my mindest is different. i have something i want to do and needs ot send it's data to a webserver for interaction. i wan this over an encrypted link. don;t want to learn about networking , bluetooth and all this other kerfuffle. just give me afunction call to open the connection and one to send and one to receive. i will do the rest.