RS-485 jest ekonomicznym rozwiązaniem dla sieci komunikacji szeregowej. Może być używany z szybkościami transmisji danych 10 Mbit/s lub w odległości do 1200 m przy niższych prędkościach. RS-485 Shield jest standardową nakładką dla Raspberry Pi. Jest zintegrowana z prostym terminalem śrubowym oraz interfejsem DB9.
Kup Teraz |
Właściwości
- Jeden sterownik oraz jeden odbiornik na część
- Minimalizacja szumów EMI
- Szybkość transmisji do 2,5 Mb / s
- Brak ograniczenia szybkość narastania sterownika
- Ograniczony prąd zwarciowy
- Aplikacje odporne na awarie
Specyfikacje
Cecha | Wartość |
---|---|
Napięcie robocze | 3,3 V |
Interfejs | RS-485 DB9 Interfejs X1 RS-485 Interfejs śrubowy X1 2×13 Złącze żeńskie dla Raspberry X1 2×13 Dodatkowe złącze żeńskie X1 Interfejs Grove I2C X1 |
Szybkość transmisji danych | 2.5 Mbps |
Liczba odbiorników | 32 |
Zakres temperatury przechowywania |
od -65°C do 160℃ |
Liczba kanałów | 8 |
Rozdzielczość | 12-bitowa |
Zużycie energii | Różne zależnie od szybkości transmisji |
Wymiary | 62 x 39,2 x 21,8 mm |
Waga | 23 g |
Wymiary opakowania | 140 x 75 x 25 mm |
Waga brutto | 42 g |
Typowe zastosowania
- Nadajniki-odbiorniki RS-485 o niskim poborze mocy
- Konwertery poziomów
- Nadajniki-odbiorniki do zastosowań przemysłowych w sieciach wrażliwych na zakłócenia elektromagnetyczne
- Aplikacje półdupleksowe
Przegląd sprzętu
Rozkład wyprowadzeń
RS-485 DB9 Interfejs oraz RS-485 Interfejs śrubowy
Interfejs 485 wykorzystuje transmisję różnicową sygnału. Upewnij się, że port A jest podłączony do portu A urządzenia 485, a port B do portu B urządzenia 485.
485-A: Końcówkę A przewodu transmisji danych RS485, podłącz do pinu A chipu MAX485.
485-B: Końcówkę B przewodu transmisji danych RS485, podłącz do pinu B chipu MAX485.
GND: Podłącz do GND Raspberry Pi.
Jak możesz zauważyć, GPIO14 oraz GPIO15 wykorzystywane są do transmisji danych, a GPIO18 jako sygnał zezwolenia.
Definicję sygnałów logicznych można znaleźć w poniższej tabeli.
Złącze żeńskie dla Raspberry
Używamy żeńskiego złącza 2X13, aby podłączyć ten moduł do Raspberry Pi. Upewnij się, że piny są wyrównane.
Dodatkowe złącze żeńskie
RS-485 Shield zajmuje 26 pinów Raspberry Pi, a tylko 5 pinów GPIO jest rzeczywiście używanych. Wyprowadzamy te 26 pinów na wypadek, gdybyś potrzebował je do innych celów.
Lista używanych GPIO
Numer GPIO | Funkcja |
---|---|
GPIO02 | SDA dla portu Grove I2C. |
GPIO03 | SCL dla portu Grove I2C. |
GPIO14 | Podłącz do pinu DI chipu Max485 w celu transmisji danych. |
GPIO15 | Podłącz do pin RO chipu Max485 w celu transmisji danych. |
GPIO18 | Podłącz do pinów RE i DE chipu Max485, działa jako sygnał zezwolenia. |
Port Grove I2C
Zarezerwowaliśmy interfejs I2C, dzięki czemu można go łatwo używać z urządzeniami I2C. Należy zauważyć, że VCC tego portu wynosi 5V. Należy sprawdzić, czy moduł pracuje z napięciem 5V.
SCL: I2C zegara szeregowego, podłącz do GPIO03 Raspberry Pi.
SDA: I2C danych szeregowych, podłącz do GPIO02 Raspberry Pi.
VCC: Podłącz do pinu 5V Raspberry Pi .
GND: Podłącz do pinu GND Raspberry Pi.
Chip Max485
Do tej nakładki wykorzystano układ scalony MAX485ESA. Aby uzyskać więcej informacji na temat tego układu scalonego, sprawdź arkusz danych MAX485.
Jak zacząć
Sprzęt
Materiały wymagane
Raspberry Pi | RS-485 Shield dla Raspberry Pi |
---|---|
-
Krok 1. Podłącz RS-485 Shield do Raspberry Pi.
-
Krok 2. Podłącz 485-A do przewodu A 485, podłącz 485-B do przewodu B 485.
Uwaga Jeśli przewód jest zajęty, to komunikacja nie będzie możliwa. |
- Krok 3. Podłącz zasilanie do Raspberry Pi za pomocą kabla microUSB.
Oprogramowanie
Kod testu komunikacji
Możesz utworzyć nowy plik Pythona i skopiować następujący kod do nowego pliku lub możesz pobrać plik źródłowy w obszarze pobierania zasobów. Następnie uruchom go w swoim terminalu.
Kod wysyłania.
#!/usr/bin/env python import time import serial import os send_str = "*******rs485888888--rn" os.system("echo 18 > /sys/class/gpio/export") os.system("echo out > /sys/class/gpio/gpio18/direction") ser = serial.Serial(port='/dev/ttyAMA0',baudrate =10000000,bytesize=8,stopbits=1,timeout=1) last_time = time.time() now_time = time.time() os.system("echo 1 > /sys/class/gpio/gpio18/value") time.sleep(0.01) n = 800 while n>0: ser.write(send_str) n=n-1 # time.sleep(0.001) os.system("echo 0 > /sys/class/gpio/gpio18/value")
Kod odbioru
#!/usr/bin/env python import time import serial import os send_str = "********abcdefghijklmnopqrstuvwxyz&" os.system("echo 18 > /sys/class/gpio/export") os.system("echo out > /sys/class/gpio/gpio18/direction") ser = serial.Serial(port='/dev/ttyAMA0',baudrate =115200,bytesize=8,stopbits=1,timeout=1) last_time = time.time() while 1: now_time = time.time() if((now_time-last_time)>=1): last_time = now_time # print "172 sending" os.system("echo 1 > /sys/class/gpio/gpio18/value") time.sleep(0.01) ser.write(send_str) time.sleep(0.01) os.system("echo 0 > /sys/class/gpio/gpio18/value") os.system("echo 0 > /sys/class/gpio/gpio18/value") time.sleep(0.01) count = ser.inWaiting() if(count != 0): x=ser.readline() if "********" in x: # print "str length is: " + str(count) print x
Aby przetestować powyższy kod, potrzebujesz dwóch nakładek i dwóch Raspberry Pi lub możesz użyć narzędzia szeregowego na komputerze do komunikacji z Twoim Raspberry Pi.