Scelta Arduino in base al software caricato

Buongiorno a tutti,
devo iniziare a sviluppare un nuovo progetto con Arduino e avrei bisogno di una mano per decidere quale board scegliere.

Se prendiamo in considerazione la memoria (Flash Memory) possiamo dividere le varie boards in 3 categorie:

16K: Arduino Pro Mini, ecc.

32k: Arduino Uno, Arduino Mini, ecc.

256k: Arduino Mega 2560, ecc.

Da qui il mio problema, vorrei evitare di prendere qualcosa di sovrastimato come la Mega (che ha anche dimensioni notevolmente più grandi di una mini), o di troppo piccolo come una Pro Mini e poi non poterla usare.

Comunque sia quello che serve a me è sostanzialmente un piccolo web server che se interrogato risponda con lo stato degli Input ed eventualmente imposti un output, appoggiandomi alla libreria "Ethernet" e monitorare questi stessi input tramite il protocollo I2C appoggiandomi alla libreria "Wire", più altre piccole funzionalità che al momento sono ancora da valutare.

Il mio problema nasce dal fatto che non ho idea di quanto possano pesare le varie librerie (Ethernet e Wire) e quindi quanto spazio rimarrebbe per il resto del mio codice, qualcuno sa darmi queste informazioni?

Premetto che ho cercato (magari sbagliando cosa cercare) senza alcun risultato in internet o qui sul forum, ma non ho trovato nulla in merito.

Grazie in anticipo a tutti

Secondo me devi tenere anche conto del totale di I/O che ti servono, sapendo che le ethernet shield hanno le loro necessità in tal senso.
Poi, non l'ho mai fatto, ma una UNO come webserver è abbastanza limitata. Dipende molto da quante connessioni HTTP dovrà sopportare, da quanti dati dovrai visualizzare ...

shake84:
16K: Arduino Pro Mini, ecc.

32k: Arduino Uno, Arduino Mini, ecc.

256k: Arduino Mega 2560, ecc.

Le varie mini/micro con ATmega 168 e 16k di flash non credo esistano più, ormai sono tutte con Atmega 328 o ATmega 32u.
Per la tua applicazione, compatibilmente con i GPIO che ti occorrono, sicuramente la scelta ottimale è Arduino Yun, nessun Arduino dotato di shield Ethernet/WiFi può reggere il confronto.

astrobeed:
Le varie mini/micro con ATmega 168 e 16k di flash non credo esistano più, ormai sono tutte con Atmega 328 o ATmega 32u.
Per la tua applicazione, compatibilmente con i GPIO che ti occorrono, sicuramente la scelta ottimale è Arduino Yun, nessun Arduino dotato di shield Ethernet/WiFi può reggere il confronto.

Ciao Astrobeed, innanzitutto grazie per la risposta.
Per quanto riguarda il 16K di flash memory l'avevo preso da questa tabella se mi dici che le nuove boards non usano più quei microcontrollori tanto meglio.

Da quello che ho visto arduino YUN è l'integrazione tra una board Linux con un Arduino Leonardo, ripiegando su questa soluzione potrei risolvere il problema della gestione del web server attraverso un interfaccia ethernet (il wifi non mi interessa) perchè demandata alla parte linux.
Potrei concordare che nessun'altra board Arduino possa reggere il confronto con questa, tuttavia si tratta di qualcosa di diverso e per questo strato del mio progetto preferirei non ricorrere a qualcosa che preveda anche l'utilizzo di linux.

Inoltre mi rimarrebbe il problema di sapere quanto potrebbe pesare l'altra libreria che mi servirebbe (Wire)

Guardando i vari progetti già fatti con arduino ne ho trovati diversi molto più complessi di quello che vorrei realizzare io utilizzando una Mega e utilizzare quindi una YUN credo possa essere eccessivo.

Per quanto riguarda quello che ha chiesto Brado, le connessioni HTTP sarebbero davvero poche (almeno le reputo tali), verrebbero fatte da 1 solo client (mal che vada e solo in fase di test potrebbero essere 2) ogni X secondi trasportando di volta in volta poche centinaia di byte (lo stato stato degli input o su una struttura json o nel caso sia troppo onerosa solo una sequenza di 0/1)

Secondo me dovresti tener conto anche di questi

328 SRAM 2 KB
2560 SRAM 8 KB
SAM3X8E SRAM 96 KB

questo da considerarsi in base a quello che fa il programma e non quanto è grande

pablos:
questo da considerarsi in base a quello che fa il programma e non quanto è grande

Esatto, sopratutto se vuole gestire la connessione lan da Arduino e non tramite la parte Linux della Yun, nel primo caso la cosa è molto pesante sia come impegno di tempo cpu che come impegno ram.

Vi ringrazio per i consigli, effettivamente il programma oltre ad essere memorizzato deve anche essere in grado di girare senza bloccare tutto :stuck_out_tongue_closed_eyes:

Comunque il mio problema rimane lo stesso, non ho un metro di paragone in quanto non so quanto sia il consumo medio delle librerie più comuni. Se possibile mi sapete fare qualche esempio?

Se creo uno script che utilizza le librerie Ethernet e Wire caricandolo su un Arduino UNO (al momento potrei farmi prestare quello), senza avere il resto dell'hardware (EthernetShield, I/O Expander, ecc..) solo per vedere qual'è lo spazio occupato faccio qualche casino e rischio di rovinare la board oppure non succede nulla.

Ps.
Anzichè la gestione di chiamate su HTTP, in un altro post ho visto che consigliavano di usare delle socket come ad esempio questo risparmiando così risorse. Se si tratta di ottenere benefici in termini di prestazioni proverò a seguire questa strada. Ho frainteso il significato di quella discussione oppure ho capito bene?

shake84:
Se creo uno script che utilizza le librerie Ethernet e Wire caricandolo su un Arduino UNO (al momento potrei farmi prestare quello), senza avere il resto dell'hardware (EthernetShield, I/O Expander, ecc..) solo per vedere qual'è lo spazio occupato faccio qualche casino e rischio di rovinare la board oppure non succede nulla.

Non succede nulla e perdi tempo, sicuramente lo compila, ma solo quando c'è lo shield che riceve dati il programma inizierà a lavorare.

Comunque ti suggerisco un 2560, poi le idee maturano e si aggiunge sempre qualcosa fino a quando nemmeno quello ti soddisfa più :slight_smile:

Ok grazie mille a tutti per le info :wink: