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:
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.
The set of sensors is truly impressing especially microphone array and 35 LEDs ensure fabulous visualization!
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…)"
I was provided with the box contained the MATRIX disc. It is EU Z-Wave version (868MHz).
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+
GPIO Locations
Expansion GPIO
MATRIX Creator papers and instructions are available mostly on
Matrix site:
And on GitHub - Matrix Labs
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:
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.
Surprisingly, sometimes following notice appeared:
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 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.
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
- 20013Humidity
- 20017Everloop
- 20021Pressure
- 20025UV
- 20029Servo
- 20045GPIO
- 20049Wakeword
- 60001IMU Keep-Alive Port
- 20014IMU Error Port
- 20015 IMU Data Update Port
- 20016
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
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.
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.
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:
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
also these commands vere necessary!
It was...
hard work...
something went wrong...
I knew, my steps was incorrect
first I've unregistered the device
success!
but now I encountered the massive error trying to register back...
But finally - after renewed registration I got communication with my MATRIX
Login test:
Matrix login
Screens from raspberry
Command: node ~/matrix-os/index.js
Let us see fantastic visual phenomenon “rainbow - like” illuminated by Matrix LEDs
---------------------------
------------------------------
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)
Screen from the putty below:
Let's start the demo program:
matrix start HelloWorld (on PC)
What I see in the Putty:
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:
One line in app.js should be enough as the beginning:
Lets compile it
And launch
matrix deploy moja_APP
matrix start moja_APP
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.
Using following recipes I tested “weather- related” sensors of MATRIX Creator.
I had to register account on DARK Sky
Application starts cloud-condition related animation using MATRIX LEDs
PARTLY CLOUDY
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:
…
Simple examples results below
Pressure& altitude/ temperature readouts:
And humidity:
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,
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
That let us compile c++ programs.
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
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.
The command:
arecord recording.wav -f S16_LE -r 16000 -d 5
Records sounds to wav file
After installation of HAL we have folder
“/home/pi/matrix-hal-examples/build/microphone_array”
And two applications here:
Launching Mic_record_file produces 9 “.raw” files
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/
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
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
Honestly I'm disappointed by the lack of support for SPARTAN chip on the MATRIX board.
...
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.
simple I2c device check can be preformedas below:
sudo i2cdetect -y 1
I2c addresses have been identified:
1c 38 39 5f 6a
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.
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.
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
Top Comments
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…
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.
…Thank you,
I'm glad you understand my hasitations!
Marek