Come interfacciarsi da windows su periferica in I2C?

Ho acquistato un Klima Logger TFA

formatting link
che registra fino a 999 letture di temperatura/umidit=E0 interna + un massimo di 5 sensori esterni sempre temperatura e umidit=E0. Tramite un programma windows permette di leggere questi dati. Io vorrei preferibilmente tramite un programma fatto in c++ (o qualunque altro compilatore), la possibilit=E0 di leggere i dati (a dire il vero mi interessa solo la lettura real-time). Cercando a destra e manca sembra che il prodottino comunichi con la seriale tramite I2C Ho trovato questa interessante paginetta
formatting link
di un personaggio che vuole farsi in linux un qualcosa per leggere i dati, ma ci capisco poco di quello che scrive....

Con PortMon ho provato a spiare la seriale... ma si capisce poco di quello che succede.

Conoscete una libreria c++ che faccia al mio caso? Conoscete un programmino windows che permette di comunicare tramite I2C con qualunque periferica?

Suggerimenti?

Reply to
cestino
Loading thread data ...

cestino wrote in news:c90cbae1-f890-48c7-9fa6- snipped-for-privacy@e1g2000yqh.googlegroups.com:

Non ho capito bene se sul PC hai un'interfaccia I2C oppure se la vorresti emulare sulla seriale standard.

Ciao, AleX

Reply to
AleX

La voglio emulare con la seriale standard in modo da leggere i dati da un'apparecchiatura con la i2c. Grazie

Reply to
cestino

cestino in data Wednesday 24 February 2010 22:28, nel gruppo it.hobby.elettronica ha scritto:

Personalmente non credo che una porta seriale, per come é fatto il livello di tensioni, possa interfacciarsi direttamente con un bus i2c. Con tutta probabilitá, il progetto a cui ti riferisci nel primo post, fa capo ad un circuito di interfaccia hardware. Circa una decina di anni fa, creai un programma in qbasic col vecchio dos, per interfacciarmi (in lettura e scrittura) con una x24c16 e con una mk41t56, usando la porta parallela. Ma anche in quel caso, una interfaccia con 3 transistor, la dovetti mettere!

--
+---------------------------------------------------------------------------+
| Da una E-Mail:                                                            |
| La sig.ra MICHELA è assediata da un cliente per un'urgente commessa che   |
| prevede la rettifica interna                                              |
+-----#18--------------------Campagna contro le pubblicita` idiote.---------+
Reply to
BIG (Umberto)

Conscio delle conseguenze, "BIG (Umberto)" un bel dì scrisse:

Beh il JDM ne è un esempio... Almeno per la sola lettura.

Io sono riuscito con 2 diodi e due resistenze!

