Arduino e Raspberry

Manuale per configurazione scheda Raspberry

PREPARAZIONE SCHEDA.. 2

 

INSTALLAZIONE. 2

 

SETTAGGI 2

 

AGGIORNAMENTO.. 2

 

INSTALLAZIONE VNC SERVER.. 2

 

INSTALLAZIONE VNC CLIENT. 2

 

ASSEGNARE IP STATICO A SCHEDA RASPBERRY.. 3

 

CREARE UN’ IMMAGINE (BACKUP) DELLA SCHEDA.. 3

 

ATTIVARE COPIA/INCOLLA TRA SISTEMI OPERATIVI DIVERSI 4

 

DETECTION IP ESTERNO.. 5

 

ESEGUIRE SCRIPT AL BOOT. 6

 

WORK IN PROGRESS. 7

 

 


 

 

PREPARAZIONE SCHEDA

 

Formattare la scheda con SDFormatter settando ADJUSTMENT su ON

 

Copiare in radice i files da NOOBS (unzippati) ultima versione

 

 

 

INSTALLAZIONE

 

Inserire la scheda sul Raspberry e dare tensione

 

Settare (in baso a destra) la tastiera

 

Configurare (in alto a destra) la connessione wifi

 

Selezionare il sistema operativo da installare ed avviare

 

 

 

SETTAGGI

 

Su Preferenze à Raspberry configuration .--> Interfaces:     Controllare che sia abilitato il SSH

 

Su Preferenze à Raspberry configuration .--> Localization: Eseguire tutti i settaggi

 

 

 

AGGIORNAMENTO (consigliato periodicamente ma può durare molto)

 

Da Terminale digitare:

 

            sudo apt-get update

 

            sudo apt-get upgrade

 

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

 

INSTALLAZIONE VNC SERVER

 

Da Terminale digitare:

 

            sudo apt-get install tightvncserver

 

            vncserver :1 (da eseguire ad ogni reboot)

 

sarà chiesta una PWD max 8 caratteri (caratteri in eccesso saranno troncati) e la conferma

 

alla domanda successiva rispondere “n”

 

 

 

Per rendere automatico al boot l’avvio del servizio (esempio su porta 1):

 

aprire il file rc.local digitando il comando:

 

sudo nano /etc/rc.local

 

quindi il seguente prima della linea ‘exit 0’:

 

su - pi -c '/usr/bin/tightvncserver :1'

 

Salvare ed uscire (ctrl + x quindi y)

 

Riavviare il PI con il comando:

 

sudo reboot

 

Per conferma dell’attivazione de VNC sulla porta 1 digitando

 

vncserver :1

 

si ottiene la risposta “A VNC server is already running at :1”

 

 

 

Per interrompere il servizio digitare il commando (sulla porta 1):

 

vncserver  -kill :1

 

Per riattivare il servizio digitare il commando (sulla porta 1specificando risoluzione e size caratteri):

 

vncserver :1 –geometry 1024x600 –depth 24

 

 

 

INSTALLAZIONE VNC CLIENT

 

Installare sul PC o tablet o smartphone il Client appropriato per il relativo sistema operativo (ad esempio da realvnc website ).


 

 

ASSEGNARE IP STATICO A SCHEDA RASPBERRY

 

 

 

Aprire il file interfaces con il comando da terminale:

 

sudo nano /etc/network/interfaces

 

ed editarlo in questo modo:

 

 

 

iface lo inet loopback

 

 

 

allow-hotplug wlan0

 

iface wlan0 inet manual

 

wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

 

 

 

auto wlan0

 

iface wlan0 inet static

 

address 192.168.1.200

 

gateway 192.168.1.1

 

netmask 255.255.255.0

 

 

 

auto eth0

 

iface eth0 inet static

 

address 192.168.1.200

 

gateway 192.168.1.1

 

netmask 255.255.255.0

 

 

 

in cui

 

address: Indrizzo ip statico da assegnare al raspberry.

 

gateway: Indirizzo ip corrispondente al router della propria rete

 

netmask: sempre 255.255.255.0

 

Il eth0 vale per le connessione wired (via cavo) mentre quello sotto wlan0 varlgono per i collegamenti wireless (senza fili).

 

 

 

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

 

CREARE UN’ IMMAGINE (BACKUP) DELLA SCHEDA

 

 

 

Utilizzare il software Win32 Disk Imager  (Vedi à)

 

Inserire la scheda SD in un lettore collegato al PC. (Windows segnalerà, con ogni probabilità, che la SD necessita di essere “riparata” in quanto Windows non è in grado di leggere le partizioni Linux utilizzate sul Raspberry. Ignorare quindi questo Warning)

 

Assegnare un nome e una collocazione al file Immagine (.img)

 

 

 

Leggi  esegue la copia da Dispositivo a File immagine (Backup)

 

Scrivi ripristina una immagine sul Dispositivo. (Restore)


 

 

ATTIVARE COPIA/INCOLLA TRA SISTEMI OPERATIVI DIVERSI (ES.  DA WINDOWS)

 

Installare ‘autocutsel’ con:

 

sudo apt-get install autocutsel

 

quindi aprire    /home/pi/.vnc/xstartup            con:

 

nano /home/pi/.vnc/xstartup

 

ed inserire la linea di codice in grassetto come segue:

 

 

 

#!/bin/sh

 

           

 

xrdb $HOME/.Xresources

 

xsetroot -solid grey

 

autocutsel -fork

 

#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &

 

#x-window-manager &

 

# Fix to make GNOME work

 

export XKL_XMODMAP_DISABLE=1

 

/etc/X11/Xsession

 

 

 

La funzione sarà attiva al riavvio di vncserver

 

(stop vncserver con.                vncserver –kill :1)

 

(riavvia vncserver con:                       vncserver :1 –geometry 1024x600 –depth 24)

 

NB: se si arresta il VNC, il riavvio non potrà essere effettuato dal Client (essendo esso disconnesso) ma solo dal Server (che necessita quindi della tastiera) oppure con un reboot se il VNC è configurato per partire in automatico.


 

 

DETECTION IP ESTERNO

 

Uno script in PHP residente su Server individua l’IP esterno e lo scrive su un file di testo sullo stesso Server.

 

Uno script Python si occupa di lanciare ad intervalli regolari il suddetto script PHP e a gestire i transitori senza Rete. Questi  i listati:

 

 

 

IP_detect.php collocato in /X_user/IP/  e lanciabile con www.sito.xxx/X_user/IP/IP_detect.php scrive l’IP in www.sito.xx/public/IP/IP.txt

 

#!/usr/bin/php

 

<?php

 

if (!empty($_SERVER['HTTP_CLIENT_IP'])) {

 

    $ip0 = $_SERVER['HTTP_CLIENT_IP'];

 

} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {

 

    $ip0 = $_SERVER['HTTP_X_FORWARDED_FOR'];

 

} else {

 

    $ip0 = $_SERVER['REMOTE_ADDR'];

 

}

 

            ob_start();

 

            $data = $ip0.":80";

 

            $fp = fopen("../../public/IP/IP.txt", "w");

 

            fwrite($fp, $data);

 

            fclose($fp);

 

?>

 

 

 

IpCheck.py lancia ad intervalli lo script precedente su Server, scrive l'IP e gestisce i transitori

 

#!/usr/bin/python

 

#lancia ad intervalli lo script su server e scrive l'IP #in un file di testo remoto accessibile da web

 

 

 

import time

 

import requests

 

import os

 

 

 

url = 'http://www.isolatiberina.it/X_user/IP/IP_detect.php';

 

while True:  # ciclo infinito

 

            query = {'field': "IP"}

 

            try:

 

                        os.path.basename(url)

 

                        res = requests.post(url, data=query)

 

                        print(res.text)

 

                        time.sleep(5) #intervallo in secondi tra due scansioni (suggested 300)

 

                        continue

 

            except:

 

                        print "errorcode 0x80070002"

 

                        time.sleep(30) #delay in secondi prima di ritentare la connessione

 

 

 

Questi invece i comandi per IP detection da inserire in un eventuale script python:

 

ip0=$(curl icanhazip.com)                 # individua l’IP e lo memorizza nella variabile ip0

 

echo "$ip0"                                        # display della variabile


 

 

ESEGUIRE SCRIPT AL BOOT

 

Tra i vari metodi il più semplice è quello di usare Crontab che serve ad eseguire operazioni pianificate.

 

Crontab è una tabella, una "agenda" dei lavori che vengono controllati dal comando Cron con sintassi:

 

 

 

sudo crontab -e

 

 

 

Si apre un file di testo con alcune righe di commento (precedute da # )

 

Va aggiunta in fondo al file questa riga di comando:

 

 

 

@reboot python /percorso/programma.py &

 

 

 

Questo dice a Cron che al Reboot deve eseguire programma.py con Python. La “&” alla fine della riga indica il comando viene eseguito in background, e che il boot può prosegue senza attendere il programma.


 

 

WORK IN PROGRESS

 

 

 

Creare uno script di inizializzazione in /etc/init.d che chiamiamo AutoStart e registrarlo usando

 

update-rc.d

 

in questo modo l’applicazione viene avviato e arrestata automaticamente all’avvio e allo spegnimento del sistema.

 

Creiamo lo script con

 

sudo nano /etc/init.d/AutoStart

 

e mettiamo gli script da lanciare in /usr/local/bin/ con ad esempio

 

sudo nano /usr/local/bin/IpCheck

 

Questo un possibile listato:

 

 

 

#! /bin/sh

 

# /etc/init.d/AutoStart

 

 

 

### BEGIN INIT INFO

 

# Provides:          noip

 

# Required-Start:    $remote_fs $syslog

 

# Required-Stop:     $remote_fs $syslog

 

# Default-Start:     2 3 4 5

 

# Default-Stop:      0 1 6

 

# Short-Description: Simple script to start a program at boot

 

# Description:       A simple script start / stop a program a boot / shutdown.

 

### END INIT INFO

 

 

 

# If you want a command to always run, put it here

 

 

 

# Carry out specific functions when asked to by the system

 

case "$1" in

 

start)

 

 echo "Starting IpCheck"

 

 # run application you want to start

 

 python /usr/local/bin/IpCheck

 

 ;;

 

 stop)

 

 echo "Stopping IpCheck"

 

 # kill application you want to stop

 

 killall IpCheck

 

 ;;

 

*)

 

 echo "Usage: /etc/init.d/AutoStart {start|stop}"

 

 exit 1

 

;;

 

esac

 

 

 

exit 0

 

 

 

 

 

 

 

Rendiamo ora lo script eseguibile digitando,sempre da terminale:

 

 

sudo chmod 755 /etc/init.d/AutoStart

 

sudo chmod 755 //usr/local/bin/IpCheck

 
       

 

Proviamo ad avviare lo script con:

 

 

sudo /etc/init.d/AutoStart start

 

e successivamente a stopparlo con:

 

 

sudo /etc/init.d/AutoStart stop

 

Concludiamo registrando lo script per partire all’avvio. Per registrare lo script da eseguire all’avvio e spegnimento , eseguire il seguente comando:

 

 

sudo update-rc.d AutoStart defaults

 

Nel caso si volesse rimuovere l’avvio dello script appena creato bastera digitare:

 

 

sudo update-rc.d –f AutoStart remove

 

Questo è tutto!

 

 

 

 

 

 

 

aprire il file rc.local e digitare il comando:

 

sudo nano /etc/rc.local

 

quindi il seguente prima della linea ‘exit 0’:

 

su - pi -c '/usr/local/bin/AutoStart :2'

 

 

 

 

 

 

 

# Scrive un file.

 

out_file = open("test.txt","w")

 

out_file.write(myip)

 

out_file.close()

 

 

 

# Legge un file.

 

in_file = open("test.txt","r")

 

text = in_file.read()

 

in_file.close()

 

 

 

print 'il mio IP  ', text

 

 

 

          

 

 

 

Attualità

Prova banner

Mi sto divertendo a creare la mia pagina personale.

Prova
Prova

πολύτροπος