Inizia con questo articolo una lunga serie di puntate, dedicate alla programmazione del Raspberry PI con il linguaggio C. Si tratta, a tutti gli effetti, di un corso completo, pensato e dedicato, soprattutto, ai principianti e ai neofiti. Semplici lezioni, esempi e tanto altro chiariranno perfettamente le idee ed illustreranno, in maniera estremamente semplice e chiara, i fondamenti della programmazione, abbinata agli utilizzi pratici dei sistemi embedded. Si consiglia vivamente di seguire cronologicamente le lezioni che seguiranno, senza fretta e impazienza nel terminare subito il corso, ma con la consapevolezza di maturare i concetti gradatamente nel tempo.
Introduzione
La tecnologia e l'elettronica hanno seguito continui progressi. Inizialmente esistevano due sole figure professionali legate ad esse, dedicate allo sviluppo dei sistemi e delle automazioni:
- Una figura di progettista elettronico, con mansioni di creatore dei prototipi;
- Una figura di programmatore informatico, con mansioni di ideatore di software.
Le due figure erano diametralmente opposte e senza alcun legame tra loro. Le esigenze del mercato e, soprattutto, quelle dei sistemi, hanno portato gradatamente alla fusione e all'integrazione delle due figure. Ai giorni d'oggi non si può progettare un sistema elettronico senza conoscere la programmazione algoritmica. L'elettronica moderna è basata interamente su dispositivi intelligenti e programmabili. A questo grandioso risultato si è arrivati nel corso di vari decenni di ricerca e sviluppo.
Le esigenze delle porte di I/O
Dalla comparsa dell'elettronica digitale, le porte logiche di comunicazione hanno avuto un'importanza enorme. Anche questo aspetto ha dovuto transitare negli anni, adattandosi a ciò che la tecnologia offriva. Possiamo dire che ci sono stati quattro momenti differenti, in cui le porte di comunicazione (I/O) hanno subito un diverso trattamento, secondo diversi metodi di utilizzo.
Primo periodo: porte logiche non intelligenti
Nel primo periodo (dal 1950 circa in poi) le porte logiche erano pilotate esclusivamente da altre porte logiche o da componenti discreti. Le scelte decisionali dei comportamenti dei vari sistemi erano effettuate elettronicamente e, in pratica, l'intero circuito elettronico sovrintendeva a tutto. Non esistevano firmware e nemmeno sistemi operativi che comunicavano con la circuiteria. Se occorreva cambiare il comportamento del prototipo, anche di poco, si doveva modificare l'intero schema elettrico o alcuni valori dei componenti utilizzati. Inoltre erano richiesti numerosissimi componenti elettronici, anche per semplici applicazioni (Figura 1).
Figura 1: Circuito elettronico con diversi IC come porte logiche |
Secondo periodo: computer con porte adattate
Dal 1980 in poi, i computer erano dotati di alcune porte logiche che avevano scopi esclusivi. Ad esempio, esse potevano azionare e scambiare dati con stampanti, scanner, modem, ecc. Ma non esistevano vere e proprie porte dedicate alle applicazioni personalizzate. Ad esempio, un PC non poteva essere collegato direttamente ad una lampada esterna per venir comandata a piacimento tramite un software. Si potevano utilizzare le suddette porte, adattandole eccezionalmente ai propri scopi, per poter raggiungere il risultato (chi ricorda come si pilotava con il GW-Basic la porta parallela 0D888 (ox378) alla quale c'era un diodo Led collegato?). Tutto ciò causava alcuni svantaggi:
- Il numero di I/O era estremamente limitato;
- Un problema al carico (o un suo corto circuito) avrebbe causato irrimediabilmente la distruzione della scheda madre del PC.
In ogni caso, anche con i PC obsoleti, si riusciva a realizzare dei piccoli sistemi di "domotica" capaci di pilotare le periferiche più disparate.
Terzo periodo: porte logiche intelligenti
Con l'alta integrazione dei circuiti, dal 1990 in poi le aziende sono riuscite a produrre dispositivi programmabili, con tanto di RAM e CPU. Parliamo dei microcontrollori (MCU), piccoli circuiti integrati dotati di tutta la logica di controllo. Con gli MCU l'utente non solo aveva a disposizione tante porte di I/O, ma poteva deciderne il funzionamento, semplicemente modificando il firmware in esso contenuto (Figura 2).
Figura 2: Microcontrollore PIC16F677A |
Quarto periodo: i sistemi Embedded
E finalmente, ai nostri giorni, si affacciano i sistemi embedded: veri e propri computer, di dimensioni estremamente ridotte, dotati di un Sistema Operativo, di una memoria molto grande (sia volatile che non), di periferiche di Input e di Output ma, soprattutto, di tante porte logiche elettriche di I/O, dedicate all'utilizzo personalizzato. Ognuna di queste porte può venir pilotata da un programma scritto ad-hoc e può comandare un Led, un display o un carico maggiore, attraverso opportuni transistor o relè (Figura 3).
Figura 3: Esempio di scheda Raspberry collegata ad un LED |
Chissà cosa ci riserva il futuro: sicuramente dispositivi fantascientifici, comandati direttamente dal cervello o altre diavolerie simili. Al momento gustiamoci questo interessantissimo corso, sicuri di far piacere a tutti gli hobbisti, principianti e, perché no, ai tecnici più esperti ed esigenti.
Panoramica generale sul Raspberry Pi
Non sprecheremo pagine e pagine di trattazione sulla teoria del Raspberry Pi e sulle sue caratteristiche tecniche, la Rete ne è colma. Ovviamente qualche piccola delucidazione è d'obbligo, semplicemente per non costringere il lettore a cercare altrove alcune informazioni tecniche. Il Raspberry Pi è un computer a tutti gli effetti. Quando uscì sul mercato il primo modello era praticamente impossibile entrarne in possesso [...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2273 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.
Il Wolfram e’ una potente app che permette di graficare i segnali gpio del raspberry ma anche altri sensori collegati come la temperatura. Ottimo un corso C con raspberry, che insieme al python rappresentano i linguaggi leader della scheda piu’ famosa al mondo.
A tal proposito, credo sia utile segnalare anche l’indirizzo web di Wolfram http://www.wolframalpha.com/, dal quale è possibile eseguire elaborazioni online senza la necessità di disporre dello stesso sul proprio computer, al contrario di quanto avviene per software come Matlab, Scilab e similari.
L’inizio del corso sembra molto promettente,
magari rispolvero il mio Raspberry che ho acquistato e mai esplorato. Con le giuste indicazioni sarò contento di poter approfondire l’argomento di grande interesse per moltissime persone.
Spero che con Raspberry si possa usare anche php.
Conti
php…ovvio che si 🙂
Salve,
con che frequenza verranno fuori le varie lezioni del corso?
Saluti
Salve Fabio,
le pubblicazioni saranno mensili, sono inserite negli EOS-Book che sono appunto mensili.
Bellissima presentazione, questa scheda mi ha sempre incuriosito. Questo corso sarà per me un incentivo per l’acquisto e l’utilizzo di questa fantastica scheda.
Ringrazio l’autore è rimango in attesa della prossima lezione.
Articolo fantastico, progetto in piú puntate assolutamente da non perdere. Grazie a Giovanni per la splendida idea!
Mi accodo al corso, aspettando la schedina che mi arriverà grazie all’abbonamento ! 😀
Grazie a tutti dei complimenti. L’idea del corso, ovviamente è stata della Redazione (Emanuele, Maurizio, ecc). Io sono solo la mano.
Non perdete le prossime puntate, senza che ve ne accorgiate, il Raspberry non avrà più segreti.
Aspettando, soprattutto, le puntate che riguardano la programmazione Hardware vera e propria.
A presto e grazie ancora a tutti.
Ciao a tutti, mi sono appena abbonato, volevo segnalare che nella tabella “caratteristiche tecniche” il Raspberry Pi 1 B+ ha 4 USB e non 2!
Grazie per la segnalazione. Nella tabella 2 trovi le caratteristiche corrette.
Corretto. Il modello era riferito al pi b. Grazie.
Appena ri-abbonato per ricevere board, mi congratulo per la parallela iniziativa del corso. Alla prossima uscita, grazie!!
È da qualche mese che sto “giocando” con il modello 2, veramente soddisfatto e con una buona potenza. Sto implementando sempre più dispositivi ai vari gpio (un paio di DHT22, un modulo TX e RX 433MHz, e altri sensori vari), questo corso capita proprio a fagiolo. Tra l’altro, l’ho collegato ad un Arduino che non mi hai mai entusiasmato (preferisco un buon pic), ma ormai ce l’ho e almeno lo programmo direttamente dall’ RPi. Comunque grazie, le premesse del corso sono ottime come tutto quello che ho potuto consultare in questo sotto fino ad ora.
Se per caso, come me, aveste bisogno di installare da un PC Linux ecco che vi viene in aiuto il comando dd…
Ed ecco il link:
https://www.raspberrypi.org/documentation/installation/installing-images/linux.md
Buon divertimento a tutti.
grazie
gran bella iniziativa!!
Estremamente interessante, un ottimo punto di partenza per capire con che razza di scheda si ha a che fare. Non vedo l’ora di cominciare con il linguaggio C
Buongiorno per facilitare la letura degli articoli è possibile scaricarli invece di essere continuamente collegato ?
Grazie dell’iniziativa
Vi seguirò sensaltro
Buongiorno sono nuovo dell’ambiente Raspi. Ho seguito le tue istruzioni per istallare processing su raspberry modello 2 b ma ricevo il seguente messaggio:
root@raspberrypi:~# curl https://processing.org/download/install-arm.sh | sudo sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1713 100 1713 0 0 1788 0 –:–:– –:–:– –:–:– 2664
Downloading https://github.com/processing/processing/releases/download/processing-0247-3.0.1/processing-3.0.1-linux-armv6hf.tgz…
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 610 0 610 0 0 911 0 –:–:– –:–:– –:–:– 1323
curl: (60) SSL certificate problem: certificate is not yet valid
More details here: http://curl.haxx.se/docs/sslcerts.html
curl performs SSL certificate verification by default, using a “bundle”
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn’t adequate, you can specify an alternate file
using the –cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
the bundle, the certificate verification probably failed due to a
problem with the certificate (it might be expired, or the name might
not match the domain name in the URL).
If you’d like to turn off curl’s verification of the certificate, use
the -k (or –insecure) option.
Installing in /usr/local…
tar: This does not look like a tar archive
gzip: stdin: unexpected end of file
tar: Child returned status 1
tar: Error is not recoverable: exiting now
ls: cannot access /usr/local/lib/processing-*: No such file or directory
basename: missing operand
Try `basename –help’ for more information.
ln: failed to create symbolic link `./processing’: File exists
Done! You can start processing by running “processing” in the terminal, or through the applications menu (might require a restart).
Spero di ricevere qualche spiegazione sull’istallazione. Grazie Adriano
Stavi quasi di meno a scriverlo in binario ASCII… 😛 verifica di non aver preso qualche malware… github dovrebbe essere un sito con delle risorse anche per la progettazione elettronica, mi ci sono incappato anch’io
Verifica di non aver scaricato una qualche versione… poco attendibile, per così dire, del sistema operativo
Grazie di cuore per le risposte. Grazie a Voi ho risolto scaricando una versione di Jessie. Per me il mondo Linus è nuovo e interessante. Grazie ancora Adriano.
Ps : Qesta volta sono stato breve…..!
Salve,
vi ringrazio per bella iniziativa.
Volevo porvi la seguente domanda: ho utilizzato una scheda sd da 32gb, come anticipato nel vostro articolo, non riesco a vedere l’intera memoria dopo aver caricato il SO Debian. Nell’articolo è stato accennato la possibilità di effettuare una formattazione a basso livello della scheda sd per poter vedere l’intera memoria ma non sono riuscito a trovare la spiegazione.
Vi ringrazio in anticipo per la risposta.
Elettrone800.
dai un’occhiata a questo link http://it.emcelettronica.com/primo-utilizzo-della-raspberry-pi non so se ho capito bene il problema
Salve, vedo che i commenti sono molto vecchi, è ancora possibile chiedere informazioni ?
Salve Andrea1965.
Certamente.
Anche se l’articolo è del 2016, la redazione è sempre a disposizione dei lettori e legge costantemente tutti i commenti.
Grazie e saluti.
Grazie, il mio obiettivo iniziale è quello di utilizzare il raspberry come client per leggere e scrivere variabili su un plc server, usando modbus tcp-ip. Sarei grato se mi potete dire se attraverso i vostri corsi sia possibile raggiungere una preparazione sufficiente per il mio scopo. Grazie.
Salve. Penso proprio di si.
Consiglio, tuttavia, di abbinare ai vari corsi a puntate anche i singoli articoli sui vari argomenti. Molto d’aiuto potrebbero essere gli articoli su ESPertino, sul protocollo MQTT, e altro.