Kurs Django Robot – #3 – Obsługa Orange Pi 3 LTS

Posted on: August 7, 2024

Kurs Django Robot – #3 – Obsługa Orange Pi 3 LTS

Kurs Django Robot – #3 – Obsługa Orange Pi 3 LTS

Przygotowanie przed wielkim omówieniem programu

Przed głębszym zanurzeniem się w architekturę naszego kodu, chcielibyśmy przedstawić kilka kluczowych informacji, które pomogą Ci zrozumieć działanie naszego projektu oraz proces instalacji i konfiguracji na Orange Pi.

Nasz projekt został zaprojektowany tak, aby z niewielkimi modyfikacjami działał również na Raspberry Pi. Jednak w tym poradniku skupimy się przede wszystkim na platformie Orange Pi i pokażemy krok po kroku, jak przygotować się do uruchomienia naszej aplikacji.

Jeśli jesteś gotowy, upewnij się, że masz przy sobie:

  1. Mikrokomputer Orange Pi 3 LTS.
  2. Kartę microSD, na którą będziemy wgrywać system operacyjny.

Pierwszym krokiem jest pobranie odpowiedniego systemu operacyjnego dla Orange Pi. Oficjalne obrazy systemów można znaleźć pod poniższym linkiem:

Oficjalne obrazy systemów dla Orange Pi

Z oficjalnej strony polecamy wersję Ubuntu Focal, a dokładniej:

Orangepi3-lts_2.2.2_ubuntu_focal_desktop_linux5.10.75

Poniżej opisaliśmy instalację na tej wersji, na innych możliwe, że trzeba będzie coś zmienić.

Po pobraniu odpowiedniego obrazu systemu, możemy przystąpić do instalacji i konfiguracji naszego kodu na Orange Pi 3 LTS. W kolejnych krokach tego kursu opiszemy dokładnie, jak to zrobić. Mamy nadzieję, że ten wstęp pozwoli Ci lepiej zrozumieć nasz projekt i przygotować się do dalszej pracy. Zapraszamy do dalszej lektury!

Przed przystąpieniem do głównych kroków konfiguracji, ważne jest, aby odpowiednio przygotować kartę microSD, na której będzie działać nasz system. Jeśli nie jesteś pewien, jak to zrobić, w sieci znajdziesz mnóstwo poradników na ten temat. My osobiście polecamy darmowy program balenaEtcher do tego zadania.

Po prawidłowym zbootowaniu karty, proces instalacji jest już niemal zakończony. Wystarczy włożyć kartę do Orange Pi, włączyć urządzenie i poczekać, aż system się uruchomi. Jeśli korzystasz z monitora, klawiatury i myszki (choć nie jest to konieczne, można korzystać np. przez SSH), powinieneś bez problemu przejść przez początkową konfigurację, wybierając język i kilka innych opcji.

Gratulacje! Masz już działający system na Orange Pi. Teraz możemy przejść do instalacji Django. Szczegółowy opis tego procesu znajdziesz w naszym kursie "Kurs Django Podstawa", ale poniżej przedstawiamy skrót, otwórz terminal, a następnie wpisz poniższe komendy:

sudo apt update # Domyślne hasło dla sudo to "orangepi" # Sprawdź, czy masz zainstalowanego Pythona 3.8: python3 # Jeśli chcesz zainstalować naszą aplikację bez większych modyfikacji, stwórz folder: mkdir -p /home/orangepi/programowanie/WRbot cd /home/orangepi/programowanie/WRbot sudo apt install python3.8-venv python3 -m venv bot_env source bot_env/bin/activate sudo apt-get install python3-dev pip install django django-admin startproject bot_ruch . # zwróć uwagę na kropkę python manage.py migrate python manage.py runserver # Sprawdź, czy serwer działa, potem wyłącz i kontynuuj w aktywnym wirtualnym środowisku (napis jest w nawiasie) python manage.py startapp bot_motion # Zainstaluj potrzebne biblioteki: pip install django-bootstrap-v5 pip install opencv-python

Mamy nadzieję, że powyższe instrukcje pomogą Ci w łatwy sposób skonfigurować naszą aplikację na Orange Pi. Jeśli napotkasz jakiekolwiek problemy, skontaktuj się z nami, a chętnie Ci pomożemy!

Kontynuując nasze kroki, chcielibyśmy zapewnić, że wszystko działa płynnie i bez problemów. W przyszłości planujemy stworzenie instalatora, który uprości cały proces, ale na razie postępuj zgodnie z poniższymi instrukcjami:

biblioteka GPIO:

Aby zwiększyć szybkość działania naszej aplikacji, zdecydowaliśmy się na wykorzystanie biblioteki do sterowania pinami w języku C. Szczegółowy opis, jak to zrobić, znajdziesz pod tym linkiem:

wiringOP.

Aby zainstalować bibliotekę, otwórz terminal i wpisz następujące komendy:

