Sketch troppo grande ma...

Salve a tutti...
mi sono avvicinato da pochissimo ad arduino e, nel realizzare il mio progetto, mi sono imbattuto in un piccolo :smiley: problema con gli spazi limitati... per il codice.
Premesso che il mio linguaggio "madre" per la programmazione è il C# non ho grossissimi problemi con quello di arduino e l'eventuale ottimizzazione che sto già facendo ma, per il mio progetto (un "semplice" controllo accessi) vorrei sfruttare un lettore RFID, un lettore MicroSD, ed una porta Ethernet, ed aggiungere poi Fingerprint, LCD ed un Servo, detto questo i componenti singolarmente non hanno problemi ma quando ho iniziato a metterli insieme son iniziate le rogne...

Voi direte ... eeeeeeee e che vuoi fare con tutta sta roba... costruire lo shuttle?? :o ... e lo so ma mi è venuto in mente così e so che è fattibile anche se come primo progetto sto andando direttamente sul complicato.

Son partito da qui RFID522-Door-Unlock
ora sto cercando di risolvere le problematiche lato software e cioè i problemi di spazio, dovendo gestire il lettore rfid, la scheda e la rete ho avuto bisogno di queste librerie:

#include <EEPROM.h>
#include <SPI.h>
#include <Ethernet.h>
#include <SdFat.h>
#include <MFRC522.h>

ho scelto SdFat perchè occupa meno spazio rispetto alla SD.h sul compilato, ciò che mi preme capire se qualcuno di voi ha avuto necessità di usare più librerie insieme e se lo spazio che occupa il compilato andava oltre il 100% (32.000k circa), perchè io mi trovo in una situazione limite in cui se inserisco una riga tipo

SdFile rdfile("parametri.ini", O_READ);

questa mi fa saltare il compilato più o meno dal 77% al 98% (perchè giustamente richiamando la SdFile si porta dietro altro codice...) e se ci metto pure la parte Ethernet... supero alla grande, ora sto cercando di ottimizzare al meglio ciò che ho scritto io e ciò che era negli esempi ma, questa parte fondamentalmente è pochissima roba in confronto a tutte le librerie...

Se ad esempio si compila il codice \AccessControl\AccessControl.ino presente nello zip RFID522-Door-Unlock va bene per Arduino UNO ma non per il Pro Mini, che ha un pochino di memoria in meno... il mio obiettivo sarebbe quello di utilizzare per il progetto definitivo un Arduino Pro Mini per una questione di dimensioni e, non certo un Arduino UNO ma non oso immaginare dove arriverei se inserissi anche le lib per gestire LCD e Servo...

La mia domanda è: c'è un modo per risolvere questi problemi? e quando non se ne può fare a meno di superare il 100% che si fa per non essere costretti ad usare un Arduino Mega che ha dimensioni importanti rispetto al Pro Mini?

Scusate se ho fatto domande da niubbo ma... sto ancora studiando :smiley:

Il Pro Mini è praticamente uguale alla Uno a livello di hardware, ai fini di questa discussione almeno. Quel che cambia è il bootloader, ma non c'è motivo per non poterci mettere quello della Uno, che occupa solo 512 byte.

Anzi, potresti omettere proprio del tutto il bootloader e programmare il chip in ICSP, per poter sfruttare anche quei 512 byte, se hai un programmatore ICSP appunto, oppure un altro Arduino con lo sketch ArduinoISP.

Usi una Teensy.
Uno dei tanti che la vende --> http://www.robot-italy.com/it/teensy-3-3.html

Grazie per la risposta immediata SukkoPera,
512 non son pochi ma ho paura che non siano nemmeno tanti... potrei scontrarmi sicuramente con un altro over 100% una volta impastato proprio il tutto... anzi ne sono sicuro, tieni presente che non ho ancora completato la parte rete e non ho ancora messo LCD, Servo, fingerprint ecc...

Pensa che l'istruzione SdFile rdfile(fileName, O_READ); mi porta via da sola 5.758 byte, e quindi i 512 non servirebbero a molto.

PaoloP:
Usi una Teensy.
Uno dei tanti che la vende --> http://www.robot-italy.com/it/teensy-3-3.html

Ciao Paolo,
256K Flash Memory sono allettanti ho da poco conosciuto Arduino... si aggiunge alle board gestite dall'IDE di arduino e si programma alla stessa maniera se ho ben capito...

Usi una Teensy.

Ottima scelta, preferibile per quanto riguarda le prestazioni

Oppure
Io ho usato anche queste , ottime se hai problemi di spazio.
Con Questa LAN

Beh, forse dimentichi che stiamo parlando di microcontrollori dalle risorse limitate, nati per svolgere pochi compiti, tendenzialmente pure "semplici". Con Arduino, tutte le periferiche a dispozione di chiunque a costi irrisori e la marea di relative librerie a disposizione è facile "farsi prendere la mano" ed incappare nei limiti dell'hardware.

Quando questo succede o si eliminano delle funzionalità, o si ottimizza il codice (ma spesso più di tanto non si può/sa fare, anche perché spesso occorrerebbe metter mano a librerie scritte da altri) o si passa ad un microcontrollore più grande. Ora, se vuoi restare nelle schede Arduino ufficiali lo step successivo è direttamente la Mega, che offre decisamente più flash, RAM ed EEPROM, ma a scapito delle dimensioni fisiche (a cui potresti ovviare con una scheda custom se le necessità fossero più per le maggiori risorse che per i maggiori pin). Una sorta di via di mezzo, mai adottata dalle schede ufficiali, è l'ATmega644p (o addirittura 1284), che forse potrebbe fare al caso tuo. Un tempo c'era una certa "Sanguino", ma ora è difficile da trovare. C'è qualcosa su eBay se cerchi "RKAT40", ma sono schede che "bisogna saper usare", essendo minimaliste (di ottima qualità, però!).

Alternativamente c'è la Teensy, come consigliato da qualcuno. Ottima scheda ma anch'essa piuttosto minimalista.

Infine ci sono gli Arduino "moderni" tipo la Zero o la neo-uscita MKR1000 (con Wifi integrato, tra l'altro), con più risorse ma alcuni punti controversi relativi principalmente al funzionamento a 3.3V e la limitata corrente a disposizione sui pin, che possono essere problemi o meno a seconda di quel che ci devi fare.

EDIT: Interessante la Meduino, Brunello! Più volte ho cercato qualcosa di simile ma non l'avevo mai trovata!

Grazie 1000 a tutti ... diciamo che il problema spazio in un modo o nell'altro è sicuramente risolto!

@Brunello: Non avevo idea ci fosse Mega2560 R3 Pro Mini... o meglio non lo avevo visto..., riguardo la rete ne ho una quasi uguale a quella!

@SukkoPera: Sicuramente so che son micro-controllori e le risorse son limitate ma è proprio come hai detto tu... mi son "fatto prendere la mano" perchè è un mondo che mi affascina ed è a me sconosciuto ma che oggi con gli arduino si incontra con il mio... dove però, nel mio, i limiti sono a dir poco infiniti anche se adoro ottimizzare e ... la fantasia galoppa.