Serveur¶
- Auteur
Gilles Lecorsier
- Blog
- Association
BricoLab Groslay(95)
- Entity
- Page principale
- Création
01/04/2023
- Maj
11/07/2024
Pourquoi un serveur web ?¶
La fonction principale de notre serveur est d’héberger l’interface web et de communiquer avec le bras. Ainsi, pour que notre interface web soit accessible nous avons besoin de notre propre serveur. Nous aurons ainsi les échanges entre un client et un serveur web.
Mise en place du dossier Serveur¶
Passage à un serveur Python/Flask 4
Créer le dossier robot2brasserveur
Dans le dossier robot2brasserveur, créer dossiers templates et static demandés pour le fonctionnement
du Serveur Flask.
Procédure de copy d’environnement virtuel venv 5¶
Signature des différents ports série¶
Ce résultat diffère suivant les ordinateurs bien sûr !
Version Python¶
COM28: Arduino Mega 2560 (COM28)
COM13: USB-SERIAL CH340 (COM13)
FTDI : USB Serial Port
CP210x Silicon Labs CP210x USB to UART Bridge
COM21: Arduino Uno (COM21)
BT : Lien série sur Bluetooth standard
émulateur com0com : com0com - serial port emulator
Avertissement
Ce n’est pas le port série de l’ARDUINO qui est utilisé pour le dialogue entre le serveur et le robot
Dans notre projet, on ne devrait garder que la liaison Bluetooth pour communiquer entre serveur web et la carte ARDUINO du robot. Pour des besoin de mise au point, on conserve également dans un premier temps les FTDI et CP210x. Ces 3 modules (BT, FTDI et Silicon Labs) sont connectés aux broches 8 et 9 de l’Arduino (MySerial).
Avertissement
le BT HC05 crée 2 ports série !!!
Bluetooth HC-05 module - why are there two COM ports? 7
This answer in Microsoft Technet sounds good:
when connecting your terminal program to the first you are actually instructing Windows to attempt
to establish the Bluetooth connection to the remote paired device, and if the connection is
established the RFCOMM channel will be opened for the exchange of data
when connecting your terminal program to the second you are actually instructing Windows to load
the SPP SDP record and to remain waiting for incoming connections from the remote paired device.
Le fournisseur est : Microsoft
Adaption pour le code ARDUINO¶
Trame avant modif:
received: 90,96,132,132,90,17
Trame après modification:
received: @90,96,132,132,90,17
Avertissement
Le mot received + l’espace ne font pas partie de la trame.
Passage à un serveur Python/Flask¶
Serveur web avec Python Flask 8
Lancer une fennêtre de commande DOS dans le dossier brasrobot2023serveur
.venv\Scripts\activate
python server.py
Dans la fenêtre navigateur : localhost:8300
Premier script serveur¶
Note
Lancement de server
ATTENTION Travailler dans .venv : commande d’activation : .venv\Scripts\activate
Lancer le serveur : python server.py
Le serveur est alors accessible localhost:8300
Commande pour créer un environnement .venv:
python -m venv /path/to/new/virtual/environment
Exemple
n'importe où : python -m venv c:\tmp\monEnvironnementVirtuel
Dans un dossier en particulier avec un chemin relatif python -m venv monEnv
pour nous
python -m venv .venv
Ajout websocket dans Flask¶
venv : doc officielle : venv — Création d’environnements virtuels 9
Ajout websocket en python dans le serveur Flask. How to
Voir Flask WebSocket 10
Installation websocket ok
Sélection automatique du port série¶
On liste:
requête Windows all serial ports
on tente un open timeout 0.2s liste des Ports valide pour récupérer les descriptions
on filtre, critères sur description:
("CP210x" in element['description']) \
or ("USB Serial Port" in element['description']) \
or ('sur Bluetooth' in element['description'] ):
on teste:
pour chaque éléments de listeValide, on essaie une ouverture, on écoute 2s
On espère la phrase TAG: ROBOT_TAG_PHRASE = "Bras Robot 2023 v1.0"
Optimization:
On ne parcourt qu'une seule fois la liste des ports com sans la filtrer, on ouvre, on cherche
directement la passe phrase.
Transfert des commandes ws vers serial¶
Ne pas oublier de passer en mode WEB
Vérification : sur le port de debug
Annexes¶
Tables et index¶
Weblinks¶
- 1
- 2
- 3
https://bitbucket.org/robotdeuxbras/robot2brasdocsources/src/master/
- 4
https://robotdeuxbras.bitbucket.io/server.html#passage-a-un-serveur-python-flask
- 5
- 6
https://bitbucket.org/robotdeuxbras/robot2brasserveur/src/master/
- 7
https://stackoverflow.com/questions/66857106/bluetooth-hc-05-module-why-are-there-two-com-ports
- 8
https://nsi-snt.ac-normandie.fr/IMG/pdf/pythonflaskpresentation.pdf
- 9
- 10