[PYTHON] "1/2" Je crée une application Web simple pour le fonctionnement du robot. «Chaînes Raspberry Pi 3B + et Django»

Intro

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.

Procès

Les choses nécessaires

--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.)

Méthode d'installation

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

Processus de création

fixer un objectif

  1. Connectez Raspeye et robot avec Bluetooth
  2. Afficher un bel écran d'opération côté client
  3. Faites fonctionner le robot en temps réel

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.

Phase d'enquête

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.

IMG_20200702_192959120.jpg

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.

Comment ça fonctionne

À la suite de recherches et de lectures diverses, j'ai pensé à un tel mécanisme.

IMG_20200702_172226007.jpg

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.

Ce que j'ai noté ici est:

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.

résultat

L'application ressemble à ceci.

Écran d'accueil

11-dul.png

Écran d'enregistrement de l'appareil

3-dul.png

Écran de contrôle

6-dul.png

+ Robot

Vous pouvez le voir en action sur ce lien! (La qualité d'image est faible) https://youtu.be/UL7yFSde5Hw

Impressions

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!

Recommended Posts

"1/2" Je crée une application Web simple pour le fonctionnement du robot. «Chaînes Raspberry Pi 3B + et Django»
J'ai fait une application WEB avec Django
[Pour les débutants] J'ai fait un capteur humain avec Raspberry Pi et notifié LINE!
Créez une caméra de surveillance WEB avec Raspberry Pi et OpenCV
J'ai essayé de connecter Raspeye et conect + avec l'API Web
J'ai créé un moniteur de ressources pour Raspberry Pi avec une feuille de calcul
(Pour les débutants) Essayez de créer une API Web simple avec Django
J'ai créé un serveur Web avec Razpai pour regarder des anime
Fabriquez un incubateur à CO2 simple à l'aide de Raspberry PI et d'un capteur de CO2 (MH-Z14A)
Lancement d'une application Web sur AWS avec django et modification des tâches
Créez un convertisseur Ethernet LAN sans fil et un routeur simple avec Raspberry Pi
Je souhaite créer une application Web en utilisant React et Python flask
Expliquez doucement le processus de création d'une simple caméra de surveillance sans serveur à l'aide de Raspeye, de l'API Gmail et de l'API Line
[Raspberry Pi] Ajouter un thermomètre et un hygromètre
J'ai essayé de comparer le cadre d'application Web
Source compilez Apache2.4 + PHP7.4 avec Raspberry Pi et construisez un serveur Web --2 introduction PHP
Source compilez Apache2.4 + PHP7.4 avec Raspberry Pi et créez un serveur Web ―― 1. Introduction à Apache
J'ai essayé d'exécuter Flask sur Raspberry Pi 3 Model B + en utilisant Nginx et uWSGI
L'histoire de la création d'une application Web qui enregistre des lectures approfondies avec Django
J'ai essayé de créer un bouton pour Slack avec Raspeye + Tact Switch
Essayez de créer une application Web avec Vue.js et Django (édition Mac) - (1) Construction d'environnement, création d'application