Podwójny interfejs Ethernet dla RPi

Podwójny interfejs Ethernet dla RPi

Podwójny interfejs Ethernet przyda się w aplikacjach, które monitorują i muszą mieć wpływ na ruch sieciowy np. w systemie automatyki domowej, firewallu lub blokerze reklam na stronach www. Zaprezentowane rozwiązanie odznacza się względnie niskim kosztem elementów, a jednocześnie znacznie większą przepustowością od rozwiązań bazujących na ENC28J60. Dzięki zastosowaniu typowych układów kontrolerów sieciowych obsługiwanych przez system Linux i Windows nie wymaga żadnych nakładów programistycznych do zapewnienia działania sprzętu.

Podstawowe parametry:
  • podwójny interfejs Ethernet,
  • zawiera typowe układy kontrolerów sieciowych RTL8152B obsługiwanych przez system Linux i Windows,
  • komunikacja poprzez port USB.

Moduł jest zgodny z Raspberry Pi+ (HAT 40 PIN) i mechanicznie ma rozmiary Pi 3A+. Jednak nic nie stoi na przeszkodzie, aby stosować go także z innymi SBC wyposażonymi w port USB.

Budowa i działanie

Schemat układu został pokazany na rysunku 1. Najważniejszym elementem jest układ dwuportowego huba USB typu USB2412 (U4). Hub podłączany jest do Raspberry poprzez złącze USB typu micro USB lub USBA typu SIP5. Układ skonfigurowany jest do pracy z urządzeniami USB nieodłączalnymi (non-removable), co określone jest stanem wysokim wyprowadzeń NR0/NR1. Może być zasilany z magistrali USB (tryb Bus Powered) lub napięcia 5 V z GPIO Raspberry (tryb Self Powered). Należy zwrócić uwagę na wydajność portu USB, gdyż pobór prądu może wynosić do 500 mA, polecam więc zasilanie 5 V z GPIO Raspberry. Źródło zasilania wybierane jest wlutowaniem odpowiednio rezystora R13 (Bus) lub R14 (Self).

Rysunek 1. Schemat ideowy układu

Napięcia 3,3 V niezbędnego do zasilania U4 dostarcza układ U3 typu MCP1700-3.3. Prawidłowy reset po włączeniu zasilania zapewnia układ U5 typu MCP100T-3.15. Do wyprowadzenia VBUS U4-18 doprowadzone jest napięcie informujące o detekcji USB. W przypadku trybu Bus-Power wlutowany musi być rezystor R20, który razem z R19 tworzy dzielnik napięcia VBUS z portu Upstream. W trybie Self-Power oraz gdy moduł nie będzie rozłączany z Raspberry, wlutowany jest rezystor R21 łączący wyprowadzenie VBUS do napięcia 3,3 V.

Układ U4 taktowany jest rezonatorem kwarcowym XT3 o częstotliwości 24 MHz. Do portów downstream podłączone są dwa identyczne konwertery USB/Ethernet U1, U2 typu RTL8152B (QFN24). Są one dosyć popularne w niewielkich kartach sieciowych USB oraz w komputerkach Linux/Android np. NanoPi R1. Układ RTL8152B wyróżnia się prostą aplikacją, niezawodnym działaniem i dostępnością sterowników dla różnych systemów operacyjnych. W ilościach jednostkowych dostępny jest w serwisach aukcyjnych.

Wbudowane w złącza ETH1, ETH2 diody LED sygnalizują stan interfejsu (Link + Activity). Układ uzupełniają dwie pamięci szeregowe I2C U6, U7, przechowujące na ostatnich sześciu bajtach adres MAC w formacie EUI48. Nakładkę uzupełniają dwa złącza wyprowadzające magistralę I2C, typu JST 2 mm i 1 mm.

Montaż i uruchomienie

Moduł zmontowany jest na dwustronnej płytce drukowanej, której schemat został pokazany na rysunku 2. Sposób montażu jest klasyczny i nie wymaga opisu. Zmontowany moduł od strony bottom pokazuje fotografia 1.

Rysunek 2. Schemat płytki PCB
Fotografia 1. Zmontowany moduł widoczny od strony bottom

Prawidłowo zmontowany moduł nie wymaga uruchamiania. Domyślnie moduł przeznaczony jest do zasilania z Raspberry i powinien mieć wlutowane rezystory R14, R21 (nie lutować R13, R20). Po uruchomieniu systemu i sprawdzeniu poleceniem lsusb powinien być widoczny hub (ID 0424:2412) i oba konwertery RTL8152B (ID 0BDA:8152), tak jak pokazano na rysunku 3. Kolejno sprawdzamy poleceniem i2cdetect -y 1 obecność pamięci EEPROM na magistrali I2C (rysunek 4).

Rysunek 3. Sprawdzenie urządzeń USB
Rysunek 4. Sprawdzenie magistrali I2C
Rysunek 5. Odczyt zawartości EUI-48 z pamięci EEPROM

Zawartość EUI-48 pamięci można odczytać skryptem dualmac.py, którego treść pokazuje listing 1.

Listing 1. Skrypt dualmac.py

import smbus
print "\n24AA02E64 Dual MAC Dump\n"
# Get I2C bus
bus = smbus.SMBus(1)
# 24AA02E64 0x52+0x53 read last (0xF8 offset) 8-bytes MAC ROM
macblock = bus.read_i2c_block_data(0x52, 0xF8, 0x08)
print"MAC (hex): "
print([‘{:02x}’.format(x) for x in macblock])
macblock = bus.read_i2c_block_data(0x53, 0xF8, 0x08)
print"MAC (hex): "
print([‘{:02x}’.format(x) for x in macblock])
bus.close()
print "\nQuit\n"

Wynik działania skryptu jest widoczny na rysunku 5, (część adresu jest celowo zamazana). Dolna część pamięci 0x00...0x7F może zostać wykorzystana dowolnie przez użytkownika, górna jest zabezpieczona przed zapisem.

Adam Tatuś, EP

Wykaz elementów:
Rezystory: (SMD0603, 1%)
  • R1, R2, R7, R8, R21: 820 Ω
  • R3, R9: 4,7 M Ω
  • R4, R10: 2,49 kΩ
  • R5, R6, R11, R12: 10 kΩ
  • R13, R14: 0 Ω (opis)
  • R15…R17, R19, R20: 47 kΩ (opis)
  • R18: 12 kΩ
  • R22, R23: 4,7 kΩ
Kondensatory: (SMD0603)
  • C1…C4, C7, C8, C10, C12…C17, C20, C21, C23, C25, C26, C30…C33, C36, C38, C39, : 0,1 μF
  • C5, C6, C18, C19, C34, C35: 22 pF
  • C9, C22: 4,7 μF/10 V
  • C11, C24, C29: 10 μF/10 V
  • C27, C28, C37: 1 μF/10 V
Półprzewodniki:
  • U1, U2: RTL8152B (QFN24)
  • U3: MCP1700T-3302MB (SOT-89)
  • U4: USB2412 (QFN28)
  • U5: MCP100T/3,15 (SOT-23)
  • U6, U7: 24 A A025E48 (SOT-23-6)
Pozostałe:
  • ETH1, ETH2: gniazdo RJ45 Belfuse 08B0-1X1T-06
  • FB1, FB3: koralik ferrytowy BLM31A601SPT (SMD1206)
  • FB2, FB4: koralik ferrytowy BLM18AG601SN1D (SMD0603)
  • FB5: koralik ferrytowy BLM21A601SN1D (SMD0805)
  • GPIO: złącze żeńskie DS1023-2*20S21
  • I2C: gniazdo JST 4 piny 1 mm
  • I2CA: gniazdo JST 4 piny 2 mm
  • USB: gniazdo USB Micro
  • USBA: złącze SIP 5, 2,54 mm
  • XT1, XT2: kwarc CFPX180-25 MHz (3,2×2,5)
  • XT3: kwarc CFPX180-24 MHz (3,2×2,5)
Artykuł ukazał się w
Elektronika Praktyczna
kwiecień 2022
DO POBRANIA
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik czerwiec 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio maj - czerwiec 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje maj 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna czerwiec 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich czerwiec 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów