# CM3-PANEL - Appunti e test

## Indagine per 3DPRN

Per vedere i dispositivi di input usati da X11	

	DISPLAY=":0" xinput --list
	
		⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
		⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
		⎜   ↳ Goodix Capacitive TouchScreen           	id=6	[slave  pointer  (2)]
		⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
		    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
		    ↳ Goodix Capacitive TouchScreen           	id=7	[slave  keyboard (3)]	

Per disabilitare l'input da touch screen

	 DISPLAY=":0" xinput disable 6

Per riabilitare l'input da touch screen

	 DISPLAY=":0" xinput enable 6

Per rimuovere il driver kernel che gestisce il chip Goodix

	sudo modprobe -r goodix

Per ricaricare il driver kernel che gestisce il chip Goodix

	sudo modprobe goodix



## Ripristino puntatore

	sudo modprobe -r goodix
	sudo modprobe goodix
	

## Materiale per fare i contenitori in faggio

	Leroy Marlin
	Lamellare massiccio faggio
	1000x300x30 mm
	Codice 5 945822 000034
	
Da tagliere in 8 parti uguali	

## Materiale per adattatore da scatola 503

Lastra in polizene nero spessore 12 mm dimensioni 90 x 130 mm

http://www.hobbymetal.it/shop_menu.asp	

## Assorbimento

| Stato | Backlight | Assorbimento |
|-|-|-|
| Pagina web                              | OFF |  69mA @ 24 volt - 1.65 Watt |
| Pagina web                              | ON  | 160mA @ 24 volt - 3.85 Watt |
| Pagina web con video 800x480 in running | OFF |  82mA @ 24 volt - 1.96 Watt |
| Pagina web con video 800x480 in running | ON  | 190mA @ 24 volt - 4.56 Watt |


La caduta di tensione, alimentando le CM3-Panel in power over ethernet con un 
cavo ethernet FTP CAT 5E da 50 metri, è di 0,8 volt pari a 0.13 watt di potenza 
dissipata sul cavo. 

Al massimo dovremmo avere tratte da 25 metri per cui la potenza dissipata dovrebbe 
essere sui 0.7 watt a terminale. Su 30 terminali perdiamo circa 21 watt.	


## Allocazione GPIO

	GPIO 0  - LCD PCLK
	GPIO 1  - LCD DE
	GPIO 2  - LCD VSYNC
	GPIO 3  - LCD HSYNC
	GPIO 4  - LCD B2
	GPIO 5  - LCD B3
	GPIO 6  - LCD B4
	GPIO 7  - LCD B5
	GPIO 8  - LCD B6
	GPIO 9  - LCD B7
	GPIO 10 - LCD G2
	GPIO 11 - LCD G3
	GPIO 12 - LCD G4
	GPIO 13 - LCD G5
	GPIO 14 - LCD G6
	GPIO 15 - LCD G7
	GPIO 16 - LCD R2
	GPIO 17 - LCD R3
	GPIO 18 - LCD R4
	GPIO 19 - LCD R5
	GPIO 20 - LCD R6

	GPIO 22 - EXP2 - 22 e Backlight       (portarlo con R0 a backlight)
	GPIO 23 - EXP2 - 23 e Camera led      (portarlo con R0 a camera led)		
	GPIO 24 - EXP2 - 24 e Camera shutdown (portarlo con R0 a shutdown) 
	GPIO 25 - EXP2 - 25
	GPIO 26 - EXP2 - 26
	GPIO 27 - EXP2 - 27

	GPIO 28 - EXP2 - 28 - (PCM_CLK)	(SDA0)
	GPIO 29 - EXP2 - 29 - (PCM_FS)	(SCL0)
	GPIO 30 - EXP2 - 30 - (PCM_DIN)
	GPIO 31 - EXP2 - 31 - (PCM_OUT)
	
	GPIO 32 - EXP2 - 32 - Debug TXD (TXD0) (TXD1)
	GPIO 33 - EXP2 - 33 - Debug RXD (RXD0) (RXD1)

	GPIO 34 - EXP2 - 34

	GPIO 35 - EXP1 - 35 - (SPI0_CE1)
	GPIO 36 - EXP1 - 36 - (SPI0_CE0)  (TXD0)
	GPIO 37 - EXP1 - 37 - (SPI0_MISO) (RXD0)
	GPIO 38 - EXP1 - 38 - (SPI0_MOSI)
	GPIO 39 - EXP1 - 39 - (SPI0_SCLK)

	GPIO 40 - EXP1 - 40 - (PWM0) (TXD1)
	GPIO 41 - EXP1 - 41 - (PWM1) (RXD1)

	GPIO 42 - Touchscreen INT		EXP1 - 42 e Interrupt dal Touch
	GPIO 43 - Touchscreen RST		EXP1 - 43 e Reset del Touch
	GPIO 44 - Touchscreen I2C SDA	EXP1 - 44 e Touch + Camera SDA1 (SDA0)  
	GPIO 45 - Touchscreen I2C SCL	EXP1 - 45 e Touch + Camera SCL1 (SCL0) 

