Matrix Creator for the Raspberry Pi - Review

Table of contents

RoadTest: Matrix Creator for the Raspberry Pi

Author: MARK2011

Creation date:

Evaluation Type: Development Boards & Tools

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?: Raspberry Pi extension boards with set of sensors.

What were the biggest problems encountered?: Lack of FPGA programming support; Problems with power-off Raspberry with Matrix onboard; Unstability of the set - especially when stopping applications.

Detailed Review:

image

Introduction

imageMATRIX Creator

A fully-featured development board for the Raspberry Pi with various sensors and communication protocols such as a 3D Gyroscope, Accelerometer, an 8 Microphone Array, zigbee, Z-Wave, and more!

 

I was really curious about the Matrix Creator. Honestly, I found about it only on the E14 Roadtest page. Having no great hope, I send application but without the luck. Than around two months later the extra module was announced.

Thank you for selecting me as the tester.

Soon, the “roundel” was delivered and our adventure began.

 

Let me quote something about specification and features of Matrix Creator

The board is designed as the extension for the Raspberry Pi

But according to R-T announcement (https://www.element14.com/community/roadTests/1887/l/matrix-creator-for-the-raspberry-pi)

MATRIX Creator is a fully-featured development board and daughter board for the Raspberry Pi.

Matrix disk includes sensors, wireless communications, and an FPGA.

It is equipped  with full suite of short-range wireless radios and IR as well as an ultraviolet detector.

Main features:

image

The set of  sensors is truly impressing especially microphone array and  35 LEDs ensure fabulous visualization!

 

Unpacking

Can I repeat - from my previous test?...

"There is nothing better than opening the package with brand new, sophisticated electronic device (for me at least…)"

image

I was provided with the box contained the MATRIX disc. It is EU Z-Wave version (868MHz).

image

image

 

As mentioned in remarks on the beginning, I've been provided with the matrix board alone, unlike other testers who received it together with the RPi.

hopefully Raspberry Pi (not only one - to be honest and precise) waited in my drawer - thus nothing stopped me from starting tests.

I decided to take to that roadtest the newest Raspberry version - Raspberry Pi 3 Model B+

 

HARDWARE - GPIO

GPIO Locations

image

Expansion GPIO

image

 

 

Documentation, support etc.

MATRIX Creator papers and instructions are available mostly on

Matrix site:

https://www.matrix.one


And on GitHub - Matrix Labs

https://github.com/matrix-io

 

image

Especially also here:

https://matrix-io.github.io/matrix-documentation/

 

I must admit, I was lost sometimes using these sites and trying to use accumulated there knowledge but always the solution was available.

There is very helpful matrix community forum:

https://community.matrix.one

I like examples collected  and made available on pages above.

It is worth to notice that during my experiments some descriptions and fragments of the documentation have been significantly changed.

image

Surprisingly, sometimes following notice appeared:

image

It made the mess a little! Especially when making own documentation and notes, which became obsolate.

But generally, documentation is becoming more and more complex and helpful when starting the board.

 

According to above described instructions I decided to conduct setting up the MATRIX.

I worked with Matrix using SSH - (VNC to be precise).

 

MATRIX CORE

MATRIX CORE is an abstraction layer for MATRIX HAL and the foundation for MATRIX OS. That makes device information accessible via high-level interfaces.

This layer uses Protocol Buffers & ZeroMQ to communicate with MATRIX device. Applications for MATRIX device can be programmed with any language

that supports these tools (Supports 40+ different languages through Protocol Buffers: C++, Python, Ruby, PHP, Java, etc).

MATRIX CORE functions by sending and receiving Protocol Buffers over a ZeroMQ connection.

This can be used to query sensors and control any MATRIX device from any language that supports Protocol Buffers (version 3.X) and ZeroMQ.

This is the basis for how the MATRIX OS layer can communicate with the  MATRIX device.

image

Ports & Protocol

MATRIX CORE contains drivers (components & sensors) that communicate with the MATRIX device. This occurs by having each driver send

or receive Protocol Buffers over a ZeroMQ driver port. Depending on the driver port it may allow for read-only, write-only or read-write.

Current Driver Base Ports:

  • IMU - 20013
  • Humidity - 20017
  • Everloop - 20021
  • Pressure - 20025
  • UV - 20029
  • Servo - 20045
  • GPIO - 20049
  • Wakeword - 60001
  • IMU Keep-Alive Port - 20014
  • IMU Error Port - 20015

  IMU Data Update Port - 20016

 

Installing MATRIX CORE

The begin is truly simple.

just few commands in RPi terminal

pi@raspberrypi:~ $ curl https://apt.matrix.one/doc/apt-key.gpg | sudo apt-key add -

  % Total    % Received % Xferd  Average Speed Time    Time     Time  Current Dload  Upload  Total Spent    Left  Speed

100  2203 100  2203    0     0  2633      0 --:--:-- --:--:-- --:--:--  2638

pi@raspberrypi:~ $ echo "deb https://apt.matrix.one/raspbian $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/matrixlabs.list

deb https://apt.matrix.one/raspbian stretch main

pi@raspberrypi:~ $ sudo apt-get install matrixio-malos

 

The following additional packages will be installed:

  libfftw3-bin libfftw3-dev libftdi1 libgflags-dev libgflags2v5

  libmatrixio-creator-hal libmatrixio-malos libmatrixio-protos libzmq3-dev

  matrixio-creator-init matrixio-openocd matrixio-protobuf matrixio-xc3sprog

Suggested packages:

  libfftw3-doc

The following NEW packages will be installed:

  libfftw3-bin libfftw3-dev libftdi1 libgflags-dev libgflags2v5

  libmatrixio-creator-hal libmatrixio-malos libmatrixio-protos libzmq3-dev

  matrixio-creator-init matrixio-malos matrixio-openocd matrixio-protobuf

  matrixio-xc3sprog

 

the result:

 

Successfully built esptool pyaes

Installing collected packages: ecdsa, pyaes, esptool

Successfully installed ecdsa-0.13 esptool-2.4.0 pyaes-1.6.1

Setting up matrixio-malos (0.3.5) ...

Enabling MALOS service

Created symlink /etc/systemd/system/multi-user.target.wants/matrixio-malos.service → /lib/systemd/system/matrixio-malos.service.

Processing triggers for libc-bin (2.24-11+deb9u3) ...

 

Above step let me start the journey with Matrix.

here i want to extend relative simple task - stopping and starting malos

Stopping & Starting

according to the manual, "if you need to manually stop MATRIX CORE use:"

sudo pkill -9 malos

If you need to manually start MATRIX CORE again use:

malos &

 

Problem with endless restarting

I noticed, that RPi with Matrix still rebooting again and again regardless "halt" or "shutdown" command...

I found discussion about the similiar issue here:  https://community.matrix.one/t/raspberry-pi-doesnt-shutdown-only-reboots/1018

I knew, that powering-off by brutal unplugging without efficient stop all services may cause memory card breakage.

Honestly, fear of damage acts really frustrating, on the other hand I didn't want to  keep my Raspberry still powered on...

Finaly, on the Matrix Community forum I found the solution of the problem. Details here:

and https://community.matrix.one/t/cant-shutdown-always-reboots/1770/10

yoelrc88 suggested that The I2C SCL pin at GPIO03 is rebooting the Pi. It is necessary to halt the MCU using JTAG before shutdown.

 

MATRIX Open System (MOS)

Highest level of abstraction integrating with MATRIX hardware via MATRIX CORE. This layer requires an online connection and offers an integrated IoT environment that's easy to use.

  • Remote App Deployment
  • Mobile Interface
  • Online Dashboard
  • App Store

MATRIX Open System (MOS) is open source software for hosting IoT applications. MATRIX Open System runs on node.js, and initially, applications will be written in JavaScript.

The current workflow of this platform it to deploy and install apps into MATRIX device, from a separate computer, anywhere in the world.

 

Here we have an example of serious change of manual. Starting experiment installing MOS seems to be natural path of setting up the Matrix. Now we have following remark:

image

Installing MOS

image

 

https://matrix-io.github.io/matrix-documentation/matrix-os/getting-started/installation/

and here:

https://www.hackster.io/ruchir1674/registration-and-installation-of-matrix-os-110057

also:

https://rootsaid.com/matrix-setup/

and:

https://github.com/matrix-io/matrix-cli

 

Now I need to work a little on the PC using terminal mostly. It is worth to notice, that our PC must have GIT installed

image

image

also these commands vere necessary!

image

image

image

image

image

 

image

 

image

It was...

hard work...

image

something went wrong...

 

I knew, my steps was incorrect

first I've unregistered the device

image

success!

 

but now I encountered the massive error trying to register back...

image

 

But finally - after renewed registration I got communication with my MATRIX

image

 

Login test:

image

image

image

Matrix login

image

 

Screens from raspberry

image

image

 

Command: node ~/matrix-os/index.js

Let us see  fantastic visual phenomenon “rainbow - like” illuminated by Matrix LEDs

---------------------------

------------------------------

 

image

 

One remark to the above screen - you can see on the bottom:!

_ _   __  _ __   _ _  _

|\/|   |__|  | |__/  |   \ /   [o__o]

|  |   |   |  | |    \  | _/ \_ v0.17.1-nohash

MATRIX OS can be upgraded. 0.17.0 available! 0.17.1

 

Unfortunately I don’t know how to upgrade to the v. 0.17.1 (besides 0.17.2. Is visible on matric site)

 

Using the PC terminal I could install first demo … Hello Word (the standard name of the first program as usual)

image

Screen from the putty below:

image

Let's start the demo program:

matrix start HelloWorld  (on PC)

image

What I see in the Putty:

image

image

And again we can see  “rainbow - like” illumination on  Matrix LEDs

---------------------------

------------------------------

 

Creating own applications

I did act according to instructions here:

https://matrix-io.github.io/matrix-documentation/matrix-os/getting-started/applications/

 

After command:

matrix create moja_APP

I’ve got as follow:

image

One line in app.js should be enough as the beginning:

image

 

Lets compile it

image

 

And launch

matrix deploy moja_APP

matrix start moja_APP

image

 

image

The result is,t as remarkable as the previous one…

But it works indeed!

 

 

GREEN LED APP

 

 

I must admit there is one issue here, to be honest I couldn't stop the application properly. Sometimes few LEDS remain lighting.

The best solution was the following sequence:

source ~/.envrc

node ~/matrix-os/index.js

Which “restart” the MATRIX and “clean all LEDS in the end.

 

WEATHER app

Using following recipes I tested “weather- related” sensors of MATRIX Creator.

https://beta.element14.com/community/community/raspberry-pi/blog/2017/08/21/matrix-creator-weather-app

 

image

image

I had to register account on DARK Sky

image

 

image

 

Application starts cloud-condition related animation using MATRIX LEDs

 

PARTLY CLOUDY

 

Creating Python Projects

or – analogical - Java projects (require Node.js)

Above programming utilities are based, communicate and uses “MATRIX CORE”

 

programming in python for MATRIX  Is very simple thanks to good manual supported with lots of interesting examples

https://matrix-io.github.io/matrix-documentation/matrix-core/getting-started/python-installation/

 

Screens from the setup process below:

 

image

image

image

image

 

Simple examples results below

Pressure& altitude/ temperature  readouts:

 

And humidity:

 

MATRIX HAL

Means - MATRIX Hardware Abstraction Layer

MATRIX Hardware Abstraction Layer (HAL) is an open source library for directly interfacing with the MATRIX device.

MATRIX HAL consists of driver files written in C++ which enable the user to write low level programs in C++.

Interacts with the kernel modules by using C++ drivers, enabling it to access available sensors and components on the device.

 

According to the advice,

image

I’ve installed HAL from the package

https://matrix-io.github.io/matrix-documentation/matrix-hal/getting-started/

https://github.com/matrix-io/matrix-creator-hal

 

image

 

That let us compile c++ programs.

image

image

image

 

MATRIX HAL Examples

As the “bonus” there are lot of demo programs ready to launch.

https://matrix-io.github.io/matrix-documentation/matrix-hal/examples/

 

 

My favourite is everloop_moving_dots

image

 

Isnt it fantastic?

 

everloop moving dots demo

 

MICROPHONE

First I checked if microphones were recognized by Raspberry.

I used instructions from there:

https://matrix-io.github.io/matrix-documentation/matrix-creator/resources/microphone/

The important condition is Installation of  MATRIX Kernel Modules.

 

After registering the microphone for Raspberry Pi, running alsamixer we can see - it works fine.

image

The command:

arecord recording.wav -f S16_LE -r 16000 -d 5

Records sounds to wav file

 

image

After installation of HAL we have  folder

“/home/pi/matrix-hal-examples/build/microphone_array”

And two applications here:

image

Launching Mic_record_file produces 9 “.raw” files

image

I converted it into .wav:

 

sox -r 16000 -c 1 -e signed -c 1 -e signed -b 16 mic_16000_s16le_channel_0.raw channel_0.wav
Consequently for each file 0 to 8 i.e. audio from channel 0 to 7 and common one with index 8.

These files could be played using

aplay channel_0.wav

More details below:

https://matrix-io.github.io/matrix-documentation/matrix-hal/examples/microphone/

 

Direction of detected voice Using ODAS

Surfing the hackster site with lots of funny examples I found:

https://www.hackster.io/matrix-labs/direction-of-arrival-for-matrix-voice-creator-using-odas-b7a15b

That guide shows how to use the MATRIX Creator with ODAS for direction of arrival, tracking, and visualize surrounding sounds.

ODAS stands for Open embeddeD Audition System. This is a library dedicated to perform sound source localization, tracking, separation and post-filtering.

ODAS is free and open source. Find more at: https://github.com/introlab/odas

 

As previously mentioned, matrixio-kernel-modules must be installed.

Then, I had to clone & build the ODAS repository

image

image

Run of odaslive gave amazing effects:

 

Direction of detected voice Using ODAS

ODAS Studio

I decided also to try ODAS Studio to see a outstanding visualization of the results from odaslive. It was necessary to install ODAS Studio package on my PC.

 

To everybody who would like to copy this experiment

Do not use “From prebuilt package” installation method

The proper way is to follow the Installation From sources

image

image

image

 

 

FPGA

Honestly I'm disappointed by the lack of support for SPARTAN chip on the MATRIX board.

 

image

...

image

 

 

The question is ... it really lack of proper assistance or... lack of my experience.

I found following informations about FPGA handling

https://github.com/matrix-io/matrix-creator-documentation/blob/master/docs/Hardware/fpga.md

https://github.com/matrix-io/xc3sprog

 

The xc3sprog is mentioned above.

xc3sprog is a suite of utilities for programming Xilinx FPGAs, CPLDs, and EEPROMs with the Xilinx Parallel Cable and other JTAG adapters under Linux.

Used to program the FPGA of the MATRIX Creator via Raspberry Pi.

 

...Unfortunately I wasn't brave enough to manipulate with firmware and reach deepest layer of the board.

I hope I will come back to that issue soon.

 

OTHER

simple I2c device check can be preformedas below:

sudo i2cdetect -y 1

image

I2c addresses have been identified:

1c 38 39 5f 6a

 

Conclusions

Below my humble comments to my Matrix Creator assessment

 

Product Performed to Expectations  7

I just had bigger expectations and imagination what we can do with MATRIX.

Truly – we can do a lot or even more and more now. I hope it would be corrected as the device

and instructions are under intensive update. I hope to get access and better support to manipulate both microcontroller and FPGA

 

Specifications were sufficient to design with 8

Again question of accessibility to very reach functionalities and resources of the unit.

I know it will be adjusted… to be honest it is improved according to changes in documentation.

 

Demo Software was of good quality 7

It is under improvement now. I left the assessment from my first impression… sorry

 

Product was easy to use 7

Well that point is for assessment of the tester too!

I can’t say the board was unfriendly…

During the test we became more and more good friends. But I must mention unpleasant issues,

when system had to be reinstall or something conducted exactly according to the manual failed.

Well despite these adventures, MATRIX is still alive, it works well and I hope would bring many discoveries and lot of fun

 

Support was available 9

Why not 10… Im’ also wondering… but as written above – dead links, reedited manuals… sometimes I felt lost… but only for the while.

 

The price to performance ratio was good 9

Talking about money is difficult.  It nearly double the price of its base – RPI… I hope sales department  did a good job…

I mentioned it before, the board is rich in sensors and extra modules, indeed. well I think it is worth that value.

 

cons

It seems FPGA and legendary Spartan is not provided to general experiments and extension of MATRIX functionality.

I understand, that it is the core unit responsible form main functions. It is possible to flash new firmware nevertheless link to “required software” seems to be dead!

Another issue  regards powering off the board.  I found the solution proposed on the forum but there still lack of official proposal.

I couldn't also stop the single application properly. i.e. sometimes few LEDS remain lighting.

I must admit that I encountered serious issues setting up and installing system. I tried to conduct it according to instructions

but sometimes something went wrong resulting need of reinstallation. I must confirm its not big fault in prototyping device.

I can’t declare, it was definitely not my mistake or problem of communication between Matrix and RPi.

and one more: I’m not sure how to upgrade MATRIX OS.

 

pros

In simple words: fantastic extension for developers.

As environment - weather related as well as motion/gyro sensors boards are widely popular Matrix gather tem adding microphones array, UV, IF and completes it with charming set of multicolor LEDs.

Pay attention on variety of communication modules!

 

FPGA... well...  I’ve put it in both – PROs and CONs details in my FPGA section…

 

The support is generally very useful and friendly. Matrix Lab cares on their enthusiasts . On official documentation site, on the GitHub ad also on Matrix Community forum many questions can be answered and issues solved.

I learn best using examples – there lot of them – thanks!

The MARTIX – Alexa project, Google assistant, ODAS confirm the capacity, power and functionality of the board.

I see that MATRIX Labs site with documentation https://matrix-io.github.io/matrix-documentation/ is still under serious update and upgrade and that looks promising!

Now I can see answers for my previous doubts clearly described with friendly support of films and examples “how to do” and "what to type".

 

 

Thank you again for selecting me as the roadtester and give me opportunity to deal with that extraordinary and amazing board.

Marek

Anonymous
  • Thank you

    yeah... learning curve - inversely proportional to the tester's age increase

    ... adding vacation season ...

    Nevertheless, I do not give up and plan to explore the board. It will be regularly reported, for sure!

  • Thank you,

    I'm glad you understand my hasitations!

    Marek

  • Nice review.  I really appreciate when people have scores that represent their opinions concerning the product.  As most products are not perfect, an all 10 score does no service to readers of a review.

     

    I had concerns about how much a person could make use of  a product that has so much potential, with such a high degree of complexity in a fixed period of time. Highly complex projects need a true evangelist in order to climb that steep of a ladder.  But I really was excited about the array of microphones and the prospect of utilizing this product to assist in performing bird studies and surveys.  I would have loved to try this out, but I honestly felt that given the steep learning curve, I had zero chance of proving this product to be capable of doing anything more that running the pre-developed applications in the time allotted (or that I could commit enough time during that time frame).

     

    Well done!

    Gene

  • Nice honest review.

     

    You have confirmed the types of issues that caused me to pass on applying for this board.

     

    I suspect that it has the tools I would like to use, but digging through the documentation would be too much for me.

     

    DAB