Playing with WIO

We’ve had a very busy weekend – a friend of mine, Jonathan who’s another gadget guy stopped over and while the girls went shopping we spent the weekend been buried away in the man-cave experimenting. Firstly – a link for you – if you have an LG TV – here’s how to control it from the command line – and hence if you like, from Node-Red.  

Jonathan brought some kit over including a Seeed Studio WIO board and a couple of peripherals.

For beginners: Seeed do a series of products under the name of WIOLINK – one larger board and one tiny one with ESP8266 WiFi controllers, together with various peripherals. Together they make a nice playground with a very clever cloud-oriented setup whereby you can use a mobile phone to set up the board and peripherals are set up via the cloud. Once in place you can call an API to do your own control.

Grove LCDFor example – you need a controller for an RGB LCD Display? Dial up the display from their list of covered products (their own – usually small peripherals with a common 4-way connector) – press go – and the software on the board is updated to handle the new peripheral – which you can now access via an http POST. In the case of their larger board with several connectors, the APP even tells you which connector to plug the peripheral into!

Now this cloud-based approach is all very nice but originally this was based in China… my first thoughts were that I would not put it past the Chinese government to have a back door to such systems – imagine if millions of us were controlling our homes using their servers – what a powerful tool for disruption that could be – well, they now have a server in the USA and I believe you can do your own at home if you want but I’ll leave you to look up their info on that subject. For me this is just something new to play with and get ideas from.

NOT for beginners: Armed with an original WIOLINK board and a couple of peripherals, we set about this weekend to see how well this worked.  The phone APP all works well, their hardware seems to work well but when it comes to using the API once you’re all set up, the only Node-Red node we found has not been updated in a while and does not seem to work well.

So this is aimed at people who don’t want to get the soldering iron out and would prefer not to program either. And that’s fine.

But we wanted to see how this worked and see what we could do with it – and importantly what others who read this blog might want to do – so we took a bog-standard ESP-12 module, programmed it up with the Seeed code and… well, read on…

So you have a standard ESP-12 module, preferably with prototyping pins – and you want to make your own WIOLINK board – firstly if you don’t have it, you may wish to get the Espressif flasher. Then you need: Assorted binaries, and two bin files user1.bin and user2.bin.

Put them all in a directory somewhere, maybe called \wio.

Flash the software as such:


And that’s it  – you have all you need to get started.  Grab the WIO app for the phone and get a free account.

If using an ESP-12 module instead of a genuine WIO board, where Seeed refer to using UART, then RX on the ESP8266 is D1 on their boards which is the outer connection opposite ground and TX is the inner connector next to RX – of their standard 4-wire connector. Vcc is 3v3 except in the case of their RGB LCD which needs 5v (that will be to keep the LEDs happy). Make sure you don’t use 5v on other peripherals.

If using their I2c port – SCL is GPIO5 and SDA is GPIO4 (some boards may be reversed on some ESP-12 boards).



We tried this out using the excellent Grove LCD RGB Backlight (which I’ve since managed to get running on my own ESP8266 code as it is very pretty), magnificent if only because you can make the backlight any colour you like!!  Everything just worked once we figured out the pins. YES you can get alternatives to this board for less money – but until I can get my hands on one – I can’t tell you if they are compatible. In particular, you can set the backlight on this board to any colour your heart desires, using RGB values. Want a light purple or an ice-green, or pink etc. – no problem. This actually transforms an otherwise utterly boring 16 character by 2 line display into something far more useful.

To set these up, Attach a LED+resistor to GPIO2 as an indicator with the other end grounded. The programming pin is GPIO0 – equivalent to the setup button on the real WIO device. Hold this to ground for a few seconds to go into setup mode – which is shown by a softly undulating light on GPIO2. Note that all my general purpose ESP8266 boards have 1k pull-ups on GPIO0 and GPIO2 to 3v3.  In this case you might want to consider adding similar pull-ups to GPIO4 and 5 as if you are using I2c then you do need pull-ups. Some peripherals have them, some don’t – a bit of a mess really as you really should just have the one set of pull-ups.

So basically you end up with an API call to their server with a unique code and some parameters – which control your board. There are a variety of ways to use this – and in the case of Node-Red there is even a set of nodes to do the job – but when we tested them we came up with various issues and the code looks like it has not been updated for a while – so you might be on your own there.