--
Breakthrough: It nearly booted on the first try.
News 2002 [v 2.4] - [ StopDialers/PopDuster/SMTP Proxy -
http://www.socket2000.com ]
Reply to
Due di Picche

Il 24/02/2010 22:28, cestino ha scritto:

Dai un'occhiata al programma ICPROG o, meglio, a PonyProg. Sicuramente dovrebbero esserti di aiuto... anche se non so se e quanto la cosa sara' semplice. ciao Angelo

Reply to
Angelo_Pisa

cestino ha scritto:

difficile usare la RS232 per comunicare in I2C, a parte il fatto c'è una seriale asincrona, e questo si potrebbe superare (forse), ma come livelli e tipo di out penso di no (i2c=0-5V 232=-10/+5V, i2c=open coll. 232=p.pull) ti conviene farti un adattatore oppure cercare di usare la porta parallela. emi

Reply to
emilio

cestino wrote in news: snipped-for-privacy@33g2000yqj.googlegroups.com:

IMHO forse ti conviene un approccio un po' diverso, esempio questo:

formatting link
i2c.htm

Comunque se vuoi proseguire con l'approccio via rs232, considera che le seriali standard non sono poi così più tanto "standard" da quando le hanno integrate nel chipset.

Mi è capitato che sw nati per usare in modo "improprio" le seriali (nello specifico, protocollo AX25), oggi non funzionino più.

"Improprio" significa che i dati non viaggiano su RD e TD, ma sui segnali di controllo (e il programma che ti interessa farebbe proprio così).

In ogni caso ti occorre, come ti è stato detto, almeno l'adeguamento dei livelli.

Guarda anche questo thread:

formatting link
(Peccato che non rende disponibile il codice)

E soprattutto qui:

formatting link

/QUOTE ON PC-therm software emulates the I2C-bus wires driving two pins of the COM port available in all motherboards. The SCL wire is implemented driving the RTS signal (Request To Send, pin

7), while the SDA wire uses the wire originally designed for serial port's DTR (Data Terminal Ready, pin 4). These signals are accessible from Visual Basic setting the DTR and RTS properties in the MsComm object. You can't connect COM port signal to the DS1621 directly, as the voltage levels need to be adapted. As required by EIA-RS232 standards, most PCs output voltages as high as +15Vdc and as low as -15Vdc on their COM port connectors, so we must limit them to the more confortable 0 to +5Vdc level before connecting to DS1621 SDA and SCL pins. A 5.1V zener diode and 4700 ohm limiting resistor are sufficient for this purpose. If you look the schematic closely, you'll notice that the SDA pin connects also to the CTS pin (Clear To Send, pin 8). This way PC-therm software can monitor SDA logic level to read chip responses, making this wire bidirectional. Although theoretically serial ports require a negative swing of the inputs, signals in the range 0...5Vdc work equally well on practically every PC on earth. /QUOTE OFF

valuta bene quel "practically" davanti a "every PC on earth" Il sig.Murphy è sempre lì dietro l'angolo ;-)

Ciao, AleX

Reply to
AleX

llo di

Il prodottino che ho acquistato, contiene un software windows che tramite seriale legge i dati e funziona correttamente, quindi il modo c'=E8. Purtroppo quel software NON legge i dati in real-time ma legge sempre e solo l'intero DB dei dati (quindi impiega parecchio tempo) ed =E8 per questo che volevo provare a fare io qualcosa in modo da poter sapere dal computer temperatura ed umidit=E0 interna ed esterna... se il software in dotazione fosse pi=F9 veloce sarebbe sufficiente fa eseguire quello e leggere il file di testo che genera, ma purtroppo non =E8 una strada percorribile.

re!

Forse c'=E8 gi=E0 qualcosa nell'aggegino visto che il loro programma funziona....

Grazie comunque del tuo tempo

Reply to
cestino

Grazie, gli dar=F2 sicuramente un'occhiata.

Reply to
cestino

Come dicevo sopra il loro software tramite seriale funziona, quindi un sistema ci deve essere senza aggiungere nulla di HW

Grazie comunque del tuo tempo

Reply to
cestino

Seguo quella via perch=E8 il loro programma funziona sulla seriale ed il cavetto in dotazione =E8 seriale, quindi perch=E8 "cercare rogne"?

i

Penso ci sia gi=E0 l'apposita elettronica nell'affarino... altrimenti da quello che dite non funzionerebbe nemmeno il loro programma....

Ottimi. Ci dar=F2 un'occhiata con calma da casa

he he he he he

Grazie per il tuo tempo

Reply to
cestino

"cestino" ha scritto nel messaggio news: snipped-for-privacy@e1g2000yqh.googlegroups.com... Ho acquistato un Klima Logger TFA

formatting link
che registra fino a 999 letture di temperatura/umidità interna + un massimo di 5 sensori esterni sempre temperatura e umidità. Tramite un programma windows permette di leggere questi dati. Io vorrei preferibilmente tramite un programma fatto in c++ (o qualunque altro compilatore), la possibilità di leggere i dati (a dire il vero mi interessa solo la lettura real-time). Cercando a destra e manca sembra che il prodottino comunichi con la seriale tramite I2C Ho trovato questa interessante paginetta
formatting link
di un personaggio che vuole farsi in linux un qualcosa per leggere i dati, ma ci capisco poco di quello che scrive....

Con PortMon ho provato a spiare la seriale... ma si capisce poco di quello che succede.

Conoscete una libreria c++ che faccia al mio caso? Conoscete un programmino windows che permette di comunicare tramite I2C con qualunque periferica?

Suggerimenti?

Se non ricordo male in rs232 c'e' un rxd e un txd mentre il "Data" dell'I2CBUS e' bidirezionale: ci leggi e scrivi.

ciao giorgio

Reply to
Giorgio Padoan

Come ho detto sopra, a corredo dell'aggegio c'=E8 un cavetto seriale ed un programma in windows che funziona correttamente, quindi sull'hw non c'=E8 nulla da fare. la cosa funziona. Il problema =E8 capire tramite SW come interfacciarsi.

Grazie del tuo tempo

Reply to
cestino

Il 25/02/2010 10:18, cestino ha scritto:

A questo punto, avendo gia' l'interfaccia Rs232, perche' cercare i dati in I2c? A mio avviso, potresti provare a sniffare l' uscita Rs232 tramite un programma di terminale per vedere se anche "a occhio" e' possibile risalire ai dati di interesse. Se puo' interessarti, quando ho bisogno di ricevere dati in seriale, dei quali non conosco baud rate e eventuale codifica/protocollo, mi sono trovato bene con Realterm (free), che permette di variare molti parametri con un solo click, in maniera da avere immediatamente a video il risultato dei cambiamenti effettuati e decidere di conseguenza della validita' della modifica effettuata. Inoltre, qualora tu ne avessi comunque bisogno, lo stesso programma permette anche la ricezione dell'I2c tramite una piccola interfaccia.

ciao Angelo

Reply to
Angelo_Pisa

"cestino" ha scritto nel messaggio news: snipped-for-privacy@v25g2000yqk.googlegroups.com...

Come ho detto sopra, a corredo dell'aggegio c'è un cavetto seriale ed un programma in windows che funziona correttamente, quindi sull'hw non c'è nulla da fare. la cosa funziona. Il problema è capire tramite SW come interfacciarsi.

Grazie del tuo tempo

Sei sicuro che nell'aggeggio dove arriva il seriale non ci sia dell'hardware d'interfaccia?

giorgio

Reply to
Giorgio Padoan

Gi=E0 fatto con PortMon :-) Non si vede una mazza... Dopo la connessione passa una fila di U (credo sia una specie di protezione) e poi stop... non si vede pi=F9 un'H, se non una serie di pacchetti di una certa denominazione (che non ricordo ora) ma nella colonna dati non passa nulla o almeno non visualizza nulla. Per questo penso sia indispendabile passare per I2C. Se non serve meglio... ma come fare a capirlo?

Si l'ho visto e provato anche quello... ma non ci capisco molto (di come trasmette l'affare)... Come faccio ad esempio a sapere il numero dell'apparecchiatura I2C? Quando clicco READ mi spara una sequenza di numeri, ma non ritorna nulla. Penso che finch=E8 non riceve quella fila di U l'affare non faccia nulla.... e quindi come mandare tutti sti U?

Pensavo fosse una sciocchezza ciucciare quei dati via seriale, invece si =E8 rivelata una cosa molto complicata....

Altre idee? Grazie

Reply to
cestino

Non so cosa ci sia :-/ so solo che attacco la seriale e il loro programmino funziona, quindi se ci riescono loro ci devo riuscire anch'io.

Reply to
cestino

cestino ha scritto:

ti posso assicurare una sola cosa, ch'è inconfutabile: con un software potrai modificare un protocollo , ma non potrai mai modificare dell' hardware.....quindi una RS232 non potrà MAI comandare una I2C (senza un adattatore hardware). se non ci credi, cerca dei documenti sul funzionamento di un I2C e leggilo.......ti sarà molto utile. per il resto fai come credi. grazie per il grazie

Reply to
emilio

@emilio

Scusa, non per essere scortese, non =E8 mia abitudine, ma l'ho detto da

10 parti in questo post. Ti ringrazio per il tuo tempo, ma dovresti leggere anche gli altri post altrimenti rischi di dare risposte inutili. Non metto in dubbio che quello che dici sia vero, ma ho gi=E0 spiegato diverse volte che ho un programma (fornito da loro) che tramite un cavetto RS232 (sempre fornito da loro) legge correttamente tutti i dati di quell'apparecchiatura. Se serve dell'hardware esiste gi=E0 nello scatolozzo ed io non me ne devo interessare. Visto che il loro programma tramite seriale FUNZIONA un sistema ci deve essere, se poi io non sono in grado di emularlo, quella =E8 solo MIA incompetenza, ma l'HW non centra un bel niente.

Grazie

Reply to
cestino

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.