* [Schema elettrico CM3-Panel](https://www.acmesystems.it/www_raspberry/CM3-PANEL/cm3panel_schematic.pdf)

## Assorbimenti @ 12 volt

| Display | WiFi | Yarm | mA  | Watt | 
|---------|------|------|-----|------|
| ON      | ON   | ON   | 324 | 3.9  |
| OFF     | ON   | ON   | 134 | 1.6  |

# Appunti vari

## Misura della temperature della CPU

	vcgencmd measure_temp

## Info varie

	vcgencmd get_config int
	
* [RPI vcgencmd usage](https://elinux.org/RPI_vcgencmd_usage)	

## Gestione linee per la Camera 

Configurazione dei pin usati su Raspperry Pi 3 e su CM3-Home
	
	GPIO 0  - I2C0 - SDA Mipi Camera
	GPIO 1  - I2C0 - SCL Mipi Camera
	GPIO 2  - IO1  - Mipi Camera
	GPIO 3  - IO0  - Mipi Camera

Per verificare se la telecamera è abilitata e se è stata rilevata

	vcgencmd get_camera

* <https://github.com/raspberrypi/firmware/blob/master/extra/dt-blob.dts>
* <https://www.raspberrypi.org/documentation/configuration/pin-configuration.md>
* [Raspberry Pi Camera v2.1 Reversed](https://hackaday.io/project/19480-raspberry-pi-camera-v21-reversed)
* [Camera schematic](http://dryerzinia.io/index.php?p=projects/ReversePiCam21)

## Codec audio

### DAC consigliato dall'autote di Volumio: 

* Texas Instruments (ex Burr Brown) [PCM5122](http://www.ti.com/product/PCM5122). 

In:

	sudo nano /boot/config.txt

Aggiungere:

	dtoverlay=hifiberry-dacplus

Questo è lo stesso DAC usato dalla scheda [Hifiberry DAC+ Pro](https://www.hifiberry.com/shop/boards/hifiberry-dac-pro/).
A differenza della [Hifiberry DAC + Light](https://www.hifiberry.com/products/dacplus/) 
questo chip, oltre ad essere di qualità superiore permette la regolazione hardware del volume che migliora ancora la qualità del suono. 

Nella versione standard della Hifiberry il clock per il DAC è ottenuto tramite segnali provenienti dalla Raspberry, 
in questo modo si risparmia il costo di alcuni componenti. Nella versione Pro ci sono invece due oscillatori a basso jitter 
per le diverse frequenze di campionamento per venire incontro alle esigenze di estrema qualità desiderata da molti audiofili. 

* [Installing and configuring the HiFiBerry](https://www.hifiberry.com/firststeps/) 
* [Raspberry overlays](https://github.com/raspberrypi/linux/tree/rpi-4.19.y/arch/arm/boot/dts/overlays)

<img src="./HiFiberry_DAC_plus_04.jpg" class="img-responsive center-block" width="50%"/>

<img src="./HiFiberry_DAC_plus_PRO.png" class="img-responsive center-block" width="70%"/>


### Connessioni con il modulo CM3L

	| CM3		| CM3 I2S	| PCM5122 PIN	| PCM5122 DESC	|
	|-----------|-----------|---------------|---------------|
	| GPIO28	| PCM_CLK	|	21			|	BCLK		|
	| GPIO29	| PCM_FS	|	23			|	LRCLK		|
	| GPIO30	| PCM_DIN   | 				|				|
	| GPIO31	| PCM_DOUT  |	22			|	DIN			|
	| EXT CLK	|			|	20			|	SCK			|
	| GPIO45	|			|	12			|	SCL			|
	| GPIO44	|			|	11			|	SDA			|

## Modulo WiFi/BT AP6212

Questo modulo è usato su molte schede Linux di produzione cinese. Abbiamo un campione in Acme montato su una
basetta millefori pronto per fare esperimenti con la CM3L.

Interconnessioni:

	| CM3		| FUNCTION		| AP6212		|
	|-----------|---------------|---------------|
	| GPIO22	| SDO_CLK		|				|
	| GPIO23	| SDO_CMD		|				|
	| GPIO24	| SDO_DAT0		|				|
	| GPIO25	| SDO_DAT1		|				|
	| GPIO26	| SDO_DAT2		|				|
	| GPIO27	| SDO_DAT3		|				|
	|	?		| BT_RST-N		|				|
	| GPIO42	| RTS			|				|
	| GPIO40	| TXD		 	|				|
	| GPIO41	| RXD			|				|
	| GPIO43	| CTS			|				|
	|	?		| WL_REG_ON 	|				|


## Touchscreen resistivo

Per connettere alla CM3L uno dei touch resistivi forniti da Joy e in stock in Acme bisogna
usare un ADC converter ADS7846. Di questo ADC ne abbiamo un campione montato su una breakout board.

Connessioni tra chip ADS7846 e touch resistivo

	| ADS7846 | LCD                 |
	|---------|---------------------|
	| X+      | XR                  |
	| Y+      | YD                  |
	| X-      | XL                  |
	| Y-      | YU                  |

Connessioni tra chip ASD7846 e CM3L

	| ADS7846 | CM3L                |
	|---------|---------------------|
	| CS      | GPIO36 - SPI0_CE0_N |
	| DOUT    | GPIO27 - SPI0_MISO  |
	| DIN     | GPIO38 - SPI0_MOSI  |
	| DCLK    | GPIO39 - SPI0_SCLK  |
	| PENIRQ  | GPIO34              |
	
Il segnale PENIRQ può essere spostato su qualsiasi GPIO libero

Configurazione /boot/config.txt

	#Resistive touch
	#dtoverlay=spi-gpio35-39.dtbo
	#dtoverlay=ads7846,cs=0,penirq=34,speed=10000, swapxy=0, pmax=255, xohms=60, xmin=200, xmax=3900, ymin=200, ymax=3900


## Soluzioni Alternative alla CM3-Panel

* [Touch-panel PCs run Raspbian on Raspberry Pi CM3](http://linuxgizmos.com/touch-panel-pcs-run-raspbian-on-raspberry-pi-cm3/)
* [Raspberry Pi 7" Touch Screen LCD](http://it.rs-online.com/web/p/processor-microcontroller-development-kits/8997466/?src=raspberrypi) Eur 57.70
* [Seed - 5 inch 800x480 Capacitive TouchScreen](https://www.seeedstudio.com/5-inch-800x480-Capacitive-TouchScreen-p-2923.html?utm_source=facebookads&utm_medium=ads) Usd 59.95


## Link utili

* [Pinout modulo CM3](./CM3_pinout.pdf) 
* [Segnali su modulo CM3](./RPI-CM-Peripherals.pdf)
* [Electron - Build cross platform desktop apps with JavaScript](https://electron.atom.io/)
* [Bootable Electron Node JS Application](https://benja.io/)
* [Kivy - Open source Python library for rapid development of applications](https://kivy.org/#home)
* [Raspberry Pi precompiled Qt binaries](http://www.qtrpi.com/home)
* [Chromium in Kiosk mode](https://tamarisk.it/raspberry-pi-kiosk-mode-using-raspbian-lite/)
* <https://www.cyberciti.biz/open-source/command-line-hacks/linux-run-command-as-different-user/>
	
## Configurazione Avahi

File __/etc/avahi/avahi-daemon.conf__

	publish-workstation=yes
	
## Power over ethernet

L'alimentazione a 24 volt arriva su:

* Fili blu connessi tra loro +24 volt
* Fili marroni connessi tra loro GND

<img src="./poe.gif">

## WebRTC

Per abilitare l'accesso alla telecamera della raspberry da Chromium
bisogna aggiungere su __/etc/modules__ la riga:

	bcm2835-v4l2

quindi creare il file __/etc/modprobe.d/bcm2835-v4l2.conf__ e metterci dentro
la riga:

	options bcm2835-v4l2 gst_v4l2src_is_broken=1

Per provare se va aprire da Chromium quesat pagina web di prova:

* <https://webrtc.github.io/samples/src/content/getusermedia/gum/>

Info trovate su:

* <https://planb.nicecupoftea.org/2016/10/24/a-presence-robot-with-chromium-webrtc-raspberry-pi-3-and-easyrtc/>
* <https://webrtc.github.io/samples/>
* <https://codelabs.developers.google.com/codelabs/webrtc-web/#0>

Server pr streaming:

* <https://www.linux-projects.org/uv4l/installation/>
