Newsgroup: it.hobby.elettronica.digitale
Titolo: Controllo di un oggetto elettronico tramite Web, SNMP, seriale, ecc.

Avete presente i router dai più semplici (quelli con modem ADSL
che affittano con i contratti) ai più complessi (quelli usati
dalle aziende per gestire le LAN)? Questi possono essere in
genere configurati mediante varie possibilità:
- seriale, collegandosi alla porta CONSOLE e utilizzando hyperterminal
- telnet, quindi sfruttando il substrato TCP/IP
- web, tramite un normale browser e, anche qui, TCP/IP
- SNMP, un protocollo TCP/IP tipicamente usato per la configurazione
   di apparati di rete ma usato anche in altri prodotti.
Vorrei dotare alcuni miei progetti di questa flessibilità nella
configurazione. Cioé, oltre ad usare i famosi tasti e display (interfaccia
uomo-macchina locale) vorrei che si potesse controllare anche da
remoto utilizzando gli approcci elencati sopra.
Le difficoltà che incontrerei sono sostanzialmente due.
La prima è la necessità di utilizzare una CPU che "capisce Internet"...
cioé che gestisce una interfaccia di rete (Ethernet per esempio) e
mi fornisce tutto lo stack dei protocolli TCP/IP. Esistono un mare
di prodotti IP-embedded ma sono molto limitati. L'SNMP, per esempio,
è un protocollo complesso, soprattutto nella versione 3 che implementa
la cifratura e che io vorrei usare. Non può essere gestito da
processori semplici. E' per questo che ho sempre pensato ad usare
schede PC-based (processori Intel o simili) con cui avrei a disposizione
un bel sistema operativo (per esempio Linux) e tutte le applicazioni
che vorrei. Ma la spesa si fa elevata...
Oppure qualche bel micro potente a 32 bit su cui far girare Linux,
per esempio un AVR.
La seconda difficoltà sta nel gestire i vari parametri in lettura
scrittura. Il compito principale dell'appliance, come detto, non ha
niente a che fare con la rete. Diciamo che controlla un alimentatore:
accensione/spegnimento, assorbimento, tensione d'uscita, eventuali
allarmi. Ovviamente i parametri sono molti di più...
Il programma principale monitorizza continuamente i parametri
dell'alimentatore ed eventualmente processa i comandi (da remoto o
locale) per esempio di accensione/spegnimento.
D'altra parte devo fare in modo che questi parametri vengano letti
e scritti dalle varie interfacce (SNMP, web, ecc. ecc.).
Allora si aprono due scenari. L'applicazione principale, lo scopo
dell'oggetto (gestione dell'alimentatore) è comunque molto semplice
e potrebbe essere gestito da un semplice microcontrollore. Il
controllo, che è secondario ma molto più complesso da un punto di
vista computazionale, viene implementato in una scheda PC o con
una differente CPU coi contro-fiocchi. Come faccio per far comunicare
le due parti? Quando arriva la richiesta dati (l'utente digita
l'indirizzo IP nel suo browser) la CPU chiede al micro lo stato
e lo ritorna in una bella pagina web. E così quando l'utente clicca
sul tasto di accensione alimentatore nella pagina web, arriva la
richiesta alla CPU che la smista al micro e procede.
La difficoltà, qui, è tutta nell'interfaccia (hw e sw) tra CPU e
micro. Cosa succede se aggiungo un parametro da monitorare? Devo
modificare il software nella CPU e il software nel micro. Su
quest'ultimo non ci sono dubbi, ma il primo vorrei renderlo
indipendente... anche perché avrei diversi oggetti da remotizzare
e sarebbe più semplice tenere il programma sulla CPU generico.
L'altra soluzione è quella di implementare tutto il software,
il compito semplice della gestione dell'alimentatore e il controllo
remoto, in un'unica CPU potente, su cui gira un Linux, per esempio.
Allora qui il problema è tutto software (e magari potrei chiedere
sui gruppi di it.comp.os.linux...). Al solito, vorrei scrivere
un'applicazione dipendente dallo scopo del sistema (gestione
alimentatore) ed un'applicazione diversa e riutilizzabile che
gestisce il controllo remoto (web, SNMP, ecc. ecc.) Ma come fare
per far comunicare tra loro le due applicazioni? Io sono più
un elettronico e non un informatico e non so se mi possono essere
utili tecniche di multithreading e/o di IPC (Interprocess-communication).
Scusate la lunghezza del post ed anche la sua confusione. Se volete
maggiori info chiedete. In definitiva, cosa mi consigliate?

 ha scritto nel messaggio 
news:v437g.111692$A83.2...@twister1.libero.it...
[...]
hai provato a valutare i moduli rabbit ?
seriale + ethernet + pin i/o + flash + rtc.
Nessun tempo di boot.
Aggiornamento software tramite download manager seriale/ethernet/parallelo.
Librerie tcp-ip/udp/smnp/pop/smtp .... disponibili.
Nessuna royalty sullo stack.
Senza smanettare troppo di hardware e software realizzi la tua applicazione. 

 hai provato a valutare i moduli rabbit ?
[...]
Come dicevo nel mio post, ci sono una marea di soluzioni a basso costo
per gestire una connessione Ethertnet con tanto di TCP/IP... ma rimangono
dei palliativi che vanno bene solo fino ad un certo punto.
Prendiamo il caso Rabbit e iniziamo l'indagine proprio dallo stack
TCP/IP messo a disposizione senza royalties, ma a pagamento of course.
Il protocollo SNMP messo a disposizione è semplicemente la versione 1
che manca di parecchie caratteristiche interessanti, tra cui la
cifratura dei messaggi, presenti nella nuova versione 3, ormai standard.
E la cosa è plausibile perché i micro Rabbit sono comunque molto limitati
in termini computazionali e non riuscirebbero a gestire la complessità
degli algoritmi di cifratura.
Altra cosa è proprio l'ambiente di sviluppo con il compilatore C, che
loro chiamano Dynamic C. Ci ho lavorato poco ed ho visto lavorare altri
un po' di più e, sinceramente, non mi piace **affatto**. Prima di tutto
non è un C standard, il che mi infastidisce notevolmente!!
Soprattutto per il fatto che queste applicazioni non sono da 100 righe
di codice e dover buttare tutto il lavoro, dovendo passare ad altro
hw, non è per niente bello.
Per quanto riguarda l'hw, ho visto un paio d'anni fa (forse meno) un
modulo rabbit con connessione Ethernet. Che dire, funzionava una
meraviglia. Peccato che un piccolo web-server con qualche pagina web
con una grafica triste mi ha fatto esaurire lo spazio nella Flash!!
Figurati se ci aggiungo telnet, SNMP, ecc. ecc.
Sinceramente non so come sono messi ora con i nuovi moduli.
Il fatto è che la Flash a bordo è sicuramente una limitazione se
vuoi fare una decina di pagine web, almeno penso. E questa Flash non
è espandibile in alcun modo.
Sinceramente non mi convicono molto... li vedo troppo rigidi e
proprietari.
Ma questi modem ADSL che tipo di processori usano internamente? Io
ho uno Zyxel Prestige 660HW che ha un ottimo controllo via Web e
via Telnet e fa di tutto, potento configurare centinaia di parametri.
Come cavolo fanno? Eppure il prezzo è relativamente basso, non c'è
un processore Intel. Mi sa che qualcuno parlava di un Linux a
bordo, chissà su quale hw.

 non è un C standard, il che mi infastidisce notevolmente!!
[cut]
..se hai intorno ai 100 euro da spendere esistono schede con processore
on-board controller ide, usb, ethernet che ti permettono l'impossibile, la
vedo dura gestire un web server su micro, soprattutto perchè la memoria è
limitata..ci puoi far girare linux sopra e non hai problemi di memoria...si
chiamano "fireboard"..o roba del genere..in italia le produce la ACME..prova
carcare sul loro sito..
Saluti
Steno

 carcare sul loro sito..
Non ho detto che volevo far girare un web server + altre cosucce su un
micro da quattro soldi (anche se qualcuno lo fa, ma con scarsi risultati
e, comunque per cose mooooolto semplici). Esistono micro a 32 bit fatti
bene, come gli ARM, che dovrebbero garantirmi prestazioni molto simili
a quelle di un PC di qualche anno fa, con tanto di ambienti di sviluppo
open-source, sistema operativo, applicazioni, ecc. ecc. Non conosco, però,
molte schede di questo tipo.
La scheda di cui parli è la fox board. Anche questa l'ho già vista e
studiata tempo fa ed ho anche per questa delle perplessità.
Il costo è 129€ sul loro store on-line ed è quasi in linea con schede
PC/104. La fox-board ha una CPU evoluta della Axis chiamata ETRAX.
Questa CPU fa praticamente tutto, contiene una MMU e tutte le periferiche
quali USB, ATA, Ethernet, ecc. La Fox Board non è altro che quella
CPU con le piste che escono su connettori... non c'è praticamente
nient'altro.
 
http://www.acmesystems.it/download/fox_schematic.pdf
La RAM è saldata sul circuito ed è di 16MB, la Flash è di 4MB. Non c'è
possibilità di espanderla, anche se la CPU in sé lo permetterebbe.
Usando penne USB o hard-disk Flash con interfaccia ATAPI, forse si
può risolvere il problema della memoria di massa. Ma la RAM a 16MB?
Esiste la possibilità di compilare per la ETRAX mediante GCC (probabilmente
è necessario patcharlo, non so).
Questa scheda non è malaccio ma dato il costo e le limitazioni, perché
non passare ad una scheda PC con tanto di processore, RAM espandibile,
ecc. ecc.?