Pytanie:
Komunikacja szeregowa między arduino i RPI za pomocą pinów tx / rx
J.Down
2016-10-09 17:49:56 UTC
view on stackexchange narkive permalink

Obecnie pracuję nad projektem, w którym Arduino musi komunikować się z pi. Ponieważ pi wyczerpuje się porty USB, jestem zmuszony używać portów ux / tx na Arduino i pi.

Komunikacja między nimi polega na pisaniu i czytaniu z rostopii, co oznacza, że ​​rosserial ustanawia komunikację szeregową.

Testowałem to tylko przy użyciu USB i między komputerem a arduino, co działa dobrze, ale nie testowałem tych pinów i nie jestem pewien co do kilku rzeczy.

Czy muszę używać określonych pinów? Czy powinny być skonfigurowane do komunikacji szeregowej? w takim razie jak?

Myślę, że potrzebowałbym konwertera poziomów logiki. Powinien być łatwo wykonany za pomocą dzielnika napięcia. Ale czy oba powinny mieć oddzielne, czy wystarczy tylko jeden?

Cześć i witaj. Sprawdź te http://raspberrypi.stackexchange.com/questions/553/gpio-uart-to-arduino-communication i http://raspberrypi.stackexchange.com/questions/26219/arduino-to-rpi-serial-communication to wpadnij na pierwszy pomysł.
Dwa odpowiedzi:
goldilocks
2016-10-28 11:38:18 UTC
view on stackexchange narkive permalink

I guess i would need a logic level converter

Yes. I don't think there is any arrangement of voltage divider you can use for the Pi's TX -> Arduino RX. So you need at least a 2 channel shifter that's either bidirectional or has a channel going each way.

I use a shifter like the one shown and described here. Although that's a question about "Arduino devices" I mostly do it directly with the Arduino itself.

The relationship is very reliable at the Arduino's max baud rate (115200) in my experience. The thing you have to watch out for is state management -- you should have a means of resetting the Arduino to a predictable state. This is usually pretty easy as it would be hard to create a situation where simply pushing "reset" doesn't work, since even if the content of information sent at that point is unknown, the format should not be (e.g., a set of 3 2-byte unsigned integers constitutes one message or whatever).

If you need to do that remotely you can connect a GPIO to the Arduino's reset pin then you just need to pull it low momentarily and leave it high for normal operation. This also needs to pass through the level shifter, so if you think you want that you need at least 3 channels. The four channel ones are very common and cheap anyway.

Dziękuję za to. Moim następnym przystankiem, gdy Arduinos porozmawiają ze sobą, jest włączenie Rpi3. Mogę jeszcze używać do tego I2C, teraz, gdy @Joan zaktualizował pakiet gpgio, aby go uwzględnić. Jestem nowy w tym wszystkim, ale jestem pewien, że mogę sprawić, że wszystko będzie działać, gdy poznam ich parametry.
Chad G
2018-02-03 03:56:37 UTC
view on stackexchange narkive permalink

Nie powinieneś zmieniać wartości RPI Tx ---> Arduino RX Arduino będzie w stanie odczytać logikę 3,3 V wytwarzaną przez pi, więc możesz użyć prostego dzielnika napięcia do przesunięcia Arduino TX ---> RPI RX

RPI3 ma inną konfigurację dla UART, w rzeczywistości są 2, których można użyć (nie w tym samym czasie) Jeden jest zawsze powiązany z urządzeniem Bluetooth (myślę). lepszy (bardziej stabilny) z dwóch jest używany do bluetooth, a drugi jest podłączony do pinów UART w GPIO. Więc spójrz na to. Jeśli wymienisz katalog / dev, zobaczysz połączone urządzenie w Serial1 (co zawsze będzie wskazywać na aktualnie używany UART). Ale jeśli masz jakiekolwiek problemy z wydajnością, możesz przełączyć, który wewnętrzny UART jest powiązany z GPIO

Tutaj jest trochę lektury na temat UARTS na pi



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...