La NanoPi NEO Air è una scheda ARM open source di dimensioni 40 x 40 mm con processore A7 di Allwinner H3 Quad Core a 1,2 GHz. I suoi pin sono compatibili con il NanoPi NEO (per approfondimenti consulta il seguente link) e con il GPIO del Raspberry Pi. La scheda NanoPi NEO AIR dispone di 512 MB di RAM DDR3 da 16 bit, di 8 GB eMMC e di uno slot MicroSD. Ha interfaccia WiFi, Bluetooth e DVP Camera Interface per il pieno supporto di moduli da 5M pixel.
Introduzione
La scelta di una scheda SBC (Single Board Computer) è legata a diversi fattori quali CPU, velocità del processore e tipo di struttura o fattore di forma. Inoltre, anche caratteristiche di programmazione e sistema operativo svolgono un ruolo decisamente determinante; in particolare la disponibilità di libreria e l'open source o meno del dispositivo. La scheda NanoPi Neo Air è prodotta da FriendlyARM e ha caratteristiche simili alla Raspberry Pi zero, ma alimentata da un Processore quad-core a Cortex A7 a 32 bit Allwinner H3 che funziona fino a 1,2 GHz con 512 MB di RAM e uno slot micro SD (figura 1). Il processore include una GPU Mali400 MP2 ma la scheda manca di un connettore di uscita HDMI. Alcune caratteristiche sono riassunte nei seguenti punti:
- CPU: Allwinner H3, Quad-core Cortex-A7 fino a 1.2GHz
- RAM: 512MB DDR3 RAM
- Storage: 8GB eMMC
- WiFi: 802.11b/g/n e Bluetooth 4.0 LE (via Ampak AP6212 module) con IPEX antenna connector
- DVP Camera: 0.5mm pitch 24 pin FPC seat
- MicroUSB: OTG e power input
- MicroSD Slot x 1
- Debug Serial Port: 4Pin, 2.54mm pitch pin header
- GPIO1: 2.54mm spacing 24pin, include UART, SPI, I2C, GPIO
- GPIO2: 2.54mm spacing 12pin, include USBx2, IR, SPDIF, I2S
- PCB Size: 40 x 40mm (Raspberry Pi Zero: 65mm × 30mm)
- PCB layer: 6
- Power Supply: DC 5V/2A
- OS/Software: u-boot, UbuntuCore, armbian, DietPi
- Weight: 7.5g (senza Pin-headers); 9.7g (con Pin-headers)
La GPU ARM Mali400 offre l'implementazione multi-core ed è stata la prima GPU multiforme conforme a OpenGL ES 2.0. Concentrandosi sul consumo ridotto di potenza e larghezza di banda, la GPU Mali-400 è la GPU scelta per i dispositivi a costi ridotti. ARM fornisce anche strumenti per aiutare nella creazione di shader di OpenGL ES denominato Mali GPU Shader Development Studio e Mali GPU User Interface Engine. Per approfondimenti sulle GPU consultare il seguente link.
Testiamo la scheda
In questa sezione eseguiamo un semplice test di accensione LED, usando la libreria matrix. La libreria matrix è stata sviluppata da FriendlyARM per linguaggio C (per approfondimenti sul linguaggio C vi consiglio il seguente corso Raspberry). Inoltre, attraverso questa libreria ne viene sviluppata un'altra per il linguaggio Python (figura 2).
Per prima cosa avviare la scheda e copiare il seguente codice:
$ apt-get update && apt-get install git $ git clone https://github.com/friendlyarm/matrix.git
Se la clonazione è andata a buon fine verrà generata una directory "matrix". Compilare e installare Matrix:
$ cd matrix $ make && make install $ cd ..
A questo punto, creare un nuovo file (per esempio led.c) e copiare il seguente codice nel file:
#include "stdio.h" #include "stdlib.h" #include "unistd.h" #include "libfahw.h" #define STATUS_CHANGE_TIMES 20 int main(int argc, char **argv) { int i; int intValue = 0; int pin = GPIO_PIN(7); if (boardInit() < 0) { printf("Fail to init board\n"); return -1; } if (exportGPIOPin(pin) != 0) { printf("exportGPIOPin(%d) failed\n", pin); } if(setGPIODirection(pin, GPIO_OUT) == -1) { printf("setGPIODirection(%d) failed\r\n",pin); } for(i = 0; i < STATUS_CHANGE_TIMES; i++) { intValue ^= 1; //0 xor 1 = 1, 1 xor 1 = 0 if(setGPIOValue(pin, intValue) > 0) { printf("%d - GPIO_PIN(%d) value is %d\r\n",i+1, pin, intValue); } else { printf("setGPIOValue(%d) failed\r\n", pin); } usleep(500000); } unexportGPIOPin(pin); return 0;
Compilare il file:
$ gcc -o led -L /matrix/lib/ -I /matrix/lib/includes/ led.c -lfahw -lm -Wall
E poi eseguire il file:
$ ./led
Il LED collegato sulla scheda inizierà a lampeggiare. Il codice è molto semplice, simile sotto certi aspetti al linguaggio Arduino.
Conclusioni e considerazioni
Le problematiche che riguardono l'alimentazione elettrica sono una delle questioni più grandi che si dovranno affrontare quando si inizia a lavorare con i computer single board. Le problematiche di una scheda SD difettosa e quelle derivanti da un design non perfetto sono le altre questioni comuni che si possono incontrare. In generale, i fattori che riguardano l'alimentazione possono essere complicati, legati tutti ad una scelta corretta del circuito di filtraggio e gestione DC. La scelta della piattaforma hardware appropriata è il primo passo nel processo di design e può avere un effetto sostanziale sui costi complessivi del progetto in termini sia di costo unitario che di tempo di sviluppo. Alcune considerazioni importanti da fare nel processo di selezione riguardono oltre al sistema di alimentazione anche aspetti software circa l'aggiornamento, il tipo di sistema operativo implementato, la flessibilità nella gestione hardware/software, qualità del prodotto. Nano Pi è alimentato da micro USB e funziona con 5V / 2A con un circuito di power management efficiente al fine di evitare problematiche varie che possono compromettere il corretto funzionamento. Oltre a Ethernet, slot per micro SD e USB OTG, ha un'interfaccia GPIO a 36 pin (supporta UART, SPI, I2C, IO, IR, SPDIF, IS2) compatibile con i PIN del Raspberry Pi. E' possibile utilizzare le varie shield commerciali per Camera e Motori utilizzate per la scheda Raspberry Pi.
Ciao, proprio in questi ultimi giorni sono venuto a conoscenza di questa board, e sto valutando se sceglierla o meno per la realizzazione di un progetto che ho in cantiere.
Uno dei motivi principali per cui la sceglierei, é il fatto che a quanto mi è sembrato di capire, non è necessario inserire la micro SD, utile secondo me quando si vuole realizzare qualcosa che debba funzionare a lungo termine (evitando il danneggiamento della memory card).
Adesso mi resta da capire se si tratta di una board embedded performante, duratura nel tempo e se permette di gestire i pin GPIO con facilità con Python.
Ho guardato anche l’articolo originale di Luglio e mi pare che cmq una SD sia necessaria per caricare l’immagine di Linux, quotando l’articolo:
“Per fare in modo che il NanoPi NEO si avvii e funzioni velocemente, è consigliabile utilizzare una scheda SDHC TF da 8 GB. Dal seguente link è possibile scaricare le varie versioni di sistema operativo Linux compatibili con la scheda NanoPi NEO. La scheda TF con i file di immagine UbuntuCore permetterà di caricare il sistema operativo nel modulo NanoPi NEO”
Devo proprio approfondire questo aspetto 🙂
Spero sia necessario soltanto per una configurazione iniziale, ma non indispensabile
Per l’esperienza che ho io con schede Linux embedded (FoxG20, BeagleBoard, Rasperry in tutte le salse) praticamente tutte bootano da SD. L’immagine del Kernel e del FileSystem e’ cmq abbastanza grossa e quindi costa meno farla bootare dall’esterno.
Magari usando il tool per il serial debugging del Kernel citato nell’articolo originale e possibile caricare l’immagine, ma credo solo la uImage del Kernel, il filesystem di solito e’ assunto essere presente diversamente.
Sapresti indicarmi una buona micro SD resistente e duratura per questo utilizzo?
Allora ti dico per certo che la Nano PI Neo 2 non necessita di una scheda SD: un mio collega sta seguendo un progetto in azienda e mi diceva che questa monta a bordo una flash con precaricato il SO.
Per la Air non ti so dire con certezza ma mi sembra che anche questa monti una flash. A breve comunque ti saprò dire: ho in corso una spedizione di una Air.
Ho trovato questo link:
http://electricgraveyard.com/index.php/category/nanopi-neo/
e sembrerebbe che ci sia anche su questa un OS precaricato in flash:
“I was immediately excited to try out the 8 GB eMMC built onto the board, however that proved to be a challenge to research.
Using the images provided by FriendlyElec, and their instructions, a flash could be done, but I wanted to use my preferred distro at this point, Armbian. After some forum surfing, I determined the work had been done for me”
Seguendo tutti quegli step descritti, e’ possibile flashare su eMMC la versione di Linux dalla SD. Quindi, la scheda probab arriva con un Linux precaricato su flash, ma e’ possibile cambiarlo usando la propria distro partendo cmq SEMPRE da una SD con su l’immagine, SD che puo’ poi venir tolta in un secondo tempo.
Quindi @Luca e @Ivan: si e’ possibile flashare la propria distro preferita 🙂
Molto interessante. Incredibile cmq come queste schede costino nulla negli USA e magicamente prendano dei prezzi assurdi quando le importiamo.
Ho avuto lo stesso problema con la Raspberry PI Zero, appena uscita costava in UK e USA l’equivalente di 5$, ma magicamente in Italia mi e’ costata quasi 40 euro. Vergognoso.
Una cosa che odio anche io.
Qui in Italia non è possibile trovare il Raspberry PI zero se non in kit su Amazon al costo di 26 euro, ma io personalmente non lo compro perché del kit non ho che farmene.
Non riesco a capire perché risulta impossibile trovare una Board fantastica che inizialmente veniva pubblicizzata come il Raspberry PI da 5 pound.
Concordo pienamente. Certamente tutti siamo preparati alle tasse di importazione, ma cosi’ e’ troppo.
Fidati.. Anche I cinesi hanno il prezzo quadruplicato
Cmq, se non ti interessa la parte WiFi, ma ti basta il cavo Ethernet, su Conrad la paghi circa la meta’ rispetto alla Air:
http://www.conrad.it/ce/it/product/1503819/NanoPi-Neo-Allwinner-512-MB-senza-sistema-operativo?ref=searchDetail
@Ivan, io di solito ho sempre usato o le Verbatim o le SanDisk, quella indicata nell’articolo non la conosco, ma immagino sia equivalente. La cosa importantissima, ma credo questo lo saprai gia’, e’ la scelta della Classe d’utilizzo della SD. Io di solito uso la Classe 10, che garantisce un velocita’ decente di utilizzo della scheda in modo fluido e senza aspettare che la shell risponda ai comandi.
Costano chiaramente 1 po’ di piu’, ma e’ meglio non lesinare su questo aspetto se si vuole avere una User Experience fluida da linea di comando.
Avevo pensato proprio alla SanDisk.. Vedremo 🙂