CM3-Panel how tos

How to configure a Chromium Kiosk

This how-tos explains how to create a simple Chromium Kiosk with the minimal amount of software installed

Create a Rasbian lite microSD following this article: https://www.acmesystems.it/CM3-PANEL_microsd

Install the following packages:

sudo apt-get update
sudo apt-get install chromium-browser
sudo apt-get install xorg

Create the systemd file to launch Chromium at startup: /lib/systemd/system/chromium.service. Change myurl with the url you need to open at startup.

[Unit]
Description=Launch Chromium
After=systemd-user-sessions.service

[Service]
ExecStart=/usr/bin/xinit -bg black -fg white -geometry 132x36 -e "runuser pi -c 'chromium-browser --incognito  -kiosk --window-position=0,0 --window-size=800,480 http://myurl'"
Restart=on-abort
User=root
WorkingDirectory=/home/pi

[Install]
WantedBy=multi-user.target

Enable the new service

sudo systemctl daemon-reload
sudo systemctl enable chromium

Reboot or launch the service by hand now:

sudo systemctl start chromium

How to use omxplayer with an USB audio adapter

omxplayer filename --adev=alsa:hw:1,0 --aspect-mode fill

How to add an SPI ethernet interface

How to wire and configure an SPI Ethernet adapter based on the Microchip ENC28J60 like the Mikroe ETH click board or TZT ethernet adapter.

Mikroe ETH click board

Wirings

ENC28J60  |  CM3-Panel  
----------|-----------------
     RST# | NC
     INT# | GPIO40
      CS# | SPI0_CE0 (GPIO36)
      SCK | SPI0_SCLK (GPIO39)
      SDO | SPI0_MISO (GPIO37)
      SDI | SPI0_MOSI (GPIO38)
      3V3 | 3V3
      GND | GND

Save this file in /boot/overlays/enc28j60-cm3panel.dts:

// Overlay for the Microchip ENC28J60 Ethernet Controller
// Acme Systems CM3-Panel 
// http://www.acmesystems.it/CM3-PANEL

/dts-v1/;
/plugin/;

/ {
    compatible = "brcm,bcm2708";

    fragment@0 {
        target = <&spi0>;
        __overlay__ {
            /* needed to avoid dtc warning */
            #address-cells = <1>;
            #size-cells = <0>;

            status = "okay";

            eth1: enc28j60@0{
                compatible = "microchip,enc28j60";
                reg = <0>; /* CE0 */
                pinctrl-names = "default";
                pinctrl-0 = <&eth1_pins>;
                interrupt-parent = <&gpio>;
                interrupts = <40 0x2>; /* falling edge */
                spi-max-frequency = <12000000>;
                status = "okay";
            };
        };
    };

    fragment@1 {
        target = <&spidev0>;
        __overlay__ {
            status = "disabled";
        };
    };

    fragment@2 {
        target = <&gpio>;
        __overlay__ {
            eth1_pins: eth1_pins {
                brcm,pins = <40>;
                brcm,function = <0>; /* in */
                brcm,pull = <0>; /* none */
            };
        };
    };

    __overrides__ {
        int_pin = <&eth1>, "interrupts:0",
                  <&eth1_pins>, "brcm,pins:0";
        speed   = <&eth1>, "spi-max-frequency:0";
    };
};

Compile it by typing:

sudo dtc -@ -I dts -O dtb -o /boot/overlays/enc28j60-cm3panel.dtbo /boot/overlays/enc28j60-cm3panel.dts 

Add this line in /boot/config.txt and reboot:

dtoverlay=spi-gpio35-39
dtoverlay=enc28j60-cm3panel

Disadvantages of this solution

The Microchip ENC28J60 doesn't have a MAC address so you have to configure it by software. To avoid this problem the right chip is ENC424J600.

How to add an audio SPI ethernet interface

Pinout

WM8731 CM3 Panel
1 3V3 W24
2 RF W16 (PA29)
3 RD W14 (PA27)
4 TK W11 (PA24)
5 TF W12 (PA25)
6 TD W13 (PA26)
7 SDA W17 (PA30-SDA0)
8 SCL W18 (PA31-SCL0)
9 RK W15 (PA28)
10 GND W1

Sergio Tanzilli
System designer, software developer and company co-founder
tanzilli@acmesystems.it
Webpages: https://www.acmesystems.it and http://www.tanzolab.it
Github repository: https://github.com/tanzilli and https://github.com/acmesystems