Getting started with Seeed WIO Terminal
I recently received a WIO terminal and some Grove sensors to go with it. I have been following a set of tutorials using a virtual Raspberry Pi and sensor emulation. While this is good for getting some of the concepts, there is no substitute for actual hardware when programming IoT code. It is, after all, the whole point.
The device doesn’t have a battery built-in, but it does have a screen, some hardware buttons, a Raspberry Pi GPIO and a couple Grove ports. It also has a couple indicator lights and some sensors onboard. It seems pretty comparable to the M5 Stack 2, and is similar in size. One unusual feature is a tiny mushroom pad on the front, which looks like it could come off (a spare is included in the box).
I followed the Getting Started guide on Seeed’s Wiki site, which involved updating firmware and flashing the unit.
I decided I would try following the same Microsoft tutorials I had already done with emulated Rpi using this WIO. Where I had been using Python, I would now be faced with a choice between Arduino and MicroPython. There are pros and cons to each, not the least of which is that it appears only Arduino will support WiFi. On the other hand I am more interested in writing Python. I will try both both on a Hello World to helpfully help me decide.
For Arduino, Seeed docs specify that the Arduino IDE must be installed, which I went ahead with. On a strong hunch I found a Microsoft extension to fully use Arduino within VSCode. It still requires Arduino IDE to be installed, but you can do everything in VSCode because it essentially hijacks the Arduino CLI. The IDE looks very similar to VSCode. According to Wikipedia it is based on Eclipse Theia. Turns out Theia is based on VSCode. How unthinkable this would have been a few years ago.
Once in the IDE, the hardware driver source URL must be added to a magic field in preferences and then downloaded form a device manager (which looks similar to the extensions in VSCode). Once that is finished the IDE will connect to the device if it is attached via USB and turned on.
The code in the MS tutorials I am following is compiled in a different VSCode extension called PlatformIO which can does the same things that Arduino IDE does but appears to offer support for many hardware profiles – you write a “sketch” in C++ Arduino flavor and then tell PlatformIO to build and flash the device. One thing I dislike about both PlatformIO and Arduino Extension is an over-reliance on the VSCode command palette, which I am not a big fan of.
I finished the blink demo in Arduino IDE and the Hello World demo in PlatformIO/VSCode. PlatformIO supports a lot more devices and platforms, so I have decided to use it as my embedded device IDE (within VSCode). As for language, I am going to try to stick with Python and it’s variants because of the other areas where Python is favored, such as ML and AI.