RemoteLab goes open source

Finally, it is there! The RemoteLab platform is open source and is available on Github. Want to get a link and learn what is new? Continue reading!

Finally, it is there! The RemoteLab platform is open source and is available on Github. Want to get a link and learn what is new? Continue reading!

As you might know, some time ago I published information that I was planning something. It was RemoteLab. Just as a reminder, RemoteLab is a hardware-as-a-Service platform that allows my students at WRUST to remotely use resources such as ST development boards. Initially, it was written in Python using Flask as the web server. Currently, it has been rewritten to use Django and unify the user experience. The management of development boards is done along with video feedback.

There are a couple of changes. Since the servers running RemoteLab are based on Raspberry Pi and are available (were available due to the university policy) from outside via SSH, I need to keep them up-to-date. However, servers already experienced major operating system upgrades, and I needed to make some adjustments in order to keep providing the same features. Earlier this year, I decided to merge status server with video server in order to better manage updates and keep everything consistent. There is still work to be done, but I decided it is time to share it with a wider audience.

One of the most important updates from hardware perspective was switching to Raspberry Pi 5. Currently, there are three Raspberry Pi 5 with 8 GB of RAM. Two of the three have Pi Camera module connected via brow ribbon visible on the photos below.

A second change to the hardware was design of shield boards providing some additional peripherals for the developments boards. Initially, breadboards were used with a bunch of cables connecting to LED diodes, sensors, etc. To fix this messy situation I have designed a board shield with all necessary connections and sensors. Below you can see how it was before and on the right you can see the shield board.

What has changed and what are the new features available? The smallest, but the most useful for a teacher is super-user access. Since I do development and some testing on wider scale, it is good to block out some features until they are ready, or simply restrict access for the students to the parts of the system which should be protected.

Second, the small thing but the most visible is visual lift-up. The interface went a makeover in terms of visual experience. Bootstrap is heavily used to give it a candy-like feel. I hope the students will appreciate it next term 😉 So here is how refreshed version of the interface looks like. It provides information about connected boards.

Previously it was not much to look at.

Console-like terminal

Sometimes when I have already set up a connection to the RemoteLab, I need to execute a command or two. I have embedded a small terminal inside the web interface that allows exactly this. Now, without the necessity of switching windows, I can execute commands directly on the server. Of course, this is only available for superusers.

Bellow you can have a glimpse on the terminal. As you can see it runs smooth.

Serial console

Each development board, where most of them are STM32 Nucleo boards, has built in serial interface via ST-Link debugger. Previously, only a device path was displayed, and then a student needed to use minicom to establish connection via serial interface. Now, (still experimental ;)), it is possible to directly run such a console in a web browser; this significantly simplifies the usage. Some features like auto scrolling, appending CR&LF or local echo are already available. In the end, what else would you need?

For time being, it is only available for the super user, but I will release it as a normal feature for students. Time will tell how stable it is.

I have in mind a nice feature to implement there like online plotting of the data but unfortunately it will need to wait a bit for some more time.

Video server

The first version of RemoteLab which was based on Flask allowed to display only images periodically captured and sent to the user. New release allows one to auto-refresh (every 10 seconds) the image. However, now the super user has access to live video stream on demand plus configuration of the camera settings.

Bellow you can see the direct view available at aries and on the right at eridanus server.

Supper user has a bit more options to chose from when it comes to video streaming. Notice the additional buttons at the top. One can chose image or video preview, settings, and direct access to still image or video stream.

Camera can be configured in respect to provided resolution, here maximum 3280×2464 was set. Image can be flipped horizontally, vertically or rotated. In image parameters such as brightness, contrast, saturation and sharpness can be configured as well.

More boards and server upgrade

The core of RemoteLab is the development boards. The number of boards was increased to facilitate more concurrent connections. In addition, the board identification numbers were renumerated to make it easy to distinguish the type of the board just by its ID number. Finally, the connected resources were equally balanced among three servers.

Bellow you can see a comparison how te setup looked like before adding dev board and how it currently looks like.

As mentioned before, three Raspberry Pi 5 are deployed. They offer a performance boost. Tests have shown that video streaming (not images, but real video streaming) is quite smooth even with multiple recipients.

The RemoteLab repository can be found here.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.