[PYTHON] "1/2" Ich mache eine einfache Webanwendung für den Roboterbetrieb. "Raspberry Pi 3B + und Django Channels"

Intro

Freut mich, dich kennenzulernen. Es ist s_rae. Ich lerne hart Programmieren.

Ich habe kürzlich einen einfachen Roboter gebaut. Es ist ein Roboter mit zwei Rädern und einem Bluetooth-Modul.

Lassen Sie uns eine Schnittstelle erstellen, die den Roboter als Praxis der Anwendungsentwicklung bedienen kann! Ich dachte.

Ich habe ein Backend auf RaspberryPi3B + mit Django + Django-Kanälen erstellt, damit ich mit PyBluez Bluetooth-Nachrichten senden kann.

Es ist noch nicht fertig, aber bitte werfen Sie einen Blick darauf, wenn Ihnen der Prozess zur Hälfte nichts ausmacht. Bitte beachten Sie auch, dass dies etwas unnatürlich sein kann, da Ihre Muttersprache nicht Japanisch ist.

Versuch

Dinge notwendig

(Informationen zur Installation des Betriebssystems finden Sie auf der offiziellen Website von Raspberry Pi. Sie können es problemlos mit dem Raspberry Pi Imager installieren.)

Installationsmethode

Bitte greifen Sie zunächst mit ssh auf Razpai zu. Ich benutze Linux Shell (Bash).

$ ssh pi@Raspeye IP-Adresse

Bitte klonen Sie aus dem Repository.

$ cd ~
$ git clone https://github.com/samanthanium/dullahan_local.git
$ cd dullahan_local

Bitte installieren Sie redis.

$ wget http://download.redis.io/releases/redis-6.0.5.tar.gz
$ tar xzf redis-6.0.5.tar.gz
$ cd redis-6.0.5
$ make

Laden Sie das gewünschte Paket herunter.

$ pip install -r requirements.txt

Suchen Sie die Projekteinstellungen.py.

$ cd dullahan

Geben Sie die Raspeye-IP-Adresse in ALLOWED_HOSTS in settings.py mit Ihrem bevorzugten Texteditor ein.

settings.py


...
ALLOWED_HOSTS = ['Raspeye IP-Adresse']
...

Versuchen Sie abschließend, den Testserver zu starten.

$ cd ../ #~/dullahan_local

$ python manage.py migrate

$ redis-server &
$ python manage.py runserver IP-Adresse:8080 &
$ python manage.py runworker background-tasks

Erstellungsprozess

Zielsetzung

  1. Verbinden Sie Raspeye und Roboter mit Bluetooth
  2. Zeigen Sie auf der Client-Seite einen schönen Bedienbildschirm an
  3. Bedienen Sie den Roboter irgendwie in Echtzeit

Wenn Sie dies bisher tun können, wird die erste Stufe erfolgreich sein! Ich dachte.

Da ich gerade anfing, Python zu lernen, entschied ich mich trotzdem, es in Python zu machen.

Untersuchungsphase

Ich dachte, was ich machen wollte, ähnelte einem Chat-System (?). Es fühlt sich an, als würden der Roboter und die Client-Seite Nachrichten senden und empfangen.

IMG_20200702_192959120.jpg

Möglicherweise können Sie hier das beliebte WebSocket-Protokoll verwenden! Ich dachte.

WebSocket ist eine Vollduplex-Kommunikation, die über TCP stattfindet. Die Kommunikation bleibt erhalten, anstatt jedes Mal die Verbindung zu trennen, wenn Sie eine Nachricht wie HTTP senden.

Django Channels erweitert das HTTP-basierte Django-Framework um WebSocket-Kommunikation.

Ich fand heraus, dass die Verwendung von Django- und Django-Kanälen es HTTP ermöglicht, eine saubere Schnittstelle an den Client und WebSocket zu übertragen, um Nachrichten in Echtzeit auszutauschen.

Wenn Sie eine WebSocket-Nachricht von der Clientseite erhalten, sendet Django Channels die Nachricht an die Consumer-Klasse (die Klasse, die die Nachricht verarbeitet). Es ist auch möglich, eine Gruppe mit Verbrauchern zu erstellen und Nachrichten innerhalb dieser Gruppe zu teilen.

