Arduino Diary – Week 4

Brief recap; every Wednesday afternoon, a group of us are mucking about with Arduino, just to stretch understanding of that space, fuel our imaginations with some different approaches, and have fun doing it.  And drink tea, and eat biscuits.

This has been a bit of a busy week; working hard on existing stuff, pitching some new stuff, and looking after the wee fella a bit as Helen felt under the weather.

So I didn’t make it down to Brighton for our Arduino group session.

But I did find time to interview (via email) Julián da Silva Gillig in Argentina.

Julián is the creator of Minibloq which I mentioned last week; it’s a program he’s created which lets you visually piece together the code you need for a vast range of Arduino-type boards… you’ll get the idea from this video:

 

 

I’m a massive fan of the idea behind the program, so thought I’d find out a little bit more about it and where it might go next…

 

JVW: When did you start thinking about solving the problem that Minibloq addresses?

JdSG:  Well, really, in 1995.  I was 18 and was making parallel port interfaces and some elementary sensors to teach robotics in primary (and some secondary) schools.  I don’t remember the details, but I wanted to have a simple graphical software to program those physical devices.  I did not know enough to implement the thing that year.

But I started to work anyway.  Finally, in 1997, I released Minibloques.  It was not open source but was free.  After that, I never stopped thinking about this kind of environment, but I started to work for different companies, and did not have the time to work on it.

This is screenshot of the original Minibloques:

 

JVW: Why did you start Minibloq?

JdSG:  After some years with regular work (but always trying in my leisure to design something to teach robotics), I finally quit the company where I was working and started a small robotics company with 2 friends.

We were making heavy robots, like this one for example:

 

We also made an educational building system called Multiplo:

 

It became evident that we were needing something like Minibloq to compete with other systems for schools, and to grow our (small) market share, so I started personally to design it.

Finally, in 2007, I left the company, and my arrangement with my friends was to keep Multiplo as my own IP.

At the end of that year 2 things happened: First: I knew Lucio and Monica from RobotGroup, so Multiplo became a product of RobotGroup.

Secondly, I got funding from the Argentine governemnt to start working on a generic software framework for robotics (called “XDF”).  Minibloq was part of the XDF.

Multiplo became full Arduino compatible in 2009 (it was already AVR based so it was easy).  As RobotGroup was focusing more and more on schools it became evident that the C/C++ of the Arduino syntax was not positioning well the product to teach to children, or some beginners.

So I accelerated the development of Minibloq.  But I wanted to make it open source, free and compatible with Arduino, Maple and as many boards as possible.  And I needed the Kickstarter support fot that.

There is the “why”: it was a long process.

 

JVW: Who is it for?  I’m a pretty bad, hacky coder, and something in me just went ‘YES’ when I saw it?  

JdSG:  Children and beginners at the moment.  In the future, it may grow, who knows?

 

JVW: Don’t take this the wrong way, but Minibloq looks like a game – is that intentional?

JdSG:  Don’t worry!  It’s more or less intentional.  I took a design decision that was to use as less text as possible in the blocks, specially to make it independent from the human (ie: English, Spanish, Japanese…) and from the generated computer language (Minibloq is a generic code generator for imperative and OOP languages).

 

As I’m not a designer, I looked for open source / free icons.  And based on the icons I found (made by other people, or course), the aesthetics were involving.  Anyway, both the icons, the colours, and other things on the look and feel are customisable in the XML block files.  Future block developers may change the appearance of the program a lot.

 

JVW:  What would you like to see Minibloq achieve in the future?

JdSG:  Right now, the most immediate goal is to build a user community, as big as possible.  Regarding the software itself, there are some short term goals, and an extensive long-term roadmap.

But once the sources become released, and if there is an active user community, I think there can appear new things that I just not imagine now.

The more important short-term objectives are to have it running natively in Mac OS X and in Linux, the complete internationalization (with translations to many languages) and the necessary improvements to let users to add their own blocks and hardware.

