Dwukanałowy port szeregowy dla Raspberry

Dwukanałowy port szeregowy dla Raspberry
Pobierz PDF Download icon

Dzięki zastosowaniu opisanego ekspandera możemy uzupełnić Raspberry Pi Zero lub podobne płytki o dwa dodatkowe porty szeregowe przydatne np. w aplikacjach automatyki domowej lub IoT. Dodatkowo, płytka zawiera dwa gniazda dla modułów komunikacyjnych zgodnych z Xbee, co ułatwia realizację transmisji zarówno przewodowej, np. RS232/485, jak i bezprzewodowej np. Bluetooth, przy pomocy opisanych na łamach EP minimodułów.

Podstawowe parametry:
  • dwa porty szeregowe UART (sygnały RXD, TXD, RTS, CTS, logika 3,3 V),
  • dwa gniazda dla modułów komunikacyjnych zgodnych z Xbee,
  • wsparcie ze strony dystrybucji Linuxa dla Raspberry Pi,
  • komunikacja z RPi poprzez magistralę I2C i sygnał IRQ na linii GPIO24,
  • możliwość wyboru jednego z czterech adresów magistrali I2C.

W module zastosowano sprzętowy, dwukanałowy UART dla magistrali I2C o oznaczeniu SC16IS752 firmy NXP, którego schemat wewnętrzny został pokazany na rysunku 1.

Rysunek 1. Schemat wewnętrzny układu SC16IS752

Układ jest wspierany przez dystrybucje Linuxa dla Raspberry Pi i umożliwia realizację transmisji z typowymi prędkościami, także w trybie z potwierdzeniem sprzętowym i elastyczną konfiguracją ramki przy zachowaniu niewielkiego poboru mocy.

Budowa i działanie

Schemat ideowy modułu został pokazany na rysunku 2. Układ przetwornicy obniżającej U3, typu ADP2108-3.3 dostarcza napięcia zasilającego kluczowe elementy płytki. Zastosowanie dodatkowej przetwornicy 3,3 V/400 mA podyktowane jest koniecznością dostarczenia stabilnego zasilania, także dla radiowych modułów XBEE. Układ U2 gwarantuje prawidłowe uruchomienie układu U1 po włączeniu zasilania.

Rysunek 2. Schemat modułu

Kontroler SC16IS752, dla wytworzenia sygnału zegarowego transmisji wymaga stabilnego generatora, który został zrealizowany poprzez obwód XT, C3, C4. Zwory AL/AH umożliwiają wybór jednego z czterech adresów magistrali I2C 0x48...0x4B. Przy wyborze adresu SC16IS752 należy zwrócić uwagę, czy nie dojdzie do kolizji w aplikacji z popularnymi termometrami I2C. Ponadto, do prawidłowej pracy układ wymaga obsługi przerwania IRQ, które doprowadzone jest do GPIO24.

Sygnały portów szeregowych doprowadzone są do złącz UARTA i UARTB, gdzie dostępne są tylko podstawowe sygnały RXD/TXD wraz z zasilaniem. Na złączach UA i UB dostępne są także sygnały CTS i RTS dla realizacji transmisji ze sprzętowym potwierdzeniem. Układy bramek U4 i U5 zapewniają sygnalizację aktywności portu szeregowego.

Moduły XBEE XA i XB mają możliwość opcjonalnego doprowadzenia sygnałów RTC i CTS zworami oznaczonymi RTA i CTA i RTB i CTB, ale każdorazowo należy upewnić się czy dany moduł obsługuje transmisję ze sprzętowym potwierdzeniem i czy na jego wielofunkcyjnych wyprowadzeniach sygnały potwierdzenia są odpowiednio przypisane. Dodatkowe diody RSSI1/RSSI2 umożliwiają ocenę siły sygnału radiowego, jeżeli moduł XBEE udostępnia odpowiedni sygnał. Dioda LD1 sygnalizuje obecność zasilania 3,3 V.

Montaż i uruchomienie

Moduł zmontowany jest na dwustronnej płytce drukowanej. Schemat płytki i rozmieszczenie elementów pokazuje rysunek 3. Sposób montażu jest klasyczny i nie wymaga dokładnego opisu.

Rysunek 3. Schemat płytki PCB wraz z rozmieszczeniem elementów

Ustawienie adresu na magistrali I2C wykonujemy poprzez zwarcie odpowiednich pól AL i AH kroplami cyny. Domyślny adres modułu to 0x48 (zwora AL=V33, AH nie lutowana). Dla szybkiego sprawdzenia działania, moduł należy podłączyć do Raspberry Pi i skorzystać z biblioteki i2ctools. Moduł powinien być widoczny po odczycie magistrali poleceniem: i2cdetect -y 1, co pokazano na rysunku 4 (ustawiony adres bazowy 7-bitowy 0x48).

