Linuxino meet Arduino, discussione

Diciamo che il creatore non sta facendo nulla di nuovo: https://www.olimex.com/

e io non butterei arduino nel cesso come dite voi, il bello di un micro e che è semplice e non ha fronzoli e non crescia cosi facilmente, in progetti molto complessi dove la potenza di calcolo e tutto, demanderei molto ad arduino e metterei come unità centrale un arm, avrebbe molto più logica, ma ha anche i contro che pochi dicono :slight_smile: arduino io lo vedo come un ottima piattaforma per determinati progetti ma non lo uso per altri dove uso altri tipi di piattaforma, si usa quello che ci serve in base al progetto, non esiste un standard esiste solo quello che ci serve per il progetto che vogliamo realizzare, si rischia di creare una guerra religiosa con queste discussioni

Io penso che uno shield di questo tipo, assieme ad arduini, sarà molto utile a creare molte appliance per la gestione di molti sistemi.
La parte Aria G25 come sistema per la parte software, arduino per gestire tutta la parte hardware e l' esterno.
Mi sembra una bellissima idea... io già mi prenoto. :wink:

Forse faccio una domanda a cui è già stato risposto, ma non ho trovato nulla o forse è mia ignoranza da programmatore.

Ho letto su RaspberryPi che il GPIO ha solo pin digitali e per acquisire dati analogici (come fa Arduino) bisogna o usare integrati ADC esterni o collegare in maniera particolare l'hw (trovato esempio di lettura potenziometro, resistenza/condensatore in base ai tempi di carica/scarica... etc. per me troppo difficile).
La domanda: linuxino il GPIO ha pin analogici?

Mi rispondo da solo: scheda aria G25 -> 4 A/D converter @ 10 bit