Some friends are helping with the Linux and Mac OS X versions, and a lot of people from different countries offered to translate the soft once the internationalization subsystem becomes ready.

After these goals, there are a lot of things to improve, and to be added, and I don’t know where this should go…

 

JVW: Thank you very much, Julián

————————————-
I think Minibloq is a fascinating project, for many reasons…

On the grander scale, it encapsulates the way in which small groups and individuals can start creating and sharing ideas across many borders and timezones, creating versions from previously open materials, and then opening up what they create for others to build upon.

And at a more precise level, it’s looking to take physical computing and putting it in the hands of people who have an idea (or at least interest in exploring what they could do), and creating a programming shortcut so they don’t have to be able to read and write code.

This sort of shift, as it starts happening in lots of smaller pockets of culture like this, is vaguely similar to when reading and writing stopped being the preserve of the priests and monks, and started to be something that ordinary people tried.

And we all know how that turned out.
Please follow Julián on twitter here, and the Minibloq blog here, and help him grow the community by taking part.

 

Arduino Diary – Week 3

Brief recap; every Wednesday afternoon, a group of us are mucking about with Arduino, just to stretch understanding of that space, fuel our imaginations with some different approaches, and have fun doing it.  And drink tea, and eat biscuits.

My current project; make a device that allows me to set a level, hit a button, and send a signal to a feed which I can then turn into…

…well, maybe tweets, maybe auto-profile picture setting, maybe something else.

I’d better get it working first.

Lots to do this week; get the bar graph LED and switch working on the same board, in the same block of code, and get it to send information to the mac based on what the settings were.

But first things first… superfluos aesthetic tinkering.  Turning the dial up and down wasn’t fulfilling enough, it needed a touch more something.  Like a Gibson Les Paul guitar knob, maybe:

From a practical perspective, it’s got the 1-10 scale, and from the emotional feeling of turning it, it simply reminds me of playing guitar (which I don’t do nearly enough, nowadays).

After a good few hours, I had something cracked… all of the above working on the same board, and the switch affecting the flow of data from the analogue knob and, most gratifyingly, the system sending that information back to the mac.

You can see the output on the graph on the screen here:

But, crucially, it isn’t doing what I exactly want it to… the data flow from the analogue knob is constant and the switch interrupts that flow.  I want the switch to send, once, whatever the setting level is.

Which means the physical build is right, but the coding is wrong.

Dagnamit.

My ‘lego coding approach’ (find the block of stuff you need from elsewhere, patch it in) isn’t refined enough for this.  I spend a couple of hours tweaking things line-by-line, but to no avail.

So before next week, I might look at trying to run Minibloq on the mac (it’s Windows only, but there are ways around that); it’s a program that builds the code for you, if you just assemble the board visually on the screen, and tell it what you want it to do. It’s in beta at the moment, so probably worth a play.

Let’s see where that gets me.

 

Arduino Diary – Week 2

It’s been a busy week.  So much so, that I notice my last post here was… ah, a week ago, about this.

And so busy, indeed, that all I managed at our wee Arduino collective thing was two and a half hours.  Enough time to unpack, play a bit, and pack up.

I have a vague short term goal in mind, which came up last week:

“…an idea for short term project to focus on, something to aim towards; a very basic sliding potentiometer, that has a series of LED lights that light up as it’s turned up, and then a “send” button that tweets the status.  A kind of sliding mood status, or perhaps a productivity gauge I can score out of ten, and find peak productivity times.”

 

So, things about that I couldn’t do then:

– a series of lights that turns up, and down.
– a “send” button that sends an action back to the computer
– the understanding of how to send it to the twitter

With the little time I had today, I focus simply on the two things I think I can do… the LED lights, and a related send button.

Now, some trawling around in the backstreets and bazaars of Amazon resellers helped me find these little fellas:

LED bar graphs; each one an individual LED, with separate controls, but together as a unit.  Plug it in to the breadboard, wire each to a separate port on the Arduino, and then write/find some code which will work.

Actually, note on wiring; I seem to be developing a form of specific OCD about wiring wherever possible.  I may have wasted too much time on the green & yellows below, for instance.  I shall continue to convince myself I’m doing it so I can better see what I’m doing.

 

 

Funnily enough, I have not developed the same OCD about the code in Arduino, despite Pete’s best efforts to explain why it’s better / neater.  The indenting is a pattern I have yet to recognise as beautiful, perhaps; I wouldn’t necessarily consider the below to be a logical, easy to interpret way of understanding where you are.  I’ll either learn, or just make up a way that works better for me, I guess.

 

 

Another thing about the code; it’s always seemed like I should learn it from scratch, and understand every line.  There are tutorials for these things.  But… I’m basically a Lego coder at best; I think about the ‘size, shape and purpose’ of the bit of ‘Lego’ I need, I search on the internet for it, and find someone who’s done it already.

Which is exactly how I get this working…

 

Turn the dial, ramp up the LED display.  I didn’t put any resistors in, just to see what would happen.  It’s really bright.  So much so that I blew one of the lights, so the red display has been replaced with a blue one.   It’s more Jedi now than Sith, I guess.

Anyway, that was a very pleasing moment.

What was less pleasing was that I couldn’t get the “send” switch working on the same board.  I managed to do a simple switch last week.  I couldn’t today.  Two steps forward, one step back.  I’ll crack it next week.

 

 

Arduino Diary – Week 1

Every Wednesday, from now until Christmas, I’m spending Wednesday afternoons with some friends doing a bit of R&D on Arduino, the open source microcontroller.   I’m a novice, as are a lot of the others,  but luckily there’s a couple of people who know a bit more about what they’re doing.

I’ve mentioned Arduino before, and shared this film too I think, but for a recap it’s lovely and worth watching when you have time.

Arduino The Documentary (2010) English HD from gnd on Vimeo.

Anyway, I thought I’d do a very quick weekly roundup of progress, as much for my own records as anything, so I can look back at progress.  This is week one.


Week one

Arrived with Arduino in hand, a cable to connect to Mac, and that’s it.  I actually missed the first week, so I spend the first hours learning how to do the basic first exercises, borrowing some of Matt’s peripheral electronics to do it; really simple, yet hugely gratifying stuff…

‘Here’s how to make a button send a 1 or 0 to the computer, here’s how to make a light go on, and off, and on, and off…’

There is a light that frequently goes out.  Then comes on again.  On a loop.

 

Suitably enthused, it’s a quick trip to Maplins to pick up some of my own peripheri.

“Don’t go mad, like I did, and buy lots of random stuff” says Matt.

I go mad, like Matt did, and buy lots of random stuff.

The rest of the afternoon is spent, with the the help of Pete, playing around with potentiometer (analogue turny dial things, if you prefer), writing code that determines how much the light goes on by, using two LEDs so that as you turn the dial one fades and one lights up.

 

Which gives me an idea for short term project to focus on, something to aim towards; a very basic sliding potentiometer, that has a series of LED lights that light up as it’s turned up, and then a “send” button that tweets the status.

A kind of sliding mood status, or perhaps a productivity gauge I can score out of ten, and find peak productivity times.

Or maybe something I can set as an aspiration for productivity, so that I set a level, and then force myself into an “8” for the next hour.

 

Maybe it’s a mixture of the Bachman Turner Overdrive level in Smashey and Nicey (enter a certain ZONE) and Mean Machine Angel’s Dial in Judge Dredd (set a level of desired performance).  That’s a combination you don’t hear about often…

 

Anyway, once I got home, and had eaten dinner, I tried for a few hours to make the potentiometer tweet the value it was outputting, by cribbing various bits of code from examples here and there.  But with absolutely no success.

Having hit the wall, I retired to bed, feeling both delighted with progress of the first day, and narked that I hadn’t managed to make a turny-knob write something stupid on the internet.

That’s next week’s aim sorted though.

And in eight weeks time, I’ll have a dial in the centre of my forehead…