In questo articolo vogliamo riassumere le differenze esistenti tra le nostre CPU OEM (SlimLine e Netsyst III) ed i sistemi Arduino e Raspberry Pi. Per iniziare vogliamo precisare che i moduli CPU OEM SlimLine e Netsyst III sono stati progettati per utilizzo prevalente in ambiente industriale/professionale e, pertanto, presentano requisiti in termini di temperatura operativa ed immunità ai disturbi tipici di tali ambienti.
Anche dal punto di vista della programmazione i prodotti sono sensibilmente diversi: le CPU SlimLine e Netsyst si programmano nei cinque linguaggi previsti dallo standard internazionale IEC61131-3 (molto usato in ambiente industriale vedi ad esempio Codesys) attraverso il tool gratuito LogicLab, mentre invece Arduino è completamente "open" e programmabile in C/C++ e Raspberry Pi è dotato di S.O. Linux ed è programmabile in Python, C/C++, Java ecc..
Per chi è abituato ad utilizzare il linguaggio C ricordiamo che il linguaggio ST (Structured text) della norma IEC61131-3 presenta molte delle regole sintattiche del C (if, for, switch, ecc) inoltre permette l'utilizzo di strutture dati, array, pointer (Nel forum molti esempi di programmi con codice sorgente). L'unione dei diversi linguaggi previsti dalla norma, permette di creare funzioni e blocchi funzioni in linguaggio ST, per poi utilizzarli come oggetti grafici all'interno di altri programmi scritti in LD (Ladder Diagram) o FBD (Function Block Diagram). Ecco un esempio di programma in linguaggio FBD tratto da questo articolo.
Se volessimo dare una collocazione applicativa a questi sistemi potremmo dire che Arduino è idoneo per la realizzazione di sistemi di automazione a livello hobbistico a basse prestazioni, le CPU SlimLine e Netlog III sono indicate nella realizzazione di sistemi industriali e professionali con prestazioni medio-alte laddove è importante il time-to-market, la portabilità del programma e la facilità di modifica dello stesso; mentre Raspberry Pi è indicato nelle applicazioni multimediali. Nella tabella che segue abbiamo riportato le caratteristiche essenziali dei sistemi in modo che sia più facile il confronto.
Arduino Uno | CPU Netlog III OEM | CPU SlimLine Cortex M7 OEM | Raspberry Pi Mod. A | |
Alimentazione | 7-12Vdc | 5Vdc 250mA max. | 10-30Vdc 2W | 5Vdc 700mA max. |
Alimentazione fornita al bus espansione | N.A. | N.A. | 5Vdc 2.5A max. | N.A. |
Processore | Atmel ATmega328 16MHz | NXP LPC2387 72MHz (ARM7TDMI) | Cortex M7 300MHz | Broadcom BCM2835 700MHz Low Power ARM1176JZFS |
Memoria programma | FlashEPROM 32kBytes | FlashEPROM 512kBytes (96kBytes User program) |
FlashEPROM 2 MBytes (262 kB User program) |
Boot da SD-Card esterna |
Memoria di massa | Nessuna | FlashEPROM 1MBytes (260kBytes User data) |
FlashEPROM 4MBytes (398kBytes User data) |
Su SD-Card esterna |
Memoria dati tampone | E2PROM 1 kBytes | FRAM 16kBytes (3kBytes User data) |
FRAM 32kBytes (6kBytes User data) |
Nessuna |
Memoria dati | SRAM 2 kBytes | SRAM 96kBytes (12kBytes User data) |
SRAM 96kBytes (12kBytes User data) |
256MBytes SDRAM |
Real Time Clock | Nessuno | Sì, con funzione ora legale automatica | Sì, con funzione ora legale automatica Funzionamento a sistema spento opzionale SNTP (Simple Network Time Protocol) supportato |
Nessuno |
I/F USB | 1 x USB 2.0 (conn. USB B) (modo device) |
1 x USB 2.0 (conn. esterno) (modo device) |
Sì, su conn. micro-USB AB (modo host+device) |
1 x USB 2.0 (conn. USB A) (modo host) |
Video output | Nessuno | Nessuno | HDMI (rev 1.3 & 1.4); RCA Composito (PAL e NTSC) | |
Audio Output | Nessuno | Nessuno | 3.5mm jack, HDMI | |
Camera | Nessuno | Nessuno | 15-pin MIPI Camera Serial Interface (CSI-2) | |
Display | Nessuno | Nessuno | Display Serial Interface (DSI) 15 way flat flex cable connector with two data lanes and a clock lane | |
Ingressi analogici | 6 x 0-5Vdc 10bit | Nessuno | 2 x 0-10Vdc 12bit | Nessuno |
Ingressi digitali | 14 I/O 5Vdc | Nessuno | 2 Optoisolati PNP/NPN 5-30Vdc, 7mA@24V (di cui 1 utilizzabile come counter Fmax 10kHz) |
GPIO 3Vdc |
Uscite digitali | 14 I/O 5Vdc | Nessuna | 2 photoMOS 0.25A@40Vdc/ac | GPIO 3Vdc |
I/F Ethernet | Nessuna | 1 x 10/100base-T(x) Auto-MDIX (conn. esterno) |
1 x 10/100base-T(x) Auto-MDIX (conn. RJ45) |
1 x 10/100base-T(x) Auto-MDIX (conn. RJ45 non montato) |
Bus di campo | Nessuno | 1 x RS485 + 1 x CAN bus (conn. e drivers esterni) |
1 x RS485 o 1 x CAN bus Galvanicamente isolati |
Nessuno |
Bus SPI | 1 (su strip pin) |
Nessuno | 1 (conn. GPIO) | |
Bus I2C™ | 1 (su strip pin) |
1 High-Speed (conn. esterno) |
1 High-Speed (conn. IDC 10pin) |
2 (conn. GPIO) |
Nr. max. moduli espansione | N.A. | 16 | N.A. | |
I/F RS232 | 1 (su strip pin) | 1 x RS232 level 1 x 5V TTL level (conn. esterno) |
2 x DTE (conn. RJ45) | 1 x 3.3V TTL level |
Memoria di massa | No | SD HC fino a 32GB (conn. esterno) |
Slot micro-SD HC fino a 32GB | Slot micro-SD |
Pagine web configurabili dall'utente | No | Sì | No | |
Ambiente | dati non dichiarati | Temperatura operativa: da -20 a +70°C | dati non dichiarati | |
Temperatura di stoccaggio: da -40° a +80°C | ||||
Umidità: Max. 90% | ||||
Dimensioni e peso | Dimensioni: 68,6 mm × 53,3 mm | Dimensioni: 107.95 mm L x 31.8 mm W 10 mm H | Dimensioni: 105 mm L x 90 mm W x 18 mm H | Dimensioni: 85.6 x 53.98 x 17mm |
Peso: 50g | Peso: 100g | |||
Tool di programmazione | Arduino IDE | LogicLab | Alfafruit IDE | |
Linguaggi supportati | C | IEC61131-3 (IL, ST, LD, FBD e SFC) |
Python, C, C++, Java |