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

CechaWartość
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 GPIOFunkcja
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 PiRS-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.

 

zapraszamy do współpracy!