And so, taking the above into account it is quite easy then to try out the various Grove peripherals – at least those supported by WIO. The App itself makes it easy for you to fire out commands.

Up to now, the RGB_LCD display has proven to be the most fun which is why I’ve adapted the code for my own ESP code, along with the visible/uv/ir light sensor. Other devices less so – as they don’t use I2c. Seeed do a 4-channel 7-segment LED display – and a 10-channel level meter, both of which are 2-pin control but are NOT I2c – this means they have to use a separate set of leads – they chose the serial port (I personally prefer to leave that for debugging). If you need the latter – i.e. 10 variable intensity level lights – you’re better off (unless size is important) buying the display and the PWM controller I covered in an earlier blog with 16 outputs.


17 thoughts on “Playing with WIO

  1. I got a Wiolink in the Kickstarter. I’ve only ever used it with DHT22 sensor and the experience was frustrating. Sometimes it worked and mostly it didn’t without any indication as to why it failed. Connecting to the board and uploading new software always worked because I could see the LEDs blinking but the sensor only worked occasionally and randomly. I hope the software has improved, maybe I should take it out of the drawer and have another go?

    1. Personally, I found the most useful part of it to be the actual code to give me ideas. Out of it I want to use those 4-way connectors on future boards for i2c. As for the system itself, I’m still not 100% sold on the idea of my home control relying on someone elses server running…if you do get yours up and running, let us know how you get on with the sensors.

          1. ThingSpeak – when someone comes up with a set of instructions for Debian as against Ubuntu – I will most certainly give it a go. I love the way people gripe about Microsoft differences and ignore all these different flavours of Linux – which are fine if Linux is your thing – but when I’ve tried installing stuff on Ubuntu from Debian instructions – they invariably fail…. so I’m assuming the opposite is also true.

                  1. ok, even without sensors, i tested it creating a channel, adding 2 fields and passing them some values via url (write key is not public and test channel will be destroied anyway, no security problems here 😉 ):

                    then i see the charts updating on my private channel view, and i can get a json feed using the read key:

                    IT WORKS! 😀

                1. done!

                  it was a day long nightmare… packages that works only on a given ruby or rails version, infinite compilation (time largely reduced by not including docs and their compilation), but now I have a “running” installation…

                  now time for someone to test my steps (I made so much trials that I could be missing something…), and create some channel and push it some data (not at home now, no sensors or other available at the moment…)

        1. Using DOCKER worries me – firstly because I don’t really understand what it does – and secondly because my one and only attempt at using it on the PC resulted in my permanent inability to run VMWARE on said PC.

            1. That ThingSpeak script SEEMED like a good idea – but that script fails horribly at the end on Jessie on the Pi – error installing RAILS, Doesn’t know what BUNDLE is… stops.

      1. I hear -“I’m still not 100% sold on the idea of my home control relying on someone elses server running” quite often and it surprises me. The model that makes sense is minimalist devices integrated into an ecosystem. It allows you to do very little to get a lot. I see people traveling the world with only an ATM card and and home control is nothing compared to that dependancy. You rely on your telco, your bank, your ISP, your email provider etc.

        Developing the ecosystem is surely the future and I expect the numbers of services on which IOT applications depend will expand. Phones were once self sufficient but now have an army of service providers keeping them running and up to date.

        1. I think more is the point – do you want to rely on something where you have no idea of how long it will last. Amazon servers for example will likely be running long after I’m dead – but a start-up company’s servers? Have you ANY guarantees? I love Itead – but I’ve no idea of their financial stability – and whether or not their servers will continue – which is why I developed my own code to use my own MQTT servers. But then – if my router goes down…. (and they do – more often than Amazon’s servers).

          It’s all down to having a little worldly knowledge and deciding how solid a company is before relying on their kit – and of course the more different providers you use the more chance there is of their server going down and if it is important, pulling your system down.

          I use my own Mosquitto MQTT server on a Raspberry Pi on Debian – which has the best SD I can justify (Samsung) and a battery backup covering it for a day or two of no power. Aside from losses due to experimenting – I’ve had NO downtime in over a year from this and some test boxes… the stuff just works.

          If I’m out of the house and my broadband goes down however ….

Comments are closed.