Domanda da ignurantone: su Arduino mi sembra molto semplice usare la analogRead() (o la digitalRead)
Supponendo di voler continuare ad utilizzare il C++, su un linuxino, avendo un Linux sotto il sedere, come si "dialoga" con il GPIO e con gli A/D ?
(per non imparare un nuovo linguaggio, e secondo me proponendo un linuxino come passo successivo all'uso di Arduino)
Ho letto qualcosa su RaspberryPi (molti anzi troppi esempi con python) ma non mi sembra immediato come Arduino.

nid69ita:
La domanda: linuxino il GPIO ha pin analogici?

Si, ha quattro ingressi analogici con eventuale reference esterno, ci sono anche due I2C, quattro seriali (oltre a quella dedicata alla console di debug) e tante altre cose utili, tutte le periferiche sono già mappate nel kermel e direttamente disponibili con python/gcc.
Un aggiornamento sullo stato produzione, tra pochi giorni arrivano i primi prototipi per testare se è tutto ok, non dovrebbero esserci problemi, dopo di che si parte con la produzione di massa.
Sto aspettando di avere in mano i primi Linuxino, purtroppo siamo in ritardo sulla tabella di marcia a causa di vari intoppi, per poter iniziare a pubblicare il materiale relativo all'uso di questa scheda con Arduino e viceversa.

nid69ita:
Supponendo di voler continuare ad utilizzare il C++, su un linuxino, avendo un Linux sotto il sedere, come si "dialoga" con il GPIO e con gli A/D ?

Il C in realtà non prevede nessuna periferica di I/O, questo compito è delegato ad alcune funzioni standard di libreria che devono essere realizzate su misura per ogni hardware, nel caso di Aria con python c'è una apposita libreria che rende facilissimo l'accesso a tutte le periferiche, siamo allo stesso livello di Arduino, con il C il modo più semplice è dichiarare la periferica come un file usando la mappatura predefinita nel kernel, ovviamente le operazioni di lettura e scrittura del file abbinato alla periferica non toccano in nessun modo la flash (SD) salvo la creazione di un file con il nome abbinato alla periferica che ne contiene l'init.
Poi c'è il modo migliore in assoluto per gestire le periferiche che è lo stesso che si usa con tutti i micro quando si vuole ottenere il massimo delle prestazioni, ovvero accedere direttamente ai registri hardware delle stesse, però non è una cosa immediata dallo user space di linux dove gira il tuo programma.

Esempio pratico con il blink, led collegato al GPIO 9, su Aria:

codice python

import ablib
import time
 
print "Blinking led"
print "Type ctrl-C to exit"
 
led = ablib.Pin('W','9','low')
 
while True:
	time.sleep(0.2)
	led.on()
	time.sleep(0.2)
	led.off()

Stessa cosa in C, sembra più complicato in realtà è ugualmente semplice, in più c'è solo la parte di init che con python è gestita dalla libreria e non è direttamente visibile.

#include "stdio.h"
#include "stdlib.h"
#include "unistd.h"

int gpioexport(int gpioid) 
{
	FILE *filestream;

	if ((filestream=fopen("/sys/class/gpio/export","w"))==NULL) {
		printf("Error on export GPIO\n");
		return -1;
	}	
	fprintf(filestream,"%d",gpioid);
	fclose(filestream);
	return 0;
}

int gpiosetdir(int gpioid,char *mode) 
{
	FILE *filestream;
	char filename[50];

	sprintf(filename,"/sys/class/gpio/gpio%d/direction",gpioid);
	if ((filestream=fopen(filename,"w"))==NULL) {
		printf("Error on direction setup\n");
		return -1;
	}	
	fprintf(filestream,mode);
	fclose(filestream);
	return 0;
}

int gpiogetbits(int gpioid) 
{
	FILE *filestream;
	char filename[50];
	char retchar;

	sprintf(filename,"/sys/class/gpio/gpio%d/value",gpioid);
	if ((filestream=fopen(filename,"r"))==NULL) {
		printf("Error on gpiogetbits %d\n",gpioid);
		return -1;
	}	
	retchar=fgetc(filestream);
	fclose(filestream);
	if (retchar=='0') return 0;
	else return 1;
}

int gpiosetbits(int gpioid) 
{
	FILE *filestream;
	char filename[50];

	sprintf(filename,"/sys/class/gpio/gpio%d/value",gpioid);
	if ((filestream=fopen(filename,"w"))==NULL) {
		printf("Error on setbits %d\n",gpioid);
		return -1;
	}	
	fprintf(filestream,"1");
	fclose(filestream);
	return 0;
}

int gpioclearbits(int gpioid) 
{
	FILE *filestream;
	char filename[50];

	sprintf(filename,"/sys/class/gpio/gpio%d/value",gpioid);
	if ((filestream=fopen(filename,"w"))==NULL) {
		printf("Error on clearbits %d\n",gpioid);
		return -1;
	}	
	fprintf(filestream,"0");
	fclose(filestream);
	return 0;
}

int main(void) 
{
	int led = 82;
	
	gpioexport(led);
	gpiosetdir(led,"out");
	for (;;) {
		gpiosetbits(led);
		sleep(1);
		gpioclearbits(led);
		sleep(1);
	}
}

Non sarebbe male fare (avendo tempo) un framework, ovvero una o più librerie (come per Arduino) per semplificare da linguaggio C/C++.

Ancora una domanda:
Mi piace Arduino. Mi piacerebbe poi prendere un sistema un pò più completo e pensavo a RaspberryPi, ma non mi ha convito.
Ha di buono che comprando un HW hai quasi tutto (ma non input analogico!!!)
Di Linuxino, non ho capito una cosa. Quello che viene dato come hw, cosa manca per un sistema completo, la aria G25 da comprare a parte?
Forse sbaglio io, ma a me sul sito ufficiale non sembra chiarissimo cosa viene dato e cosa no come HW.

Io vedrei linuxino come un passaggio da un semplice Arduino ad un hw un pò più sofisticato "staccato" da Arduino.
Come l'avete pensata (come la proponete)? Come un fratello maggiore di Arduino con cui dialogare per acquisizioni real-time?

nid69ita:
Non sarebbe male fare (avendo tempo) un framework, ovvero una o più librerie (come per Arduino) per semplificare da linguaggio C/C++.

Di librerie ne esistono molte già pronte, basta fare una ricerca con google, il vantaggio di avere sotto un sistema operativo come Linux è che le librerie sono hardware indipendent, ovviamente devono essere presenti le risorse che vuoi usare altrimenti anche se il programma viene compilato poi oltre a non funzionare c'è pure il rischio di mandare in crash il sistema.

Di Linuxino, non ho capito una cosa. Quello che viene dato come hw, cosa manca per un sistema completo, la aria G25 da comprare a parte?
Forse sbaglio io, ma a me sul sito ufficiale non sembra chiarissimo cosa viene dato e cosa no come HW.

Linuxino è una carrier per Aria G25, sei a tu scegliere quale versione, 128 o 256 mega ram, montarci sopra.

Io vedrei linuxino come un passaggio da un semplice Arduino ad un hw un pò più sofisticato "staccato" da Arduino.
Come l'avete pensata (come la proponete)? Come un fratello maggiore di Arduino con cui dialogare per acquisizioni real-time?

Aria G25 è un sistema Linux embedded, non ha nulla in comune con Arduino, però le due cose possono essere utilizzate assieme con molti vantaggi, lo scopo di questo topic è proprio gettare un ponte tra le due cose.
Puoi usare Arduino come "shield" di Aria G25 per fornirgli un low level hardware che non possiede, o che comunque non è efficiente se usato da Linux, oppure esattamente l'opposto, Aria G25 come shield di alto livello per Arduino in modo da fornire funzionalità altrimenti impossibili o molto deficitarie con le normali shield, p.e. la connettività ethernet/WiFi che le rispettive shield offrono con grossi limiti e costi abbastanza alti nel caso del WiFi.

Problemino su link pagina Home del sito www.linuxino.com: il link Daisy-24 a me (su chrome) da errore
(sembra che oltre a Daisy-24 - Front panel LCD with push buttons metta davanti Félicitations ! Votre domaine a bien été créé chez OVHcloud !)

Un'altra domanda, nella Home c'e' un esempio di contenitore ABS/Alluminio della TEKO. Sul loro sito ci sono molti modelli. Quello della foto ha un codice?

ciao, igor

Mi intrometto, spero che Astro mi perdoni :smiley:

ho realizzato il pinout dell'Aria G25. Buon lavoro!

edit
il download qui: http://www.pighixxx.com/downloads/aria-g25/ ?

Secondo me, Tanzilli ti fa una statua!! :grin: :grin: :grin:
Anche una G25 in regalo non sarebbe male. $)

"Aria OFFICIAL pinout"? :wink:

leo72:
"Aria OFFICIAL pinout"? :wink:

Si, pinout preso dal sito ufficiale e messo in "bella copia".
L'iniziativa è stata mia. :smiley:
PighiXXX

leo72:
"Aria OFFICIAL pinout"? :wink:

Forse lo volevi caporale o sergente ? :grin:

Minimo minimo COMMODORE

X iscrizione

Astrobeed, nessuna novità sul tema?

astrobeed:
Salvo imprevisti Linuxino va in produzione la prossima settimana, quindi dovrebbe essere disponibile prima di fine Marzo,

Dovrebbe essere disponibile da 4 mesi :slight_smile:
il mio dubbio e', visto che si tratta di affrontare un nuovo campo per alcuni, io ad esempio non ho mai messo mano ad oggetti del genere, perche' non partire con una raspberry che ha molta documentazione in giro ? Non e' una provocazione, se ci sono motivi convincenti e' un bene per tutti sottolinearli

Testato:
Dovrebbe essere disponibile da 4 mesi :slight_smile:

Il progetto è stato accantonato perché ci sono troppe schede simili, attualmente anche con processori decisamente più performanti, inoltre è impossibile competere con i costi con altri prodotti equipollenti che vengono realizzati su larga scala.
In tutti i casi per chi è interessato sono disponibili schema e pcb (4 layer) su richiesta.

grazie della riposta, sul discorso raspberry cosa ne pensi ? all'epoca era gia' esistente se non sbaglio, quindi credo la tua idea sia superiore, l'avevi gia' valutata ?