Rysunek 4. Detekcja układu SC16IS752 z użyciem i2ctools

Gdy układ jest widoczny na magistrali I2C to można zainicjować jego sterownik, w tym celu edytujemy plik config.txt. Wpisujemy polecenie: sudo nano /boot/config.txt

Na końcu pliku dodajemy linię: dtoverlay=sc16is752-i2c,int_pin=24,addr=0x48

Po edycji i zapisaniu zmian należy zrestartować system poleceniem: sudo reboot now

Po uruchomieniu systemu, przy pomocy polecenia: i2cdetect -y 1. Sprawdzamy czy w miejscu adresu 0x48, pojawi się tekst UU, świadczący o kontroli urządzenia przez driver. Obecność dodatkowego portu szeregowego w systemie możemy sprawdzić poleceniem: ls /dev. Pośród urządzeń powinny znaleźć się ttySC0, ttySC1 odpowiadające portom A i B transmisji szeregowej.

Dla sprawdzenia poprawności transmisji można użyć emulatora terminala minicom lub picocom oraz konwertera USB/UART 3,3 V podłączonego do PC z programem Teraterm lub Terminal.

Łącząc odpowiadające sygnały RTX, TXD i GND modułu i konwertera pamiętając o logice 3,3 V, zestawiamy połączenie szeregowe Pi-PC.

Program minicom lub picocom instalujemy poleceniem: sudo apt-get install minicom lub sudo apt-get install picocom

Po instalacji uruchomiamy poleceniem: sudo minicom

Rysunek 5. Konfiguracja programu minicom

Następnie ustalamy parametry transmisji (ttySC0, ANSI, 115200, 8, N, 1) zarówno w programie minicom jak i w terminalu PC. Menu minicoma wywołujemy kombinacją klawiszy CTRL A+Z, następnie opcje konfiguracji portu P, ustawień terminala T, konfiguracji minicom O, zgodnie z informacjami z rysunku 5. Po konfiguracji, wprowadzone z klawiatury znaki powinny być transmitowane w obu kierunkach pomiędzy Pi i PC, w zależności od aktywnego terminala.

Port ttySC1 sprawdzimy, dla odmiany, emulatorem picocom. Wpisujemy: sudo picocom -b 115200 /dev/ttySC1

W tym przypadku, także powinna być możliwa dwukierunkowa transmisja szeregowa.

Jeżeli wszystko działa możemy moduł zastosować we własnej aplikacji.

Adam Tatuś, EP

Wykaz elementów:
Rezystory: (SMD 0603, 1%)
  • R1, R3, R4, R7, R8: 2,2 kΩ
  • R2: 1 kΩ
  • R5, R6: 2,2 kΩ
  • R1, R3, R4, R7, R8: 2,2 kΩ
  • R2: 1 kΩ
  • R5, R6: 2,2 kΩ
Kondensatory:
  • C1, C7, C10, C11, C12, C13: 0,1 µF/16 V SMD 0603
  • C2 10 µF/16 V SMD 0603
  • C3, C4 22 pF/16 V SMD 0603
  • C5, C6, C8, C9 1 µF/16 V SMD 0603
  • CE1, CE2, CE3 47 µF/10 V tantalowy SMD 3528
Półprzewodniki:
  • LD1…LD5, PWR, RTA, RTX, RSSI1, RSSI2: LED SMD 0805
  • U1: SC16IS752IPW128 (TSSOP28_065)
  • U2: MCP100T-315I/TT (SOT-23)
  • U3: ADP2108AUJZ (SOT-23-5)
  • U4, U5: 74V1G00 (SC70-5)
Inne:
  • UA, UB: listwa SIP 6 prosta męska
  • AH, AL: zwora PCB
  • CTA, CTA1, RTA, RTA1: zwora SMD 0603
  • GPIO: złącze żeńskie IDC40
  • L1: 1 µH dławik SMD MAPI3020
  • UARTA, UARTB: złącze JST4 1 mm
  • XA, XB: podstawka XBEE, listwa żeńska 10 pin 2 mm
  • XT: rezonator kwarcowy 14,7456 MHz CFPX-180 3,2×2,5 mm
Artykuł ukazał się w
Elektronika Praktyczna
marzec 2021
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik lipiec 2021

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec - sierpień 2021

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka Podzespoły Aplikacje lipiec 2021

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna lipiec 2021

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich sierpień 2021

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów