Culture / Tutorials

WeIO, a Departure from the Arduino, Programmable in Python and HTML5

2 Aug 2014 7:00am, by

Drasko Draskovic came up and asked if he could demo his new WeIO micro-controller. He had just finished his talk on the Internet of Things, on the last day of OSCON. I had given my “Hacking Lessons” talk an hour earlier.

He was clearly enthusiastic as he powered up the WeIO board and his notebook. He jumped right into his browser, plugged a potentiometer (also callled a pot) into the board, and proceeded to show how the little circular graphical gauge, on the Web page, tracked his every turn of the pot’s knob. And, response was great.

The WeIO board represents an interesting departure from the usual Arduino-dominated micro-controller sector.

Now For Something A Little Different

The WeIO is a new micro-controller board running a highly integrated AR9331-based WiSoC (wireless system-on-a-chip) operating at 400MHz. It has 16 MB of Flash and 64 MB of DDR2 RAM. It also has an ARM Cortex-M0 cpu that handles analog I/O and additional hardware interfaces. There are a total of 32 general purpose I/O pins, 8 of which are ADC (analog to digital conversion) inputs with 10-bit accuracy and 6 PWM (pulse width modulation) outputs with 16-bit precision. The board operates at 3.3 volts with a supply voltage of 5 volts. The I/O pins are 5 volt tolerant. Several 3.3 volt headers and grounds are conveniently co-located with the I/O pins around the edge of the board.

The big news with the WeIO is that it is programmed using Javascript, Python, and HTML 5. You also simply connect wirelessly to the board, while it’s in AP mode and edit your programs using the built-in Web-based WeIO IDE, from a browser. A minimal version of Linux runs on the WiSoC, so you can SSH into the device for troubleshooting and configuration changes. Separating the analog I/O on another chip removes that burden from the SoC, thereby speeding up ADC response. Basically, everything runs on the WeIO board. You can also attach it to a local area network for access, as well.

Board Basics

Draskovic gave me a prototype board to thrash and asked that I route suggestions and comments back to him, so he can get some real-world feedback.

The process of running a program on the WeIO is pretty straightforward.

While it’s great to blink a few tri-color LEDs, the WeIO’s real strength, in my opinion, is that you can interact with it using just a browser from any handy WiFi-enabled notebook.

The first thing you need to do is power up the board and watch for a steady AP (access point) LED, on the upper edge of the board. You can then point your notebook at the “WeIO rescue” access point and connect. Once connected, open a browser and go to http://10.0.0.1:8080. You’ll be greeted with the WeIO IDE, showing project/program listings on the left, an editor screen in the middle, and a user console, on the right. Projects and example programs are selected from a drop-down menu above the editing space.

All I had to do to run an example was select it from the menu, so the files were visible in the left-hand list, then click the “eye” (Preview) icon. This action saves any project file edits and then runs it on the WeIO board’s internal Web server. The edit screen is replaced with what you’d see on an external browser page. It is, in fact, a real-live Web page that can be viewed on multiple devices by simply punching 10.0.0.1 into a wirelessly connected user device.

I duplicated Draskovic’s demo, attaching a pot to a 3.3 volt header and ground. The center pole went to pin 25 (ADC). I attached to the WeIO and IDE using my Xubuntu-powered notebook and the Chrome browser, then loaded the “adc toWeb” example and hit “preview”. Within a few seconds, the familiar circular gauge appeared on my notebook screen. I opened a new browser tab and went to 10.0.0.1. The same display appeared there, as well. Much of the heavy lifting is done in this example, using just HTML 5 code, with calls to Javascript functions (specifically graphing) residing in library files on the WeIO board.

I also tried running the “adcPython” example. It just reads the value of the potentiometer (much the same as the “adc toWeb” example) on pin 24 and prints the converted value to the IDE console. The python code is a mere 17 lines long and conceptually very similar to what you’d see for doing a similar job using Arduino IDE code on a Yun or Uno.

The IDE didn’t render very well on my Galaxy S5 super phone using the Chrome browser. Currently, editing on that particular phone isn’t going to be productive. The circular gauge (output page) rendered perfectly on my Galaxy, and accurately tracked turning of the pot knob. Also, although the WeIO IDE rendered fine on my Asus Transformer Prime tablet, I was unable to get the soft-keyboard to edit any characters. Not sure what the problem was and it may be a topic for further investigation.

What’s Next

Draskovic said that he envisions that the WeIO will evolve into a “modular” micro-controller platform, meaning that he wants to offer the ability to add or subtract hardware features as needed for the project. He’s working with 8devices.com to develop the boards.

Because he’s at the prototype stage right now, he didn’t give me a time frame for production or purchase, so you’ll want to keep an eye out for news on the wee.wi-io.net site.

The WeIO platform looks promising. It’s another example of the creative innovation that is driving the current micro-controller boom. This sector is growing by leaps and bounds and I see a bright future for people familiar with all of this technology.

Feature image via SlideShare

Rob Reilly is an independent consultant, writer, and speaker specializing in Linux/OSS, hardware hacking, the tech media, and the mobile lifestyle. He provides a variety of engineering, business, and special project services to private sector individuals, companies, and organizations. As a 12-year veteran of the tech media, Rob has posted hundreds of feature-length articles for various top-tier tech media and print outlets. Contact him at robreilly@earthlink.net or 407-718-3274.


A digest of the week’s most important stories & analyses.

View / Add Comments