# Aktualizacja repozytoriów sudo apt-get update # Instalacja narzędzia git sudo apt-get install -y git # Klonowanie repozytorium wiringOP git clone https://github.com/orangepi-xunlong/wiringOP.git # Przejście do folderu z repozytorium cd wiringOP # Czyszczenie ewentualnych poprzednich kompilacji ./build clean # Budowanie biblioteki ./build

Następnie pobierz nasze pliki

Kliknij, aby pobrać plik KursDjangoRobot

Korzystamy również z dostępu do pinów w języku Python. W tej konfiguracji częstotliwość wywołania kodu nie jest zbyt duża, więc PWM zostanie w języku C, ale dla opcji "włącz/wyłącz" pin sprawdza się świetnie, wykonaj następujące kroki:

# Przejście do odpowiedniego folderu cd /usr/local/bin # Tworzenie nowego pliku skryptowego sudo nano ustaw_pin.sh

Teraz wklej zawartość pobranego pliku ustaw_pin.sh do otwartego pliku w edytorze nano. Po wklejeniu zawartości, zapisz plik i wyjdź z edytora.

Następnie nadaj odpowiednie uprawnienia dla stworzonego pliku:

sudo chmod +x /usr/local/bin/ustaw_pin.sh

Stworzony przez Ciebie plik ustaw_pin.sh służy jako odwołanie do pliku bot_motion/sterowanie_pinem.py i funkcji setpin. Więcej szczegółów na ten temat znajdziesz w następnym rozdziale naszego kursu.

Jeśli chcesz, aby aplikacja uruchamiała się automatycznie po włączeniu zasilania Orange Pi, możesz skorzystać z poniższych instrukcji. Szczegółowe informacje na ten temat znajdziesz w następnym rozdziale naszego kursu.

Automatyczne uruchamianie aplikacji po starcie systemu:

Przygotowanie skryptu startowego:
Umieść plik start_project.sh na pulpicie Orange Pi. Ten skrypt będzie odpowiedzialny za uruchomienie Twojej aplikacji.

Nadanie uprawnień skryptowi:
Aby skrypt mógł być uruchamiany, musisz nadać mu odpowiednie uprawnienia. W tym celu otwórz terminal i wpisz:

sudo chmod +x /home/orangepi/Desktop/start_project.sh

W terminalu wpisz:

crontab -e

Wybierz edytor nano poprzez wciśnięcie klawisza 1. Następnie, na końcu pliku, dodaj następującą linię:

@reboot /home/orangepi/Desktop/start_project.sh >> /home/orangepi/Desktop/cronlog.txt 2>&1

Zapisz plik i wyjdź z edytora.

Dostęp do zmiany uprawnień dla wybranych funkcji:
Aby niektóre funkcje mogły działać bez konieczności podawania hasła, możesz dodać je do pliku sudoers. Wpisz w terminalu:

sudo visudo

Na końcu pliku dodaj następujące linie:

orangepi ALL=(ALL) NOPASSWD: /home/orangepi/programowanie/WRbot/bot_motion/hc_sensor orangepi ALL=(ALL) NOPASSWD: /home/orangepi/programowanie/WRbot/bot_motion/jazda orangepi ALL=(ALL:ALL) NOPASSWD: /usr/bin/pkill

Ponownie zapisz i wyjdź z edytora.

Dzięki powyższym krokom aplikacja będzie uruchamiana automatycznie po włączeniu Orange Pi, a zapis z terminala (zapis, że serwer się uruchomił albo pojawiły się jakieś błędy) będzie zapisywany do pliku tekstowego cronlog na pulpicie, a wybrane funkcje będą miały dostęp do wyższych uprawnień bez konieczności podawania hasła dla sudo.

Zostało już skopiowanie pobranych plików. Postępuj dalej zgodnie z poniższymi wskazówkami:

Przenoszenie plików:
Przejdź do folderu, w którym przechowujesz pobrane od nas pliki. Skopiuj je, a następnie wklej do odpowiednich folderów: bot_motion oraz bot_ruch na Orange Pi. Pamiętaj, aby nie usuwać istniejących plików. Jeśli napotkasz pliki o tych samych nazwach, wybierz opcję "podmień".

Ostrzeżenie dotyczące pinów:
Jeśli nie masz podłączonych odpowiednich kabli do pinów, zachowaj ostrożność. Unikaj dotykania jakichkolwiek elementów przewodzących podczas działania systemu, aby uniknąć zwarcia (nie dotykaj ręką!). Jeśli chcesz przetestować działanie bez oddziaływania na piny, skorzystaj z wersji testowej. W tym celu przejdź do folderu bot_motion/do_testu i podmień odpowiednie pliki. Wersja testowa nie wpływa na piny, ale wypisuje odpowiednie komunikaty w konsoli.

Kompilacja plików w języku C:
Aby skompilować pliki w języku C, otwórz terminal i przejdź do folderu z plikami Django:

cd /home/orangepi/programowanie/WRbot/bot_motion

Następnie wpisz:

gcc -o jazda jazda.c -lwiringPi chmod +x jazda gcc -o hc_sensor hc_sensor.c -lwiringPi chmod +x hc_sensor

Konfiguracja połączenia Wi-Fi:

Włącz hotspot na swoim telefonie i połącz Orange Pi z siecią Wi-Fi telefonu. Upewnij się, że wszystkie inne połączenia internetowe na Orange Pi są wyłączone, tak aby urządzenie zapamiętało tylko połączenie z Twoim telefonem.

Teraz wszystko jest gotowe! Możesz uruchomić aplikację i cieszyć się jej działaniem. Możesz włączyć aplikację, wpisując 0.0.0.0:8000 w wyszukiwarce (oczywiście gdy serwer jest włączony) na samym Orange Pi. Możesz też połączyć się przy pomocy smartfona, wcześniej uzyskaj IP Orange Pi przez komendę w terminalu:

ifconfig

Gdy znasz IP, wpisz w wyszukiwarce na smartfonie wraz z portem, czyli przykładowo: 100.100.10.250:8000

Pamiętaj, jeśli masz jakiekolwiek pytania lub wątpliwości, daj nam znać. Chętnie Ci pomożemy!

Podstawowe komendy do obsługi Orange Pi 3 LTS i naszej aplikacji:

kurs-django-robot1-3-im1.jpg
  1. Sterowanie GPIO w terminalu:
    • Sprawdzanie statusu pinów GPIO:

      gpio readall

      Ta komenda pokaże Ci aktualny status wszystkich pinów GPIO

    • Ustawianie trybu pracy dla pinu:

      gpio mode 11 in/out/pwm/clock/up/down/tri

      Dzięki tej komendzie możesz ustawić tryb pracy dla wybranego pinu (w tym przypadku pin 11). Możliwe tryby to: wejście (in), wyjście (out), modulacja szerokości impulsu (pwm), zegar (clock), rezystor podciągający (up), rezystor opornika (down) oraz stan trzeci (tri).

    • Przykładowe ustawianie wartości dla pinu:

      gpio write 9 0

      Ta komenda ustawia wartość 0 dla pinu 9. Pamiętaj, aby wcześniej ustawić ten pin jako wyjście (output).


Modyfikacje w plikach:

  • Plik bot_motion/jazda.c:
    W tym pliku możesz dostosować ustawienia pinów oraz czas pulsacji dla silników krokowych, czyli w zasadzie szybkość obrotu w tym przypadku.

  • Plikbot_motion/hc_sensor.c:
    Tutaj masz możliwość zmiany częstotliwości, z jaką system będzie sprawdzał obecność przeszkody. Gdy przeszkoda zostanie wykryta, odpowiedni PIN zostanie ustawiony na wartość 1.

  • Plikbot_motion/alertPIN.py:
    W tym pliku możesz zmienić częstotliwość sprawdzania stanu wybranego PINu.

  • Plik bot_motion/views.py:
    Jeśli chcesz zmienić kamerę, z której korzysta aplikacja, możesz to zrobić w linii:

    cap = cv2.VideoCapture(1)

    Np. wartość 1 oznacza kamerę zewnętrzną. W zależności od portu USB jaki wybrałeś, my podłączyliśmy do tego pionowego pojedynczego portu.


Logi i autostart:

  • Czytanie logów z autostartu:
    Jeśli chcesz monitorować, co dzieje się podczas autostartu aplikacji, możesz skorzystać z informacji widocznych w pliku tekstowym cronlog:

    Jeśli nie chcesz zapisywać logów, wpisz w terminalu:

    crontab -e

    , a potem zmień:

    @reboot /home/orangepi/Desktop/start_project.sh >> /home/orangepi/Desktop/cronlog.txt 2>&1

    na

    @reboot /home/orangepi/Desktop/start_project.sh

    Jeśli nie chcesz funkcji autostartu aplikacji, usuń powyższą linie kodu.

  • Zakończenie wątku autostartu Django:
    Aby zakończyć działanie aplikacji Django uruchomionej podczas autostartu, wpisz:

    ps aux | grep "runserver"

    Znajdź odpowiednie procesy (na 99% dwa pierwsze) i zakończ, używając komendy:

    kill -9 PID

    gdzie PID to numer procesu. Czyli dla przykładowego procesu o numerze 1435:

    kill -9 1435
  • Potem ponowne uruchomienie to standardowe komendy:
cd /home/orangepi/programowanie/WRbot/ source bot_env/bin/activate python manage.py runserver 0.0.0.0:8000

Mamy nadzieję, że ten przewodnik pomoże Ci w pełni wykorzystać możliwości naszej aplikacji na Orange Pi. Jeśli masz jakiekolwiek pytania, śmiało pytaj!

Category: Kurs Django Robot