Hands-On with the Wio Terminal, Seeed Studio's Arduino, MicroPython, and ArduPy-Compatible Dev Box

Seeed packs a 200MHz SAM D51, 4MB of SPI flash, a display, and a wealth of sensors into a Raspberry Pi-compatible dev board for under $30.

The hardware available to makers and tinkerers continues to evolve: The early days of off-the-shelf DIP-packaged microcontrollers gave way to the dedicated low-cost development boards exemplified by the Arduino family and the innumerable projects it inspired. Now, though, there’s yet another shift, from development boards which need a breadboard or a bundle of jumper wires to complete the circuit to all-in-one development bundles packing microcontrollers and sensors with displays and other output devices.

Seeed Studio’s Wio Terminal, the latest entry in the company’s Wireless Input/Output (Wio) range, is one such device, a compact handheld gadget with a 2.4” color display with joystick and button inputs alongside a surprising number of sensors — but does it have what it takes to stand out in what is becoming an increasingly crowded market?

The Hardware

The first thing to note about the Wio Terminal is, sadly, a negative: While the form factor, a small plastic-encased gadget dominated by its 2.4” color LCD panel, appears tailor-made for handheld use, there’s no internal battery. It’s possible to solve the oversight with an official battery add-on, which piggybacks onto the Wio Terminal via the 40-pin GPIO header, but doing so dramatically increases the depth.

That, though, is one of the few negative points to make about the Wio Terminal’s design. Sure, it’s possible to nitpick things like the position of the buttons — at the top side of the board, they’re not very well positioned for gaming and other interaction-heavy projects that would otherwise be well-suited to the console-like layout and its five-way nub-like joystick input — and the fact the USB Type-C cable comes out of the bottom, making it impossible to stand the device upright on a desk or shelf without drilling a hole or flipping it upside-down and losing access to the three programmable buttons on the top.

Seeed's latest entry in the Wio range could well prove the most popular yet. (📹: Seeed Studio)

These, though, are minor points compared to the quality of the design. Everything is finished to a high standard, which is doubly impressive given the device’s low cost, and there are a handful of bonus features hidden away — like a magnet strong enough to hold the Wio Terminal up on a metal surface, and a neat transparent window to the rear which serves the twin purpose of showing off the custom PCB design and allowing the on-board infrared emitter and light sensor to operate.

Those two components, part of a suite of inputs and outputs fitted by default and which also covers audio out via a speaker and in via a microphone, inertial measurement, and the aforementioned buttons, enable two Wio Terminals placed back-to-back to communicate with each other over infrared signals — though why you’d opt to do this rather than using your choice of the board’s built-in dual-band Wi-Fi, Bluetooth, or Bluetooth Low Energy (BLE) connectivity isn’t clear. If all that isn’t enough, there’s the 40-pin GPIO header, two multifunction Grove-style ports, and an internal 20-pin FPC header for adding more hardware to the mix.

In short, the Wio Terminal is feature-packed — even without the inclusion of a battery for truly handheld use. There are even coprocessors, a second Arm Cortex-M4F core and two low-power Cortex-M0 cores built into the Realtek Wi-Fi module — though making use of these is an exercise left up to the more advanced user.

  • CPU: Microchip ATSAMD51P19, Arm Cortex-M4F at 120MHz (up to 200MHz “boost” selectable during program compilation)
  • Coprocessors: 1x Arm Cortex-M4F at 200MHz, 2x Arm Cortex-M0 at 20MHz
  • RAM: 198kB SRAM, 4MB external flash memory
  • Storage: Optional MicroSD Card, up to 16GB
  • Display: ILI9341-based 2.4” 320x240 color LCD
  • Wireless: Realtek RTL8720DN dual-band 802.11a/b/g/n 1x1, Bluetooth 5.0, Bluetooth Low Energy (BLE)
  • Sensors: LIS3DHTR Accelerometer, 400-1,050nm Light Sensor, B4013AM422 1-10V -42dB Microphone, Five-Way Switch, 3x User-Defined Buttons
  • Outputs: 940nm Infrared Emitter, LET5020CS Piezo Buzzer
  • Ports: USB Type-C Host & Client, 40-Pin Raspberry Pi-Compatible GPIO Header, 2x Multifunction Grove, 1x 20-Pin FPC
  • Size: 72x57x12mm

The Software

The Wio Terminal is actually a pair of devices disguised in a single chassis. At its most simple, it’s a standalone development board compatible with the Arduino IDE, MicroPython, CircuitPython via an unofficial port, Visual Studio Code, and Seeed’s own ArduPy — designed to blend the worlds of Arduino and MicroPython, though still in a relatively early stage of development compared to either of its forebears.

Installation in the Arduino IDE is, sadly, not as straightforward as it could be. The process starts promisingly, with Seeed making a board support package available via a custom Arduino IDE Board Manager feed — not as simple as adding the BSP to the default Board Manager feed, but certainly simpler than the bad old days of manually installing ZIP files.

Unfortunately, that’s exactly where the installation process goes next: The BSP includes everything you need to write and compile programs for the Wio Terminal in the Arduino IDE, but doesn’t pull in the libraries required to use any of the on-board sensors or the radio module. To unlock these, you’ll be downloading a separate ZIP-archived library for each and manually installing them into the Arduino IDE one-by-one. Those programming on a non-Windows system will hit a hard stop when it comes to Wi-Fi use, too: The firmware on the Wio Terminal must be upgraded before the Wi-Fi radio will work, but the tool provided to do so runs only on Windows devices.

UPDATE: Since this review, Seeed has released Linux and macOS utilities for updating the RTL8720 firmware and enabling Wi-Fi. Updated instructions are available on the company's wiki, though at the time of writing the Linux binaries were AMD64 only — meaning Raspberry Pi users will still need to find another machine to flash the update.

In Seeed’s defense, that’s a one-off installation process — at least, until you need to update the libraries — and it has been working hard to make the Wio Terminal accessible to beginners. Of particular note is the Wio Terminal Classroom, a series of ten video tutorials — with more to come — that walk newcomers through the features from drawing shapes to the screen to accessing the built-in sensors.

The "Wio Terminal Classroom" videos are a great introduction to the device. (📹: Seeed Studio)

The Wio Terminal has a second mode, however, and it’s one that can unlock considerably more potential: The 40-pin GPIO header on the rear isn’t just Raspberry Pi inspired, but fully Raspberry Pi compatible - to the point that the Wio Terminal can be placed on top of any Raspberry Pi single-board computer, or other SBC with Raspberry Pi-compatible GPIO header, to act as a directly-connected microcontroller communicating over the two GPIO headers. It’s a neat trick, but one which does come at a cost: Having the Wio Terminal face-down on the top of the Raspberry Pi means the infrared emitter and light sensor are effectively useless.

Practicalities

There’s nothing in the performance of the Wio Terminal to stand apart from any other ATSAMD51P19-based gadget — apart from the flexible clock speed, that is. During program compilation, it’s possible to switch from the stock 120MHz operation mode through a range of overclocked settings: 150MHz, 180MHz, and 200MHz.

Picking higher speeds increases power draw, going from 45 milliamps at 120MHz to 61 milliamps at 200MHz on a CPU-centric workload with the display switched off, but appears to have no obvious impact on stability or compatibility: The Wio Terminal succeeded in running a looped implementation of the Dhrystone benchmark fine at all speeds, with recorded performance moving from 200 million Dhrystone instructions per second (DMIPS) at stock 120MHz to 333.55 DMIPS at 200MHz.

Actually making use of this performance, however, isn’t always easy. While the documentation available for the Wio Terminal is a definite step above the quality that has accompanied previous Seeed Studio releases, it still leaves room for improvement. The step-by-step tutorials and code samples cover most functions, but have definite gaps: At the time of writing, instructions were provided for using the board’s Wi-Fi connectivity, for instance, but not Bluetooth; there’s also no advice on making use of the three additional CPU cores found on the Wi-Fi module.

You’ll also find yourself bouncing backwards and forwards for the information that is present: While much can be found on the official wiki, some is instead on one of several GitHub repositories while still more is to be found on the company blog.

These drawbacks haven’t stopped the community from embracing the Wio Terminal, though. Its broad compatibility, coupled with having enough grunt to make things like TinyML a possibility, have given rise to a range of impressive projects: Live-view thermal cameras, automotive dashboards, home automation systems, retro gaming consoles, pocket oscilloscopes, and even an “artificial nose” capable of discerning between different types of whisky based on a gas sensor and TinyML have all been published by Wio Terminal users, and more projects appear every day.

Both Seeed itself and community members have been posting Wio Terminal-powered projects since its launch. (📹: Seeed Studio)

With that many people backing the concept, it’s clear Seeed is on to a winner — even if the documentation and installation process could do with a little polish.

Conclusion

There are reasons not to pick up a Wio Terminal for your workbench or hackspace: The issues with using the Wi-Fi if you don’t have access to a Windows machine are particularly egregious given the board is designed to work with the Linux-powered Raspberry Pi family, and while the tutorial videos are great Seeed needs to put more work into making the installation process smoother and the documentation broader.

These, though, pale into insignificance when you see just how useful and flexible a gadget it is. With easy extensibility via the two Grove headers, plus the Raspberry Pi-compatible GPIO header and internal FPC expansion, and its clear if somewhat low-resolution display the Wio Terminal is an easy way to add a display and interaction to any project — even before you begin experimenting with its on-board sensors and wireless connectivity.

It’s the price that really sells the Wio Terminal, though: At $29.90, it’s among the most affordable devices of its class, and piggybacking the optional battery accessory on the rear adds a 650mAh rechargeable battery and an additional six Grove interfaces — four analog/digital ports, one I2C port, and one UART port — for just $9.90 more, with volume discounts available for larger purchases.

The Wio Terminal is now available on Seeed Studio’s online store for $29.90; additional details are available on the company wiki.

Gareth Halfacree
Freelance journalist, technical author, hacker, tinkerer, erstwhile sysadmin. For hire: freelance@halfacree.co.uk.
Latest articles
Sponsored articles
Related articles
Latest articles
Read more
Related articles