Minibloq: Graphical programming environment for Arduino


I’m working on an new graphical programming environment for Arduino, physical computing devices and robots. It’s called Minibloq and, although it’s not finished yet, it’s possible to see something here:


I think it may be specially usefull in schools, and it may have some interesting features as well, like the following:

  • - Runs completely offline and it's portable (can execute from a pendrive).
  • - It's fast (C++ native program).
  • - Really generates C/C++ code, compiles it and sends it to the board's flash, just with one click.
  • - Wine compatible: It even runs on an OLPC XO (there are videos on the website).
  • - Expandable.
  • - Modern GUI, with dockable panes, zoom, key navigation, etc...
  • - Made with open source tools (basically wxWidgets, MinGW, Code::Blocks, Inkscape...)
  • - Once finished the v1.0 it will become open source (MIT like license, with just a limitation: non-military use).
  • I’m trying to finish a first public version (v0.4) for the end of the next month (waiting for a possible kickstarter one-month campaign).

    Feedback is welcome!

    Here is a small screenshoot (a blink program): … /Blink.jpg

    Ah, and here are examples:



    Ahh, reminds me of the ol JavaStudio, component programming…

    It was the coolest thing Java ever did and Sun killed it.

    How easy is it to create the component bloqs?

    I’ll look at it when I get home…

    Hi, thanks for your comments!

    The blocks are not difficult to create,you need to provide the following:

    1. The images, both for the block itself and for the toolbar (or picker) button.

    2. An small XML file, telling the system which images use, which help tooltip to show, and wich code the block generates (and yes: the code does not necessary must be C/C++ code, Minibloq is language independent, but oriented to imperative and OOP languajes).

    3. Some blocks include a header or an extra code file, with auxiliary functions or classes, but that is up to the block’s programmer.

    However, please note that in the version you see in the demos, all this is still hardcoded. That stuff will be ready in the v1.0 version.



    This reminds me of LEGO’s RIS and NXTG languages. Both were designed for “can’t make a mistake” scenarios. Both were so limited as to stunt the ability of users to do productive things with them. Hope that is not the case here.

    Hi, I made it with some specific problems in mind, working together with other people: All of us are or were teaching robotics to kids (8 to 13 years old). And the mistakes like a forgotten “;” are common in the classroom. So this is intended for both kids and beginners, to improve teaching and self teaching.

    One big difference with other environments, is that this is being specifically designed to make the transition from graphical programming to text based, that´s because the user can see the code, with colored syntax, etc., and even copy that and paste in the standard Arduino IDE or Maple IDE.

    Another difference, for example, with the NXT-G, is that here the program flows vertical, not horizontally, so the blocks and the code are more similar (oh, and we have zoom, :slight_smile: ).

    And finally, Minibloq is expandable by the user, with XML, so there is no limit to the things that can or can’t be done. My hope is that if all this stuff works, a lot of people could be introduced easly, then expand the environment, and finally go the text based programming.

    Regards, and thanks!



    I am a long time FIRST LEGO League coach. I have lots of experience teaching students with Mindstorms. I can tell you that RIS and NXT-G are simply awful teaching languages. Yes, they get a team up and running quickly, but they have little growth opportunety. Once you fill up your limited memory with all the Labview run time engine, you have little space (or speed) available to do any real work. The NXT-G icons are also so powerful that they discourage the students from learning what is really happening in the computer.

    My prefered legal language is Robolab. Another Labview tool, but in this case, Labview generates native code like a compiler does. It also is very barebones (like C) and makes students THINK. Yes, it is slower to get them started, but they can go much farther.

    I hope you take these ideas to mind when you develop your language. If you wish to talk more, we can go offline and talk privately.

    Hi Skye, many thanks for your feedback. It’s very valuable for us. Regarding some of the things you mention, I can tell the following:

    1. Minibloq generates native code. It has very very little overhead (in fact, the only overhead is the Arduino core, already there when programming with the Arduino IDE). And as the Arduino core is precompiled, the compilation is faster than the Arduino-IDE.

    2. The backend is the gcc, so the hex is as efficient any other gcc compiled hex.

    3. The blocks are very simple. In general they are equivalent to a single Arduino command. And the user can do some things in a lot of ways. For example: You can drive a motor with the Motor block, or you can drive it with (a few) IOPin and AnalogPin (PWM) bloqs, doing it the hard way. That’s up to the user, or to the teacher. In future versions (not the v1.0), we are planning to add some kind of user profiles, so the teacher could set which blocks the students can or can’t use. But that’s in the roadmap, not a current feature.

    A question: I’m not so familiar with this forum, how can we go offline to talk?

    Thanks again!



    You can click on the PM button under one of my posts. That will allow you to send me a private message. I will then reply with my email address and we can talk and not bother the rest of the group.




    You can click on the PM button under one of my posts. That will allow you to send me a private message. I will then reply with my email address and we can talk and not bother the rest of the group.

    Skye & Julian,

    You certainly weren’t “bothering” me, I found the conversation interesting (I mentor an FRC team.); I just didn’t have anything I thought worth adding.

    If there are people who aren’t interested, they can stop reading the thread. Contrarily, if you move the conversation out of the forum, you deprive the rest of us of the option to read and, perhaps, participate. I do not mean to deny anyone’s right to privacy, but I’d generally prefer that technical discussions be kept where they add to knowledge accessible to the group.


    Notice: The estimated value of the remarks above is $0.02.

    Hi Eric,

    Thanks for your message! I understand. Well, I’m here to tell anything that anyone wants to know about Minibloq. So the thread is still here. I will be uploading more info on the project these days, to the site (you can even follow it, because it’s a blog). There are links there (in the Documentation section) to other discussion threads too, with other user communities, like the Arduino, Maple, etc… I think all these forum threads will enrich the whole thing.

    Regards, and thanks again,



    I was more thinking about a private talk about teaching students programming. Not something the average SFE forum reader is interested or what the forum is “about”. And yet you have a valid point. Julian and I did share private emails, but as of yet have not shared any significant information. Just a rehash of what we had already said.

    Hi, Minibloq is in Kickstarter from today:

    This means that the release is comming soon!

    Any help making this public is very very welcome.



    For what it’s worth I’m actually very interested in what you have to say about teaching kids programming and robotics. I’d previously mentored an FRC team (443) but lately have wanted to get involved in teaching younger kids, and possibly doing some kind of class to spark interest in robotics and tech. Very curious to hear about your experiences.

    Hi Shimniok, thanks for your comments!

    First, sorry for my English, I speak Spanish natively.

    Teaching robotics to kids: big thing! I worked both with kids and with adults (mainly beginners). We used different equipment, but now we work near everything with Arduino-compatible controllers.

    But with small kids, we had some problems with text based programming and C/C++ syntax. So we started Minibloq as a side project at first, and now want (need) to finish it as fast as possible to start using it in the courses and, as it’s open and free, to help others to use non-propietary tools for teaching. I personally worked (and works today) in the details that should make the user’s life simpler. For example, Minibloq shows the errors in real time, in red color, and you can always see the generated code side to side with the blocks. More: The code flows vertically (in some other tools, it’s horizontal), so the text based code is very similar to the blocks code. This is important specially for those kids that will start using text based programming, after they has learned the basics with the graphical tool.

    Minibloq will have some extra features, that we think are very important (some of them are already implemented, others not yet):

  • - Some tools (even propietary, paid ones) lack zoom (incredibly, isnt't it?). So it's not possible to visualize the whole program when it grows. Minibloq has.
  • - Minibloq was designed to run and to be confortable, even in netbooks. This is important. We started using laptops in the courses, but when the space is small (and that was our case), you need all the possible space to build and test the robots. So netbooks are better in these cases, and of course, cheaper. With Minibloq, You can do most actions both with the mouse or with the keyboard.
  • - It's standalone. Some places lack a good Internet connection. Minibloq can run even from a flash drive, because it is installation free (except for the hardware drivers).
  • - One very important thing is that Minibloq only shows to the user the blocks that can be used in the current context. So the user is not annoyed looking the block he wants between a lot of them. For example: when you want to add a numeric param, you only see the numeric picker.
  • There are more things, so we can continue talking about it.



    Minibloq’s Kickstarter page is Thanks!


    Finally, after a lot of work, the first Minibloq Beta version has been released:

    It’s just a Beta, but I hope you enjoy it. There is also preliminary documentation here:




    Last week was released the Minibloq.v0.81.Beta, which is the first version that supports full internationalization. Soon I will be posting about the roadmap of the project, as well as updating the documentation with the new features. Also, I hope this week to document exactly how to add complete translations to any language.

    Here is the post about the release: … -full.html


    This is the changelog: … ssues.html



    Hi! yesterday, we released the Linux native version of Minibloq: … eased.html

    Feedback, testing and ideas are very welcome…