Ravi de vous rencontrer. C'est s_rae. J'étudie la programmation dur.
J'ai récemment fabriqué un robot simple. C'est un robot à deux roues et un module Bluetooth.
Créons une interface qui peut faire fonctionner le robot comme une pratique de développement d'applications! J'ai pensé.
J'ai créé un backend sur RaspberryPi3B + avec Django + Django Channels afin de pouvoir envoyer des messages Bluetooth avec PyBluez.
Il n'est toujours pas terminé, mais jetez un œil si cela ne vous dérange pas le processus à mi-chemin. Notez également que cela peut être un peu artificiel car votre langue maternelle n'est pas le japonais.
--Robots et appareils IoT capables de communiquer en série Bluetooth (Les choses qui peuvent être connectées sont encore très limitées, mais l'objectif est de pouvoir connecter divers appareils à l'avenir.)
(Consultez le site officiel de Raspberry Pi pour savoir comment installer le système d'exploitation. Vous pouvez facilement l'installer à l'aide de Raspberry Pi Imager.)
Tout d'abord, veuillez accéder à Razpai avec ssh. J'utilise le shell Linux (bash).
$ ssh pi@Adresse IP Raspeye
Veuillez cloner à partir du référentiel.
$ cd ~
$ git clone https://github.com/samanthanium/dullahan_local.git
$ cd dullahan_local
Veuillez installer 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
Téléchargez le package requis.
$ pip install -r requirements.txt
Recherchez les paramètres du projet.py.
$ cd dullahan
Entrez l'adresse IP Raspeye dans ALLOWED_HOSTS dans settings.py à l'aide de votre éditeur de texte préféré.
settings.py
...
ALLOWED_HOSTS = ['Adresse IP Raspeye']
...
Enfin, essayez de démarrer le serveur de test.
$ cd ../ #~/dullahan_local
$ python manage.py migrate
$ redis-server &
$ python manage.adresse IP de py runserver:8080 &
$ python manage.py runworker background-tasks
Si vous pouvez le faire jusqu'à présent, la première étape sera réussie! J'ai pensé.
De plus, comme je commençais tout juste à étudier Python, j'ai quand même décidé de le faire en Python.
Je pensais que ce que j'essayais de faire était similaire à un système de chat (?). On a l'impression que le robot et le côté client envoient et reçoivent des messages.
Vous pourrez peut-être utiliser le protocole WebSocket populaire ici! J'ai pensé.
WebSocket est une communication en duplex intégral qui a lieu via TCP. Il maintient la communication au lieu de se déconnecter chaque fois que vous envoyez un message comme HTTP.
Django Channels ajoute la communication WebSocket au framework Django basé sur HTTP.
J'ai trouvé que l'utilisation des canaux Django et Django permet à HTTP de transférer une interface propre vers le client et WebSocket pour échanger des messages en temps réel.
Lorsque vous recevez un message WebSocket du côté client, Django Channels envoie le message à la classe consommateur (la classe qui traite le message). Il est également possible de créer un groupe avec des consommateurs et de partager des messages au sein de ce groupe.
À la suite de recherches et de lectures diverses, j'ai pensé à un tel mécanisme.
Le consommateur de traitement de message côté client envoie le message à un travailleur d'arrière-plan avec un consommateur de robot.
Le consommateur du robot envoie un autre message au robot via Bluetooth. Lorsque vous recevez un message d'un robot, cela se fait presque dans le sens inverse.
En utilisant un travailleur d'arrière-plan, vous pouvez obtenir les données du capteur du robot en continu.
Si vous ajoutez le robot au groupe, le même message peut être envoyé au robot plusieurs fois, donc je l'ai fait comme ça. C'est l'une des nombreuses choses qui doivent être améliorées.
L'application ressemble à ceci.
Vous pouvez le voir en action sur ce lien! (La qualité d'image est faible) https://youtu.be/UL7yFSde5Hw
Python et Django étaient tous les deux nouveaux pour moi, c'est donc dommage que je me suis dérangé pour les créer.
J'ai pensé que je devrais le déplacer d'une manière ou d'une autre, mais il était difficile de relire le code plus tard.
Je vais continuer à réparer diverses choses et à ajouter des fonctions.
Mais j'étais très heureux quand le robot a bougé!
Merci d'avoir lu jusqu'ici!