La scheda NanoPi Neo Air 512 MB

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)

 

Figura 1: layout della scheda NanoPi Neo Air

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).

Figura 2: collegamento della scheda NanoPi Neo Air con un LED rosso

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.

LA SCHEDA NANOPi NEO AIR 512 MB E' DISPONIBILE A CATALOGO CONRAD CON SPEDIZIONI 24H

14 Commenti

  1. IvanScordato IvanScordato 29 settembre 2017
    • Riccardo Ventrella Riccardo Ventrella 29 settembre 2017
      • IvanScordato IvanScordato 29 settembre 2017
        • Riccardo Ventrella Riccardo Ventrella 29 settembre 2017
          • IvanScordato IvanScordato 29 settembre 2017
        • Luca Giuliodori Luca Giuliodori 29 settembre 2017
          • Riccardo Ventrella Riccardo Ventrella 30 settembre 2017
  2. Riccardo Ventrella Riccardo Ventrella 29 settembre 2017
    • IvanScordato IvanScordato 29 settembre 2017
  3. Riccardo Ventrella Riccardo Ventrella 29 settembre 2017
    • IvanScordato IvanScordato 29 settembre 2017

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *