Display Raspberry Pi Data on the Wio Terminal LCD Screen

The Wio Terminal from Seeed Studio is a development device that is standalone or e.g. can be operated with the Raspberry Pi. It is possible to display simple data such as memory information, CPU usage, etc., or even to add a third screen to the Pi.

In addition, the Wio Terminal brings among others also a gyroscope, SD card slot, microphone, buzzer, buttons, and much more. All of these modules can be read out and programmed. In this tutorial, we will focus on how to send various system data from the Raspberry Pi to the Wio Terminal via serial interface and display it.


Required Hardware Parts & Specifications

In this tutorial we will only need the following parts:

As already mentioned, the Wio Terminal (D51R) has interesting hardware specifications:



Main Chip


ARM® Cortex®-M4F

Maximum Speed


External Flash Memory

4 MB



320 x 240 Pixels


2.4 Inches

Wireless Connections


802.11 a/b/g/n 1×1, 2.4GHz & 5GHz


supports BLE5.0





1.0V-10V -42dB


≥78dB @10cm 4000Hz

Light Sensor


Infrared Transmitter



MicroSD Card Slot

max. 16GB


40-PIN (kompatibel mit dem Raspberry Pi)


2 (multifunctional)


20 Pins

USB Type-C

Power & USB-OTG

Wio-Terminal-KeyFeatureWio Terminal Inputs (Quelle)

Wio Terminal preparation – Installation of the Arduino IDE

The code for the Wio terminal is transferred via the Arduino IDE. We also use the IDE for the Arduino and ESP8266. If you haven’t already installed it, start with it. Now let’s download the Seeed Studio LCD library from Github (Code> Download ZIP).


Then we select the loaded file in the Arduino IDE under “Sketch”> “Include Library”> “Add ZIP Library”.

Arduino IDE -Add ZIP Library

Then we select “Manage Libraries” in the same menu item, search for Adafruit Zero DMA and install it.

Adafruit Zero DMA Library


Last but not least, we enter the following URL under “File”> “Preferences”> “Additional Board Manager URLs”:


If you have already entered a URL for the ESP8266, that’s no problem. You can save one value per line.

Arduino IDE ESP8266 Board

Additional boards are now displayed under “Tools”. As the last point we select “Tools”> “Board”> “Seeed SAMD …”> “Seeduino Wio Terminal”. Also accept the other settings if they are not as shown here:

Arduino IDE - Wio Terminal Settings

If you now connect the module via USB, the port should be recognized directly (you have to start it first with the left button).


Coding – Wio Terminal & Raspberry Pi

We’ll start by loading the code onto the Wio Terminal. To do this, create a folder with the name “readRasp” on your PC and create a file there called “readRasp.ino” (alternatively, download and insert from here). The file can be edited with the Arduino IDE and has the following content:

In addition, download the file “Free_Fonts.h” from here and put it in the folder.

Before we go any further, let’s take a quick look at the code:

  • Line 5/6: assignments of variables
  • Line 8-63: Bitmap arrays
  • In lines 66-92 there is the function getStringPartByNr, which splits a string and returns a certain part (more on this in a moment).
  • In line 94-109 setup is called once at the start (initialization, opening of the serial interface)
  • Lines 111-144: loop – is called via an endless loop – the rendering is called here. We wait for a message over the serial port and extract the data from it. Then 3 screens are shown one after the other, each with a 2-second delay.
  • From line 146: Render functions of the individual screens. The LCD functions of the Wio Terminal can be called up using tft (and graphics can be drawn with them).

Now we load the code onto the device. After completing the upload, connect the Wio Terminal to the Raspberry Pi and start both. In the beginning, a white screen with “Starting …” is displayed (as defined in the HomeScreen function).


Raspberry Pi

Now we switch to the Raspberry Pi via SSH. There we first create a new Python file.

sudo nano wio_terminal_example.py

We add the following content:

This script reads out the system data, establishes a serial connection to the Wio Terminal and uses it to send the data in the defined order.

Then save (CTRL + O) and quit (CTRL + X) the editor and execute the script:

sudo python wio_terminal_example.py

You will now see the data on the display.


Conclusion & More

The Wio Terminal from Seeed Studio is a very interesting tool in my opinion, which can be used for certain projects just like that (e.g. using MQTT) or a Raspberry Pi to a display, sensors, buttons, and much more. can expand. For all other functions there are also code examples on the wiki page, which can be transferred directly to the Arduino IDE. It is just as possible to operate all those sensors and modules separately, but you don’t have everything in one compact, small housing.

The only drawback that I noticed: You need an additional “stacking header” if you want to plug the terminal onto the GPIOs, otherwise it won’t fit on top of a Raspberry Pi 4.


If you are interested in further tutorials (standalone or in connection with the Raspberry Pi), please write a comment 🙂


Image sources: Seeed Studio

One Response

  1. Why did you assign the ser.write returns to the variables temp and data? They’re not used or interrogated.

    Btw, fyi…”baudrate” is redundant — baud IS a rate; it directly refers to a rate, i.e., baud is number of bits per second, that is, the rate of bits flowing. So, 115200 baud — not 115200 baudrate.


Leave a Comment

Your email address will not be published.

Subscribe to Raspberry Pi Tutorials and don't miss any new Tutorial!