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.
RaspberryPi3B+
Python 3.7.3 oder höher
Roboter und IoT-Geräte, die zur seriellen Bluetooth-Kommunikation fähig sind (Die Möglichkeiten, eine Verbindung herzustellen, sind noch sehr begrenzt, aber das Ziel besteht darin, in Zukunft verschiedene Geräte verbinden zu können.)
Da es sich um einen Heimserver handelt, verbinden Sie Raspeye und die Clientseite mit demselben Netzwerk.
(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.)
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
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.
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.
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.
Als Ergebnis der Recherche und des Lesens verschiedener Dinge dachte ich an einen solchen Mechanismus.
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.
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.
Die Anwendung sieht so aus.
Sie können es in Aktion unter diesem Link sehen! (Bildqualität ist niedrig) https://youtu.be/UL7yFSde5Hw
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!