Raspberry Pi Compute

From Open Source Controls Wiki
Revision as of 15:05, 13 October 2022 by Rhg (talk | contribs) (→‎LCD Screen)
Jump to navigation Jump to search

https://www.waveshare.com/wiki/Write_Image_for_Compute_Module_Boards_eMMC_version

https://www.waveshare.com/wiki/CM4-DUAL-ETH-4G/5G-BASE

https://github.com/SequentMicrosystems/ti-rpi/blob/main/README.md

Windows Setup

https://www.raspberrypi.com/documentation/computers/compute-module.html

https://jamesachambers.com/full-compute-module-4-raspberry-pi-setup-imaging-guide/

Windows Installer

For those who just want to enable the Compute Module eMMC as a mass storage device under Windows, the stand-alone installer is the recommended option. This installer has been tested on Windows 10 32-bit and 64-bit, and Windows XP 32-bit.

Please ensure you are not writing to any USB devices whilst the installer is running.

  1. Download and run the https://github.com/raspberrypi/usbboot/raw/master/win32/rpiboot_setup.exe to install the drivers and boot tool.
  2. Plug your host PC USB into the USB SLAVE port, making sure you have setup the board as described above.
  3. Apply power to the board; Windows should now find the hardware and install the driver.
  4. Once the driver installation is complete, run the RPiBoot.exe tool that was previously installed.
  5. After a few seconds, the Compute Module eMMC will pop up under Windows as a disk (USB mass storage device).

Setup

Install image to Compute using imager software. The 64 Bit Lite version should be used.

https://www.raspberrypi.com/software/


The following commands can be executed manually, or can be saved into an 'sh' file (e.g. setup.sh) and then run using bash setup.sh

sudo apt-get update
sudo apt-get upgrade
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
sudo systemctl enable nodered.service
sudo apt-get -y install mosquitto
sudo apt-get -y install pwgen
sudo apt-get -y install wget
sudo apt-get -y install zip
sudo apt-get -y install build-essential cmake
echo "Installing M-Bus Libraries..."
sudo apt-get -y install git libtool libltdl-dev autoconf automake
sudo git clone https://github.com/rscada/libmbus.git
cd libmbus
sudo sh clean.sh
sudo sh build.sh
make
sudo make install
sudo ln -s /usr/local/lib/libmbus.so.0 /usr/lib/libmbus.so.0
mkdir /home/pi/node-hiu
mkdir /home/pi/node-hiu/logs
mkdir /home/pi/node-hiu/iHIU
mkdir /home/pi/node-hiu/flows
sudo chmod -R 775 /home/pi/node-hiu
sudo mkdir /boot/heatweb


cd ~
git clone https://github.com/SequentMicrosystems/ti-rpi.git
cd ti-rpi/
sudo make install
cd ~
git clone https://github.com/SequentMicrosystems/megabas-rpi.git
cd /home/pi/megabas-rpi
sudo make install


The following nodes should be installed via the Node-RED Palette Manager. Items in bold may need manually installing.

node-red
node-red-contrib-arp
node-red-contrib-crypt
node-red-contrib-drawsvg
node-red-contrib-heatweb
node-red-contrib-m-bus
node-red-contrib-play-audio
node-red-contrib-ui-level
node-red-contrib-ui-svg
node-red-dashboard
node-red-node-daemon
node-red-node-email
node-red-node-pi-gpio
node-red-node-ping
node-red-node-random
node-red-node-serialport
node-red-node-smooth
node-red-node-ui-table
node-red-contrib-pid
cd /home/pi/.node-red
node-red-stop
sudo npm install --unsafe-perm --build-from-source node-red-dashboard
sudo npm install --unsafe-perm --build-from-source node-red-contrib-arp
sudo npm install --unsafe-perm --build-from-source node-red-contrib-crypt
sudo npm install --unsafe-perm --build-from-source node-red-contrib-drawsvg
sudo npm install --unsafe-perm --build-from-source node-red-contrib-heatweb
sudo npm install --unsafe-perm --build-from-source node-red-contrib-m-bus
sudo npm install --unsafe-perm --build-from-source node-red-contrib-ui-level
sudo npm install --unsafe-perm --build-from-source node-red-contrib-ui-svg
sudo npm install --unsafe-perm --build-from-source node-red-node-daemon
sudo npm install --unsafe-perm --build-from-source node-red-node-email
sudo npm install --unsafe-perm --build-from-source node-red-node-ui-table
sudo npm install --unsafe-perm --build-from-source node-red-contrib-pid
sudo npm install --unsafe-perm --build-from-source node-red-contrib-ip
node-red-restart

boot.config

# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details

# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720

# uncomment if hdmi display is not detected and composite is being output
hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
hdmi_group=1
#hdmi_mode=82
#hdmi_mode=16

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# Uncomment some or all of these to enable the optional hardware interfaces
dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

# Uncomment this to enable infrared communication.
#dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

# Automatically load overlays for detected cameras
camera_auto_detect=1


# Automatically load overlays for detected DSI displays
display_auto_detect=1

# Enable DRM VC4 V3D driver
dtoverlay=vc4-kms-v3d
max_framebuffers=2

# Run in 64-bit mode
arm_64bit=1

# Disable compensation for displays with overscan
disable_overscan=1

[cm4]
# Enable host mode on the 2711 built-in XHCI USB controller.
# This line should be removed if the legacy DWC2 controller is required
# (e.g. for USB device mode) or if USB support is not required.
#otg_mode=1
dtoverlay=dwc2,dr_mode=host

[all]

[pi4]
# Run as fast as firmware / board allows
arm_boost=1

[all]
enable_uart=1
dtoverlay=pi3-miniuart-bt
dtoverlay=uart5
dtoverlay=uart4
dtoverlay=uart3
dtoverlay=uart2




https://pimylifeup.com/raspberry-pi-screen-resolution/

Setup Kiosk

https://itnext.io/raspberry-pi-read-only-kiosk-mode-the-complete-tutorial-for-2021-58a860474215


sudo apt-get install --no-install-recommends xserver-xorg x11-xserver-utils xinit openbox
sudo apt-get install --no-install-recommends chromium-browser
sudo nano /etc/xdg/openbox/autostart

Should contain...

# These things are run when an Openbox X Session is started.
# You may place a similar script in $HOME/.config/openbox/autostart
# to run user-specific things.
#

# Disable any form of screen saver / screen blanking / power management
xset s off
xset s noblank
xset -dpms
# Allow quitting the X server with CTRL-ATL-Backspace
setxkbmap -option terminate:ctrl_alt_bksp
# Start Chromium in kiosk mode
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' ~/.config/chromium/'Local State'
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/; s/"exit_type":"[^"]\+"/"exit_type":"Normal"/' ~/.config/chromium/Default/Preferences
chromium-browser --block-new-web-contents --start-fullscreen --kiosk --incognito --noerrdialogs --disable-translate --no-first-run --fast --fast-start --disable-infobars --disable-features=TranslateUI --disk-cache-dir=/dev/null --password-store=basic --disable-pinch --overscroll-history-navigation=disabled --disable-features=TouchpadOverscrollHistoryNavigation 'http://localhost:1880/ui'


make everything start on boot using

cd ~
sudo nano .bash_profile 

...insert this line...

[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && startx -- -nocursor


Setup Docker

https://arcanesciencelab.wordpress.com/2020/06/06/installing-docker-on-rasbian-64-bit-and-the-raspberry-pi-8gb/

https://withblue.ink/2020/06/24/docker-and-docker-compose-on-raspberry-pi-os.html

https://www.tutorialworks.com/container-networking/

https://www.losant.com/blog/how-to-access-serial-devices-in-docker

https://nodered.org/docs/getting-started/docker

https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/Dockerfile-vs-docker-compose-Whats-the-difference

Portainer

Pertained is used to manage Docker container running on a system.

Portainer1.png

docker volume create portainer_data
docker run -d -p 9000:9000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

MQTT

docker network create mqtt
docker run -it -p 11883:1883 --name=mqtt --net mqtt -v /home/pi/mqtt:/mosquitto/config -v /home/pi/mqtt/mqtt1.conf:/mosquitto/config/mosquitto.conf -v /home/pi/mqtt/aclfile.acl:/mosquitto/config/aclfile.acl -v /home/pi/mqtt/pwfile:/mosquitto/config/passwordfile eclipse-mosquitto:openssl

Node-RED

docker run -it -p 5001:1880 --net mqtt --restart=always -v node_red_data_1:/data --name mynodered1 nodered/node-red --privileged

--device /dev/ttyUSB0:/dev/ttyUSB0 --device /dev/ttyUSB1:/dev/ttyUSB1 --device /dev/ttyUSB2:/dev/ttyUSB2 --device /dev/ttyUSB3:/dev/ttyUSB3 --device /dev/ttyUSB4:/dev/ttyUSB4 --device /dev/ttyUSB5:/dev/ttyUSB5

docker run -it -p 5002:1880 -p 6002:6000 -p 7002:7000 --net mqtt --restart=always -v node_red_data_2:/data --name mynodered2 nodered/node-red

Docker Compose:

https://gist.github.com/troyfontaine/3790a40bbe5bec2cf112568f5cfefd15

Mediawiki

In Portainer create and deploy a Stack called wiki, pasting the following into the editor.


See https://github.com/heatweb/plumbing-controller/blob/main/docker/docker-compose-wiki.yaml

# MediaWiki with MySQL
# Access via "http://localhost:8080"
#   (or "http://$(docker-machine ip):8080" if using docker-machine)
version: '3'
services:
  mediawiki:
    image: arm64v8/mediawiki
    restart: always
    networks:
      - wiki-net
    ports:
      - 8080:80
    volumes:
      - /var/www/html/
# After initial setup, download LocalSettings.php to the same directory as
# this yaml and uncomment the following line and use compose to restart
# the mediawiki service
# - ./LocalSettings.php:/var/www/html/LocalSettings.php
  database:
    image: arm64v8/mysql:latest
    restart: always
    networks:
      - wiki-net
    environment:
      MYSQL_DATABASE: wiki_db
      MYSQL_ROOT_PASSWORD: root
      MYSQL_USER: wikimedia
      MYSQL_PASSWORD: wikimedia
    volumes:
      - /var/lib/mysql
networks:
  wiki-net:
    driver: bridge

Note: You may need to add the running containers to the mqtt docker network in Portainer.

Modem Management

https://www.jeffgeerling.com/blog/2022/using-4g-lte-wireless-modems-on-raspberry-pi

https://re-rockspace-local.com/how-to-use-modem-manager-raspberry-pi/

LCD Screen

https://www.instructables.com/Raspberry-Pi-Touchscreen-Setup/

https://www.waveshare.com/wiki/CM4-IO-BASE-A#CSI_DSI

wget https://www.waveshare.com/w/upload/7/75/CM4_dt_blob_Source.zip
unzip -o  CM4_dt_blob_Source.zip -d ./CM4_dt_blob_Source
sudo chmod 777 -R CM4_dt_blob_Source
cd CM4_dt_blob_Source/
sudo  dtc -I dts -O dtb -o /boot/dt-blob.bin dt-blob-disp0-double_cam.dts