Advertisement
rambodrahmani

Raspberry Pi First Boot

Jul 3rd, 2014
342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.02 KB | None | 0 0
  1. Documento scritto da Rambod Rahmani.
  2.  
  3. ---- <<<<->>>> ----
  4.  
  5. **** DISTRIBUZIONE E CONDIVISIONE ****
  6.  
  7. GLI UTENTI CHE INTENDONO DISTRIBUIRE A TERZI TALE DOCUMENTO O CONDIVIDERLO IN RETE, SONO PREGATI DI NON ELIMINARE IL RIFERIMENTO ALL’AUTORE ORIGINARIO: RAMBOD RAHMANI.
  8.  
  9. ---- <<<<->>>> ----
  10.  
  11. Formattazione file adatta al terminale di Raspberry Pi in collegamento SSH tramite putty su Windows 7.
  12.  
  13. ---- <<<<->>>> ----
  14.  
  15. Configurazione iniziale di un Raspberry Pi Modello B per l'utilizzo di:
  16. 1. Accesso tramite SSH con collegamento ad internet funzionante.
  17. 2. Configurazione iniziale Raspberry Pi.
  18. 3. Installazione librerie essenziali e software di terze parti.
  19. 4. Camera on board.
  20. 5. OpencCV 2.4.5.
  21. 6. Configurazione i2c.
  22. 7. Comunicazione con Arduino board.
  23.  
  24. ---- <<<<->>>> ----
  25.  
  26. **** OPERAZIONI PRELIMINARI ****
  27.  
  28. 0. INSTALLAZIONE SISTEMA OPERATIVO
  29. 0.1
  30.  
  31.  
  32. ---- <<<<->>>> ----
  33.  
  34. 1. ACCESSO TRAMITE SSH CON COLLEGAMENTO AD INTERNET
  35.  
  36. 1.1 MAC OS X:
  37. Per abilitare l'accesso tramite SSH con collegamento ad internet funzionante utilizzando un MacbookPro con Mac OS X, lasciare il file cmdline (che si trova nella partizione /boot) di default e inserire il seguente contenuto nel file /etc/network/interfaces:
  38.  
  39. ---- <<<<->>>> ----
  40.  
  41. auto lo
  42.  
  43. iface lo inet loopback
  44. iface eth0 inet static
  45. address 192.168.2.2
  46. netmask 255.255.255.0
  47. gateway 192.168.2.1
  48.  
  49. allow-hotplug wlan0
  50. iface wlan0 inet manual
  51. wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
  52. iface default inet dhcp
  53.  
  54. ---- <<<<->>>> ----
  55.  
  56. Nel pannello di controllo delle connessioni in MAC OS X impostare su manuale la configurazione IPv4. Fornire come valore del campo IP Address l'indirizzo 192.168.2.1 (corrispondente al gateway inserito nel file di configurazione del Raspberry Pi), e come valore del campo subnet Mask l'indirizzo 255.255.255.0 (valore assegnate al campo netmask nel file di configurazione del Raspberry Pi).
  57. Abilitare la condivisione internet tramite cavo ethernet su Mac OS X, collegare il cavo ethernet dal raspberry pi al MacbookPro. Accendere il Raspberry Pi, utilizzare Putty su X11 per accedere al Raspberry Pi tramite SSh.
  58.  
  59. ---- <<<<->>>> ----
  60.  
  61. 1.2 WINDOWS 7:
  62. Alla fine del file cmdline che si trova nella partizione /boot inserire il seguente testo (N.B: lasciare uno ed un solo spazio dopo l'ultima lettera presente nel file attuale, altrimenti il boot del Raspberry sarà compromesso.):
  63.  
  64. "ip=169.254.0.5::169.254.95.219"
  65.  
  66. N.B: fare attenzione ad eventuali spazi bianchi perchè potrebbero risultare in un blocco del processo di boot di Raaspbian.
  67.  
  68. Una volta eseguita la modifica al file cmdline nella partizione di /boot, utilizzare Xming e Putty per accedere al Raspberry Pi tramite SSH.
  69.  
  70. ---- <<<<->>>> ----
  71.  
  72. 2. CONFIGURAZIONE RASPI-CONFIG
  73.  
  74. Eseguita la configurazione della connessione tramite SSH, accedere al Raspberry Pi ed aprire il pannello di configurazione di Raspbian attraverso il comando
  75.  
  76. sudo raspi-config
  77.  
  78. Una volta all'interno del pannello di configurazione, settare i seguenti parametri:
  79.  
  80. 1. Esapandere file system.
  81. 2. Abilitare SSH.
  82. 3. Abilitare SPI.
  83. 4. Abilitare la Camera on board.
  84. 5. Impostare memoria gpu su 128.
  85.  
  86. [riavviare] sudo reboot
  87.  
  88. ---- <<<<->>>> ----
  89.  
  90. 3. AGGIORNAMENTO LIBRERIE E RIFERIMENTI
  91.  
  92. Eeguiamo un aggiornamento delle librerie e dei riferimenti presenti eseguendo il seguente comando nel terminale:
  93.  
  94. sudo apt-get -y update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade
  95.  
  96. [riavviare] sudo reboot
  97.  
  98. ---- <<<<->>>> ----
  99.  
  100. 4. GENERAZIONE AMBIENTE GRAFICO
  101.  
  102. Per poter utilizzare la GUI di Raspbian dobbiamo generare i file necessari eseguendo il seguente comando nel terminale:
  103.  
  104. startx
  105.  
  106. Attedere qualche minuto perchè i files vengano generati.
  107.  
  108. [riavviare] sudo reboot
  109.  
  110. ---- <<<<->>>> ----
  111.  
  112. 5. INSTALLAZIONE SOFTWARE DI TERZE PARTI
  113.  
  114. Installiamo ora alcuni programmi che ci torneranno utili durante l'utilizzo del nostro Raspberry Pi.
  115.  
  116. N.B: questo NON è OPZIONALE.
  117.  
  118. Installiamo l'editor gedit, il webbrowser chromium e il gestore di pacchetti con il seguente comando su terminale:
  119.  
  120. sudo apt-get install gedit chromium synaptic
  121.  
  122. Aggiornamo i nuovi files installati:
  123.  
  124. sudo apt-get -y update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade
  125.  
  126. [riavviare] sudo reboot
  127.  
  128. ---- <<<<->>>> ----
  129.  
  130. 6. INSTALLAZIONE OPENCV
  131.  
  132. Innanzitutto eseguiamo un aggiornamento generale:
  133.  
  134. sudo apt-get -y update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade
  135.  
  136. Installiamo librerie di terze parti di cui avremo bisogno per eseguire la BUIDL con i seguenti comandi:
  137.  
  138. [N.B: ESEGUIRE I COMANDI, ANCHE SE RIPETUTI, SENZA ALTERARNE L'ORDINE O IL CONTENUTO]
  139.  
  140. sudo apt-get -y install build-essential cmake cmake-qt-gui pkg-config libpng12-0 libpng12-dev libpng++-dev libpng3 libpnglite-dev zlib1g-dbg zlib1g zlib1g-dev pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools
  141.  
  142. sudo apt-get -y install libjpeg8 libjpeg8-dev libjpeg8-dbg libjpeg-progs ffmpeg libavcodec-dev libavcodec53 libavformat53 libavformat-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libxine1-ffmpeg libxine-dev libxine1-bin libunicap2 libunicap2-dev libdc1394-22-dev libdc1394-22 libdc1394-utils swig libv4l-0 libv4l-dev python-numpy libpython2.6 python-dev python2.6-dev libgtk2.0-dev pkg-config
  143.  
  144. sudo apt-get -y update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade
  145.  
  146. sudo apt-get install build-essential cmake pkg-config libpng12-0 libpng12-dev libpng++-dev libpng3 libpnglite-dev libpngwriter0-dev libpngwriter0c2 zlib1g-dbg zlib1g zlib1g-dev pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools libjpeg8 libjpeg8-dev libjpeg8-dbg libjpeg-progs ffmpeg libavcodec-dev libavcodec52 libavformat52 libavformat-dev libgstreamer0.10-0-dbg libgstreamer0.10-0† libgstreamer0.10-dev libxine1-ffmpeg† libxine-dev libxine1-bin libunicap2 libunicap2-dev libdc1394-22-dev libdc1394-22 libdc1394-utils swig libv4l-0 libv4l-dev
  147.  
  148. sudo apt-get install build-essential cmake pkg-config libgtk2.0-dev libgtk2.0 zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libjasper-dev libavcodec-dev swig
  149.  
  150. sudo apt-get -y update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade
  151.  
  152. sudo apt-get install build-essential cmake pkg-config libgtk2.0-dev libgtk2.0 zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libjasper-dev libavcodec-dev swig
  153.  
  154. sudo apt-get -y update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade
  155.  
  156. Con i seguenti comandi scarichiamo la versione di OpenCV desiderata, estraiamo il contenuto delle cartelle compresse, rimuoviamo files inutili, creiamo la cartella dove eseguire la build e impostiamo la PATH del terminale in quella PATH:
  157.  
  158. [OPENCV 2.3.1]
  159.  
  160. wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.3.1/OpenCV-2.3.1a.tar.bz2
  161. tar -xvjpf OpenCV-2.3.1a.tar.bz2
  162. rm OpenCV-2.3.1a.tar.bz2
  163. cd OpenCV-2.3.1/
  164. mkdir build
  165. cd build
  166.  
  167. [OPENCV 2.4.5]
  168.  
  169. wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.5/opencv-2.4.5.tar.gz
  170. tar -zxvf opencv-2.4.5.tar.gz
  171. rm opencv-2.4.5.tar.gz
  172. cd opencv-2.4.5
  173. mkdir build
  174. cd build
  175.  
  176. Generiamo i files necessari per la BUILD:
  177.  
  178. cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON ..
  179.  
  180. Avviamo la BUILD e la successiva installazione:
  181.  
  182. sudo make
  183. sudo make install
  184.  
  185. Se e solo se la BUILD sarà stata completata senza errori, potremo procedere con la restante parte della guida.
  186.  
  187. Modifichiamo il file "/etc/ld.so.conf.d/opencv.conf" e inseriamo "/usr/local/lib".
  188. Aprire il file con il comando:
  189.  
  190. sudo nano /etc/ld.so.conf.d/opencv.conf
  191.  
  192. E inserire il seguente testo (non c'è da preoccuparsi se il file è completamente vuoto):
  193.  
  194. /usr/local/lib
  195.  
  196. Per ricaricare i riferimenti con le nuove inpostazioni esguiamo:
  197.  
  198. sudo ldconfig
  199.  
  200. Modifichiamo ora il file "/etc/bash.bashrc".
  201. Aprire il file con il comando:
  202.  
  203. sudo nano /etc/bash.bashrc
  204.  
  205. E inserirvi, alla fine, il seguente contenuto:
  206.  
  207. PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
  208. export PKG_CONFIG_PATH
  209.  
  210. [riavviare] sudo reboot
  211.  
  212. OpenCV è ora pronto per essere utilizzato. Per poter ottenere la massima risoluzione dalla CSI dobbiamo però installare i driver della CSI.
  213.  
  214. ---- <<<<->>>> ----
  215.  
  216. 7. Installazione Driver UV4L
  217.  
  218. Eseguiamo un aggiornamento generale:
  219.  
  220. sudo apt-get -y update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade
  221.  
  222. Download e installazione del driver:
  223.  
  224. wget http://www.linux-projects.org/listing/uv4l_repo/lrkey.asc && sudo apt-key add ./lrkey.asc
  225.  
  226. Modifichiamo il file "/etc/apt/sources.list".
  227. Aprire il file con il comando:
  228.  
  229. sudo nano /etc/apt/sources.list
  230.  
  231. E aggiungere la seguente linea in fondo al contenuto del file:
  232.  
  233. deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/ wheezy main
  234.  
  235. Eseguiamo un aggiornamento generale dopo aver aggiunto un nuovo link da cui scaricare librerie e riferimenti:
  236.  
  237. sudo apt-get -y update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade
  238.  
  239. Installiamo i software di terze parti necessari:
  240.  
  241. sudo apt-get install uv4l uv4l-raspicam uv4l-raspicam-extras uv4l-uvc uv4l-xscreen uv4l-mjpegstream
  242.  
  243. Aggiorniamo eventuali nuovi file installati:
  244.  
  245. sudo apt-get -y update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade
  246.  
  247. ESEGUIAMO L'AGGIORNAMENTO DEL FIRMWARE:
  248.  
  249. sudo rpi-update
  250.  
  251. [riavviare] sudo reboot
  252.  
  253. ---- <<<<->>>> ----
  254.  
  255. 8. ABILITARE RISOLUZIONE CAMERA ON BOARD
  256.  
  257. Possiamo abilitare la risoluzione della telecamera in maniera permanente oppure solo momanteneamente.
  258.  
  259. Per abilitare la massima risoluzione solo momentaneamente eseguire i seguenti comandi nel terminale:
  260.  
  261. sudo pkill uv4l
  262. sudo uv4l --driver raspicam --auto-video_nr --encoding yuv420 --nopreview
  263. export LD_PRELOAD=/usr/lib/uv4l/uv4lext/armv6l/libuv4lext.so
  264.  
  265. 8.1 PER UNA MODIFICA DEFINITIVA
  266.  
  267. Modificare il file "/etc/bash.bashrc".
  268. Aprire il file con il comando:
  269.  
  270. sudo nano /etc/bash.bashrc
  271.  
  272. E inserire il seguente contenuto alla fine del file:
  273.  
  274. export LD_PRELOAD=/usr/lib/uv4l/uv4lext/armv6l/libuv4lext.so
  275.  
  276. ---- <<<<->>>> ----
  277.  
  278. OPENCV TEST
  279.  
  280. Di seguito un codice sorgente base per poter testare OpenCV (la camera on board deve essere collegata).
  281.  
  282. ---- <<<<->>>> ----
  283.  
  284. import cv2
  285.  
  286. cv2.namedWindow("preview")
  287. vc = cv2.VideoCapture(0)
  288. vc.set(3,128)
  289. vc.set(4,128)
  290.  
  291. if vc.isOpened(): # try to get the first frame
  292. rval, frame = vc.read()
  293. else:
  294. rval = False
  295.  
  296. while rval:
  297. cv2.imshow("preview", frame)
  298. rval, frame = vc.read()
  299. key = cv2.waitKey(33)
  300. if key == 27: # exit on ESC
  301. break
  302.  
  303. ---- <<<<->>>> ----
  304.  
  305. Proprietà modificabili:
  306.  
  307. N.B.: Non tutte sono supportate! Anzi!
  308.  
  309. CV_CAP_PROP_POS_MSEC Current position of the video file in milliseconds.
  310. CV_CAP_PROP_POS_FRAMES 0-based index of the frame to be decoded/captured next.
  311. CV_CAP_PROP_POS_AVI_RATIO Relative position of the video file.
  312. CV_CAP_PROP_FRAME_WIDTH Width of the frames in the video stream.
  313. CV_CAP_PROP_FRAME_HEIGHT Height of the frames in the video stream.
  314. CV_CAP_PROP_FPS Frame rate.
  315. CV_CAP_PROP_FOURCC 4-character code of codec.
  316. CV_CAP_PROP_FRAME_COUNT Number of frames in the video file.
  317. CV_CAP_PROP_FORMAT Format of the Mat objects returned by retrieve().
  318. CV_CAP_PROP_MODE Backend-specific value indicating the current capture mode.
  319. CV_CAP_PROP_BRIGHTNESS Brightness of the image (only for cameras).
  320. CV_CAP_PROP_CONTRAST Contrast of the image (only for cameras).
  321. CV_CAP_PROP_SATURATION Saturation of the image (only for cameras).
  322. CV_CAP_PROP_HUE Hue of the image (only for cameras).
  323. CV_CAP_PROP_GAIN Gain of the image (only for cameras).
  324. CV_CAP_PROP_EXPOSURE Exposure (only for cameras).
  325. CV_CAP_PROP_CONVERT_RGB Boolean flags indicating whether images should be converted to RGB.
  326. CV_CAP_PROP_WHITE_BALANCE Currently unsupported.
  327. CV_CAP_PROP_RECTIFICATION Rectification flag for stereo cameras (note: only supported by DC1394 v 2.x backend currently).
  328.  
  329. ---- <<<<->>>> ----
  330.  
  331. 9. INSTALLAZIONE I2C
  332.  
  333. Per poter utilizzare la comunicazione i2c di Raspberry Pi dobbiamo installare diversi strumenti e fare modifiche ai files di configurazione.
  334.  
  335. Per prima cosa modifichiamo il file "/etc/modprobe.d/raspi-blacklist.conf".
  336.  
  337. Aprire il file con il comando:
  338.  
  339. sudo nano /etc/modprobe.d/raspi-blacklist.conf
  340.  
  341. E assicurarsi che il seguente testo non sia commentato tramite un carattere cancelletto.
  342.  
  343. blacklist spi-bcm2708
  344. blacklist i2c-bcm2708
  345.  
  346. (Se prima di una di queste stringhe di testo è presente il carattere cancelletto, rimuoverlo).
  347.  
  348. Modifichiamo ora il file "/etc/modules".
  349.  
  350. Aprire il file con il comando:
  351.  
  352. sudo nano /etc/modules
  353.  
  354. E aggiungere il seguente testo:
  355.  
  356. i2c-bcm2708
  357. i2c-dev
  358.  
  359. Eventualmente eseguire i seguenti comandi su terminale per assicurarsi di aver eseguito tutte le modifiche correttamente:
  360.  
  361. sudo modprobe i2c-dev
  362. sudo modprobe i2c-bcm2708
  363.  
  364. Installiamo un software di terze parti:
  365.  
  366. sudo apt-get install i2c-tools
  367.  
  368. Aggiungiamo pi al gruppo degli utenti abilitati all'utilizzo dell'i2c:
  369.  
  370. sudo adduser pi i2c
  371.  
  372. Installiamo un software di terze parti:
  373.  
  374. sudo apt-get install python-smbus
  375.  
  376. Eseguiamo un aggiornamento general dei nuovi files:
  377.  
  378. sudo apt-get -y update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade
  379.  
  380. [Riavviare] sudo reboot
  381.  
  382. ---- <<<<->>>> ----
  383.  
  384. I2C TEST
  385.  
  386. Per controllare l'effettivo funzionamento dell'i2c eseguire il seguente comando:
  387.  
  388. i2cdetect -y 1
  389.  
  390. Si dovrebbe ottenere un output del simile al seguente:
  391.  
  392. 0 1 2 3 4 5 6 7 8 9 a b c d e f
  393. 00: -- -- -- -- -- -- -- -- -- -- -- -- --
  394. 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  395. 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  396. 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  397. 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  398. 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  399. 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  400. 70: -- -- -- -- -- -- -- --
  401.  
  402. ---- <<<<->>>> ----
  403.  
  404. 10. COMUNICAZIONE I2C RASPBERRY PI ARDUINO
  405.  
  406. CODICE SORGENTE:
  407. Possiamo ora stabilire un canale di comunicazione tra Raspberry Pi e Arduino utilizzando l'i2c installato nella fase precedente.
  408. Dopo aver installato e testato l'i2c sul Raspberry Pi possiamo utilizzare i seguenti codici sorgente (Python per RPi e lo sketch per Arduino) per stabilire una comunicazione bidirezionale su i2c tra RPi e Arduino:
  409.  
  410. i2c_test.py
  411. ---- <<<<->>>> ----
  412.  
  413. import smbus
  414. import time
  415. # for RPI version 1, use "bus = smbus.SMBus(0)"
  416. bus = smbus.SMBus(1)
  417.  
  418. # This is the address we setup in the Arduino Program
  419. address = 0x04
  420.  
  421. def writeNumber(value):
  422. bus.write_byte(address, value)
  423. # bus.write_byte_data(address, 0, value)
  424. return -1
  425.  
  426. def readNumber():
  427. number = bus.read_byte(address)
  428. # number = bus.read_byte_data(address, 1)
  429. return number
  430.  
  431. while True:
  432. var = input("Enter 1 - 9: ")
  433. if not var:
  434. continue
  435.  
  436. writeNumber(var)
  437. print "RPI: Hi Arduino, I sent you ", var
  438. # sleep one second
  439. time.sleep(1)
  440.  
  441. number = readNumber()
  442. print "Arduino: Hey RPI, I received a digit ", number
  443. print
  444.  
  445. ---- <<<<->>>> ----
  446.  
  447. sketch_Arduino
  448. ---- <<<<->>>> ----
  449.  
  450. #include <Wire.h>
  451.  
  452. #define SLAVE_ADDRESS 0x04
  453. int number = 0;
  454. int state = 0;
  455.  
  456. void setup() {
  457. pinMode(13, OUTPUT);
  458. Serial.begin(9600); // start serial for output
  459. // initialize i2c as slave
  460. Wire.begin(SLAVE_ADDRESS);
  461.  
  462. // define callbacks for i2c communication
  463. Wire.onReceive(receiveData);
  464. Wire.onRequest(sendData);
  465.  
  466. Serial.println("Ready!");
  467. }
  468.  
  469. void loop() {
  470. delay(100);
  471. }
  472.  
  473. // callback for received data
  474. void receiveData(int byteCount){
  475.  
  476. while(Wire.available()) {
  477. number = Wire.read();
  478. Serial.print("data received: ");
  479. Serial.println(number);
  480.  
  481. if (number == 1){
  482.  
  483. if (state == 0){
  484. digitalWrite(13, HIGH); // set the LED on
  485. state = 1;
  486. }
  487. else{
  488. digitalWrite(13, LOW); // set the LED off
  489. state = 0;
  490. }
  491. }
  492. }
  493. }
  494.  
  495. // callback for sending data
  496. void sendData(){
  497. Wire.write(number);
  498. }
  499.  
  500. ---- <<<<->>>> ----
  501.  
  502. COLLEGAMENTO CAVI:
  503. !! N.B: COLLEGARE I CAVI SOLAMENTE DOPO AVER CARICATO LO SKETCH SU ARDUINO !!
  504. Il seguente schema mostra come collegare il Raspberry Pi ad Arduino tramite i2c:
  505.  
  506. RPI Arduino (Uno/Duemillanove)
  507. --------------------------------------------
  508. GPIO 0 (SDA) <--> Pin 4 (SDA)
  509. GPIO 1 (SCL) <--> Pin 5 (SCL)
  510. Ground <--> Ground
  511.  
  512. Collegati i cavi, basterà eseguire lo scketch su arduino (aprire il Serial Monitor dell'IDE di Arduino) e avviare il codice python fornito.
  513. Per maggiori informazioni vedi: http://blog.oscarliang.net/raspberry-pi-arduino-connected-i2c/
  514.  
  515. ---- <<<<->>>> ----
  516.  
  517. 11. COMUNICAZIONE SERIALE RASPBERRY PI ARDUINO
  518.  
  519. Arduino e Raspberry Pi possono comunicare tra di loro anche tramite porta Seriale.
  520.  
  521. !!! N.B: seguire questo procedimento con estrema cautela in quanto il voltaggio della porta seriale di Arduino è maggiore di quello del RPi e potrebbe danneggiare le GPIO del RPi. !!!
  522. (La comunicazione seriale è stata realizzata unidirezionale (RPi --> Arduino) per evitare di danneggiare la scheda RPi. Per una comunicazione bidirezionale vedi: http://blog.oscarliang.net/raspberry-pi-and-arduino-connected-serial-gpio/
  523.  
  524. CONFIGURAZIONE GPIO RASPBERRY PI
  525. Per poter utilizzare la porta seriale del RPi:
  526. 1. Modificare il file "/etc/inittab" rimuovendo la seguente linea che si trova in fondo al file: "T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100".
  527. 2. Modificare il file "/boot/cmdline.txt" rimuovendo dalla prima riga il seguente testo: "console=ttyAMA0,115200 kgdboc=ttyAMA0,115200".
  528. 3. Riavviare il RPi.
  529. 4. Installare il software minicom con il comando: "sudo apt-get install minicom".
  530.  
  531. COLLEGAMENTO RASPBERRY PI AD ARDUINO
  532. Eseguire i seguenti collegamenti (!!! FARE ATTENZIONE A NON COLLEGARE I CAVI ERRONEAMENTE !!)
  533. RPI Arduino (Uno/Duemillanove)
  534. --------------------------------------------
  535. GPIO 14 (TX) <--> Pin 0 (RX)
  536. Ground <--> Ground
  537.  
  538. TEST
  539. Per testare il corretto funzionamento del collegamento seriale tra Raspberry Pi ed Arduino utilizzare i seguenti codici sorgente:
  540.  
  541. sketch_Arduino
  542. ---- <<<<->>>> ----
  543.  
  544. byte number = 0;
  545.  
  546. void setup(){
  547. Serial.begin(9600);
  548. }
  549.  
  550. void loop(){
  551. if (Serial.available()) {
  552. number = Serial.read();
  553. Serial.print("character recieved: ");
  554. Serial.println(number, DEC);
  555. }
  556. }
  557.  
  558. ---- <<<<->>>> ----
  559.  
  560. serial_test.py
  561. ---- <<<<->>>> ----
  562.  
  563. import serial
  564. ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=1)
  565. ser.open()
  566.  
  567. ser.write("testing")
  568. try:
  569. while 1:
  570. response = ser.readline()
  571. print response
  572. except KeyboardInterrupt:
  573. ser.close()
  574.  
  575. ---- <<<<->>>> ----
  576.  
  577. Quindi avviare il Monitor Serial dell'IDE di Arduino e eseguire il comando "python serial_test.py" su RPi.
  578. P.S: Su RPi è possibile anche utilizzare il programma "minicom" (installato durante la configurazione della GPIO di RPi) con il comando:
  579. "minicom -b 9600 -o -D /dev/ttyAMA0"
  580.  
  581. Per maggiori informazioni vedi: http://blog.oscarliang.net/raspberry-pi-and-arduino-connected-serial-gpio/
  582.  
  583. ---- <<<<->>>> ----
  584.  
  585. . AGGIORNAMENTO COMPLETO RASPBERRY PI:
  586.  
  587. Il seguente comando aggiorna librerie, riferimenti, firmware e qualsiasi altro files aggiornabile di Raspbian:
  588.  
  589. sudo apt-get -y update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade && sudo rpi-update
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement