Nowe posty

Autor Wątek: obsługa USB / RS232  (Przeczytany 1906 razy)

jaro~123

  • Gość
obsługa USB / RS232
« dnia: 2016-06-09, 07:39:47 »
Witam wszystkich,
chcę ze starego laptopa zrobić timer strzelecki. Mam mikrofon (moduł z arduino) na którego wyjściu w stanie jałowym (normalnym) jest stan H (5v) (mikrofon reaguje na odpowiednio wysokie poziom hałasu (regulowany potencjometrem) i wówczas na wyjściu ustawia stan L). Chciał bym go wykorzystać i napisać skrypt w bashu, który by rejestrował pojawienie się przejścia ze stanu H na L zapisując do pliku datę, godzinę, minuty, sekundy i ułamki sekund. Do czynienia z bashem już kiedyś miałem, ale nigdy nie obsługiwałem portów. Moje pytanie jest więc takie czy da się wykorzystać USB? jeśli tak to jak odczytać z portu zmianę ze stanu H na L. Jeśli USB odpada to jak odczytać zmianę stanu z RS232?

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2765
  • 1709
    • Zobacz profil
Odp: obsługa USB / RS232
« Odpowiedź #1 dnia: 2016-06-09, 09:52:03 »
Wykorzystując przykładowo  https://www.dx.com/p/ft232-usb-to-serial-breakout-board-black-silver-161170#.V1kfVBzchZV
Cytuj
Po podłączeniu złącza MAX232 uruchamiamy Putty i konfigurujemy połączenie przez port COM, pod którym znajduje się nasz kabelek wpisując najczęściej wykorzystywane z urządzeniem dane, tj.

Prędkość: 115200
Bity danych: 8
Bit stopu: 1
Parzystość: brak
Kontrola przepływu: brak

Otwieramy połączenie i uruchamiamy urządzenie.
Więc podobno można ...  ale ja się nigdy w to nie bawiłem.  (zamiast putty pewnie by szło przez ssh)
http://forum.sfar.pl/index.php?topic=168.0

Jeszcze coś znalazłem, ale to bardziej przypomina oprogramowanie arduino
https://www.youtube.com/watch?v=Vawhrr4COjI
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

jaro~123

  • Gość
Odp: obsługa USB / RS232
« Odpowiedź #2 dnia: 2016-06-09, 11:35:20 »
w takim razie muszę się ograniczyć do rs232. Nie wiem jak mikrofon bezie się spisywał w tej roli, więc nie będę brnął w dodatkowe koszty. W związku z tym czy, ktoś z forumowiczów mógł mnie oświecić w jaki sposób wykryć na złączu RS232 zmianę stanu logicznego z H na L?

Offline Heng

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 15
    • Zobacz profil
Odp: obsługa USB / RS232
« Odpowiedź #3 dnia: 2016-06-09, 15:04:43 »
na rs232   nie ma  +5v
 Specyfikacja napięcia definiuje "1" logiczną jako napięcie -3 V do -15 V, zaś "0" to napięcie +3 V do +15 V

można to zrobić na wiele sposobów...
 jeśli chcesz zostać na rs232 to proponuje konwerter rs232<>ttl  (i masz żądaną logikę 5v)
jeśli chcesz USB to proponuje konwerter FT232RL (poszukaj na aukcjach gotowego modułu za parę zloty)
W systemie pokaże ci się jako port szeregowy COMx

ps. do wykrywania tak szybkich zmian i zliczanie tego  rs jak i usb nie jest najlepszym wyborem, to porty do komunikacji
nie lepiej na arduino napisać cala detekcje sygnału Zliczać czas i tylko wysyłać przez rs232(lub usb ) wyniku do kompa ?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3056
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Odp: obsługa USB / RS232
« Odpowiedź #4 dnia: 2016-06-10, 10:10:24 »
na rs232   nie ma  +5v
 Specyfikacja napięcia definiuje "1" logiczną jako napięcie -3 V do -15 V, zaś "0" to napięcie +3 V do +15 V

Formalnie nie ma logiki 0/+5V, ale w praktyce, żeby ułatwić ludziom życie:
* często "0" w odbiornikach ma standardowy zakres 3V...15V, ale dla wygody "1" na odbiornikach ma asymetryczny zakres -15V...0V
* często nadajniki mają podbity zakres -15V...-5V i 5V...15V, żeby skompensować straty na kablach.

Dzięki temu można podpiąć TTL-a 5V i 3.3V do wejścia RS-232 i jest to traktowane jako wejście inwertowane. Można to wykorzystać do generacji przerwań z linii DSR/CTS, ale to dość ciężkie do obsłużenia.

Najprostszym rozwiązaniem byłoby użycie konwertera TTL/USB, np chipu z rodziny FTDI FT240x, ale (jak już kolega Heng napisał) USB ani COM nie nadaje się do pomiaru krótkich odcinków czasu. Najlepszym rozwiązaniem byłby pomiar czasu w zewnętrznym urządzeniu (nawet prosty mikrokontroler z softową implementacją USB) i odesłanie zmierzonego odcinka po USB jako gotowej danej.
« Ostatnia zmiana: 2016-06-10, 10:13:06 wysłana przez Paweł Kraszewski »
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

jaro~123

  • Gość
Odp: obsługa USB / RS232
« Odpowiedź #5 dnia: 2016-06-11, 06:54:04 »
Wczoraj miałem trochę czasu więc postanowiłem powalczyć z USB (na arduino jest UART) w sumie udało się wysyłać i odbierać informacje z/do arduino lecz z małymi problemami. Co ciekawe żeby móc wysyłać informację z konsoli do arduino najpierw muszę użyć chociaż raz wywołać funkcję nasłuchiwania : tail -f /dev/ttyACM0  która odbiera informacje od ardduino. Do piero po tym poleceniu arduino grzecznie odbiera to co wysyłam z konsoli poleceniem : echo "cośtam" > /dev/ttyACM0. Za nim przystąpię do przesyłania funkcjami tail i echo konfiguruję stty w taki sposób: stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts . Problem został rozwiązany choć mam teraz problem z przetwarzaniem odebranych danych, ale to jeż temat na inny wątek. Ciekawi mnie tylko czemu najpierw muszę wywołać tail zanim będę mógł wysyłać informację przez echo.