Logo FORBOT.pl - darmowe kursy elektroniki, Arduino, Raspberry Pi
Moduły GRINN w ofercie TME

Kurs Raspberry Pi – #5 – instalacja/komunikacja przez UART

Kurs Raspberry Pi  – #5 – instalacja/komunikacja przez UART

W poprzedniej części kursu poznaliśmy prostą metodę rozpoczęcia pracy z Raspberry Pi. Do pracy z systemem wykorzystaliśmy tradycyjny monitor, klawiaturę i myszkę.

Tym razem wykorzystamy mniej popularny, ale niezwykle przydatny sposób instalacji systemu z użyciem konwertera UART!

Metoda wykorzystująca port szeregowy nie jest najłatwiejsza i wymaga konwertera UART-USB (znajduje się on w naszych zestawach). Ten sposób instalacji jest często pomijany podczas nauki pracy z Raspberry Pi. Jednak ma kilka zalet, które sprawiają, że warto go znać!

Po pierwsze, sposób ten wymaga mniejszej ilości sprzętu niż poprzednio. Możemy wykorzystać PC, na którym czytamy ten kurs. Nie musimy mieć dodatkowego monitora, klawiatury i myszki. 

Konwerter UART - nowe narzędzie do komunikacji z RPi.

Największe zalety wykorzystania portu szeregowego to uniwersalność i możliwość naprawy systemu w razie awarii. Jeśli polubimy zabawę systemami wbudowanymi szybko odkryjemy, że dostępne są bardzo różne rozwiązania. Może któregoś dnia "konkurencyjna" płytka wpadnie nam w ręce, albo po prostu będziemy potrzebowali przygotować coś w oparciu o inny sprzęt. Nie wszystkie płytki z Linuxem obsługują wyjście obrazu (np. Intel Edison), ale praktycznie wszystkie pozwalają na pracę przez port szeregowy.

W kolejnej części kursu do komunikacji z płytką wykorzystamy sieć lokalną. Taka opcja jest prosta i wygodna, ale działa tylko jeśli wszystko jest skonfigurowane poprawnie. Jeśli coś się popsuje, to zupełnie stracimy kontakt z naszą malinką. W przypadku monitora jest trochę lepiej, ale awaria na samym początku procesu uruchamiania systemu również jest trudna do naprawy. Port szeregowy jest obsługiwany od samego początku działania systemu. Co więcej można z niego korzystać nawet jeszcze przed startem Linuxa!

Instalacja systemu przez UART

Do wykonania tego ćwiczenia potrzebne są:

  • Raspberry Pi 3 w obudowie,
  • zasilacz,
  • karta microSD,
  • czytnik kart pamięci,
  • przejściówka UART-USB (3,3V),
  • podręczna "ściąga" z GPIO,
  • dodatkowa zworka (opcjonalnie).
Zestaw elementów do kursu

Gwarancja pomocy na forum Błyskawiczna wysyłka

Elementy niezbędne do wykonania wszystkich ćwiczeń z kursu podstaw Rasberry Pi dostępne są w formie gotowych zestawów!

Kup w Botland.com.pl

Raspberry Pi i czytnik kart SD będą nam zawsze potrzebne, więc właściwie dodatkowy element jest tylko jeden: konwerter UART-USB. Co ważne musi on obsługiwać napięcie 3.3V, konwertery na 5V mogą uszkodzić Raspberry Pi.

W zestawach do tego kursu znajduje się uniwersalny konwerter, który nie powinien sprawiać problemów na żadnym systemie operacyjnym i jest przystosowany do pracy z 3.3/5V. Nie warto kupować najtańszych konwerterów - ich sterowniki mogą nie być kompatybilne z najnowszymi systemami Windows, co doprowadza do dodatkowych komplikacji.

Instalacja systemu Raspbian Lite

W poprzedniej części kursu dokładnie opisaliśmy procedurę przygotowania karty microSD. Teraz postępujemy podobnie, ale zamiast pełnej wersji Rasbpiana skorzystamy z wersji Lite. W przypadku komunikacji przez UART interfejs graficzny czy domyślnie instalowana gra Minecraft nie są nam potrzebne, a zajmują miejsce i wydłużają czas instalacji oraz uruchamiania płytki.

Obraz systemu w wersji Lite jest dostępny, tak jak poprzednio, na stronie Raspberry Pi. Pobrany plik rozpakowujemy i "wypalamy" go na karcie microSD za pomocą narzędzie Etcher. Szczegóły tej operacji zostały opisane w poprzedniej części kursu Raspberry Pi.

Dwie wersje systemu do pobrania.

Gdy program zakończy działanie wyciągamy kartę z komputera i wkładamy ją drugi raz. System pokaże wykrycie 2-3 nowych dysków/pamięci. Windows może pokazać nam komunikat mówiący o tym, że korzystanie z jednego nowego dysku nie jest możliwe. Oczywiście nie zgadzamy się na jego sformatowanie (usunęlibyśmy wtedy dane nagrane przez Etcher).

Formatowanie karty - klikamy Anuluj!

Odszukujemy partycję nazwaną "boot":

Nowa partycja boot.

Znajdziemy na niej bardzo ważny plik config.txt, który przechowuje konfigurację systemu malinki. Otwieramy go za pomocą edytora tekstu. Otwarcie tego pliku w notatniku niestety spowoduje, że całość będzie mało czytelna.

Gdy plik się otworzy dodajemy na jego końcu jedną linijkę:

Plik powinien wyglądać wtedy mniej więcej następująco:

Edytowany plik config.txt

Bez tej ręcznej edycji połączenie z malinką przez UART nie byłoby możliwe. Zapisujemy zmodyfikowany plik na karcie i bezpiecznie usuwamy ją z systemu. Kartę można już wsunąć do Raspberry Pi, ale naszego małego komputera nie podłączamy jeszcze do zasilania!

Gniazdo rozszerzeń Raspberry Pi

Zanim podłączymy konwerter do płytki Raspberry Pi poświęćmy chwilę na zapoznanie się z gniazdem rozszerzeń. Rozkład pinów jest widoczny poniżej:

Opis wyprowadzeń GPIO.

Do podłączenia naszej przejściówki potrzebujemy podłączyć oczywiście masę (GND) oraz linie do komunikacji (TXD i RXD). Przy okazji bardzo ważne ostrzeżenie:

Jak "na złość" piny 2 i 4 dostarczają napięcia 5V - musimy więc bardzo uważać, żeby niechcący nie zewrzeć ich z innymi lub nie podłączyć do nich czujnika i przez niego nie zasilić pozostałych pinów. Prostym ułatwieniem jest założenie zworki na dwa piny dostarczające +5V. Zwieramy dwa piny 5V ze sobą (co nie wpływa na działanie układu), a dzięki temu blokujemy sobie dostęp do pinów niosących "groźne" 5V.

Raspberry Pi z założoną zworką zabezpieczającą.

Podłączenie konwertera

Nasz konwerter ma możliwość pracy w standardzie 3.3V lub 5V. Raspberry Pi wykorzystuje pierwszą opcję, musimy więc upewnić się, że zworka VCCIO jest umieszczona tak, że wskazuje na 3.3V (zgodnie z poniższym zdjęciem):

Odpowiednie ustawienie zworki na konwerterze UART.

Teraz możemy podłączyć odpowiednie piny malinki i konwertera. Nie używamy linii VCCIO, łączymy tylko GND, TXD oraz RXD. Sygnały powinny być połączone "na krzyż", czyli TXD z konwertera łączymy z RXD malinki, a RXD z TXD. Podczas wykonywania połączeń warto wspomóc się podręczną ściągą GPIO, która była w zestawie.

Odpowiednie podłączenie konwertera.

Dla pewności, jeszcze zdjęcie "bez obudowy":

Podłączenie do komputera

Wszystko gotowe? Możemy podłączyć konwerter do komputera i sprawdzić, który port szeregowy został do niego przypisany. U nas był to COM3:

Widok podłączonego konwertera w systemie.

Pierwsze uruchomienie Raspberry Pi przez UART

Teraz musimy uruchomić program do obsługi portu szeregowego, np. PuTTy - mały darmowy program, który potrafi komunikować się zarówno poprzez sieć wykorzystując protokół SSH jak i przez port szeregowy. Najnowszą wersję programu można pobrać ze strony producenta.

Po jego uruchomieniu wybieramy typ połączenia: Serial, prędkość transmisji 115200 oraz port szeregowy do którego podłączony jest konwerter.

Pierwsze ustawienia w PuTTy.

Musimy też wyłączyć kontrolę transmisji - w zakładce Serial odnajdujemy Flow control, a następnie z rozwijanego menu wybieramy None.

Ostatnie ustawienia w PuTTy.

Po powrocie do okna głównego programu możemy zapisać naszą konfigurację przyciskiem Save, a następnie otworzyć okno terminala za pomocą przycisku Open.

Uruchomiony terminal - oznaka otwarcia portu COM.

Gdy terminal się uruchomi, to pozostaje ostatnie sprawdzenie, czy wszystko jest połączone tak, jak być powinno. Wtedy podłączamy zasilanie do RPi.

Po chwili, na komputerze, zobaczymy komunikaty startującego systemu:

Uruchamianie systemu...

Pierwsze uruchomienie systemu zajmuje kilka chwil (do 5 minut). Czekamy więc cierpliwie aż zostaniemy poproszeni o zalogowanie. Co będzie wyglądało następująco:

Ekran logowania...

Logowanie do Raspberry Pi

Domyślny login to pi, a hasło raspberry. Przy wprowadzaniu hasła nie pojawiają się żadne znaki (brak gwiazdek maskujących hasło), to normalne zachowanie w przypadku Linuxa!

Cały proces logowania wygląda następująco:

Logowanie do Raspberry Pi...

Po poprawnym zalogowaniu powinniśmy zobaczyć "znany z Linuxa" widok terminala, w którym możemy już działać!

Jesteśmy zalogowani do RPi przez UART!

Udało nam się zalogować do naszej malinki. Mamy dostęp do konsoli, która działa dokładnie tak samo jak "terminal" opisywany w poprzedniej części. Do komunikacji z terminalem w zupełności wystarcza nasz port szeregowy.

W linii poleceń możemy wpisywać komendy systemu Linux. Dzięki nim można konfigurować płytkę, uruchamiać programy, a nawet programować. To nieco zaskakujące, ale z Raspberry Pi można korzystać w trybie tekstowym, tryb graficzny wcale nie jest niezbędny.

Najważniejsze ustawienia - raspi-config

System jest już zainstalowany. Warto więc wykonać najprostsze ustawienia. Wpisujemy komendę sudo raspi-config i klikamy Enter. Pojawi się okno programu konfiguracyjnego przygotowanego specjalnie z myślą o Raspberry Pi:

Zmiana ustawień systemu.

Zacznijmy od zmiany hasła. Wybieramy pozycję numer 1 (po menu poruszamy się strzałkami), klikamy Enter. Pojawi się następujące okno:

Informacja o zmianie hasła.

Klikamy Enter i chwilę później wpisujemy nowe hasło, kolejny enter i podajemy hasło drugi raz.

Wpisujemy dwa razy nowe hasło.

Na koniec otrzymamy komunikat świadczący o zmianie danych do logowania:

Potwierdzenie zmiany hasła.

Naciskamy Enter i wracamy do menu ustawień. Teraz warto przejść do "Localisation Options". Gdzie ustawiamy informację na temat strefy czasowej, układu klawiatury itd.:

Opcje dostępne w menu.

Warto zacząć od wybrania ustawień językowych:

Następnie ustawiamy strefę czasową:

Czyszczenie ekranu, wyłączanie Raspberry Pi w trybie tekstowym

Artykuł miał pokazać proces instalacji RPi przez UART, nie będziemy się więc rozpisywać na temat samej pracy w terminalu. Do tego jeszcze wrócimy w osobnym artykule. Pora wyjść z menu ustawień (klawisz Esc). 

Wyjście z ustawień.

Po wciśnięciu Esc wyjdziemy z trybu ustawień i pojawi się oczekiwane pi@raspberrypi:~$ Cały czas jest jednak widoczny nieaktywny widok poprzedniego programu (co może być mylące). Aby się go pozbyć wystarczy wpisać komendę clear, która wyczyści aktualne okno:

Wyczyszczony ekran - brak śladów, po poprzednich programach.

Oczywiście, tak samo jak w poprzednio opisywanym trybie graficznym Raspberry Pi, nie można zwyczajnie odłączyć od prądu. Nie ma jednak menu, z którego możemy "wyklikać" wyłączenie...

Jesteśmy w trybie tekstowym, więc w celu wyłączenia płytki musimy skorzystać z komendy:

Komputer rozpocznie procedurę wyłączania natychmiast po zatwierdzeniu polecenia:

Wyłączanie RPi w praktyce...

Jeśli zamiast wyłączania interesuje nas ponowne uruchomienie, to korzystamy z polecenia:

Restart Raspberry Pi...

Podsumowanie

Za nami kolejny sposób pracy z RPi - przez UART. Sposób ten jest często pomijany w nauce Raspberry Pi. Warto go jednak znać, na pewno przyda nam się jeszcze w przyszłości! Co więcej skorzystaliśmy z sytemu operacyjnego w wersji lite, czyli m.in. bez interfejsu graficznego. Pobierany obraz tego Raspbiana był znacznie mniejszy, czyli na karcie pamięci zostało więcej miejsca na nasze pliki.

W kolejnym artykule zajmiemy się ostatnią metodą instalacji systemu. Tym razem skorzystamy z sieci lokalnej. Jest to zdecydowanie najpopularniejsza forma zdalnej pracy na malince. Po tym artykule, każdy będzie mógł wybrać sposób, w który chce łączyć się z Raspberry Pi. Będzie to więc idealny moment, aby wreszcie pójść krok dalej i w pełni korzystać z RPi.

Nawigacja kursu

Autorzy: Piotr Bugalski, Damian Szymański
Testy, ilustracje: Piotr Adamczyk

komunikacja, kurs, kursRaspberryPi, RaspberryPi, system, uart

Komentarze

20:51, 23.11.2017 #1

Witam, czy jest możliwość przesłania przez UART plików z komputera ma raspberry(chodzi o biblioteki i rozszerzenia ponieważ posiadam model zero bez łączności z internetem).

Kurs świetlny, z niecierpliwością czekam na kolejne części.

Pozdrawiam.

17:42, 26.11.2017 #2

MagisterInzynie, na ogół przy kursach nie odpowiadamy na pytania odnośnie innych konfiguracji. Ale ponieważ uart jest też omawiany, odpowiem - tak da się, ale to strasznie powolne i nieco skomplikowane. Dokładny opis jest tutaj: http://www.tldp.org/HOWTO/Remote-Serial-Console-HOWTO/upload.html

Znacznie lepiej używając złącza szeregowego skonfigurować malinkę, a do komunikacji używać sieci ethernet lub wifi.

Administrator
17:48, 26.11.2017 #3

MagisterInzynie, witam na forum i dziękuję za miłe słowa! Jeśli chodzi o transfer plików, to da się to zrobić, jednak wyniki mogą być mało zadowalające (niska prędkość transmisji). Nie robiliśmy ostatnio takich testów w praktyce, nie chcę polecać Ci czegoś "w ciemno". W wolnej chwili zobaczymy, która z metoda jest najwygodniejsza i damy znać ;)

Edit: Elvis był jednak szybszy ;)

13:35, 07.12.2017 #4

Jako, że jest to mój pierwszy komentarz do kursu i na forum to Witam! wszystkich. :)

Z tym UART-em wszystko pięknie, ale przydałoby się też wspomnieć jak to zrobić, gdy korzysta się z innego systemu operacyjnego niż jedynie słuszny. Mam na myśli jak to zrobić pod linuxem?!

Administrator
0:39, 12.12.2017 #5

Ubuludzik, witam na forum :) Hmm, czy chodzi Ci o sytuację, w której Twój komputer PC działa na Linuxie? Cała operacja przebiegnie identycznie. Nie wiesz z jakiego programu skorzystać do komunikacja przez COM? Szukasz programu, który działa w trybie graficznym?

16:09, 15.12.2017 #6

"czy chodzi Ci o sytuację, w której Twój komputer PC działa na Linuxie?" dokładnie tak, bo skoro w pierwszych odcinkach było powiedziane, że należy zdjąć folię przed złożeniem obudowy, to można by też uwzględnić różnice przy korzystaniu z innego systemu operacyjnego na PC.

"Nie wiesz z jakiego programu skorzystać do komunikacja przez COM?" - wiem, z tego samego co pod Win :), ale można by wspomnieć, że pod linuksem nie ma portów COM, a to już niektórym może sporo utrudnić skorzystanie z porad dotyczących UART.

Dlatego myślę, że można by te drobne różnice zaznaczać w opisie.

Administrator
19:15, 15.12.2017 #7

Ubuludzik, ok teraz wszystko jasne :) Weźmiemy to pod uwagę. Zastanawiam się tylko, czy dodawanie równoległych opisów dla osób korzystających z Linuxa nie wprowadzi zamieszania. Może lepiej byłoby przygotować osobny artykuł, gdzie opiszemy to zbiorczo? Jeszcze zobaczymy :)

19:37, 15.12.2017 #8

Proponuję zrobić ankietę i sprawdzić ile osób jest zupełnie początkujących i używa linuxa. Jeśli ktoś się znajdzie to pewnie w ramach żartu... Niestety ale Linux nie jest popularny wśród początkujących. Ciągle uchodzi za trudniejszy od okienek, nie jest używany w każdej szkole, biurze itd. Więc dodawanie podpowiedzi odnośnie linuxa do kursu dla początkujących to raczej sposób na skomplikowanie tekstu niż cokolwiek sensownego. Poza tym dlaczego linux - przecież użytkownicy Mac OS-a też mają swoje prawa :) W sumie można iść dalej - Android, iOS, Windows CE, a właściwie to ja chciałbym połączyć się z RPi za pomocą 8-bitowego Atari ;-)

20:32, 15.12.2017 #9

Do Admina

Tak myślę, że pomysł ze zbiorczym artykułem jest dobry.

Do Elvis

"

Proponuję zrobić ankietę i sprawdzić ile osób jest zupełnie początkujących i używa linuxa. " - wydaje mi się, że mylisz początkujących z RPi, a początkujących z PC to dwie różne sprawy.

Poza tym RPi działa pod linuxem, więc wcześniej czy później nastąpi "zderzenie" z nazewnictwem linuksowym.

20:57, 15.12.2017 #10

Dzisiaj mogę pisać mniej ładnie i składnie, bo właśnie skończyłem kontrakt i się z tego bardzo cieszę ;-)

W każdym razie, zdaję sobie sprawę że RPi może działać pod linuksem - chociaż wcale nie musi. Wbrew obiegowej opinni na malince są inne systemy do użycia, a programowanie bez systemu to już czysta radość (takie Arduino, ale z procesorami 1GHz).

Dla typowego użykownika linux na malince działa bardzo podobnie do linuxa na PC - właśnie po to wymyślono jądro systemu, żeby ukrywało różnice sprzętowe. Wtedy x86_64, czy armv8 to tylko inne architektury procesorów.

Kurs miał trafiać do początkujących, a większość tej grupy docelowej używa okienek - można to potępiać, albo wychwalać marketing M$, ale takie jest życie. Chodziło więc o to, żeby nie niszcząc całego systemu wartości i nie wymagając formatowania głównego dysku twardego pokazać radość używania innych systemów, szczególnie wbudowanych. Oczywiście kurs nie zadowoli wszystkich - nawet ja mam z nim problemy, bo nie mogę dopisać kolejnego odcinka z braku "windy" na laptopie, który ze sobą zabrałem.

Także plan jest taki - zaczynamy od przysłowiowego "zera", pokazyjemy jak łatwo i fajnie jest pobawić się malinką. A jak później będzie zainteresowanie, dodamy już bardziej wyspecjalizowane części kursu. Polecam czysty asembler bez systemu operacyjnego - totalny hardcore, jeśli będą chętni, możemy spokojnie kurs uruchamiać :)

Zobacz powyższe komentarze na forum

Dodaj komentarz