Temat: Termometr przez usb <=> RS232 + RS232 pająk inside

Witam !
Mam nieuzywany konwerter (adapter) USB-RS232
http://obrazki.elektroda.net/45_1156326394.jpg

Czy dobrze myślę, że mógłbym stworzyć termometr podłączając konwerter do mr3420, do niego 'pająka'
we wtyczce pokazanego tutaj ?
http://eko.one.pl/?p=Termometr#monta

TP-LINK MR3420 + Huawei e169 (iPlus) + MiniSD 2GB
OpenWRT - Gargoyle PL inside

2

Odp: Termometr przez usb <=> RS232 + RS232 pająk inside

Fizycznie mógłbyś zrobić o ile masz tam linie DTR wykorzystywaną przez czujnik. Ponad to wcale nie jestem pewien czy digitemp wykorzysta interfejs szeregowy w ten sposób. Sprawdzić możesz.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Termometr przez usb <=> RS232 + RS232 pająk inside

Mam takiego pajączka jak tutaj
http://eko.one.pl/?p=Termometr#monta
zakupionego na allegro

Napotkałem na problem z odczytem temperatury.

root@OpenWrt:/# ls /dev/ttyU*
/dev/ttyUSB0
root@OpenWrt:/# digitemp_DS9097U -s /dev/ttyUSB0 -i
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Error 5: DS2480B Adapter Not Detected
Error 7: DS2480B: Bad Response
Error 7: DS2480B: Bad Response
Error 7: DS2480B: Bad Response
Error 7: DS2480B: Bad Response
Error 7: DS2480B: Bad Response
Error 7: DS2480B: Bad Response
Error 7: DS2480B: Bad Response
Error 7: DS2480B: Bad Response
Error 7: DS2480B: Bad Response

Przejściówka jest na 100% dobra. Ma ktoś pojęcie co może być nie tak ?

4

Odp: Termometr przez usb <=> RS232 + RS232 pająk inside

No nie jest dobra skoro nie może odczytać. Np. za długi kabel do czujnika lub za słabe napięcie zasilające.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: Termometr przez usb <=> RS232 + RS232 pająk inside

Może chodzi o takiego hacka ?
http://tech.akom.net/archives/60-Fixing … 32-24.html

6

Odp: Termometr przez usb <=> RS232 + RS232 pająk inside

Mam ten sam problem w mr3420 przejściówka jest OK i działa poprawnie pod windą. Proszę o podanie rozwiązanie z tego linku u góry nie  dałem rady rozwiazać tematu

7

Odp: Termometr przez usb <=> RS232 + RS232 pająk inside

Jeżeli używasz kabelka na usb i termometru na rs232c to najczęstszą przyczyną jest brak wysterowania linii DTR która zasila wspomniany układ. Musisz ją ustawić w stan wysoki, było to tu na forum. O ile to to jest przyczyną.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

8 (edytowany przez viper_lasser 2012-06-06 23:08:43)

Odp: Termometr przez usb <=> RS232 + RS232 pająk inside

@Cezary
Wg tego opisu
http://www.easysw.com/~mike/serial/serial.html
sprawdzenie kontroli przepływu danych jest realizowane poprzez

options.c_cflag |= CNEW_RTSCTS;    /* Also called CRTSCTS */

a wyłączenie poprzez

options.c_cflag &= ~CNEW_RTSCTS;

Narazie jestem w trakcie kompilacji innych źródeł i nie mam jak tego sprawdzić ale pytanie czy stan wysoki lini DTR zpowoduje flagi CNEW_RTSCTS na 1 czy 0 ?


Trochę poszukałem i wydaje mi się że znalazłem

http://www.linuxjournal.com/article/6908

int setDTR(unsigned short level)
{
     int status;

     if (ioctl(fd, TIOCMGET, &status) == -1) {
      perror("setDTR(): TIOCMGET");
      return 0;
     }
     if (level) status |= TIOCM_DTR;
     else status &= ~TIOCM_DTR;
     if (ioctl(fd, TIOCMSET, &status) == -1) {
      perror("setDTR: TIOCMSET");
      return 0;
     }
     return 1;
}

Trzeba DTR'a ustawić na 1 żeby zasilić pin do DS2480
czyli z wcześniejszego linka

http://tech.akom.net/archives/60-Fixing … 32-24.html

ta zmiana moim zdaniem na pewno spowoduje uaktywnienie stanu wysokiego na sygnał DTR
+   t.c_cflag &= ~(CSIZE|HUPCL|PARENB);
+   t.c_cflag |= (CRTSCTS|CLOCAL|CS8|CREAD);

9

Odp: Termometr przez usb <=> RS232 + RS232 pająk inside

I jak zadziałało?

10 (edytowany przez viper_lasser 2012-06-17 10:55:17)

Odp: Termometr przez usb <=> RS232 + RS232 pająk inside

Da się w jakiś sposób z poziomu basha wysterować pin DTR dla portu szeregowego ?

Zainstalowanie corutils-stty
i wydanie najpierw polecenia
stty crtscts < /dev/ttyUSB0

nic niestety nie zmienia

Chyba fizycznie niektóre przejściówki z usb / rs232 nie pozwalają na ustawienie stanu wysokiego na DTR.

11 (edytowany przez viper_lasser 2012-06-17 12:16:44)

Odp: Termometr przez usb <=> RS232 + RS232 pająk inside

Wg tej dokumentacji
http://www.faqs.org/docs/linux_network/ … ation.html

z ustawieniem DTR w stan wysoki chyba jednak powinno zrobić się coś takiego
stty -F /dev/ttyUSB0 hupcl lub stty-F /dev/ttyUSB0 clocal

ale narazie mój digitemp dalej z przejściówką usb nie działa (jedna na pl2303 a druga to jakiś chińczyk)

12

Odp: Termometr przez usb <=> RS232 + RS232 pająk inside

Przegrzebałem jednak źródła digitemp'a w pliku
userial/ds9097u/linuxlink.c w funkcji
OpenCOM widać wyraźnie że sygnał DTR jest ustawiany na stan wysoki

Widać to po wpisie
t.c_cflag |= (CLOCAL | CS8 | CREAD) gdzie wg w/w dokumentacji na DTR podawane jest napięcie.

13

Odp: Termometr przez usb <=> RS232 + RS232 pająk inside

Kupiłem inną przejsciówkę za 7zł i zadziałało. Wina przejściówli.