Wie es funktioniert

Als Ergebnis der Recherche und des Lesens verschiedener Dinge dachte ich an einen solchen Mechanismus.

IMG_20200702_172226007.jpg

Der Verbraucher, der die Nachricht auf der Clientseite verarbeitet, sendet die Nachricht an den Hintergrundarbeiter, der den Verbraucher des Roboters hat.

Der Roboterverbraucher sendet eine weitere Nachricht über Bluetooth an den Roboter. Wenn Sie eine Nachricht von einem Roboter erhalten, erfolgt dies fast in umgekehrter Reihenfolge.

Was ich hier notiert habe ist:

Mithilfe eines Hintergrundarbeiters können Sie die Sensordaten des Roboters kontinuierlich abrufen.

Wenn Sie der Gruppe einen Roboter hinzufügen, wird dieselbe Nachricht möglicherweise mehrmals an den Roboter gesendet, also habe ich es so gemacht. Dies ist eines von vielen Dingen, die verbessert werden müssen.

Ergebnis

Die Anwendung sieht so aus.

Startbildschirm

11-dul.png

Geräteregistrierungsbildschirm

3-dul.png

Steuerbildschirm

6-dul.png

+ Roboter

Sie können es in Aktion unter diesem Link sehen! (Bildqualität ist niedrig) https://youtu.be/UL7yFSde5Hw

Impressionen

Sowohl Python als auch Django waren neu für mich, also ist es eine Schande, dass ich herumgespielt habe, um sie zu machen.

Ich dachte, ich sollte es irgendwie verschieben, aber es war schwierig, den Code später noch einmal zu lesen.

Ich werde weiterhin verschiedene Dinge reparieren und Funktionen hinzufügen.

Aber ich war sehr glücklich, als sich der Roboter bewegte!

Danke, dass Sie so weit gelesen haben!

Recommended Posts

"1/2" Ich mache eine einfache Webanwendung für den Roboterbetrieb. "Raspberry Pi 3B + und Django Channels"
Ich habe eine WEB-Bewerbung bei Django gemacht
[Für Anfänger] Ich habe mit Raspberry Pi einen menschlichen Sensor erstellt und LINE benachrichtigt!
Erstellen Sie eine WEB-Überwachungskamera mit Raspberry Pi und OpenCV
Ich habe versucht, Raspeye und conect + mit der Web-API zu verbinden
Ich habe einen Ressourcenmonitor für Raspberry Pi mit einer Tabelle erstellt
(Für Anfänger) Versuchen Sie, mit Django eine einfache Web-API zu erstellen
Ich habe mit Razpai einen Webserver erstellt, um Anime zu schauen
Machen Sie einen einfachen CO2-Inkubator mit Raspberry PI und CO2-Sensor (MH-Z14A)
Startete eine Webanwendung auf AWS mit Django und wechselte Jobs
Erstellen Sie mit Raspberry Pi einen WLAN-Ethernet-Konverter und einen einfachen Router
Ich möchte eine Webanwendung mit React und Python Flask erstellen
Erklären Sie vorsichtig den Prozess der Erstellung einer einfachen Überwachungskamera ohne Server mithilfe von Raspeye, Gmail API und Line API
[Raspberry Pi] Fügen Sie ein Thermometer und ein Feuchtigkeitsmessgerät hinzu
Ich habe versucht, das Webanwendungs-Framework zu vergleichen
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver --2 PHP Einführung
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver. 1. Apache-Einführung
Ich habe versucht, Flask auf Raspberry Pi 3 Model B + mit Nginx und uWSGI auszuführen
Die Geschichte der Erstellung einer Webanwendung, die umfangreiche Lesungen mit Django aufzeichnet
Ich habe versucht, mit Raspeye + Tact Switch eine Schaltfläche für Slack zu erstellen
Versuchen Sie, eine Webanwendung mit Vue.js und Django (Mac Edition) zu erstellen - (1) Umgebungskonstruktion, Anwendungserstellung