Author Occitan | Last edit 25/06/2023 by Occitan
Sécurité, Arduino UNO, Mesure inertielle (BNO055) Dispositif_de_s_curit_enregistrement_de_zone_de_tir_chasse_battue.jpg Création
L'idée de ce dispositif est née suite à un grave accident de chasse au gros gibier où une promeneuse a été tuée. Le plus souvent ce sont d'ailleurs les chasseurs eux-mêmes qui sont les victimes.
Lors de ces parties de chasse en effet des balles sont utilisées, balles qui ont des portées létales jusqu'à plusieurs centaines de mètres. Bien sûr des procédures rigoureuses sont appliquées par les chasseurs pour garantir leur sécurité et celle d'éventuels promeneurs qui n'auraient pas vu les panneaux "chasse en cours" et qui se trouveraient dans la zone de chasse ou à proximité.
Pour ce qui nous concerne ici, on peut résumer ces mesures de sécurité par
- la règle d'exclusion des 30° qui minimise le risque d'atteindre les autres chasseurs par ricochet
- la règle du tir fichant qui garantit que la balle se fichera dans le sol
Ces mesures de sécurité sont appliquées par chaque chasseur à l'endroit du poste où il est affecté. La règle des 30 degrés limite la zone de tir à une portion de l'azimut (direction horizontale) alors que la règle du tir fichant limite l'élévation de la ligne de visée (site). Si le chasseur change de poste il doit évidemment re-déterminer une zone de tir sécurisé.
Nous allons voir comment l'utilisation d'un circuit de mesure inertielle MEMs permet d'enregistrer la zone de tir autorisée et de signaler ensuite au chasseur toute sortie de cette zone de tir.
Figure 1: On rappelle ici les définitions des limites en azimut et en élévation pour que la sécurité soit assurée.
Les zone d'exclusion de 30° par rapport à la ligne des chasseurs postés permet de limiter les risques de les atteindre par ricochet sur des obstacles (arbres, rochers).
Le repérage de ces zones se fait lors de la prise de poste, loin de tout stress et de l'excitation de la chasse.
Figure 2: Dans cette figure on explique que la description de la zone de tir autorisée est une simple fonction de l'élévation en fonction de l'azimut. L'azimut est limité par les deux zones de 30°. L'élévation maximale pour que le tir soit fichant dépend de l'azimut. Quand l'azimut pointe vers un sol nu à l'horizontale l'élévation est limitée par le risque de ricochet. Quand l'azimut pointe vers un pied de colline l'élévation peut être relevée. La présence d'une haie rapprochée oblige à abaisser l'élévation pour garantir qu'aucun tir ne sera effectué à travers la haie, même lorsqu'un animal de haute taille se présente.
Mon dispositif de sécurité est justement basé sur l'enregistrement de l'élévation en fonction de l'azimut.
Photo 3: Cette photo illustre une situation où un accident peut se produire. Dans la direction de ces sangliers il faut absolument limiter l'élévation pour que le tir soit fichant à l'avant du sanglier au premier plan. Le sanglier à l'arrière plan ne peut être tiré sans risque mortel pour un promeneur à plusieurs centaines de mètres dans la forêt.
Afin de valider le principe, j'ai réalisé une maquette constituée par un "fusil photographique" auquel j'ai adjoint le système de repérage de la ligne de visée (circuit BNO055 + carte Arduino + buzzer).
Les photos 1 et 2 montrent les différents éléments de cette maquette:
1) Un smart phone fixé sur le fusil en bois permet d'enregistrer ce que voit et entend le chasseur lors de l'enregistrement et lors de la phase de chasse. L'objectif du smartphone est situé à l'endroit où se trouve l’œil du chasseur. Cet objectif voit le guidon du fusil en même temps que l'endroit précis visé dans le paysage.
2) Le système de repérage inertiel de la ligne de visée se compose
- d'un petit circuit imprimé portant l'unité de mesure inertielle BNO055
- d'une carte de contrôle (Arduino UNO) reliée au BNO055 par un petit câble (alimentation + interface I2C).
3) J'ai également ajouté un buzzer à cette carte. Ce buzzer produit tous les signaux sonores nécessaires pour le suivi de l'enregistrement et de la phase de chasse.
Nota: A l'origine j'aurais souhaité allonger la liaison I2C de façon que seul le petit circuit imprimé du BNO055 se trouve fixé au fusil, la carte de contrôle étant logée dans une poche de veste. Malheureusement la liaison I2C supporte mal l'allongement de la liaison. Pour un développement futur il faudrait donc plutôt utiliser la liaison UART du circuit.
Le code Arduino a été réalisé de façon à ce qu'aucun bouton poussoir ne soit nécessaire pendant l'utilisation, si ce n'est celui de la mise ON/OFF sur le boîtier. C'est le circuit BNO055 lui-même qui sert à commander les différentes actions, par des inclinaisons particulières. Les sons produits par le buzzer permettent de suivre les opérations.
La vidéo ci-contre montre les deux modes de fonctionnement enchaînés. Pour mieux se rendre compte de la précision, on a choisi de pointer un bord de toit plutôt qu'une vraie scène de chasse.
Mode enregistrement
On enregistre l'élévation en fonction de l'azimut, avec la procédure suivante:
- Vers le départ gauche de la zone d'azimut, on élève la ligne de visée à 45°
- On entend 3 bips pour indiquer que l'on vient de passer en mode enregistrement.
- On dispose alors de 3 secondes pour aller se positionner précisément au début de la limite gauche de l'azimut et de l'élévation correspondante.
- L'enregistrement démarre au moment où un bip isolé se produit. On dispose alors de 15 secondes pour arriver à la fin de la zone d'enregistrement, à sa droite. On attend le bip de fin en continuant à pointer précisément la fin de zone.
- Lorsqu'après 15 secondes le second bip isolé retentit, l'enregistrement est terminé et le système passe alors en mode chasse.
Mode chasse
C'est très simple. Tant que l'on reste à l'intérieur de la zone angulaire enregistrée, le buzzer reste silencieux. Dès que l'on sort de cette zone, le buzzer avertit le chasseur qu'il est hors zone et qu'il ne doit pas tirer.
Attention: Si le chasseur se déplace et change de poste il doit refaire un nouvel enregistrement !
L'élément clef est un circuit intégré BNO055 de Bosch qui est un capteur 3 axes réalisé en Technologie MEMS (Micro Electro-Mechanical System).
Il permet la mesure inertielle des accélérations selon les 3 axes et des rotations autour des 3 axes. Il est également équipé d'un magnétomètre 3 axes qui permet l'orientation dans le champ magnétique terrestre. Ses caractéristiques sont listées figure 2.
J'ai déjà utilisé ce circuit pour relever le défi de mesurer la vitesse de rotation de la terre de façon purement inertielle (Mesure de la vitesse de rotation de la terre avec un gyromètre BOSCH BNO055).
Le circuit BNO055 est monté sur un petit circuit imprimé qui comporte également un régulateur de tension et un circuit d'interface:
http://www.robot-electronics.co.uk/files/BNO055-schematic.pdf
Ici nous l'avons utilisé avec l' interface I2C, après avoir fermé le pontet de sélection LK1.
De façon pratique, pour configurer et acquérir les mesures à partir d'une carte Arduino UNO, on a besoin d'un exemple type et de la notice du BNO055.
Cette notice peut être téléchargée ici: https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bno055-ds000.pdf
D'autre part, le vendeur du circuit (Gotronic) m'a fourni un exemple de programme pour acquérir les angles d'Euler, sans bibliothèque particulière, juste en s'aidant de la notice: https://www.gotronic.fr/userfiles/www.gotronic.fr/files/BNO055.ino
Dans la partie gyromètre qui nous intéresse ici, une masse d’épreuve est mise en vibration et réagit aux rotations grâce à la force de Coriolis (https://www.youtube.com/watch?v=KiJ9xr8_GSI), comme le pendule de Foucault. En quelque sorte c’est un pendule de Foucault dans un circuit intégré…. Mais les dimensions ont été fantastiquement réduites, comme on peut le voir sur la figure 1.
Ici on a besoin de la mesure de l'évolution angulaire entre deux instants (en °). Cette mesure est obtenue par intégration des vitesses angulaires. Ce qui est remarquable avec ce circuit, c'est que cette intégration est réalisée dans le circuit lui-même. Cela augmente considérablement la facilité d'utilisation et surtout la précision.
Pour notre application, la configuration consiste principalement à définir le mode de fonctionnement parmi les différents modes tabulés figure 2.
On choisit un mode Fusion IMU (Inertial Measurement Unit) qui utilise une combinaison de capteurs (accéléromètres, gyromètres) pour fournir 3 angles caractérisant l'évolution d'un repère par rapport à une position de référence. C'est un mode purement inertiel qui n'utilise pas la boussole qui serait potentiellement perturbée par les masses métalliques du fusil. La valeur à écrire dans le registre de commande OPR_MODE est donnée dans le tableau figure 3, soit la valeur binaire xxxx1000 ou soit 8 en hexadécimal (voir code arduino).
Dans ce mode la position de référence est définie au moment le la mise ON électrique du circuit. Toute évolution par rapport à ce repère est donnée par 3 angles; Lacet, roulis, tangage ou Head, Roll, Pitch. (voir figure 4).
D'autres paramètres comme le choix des unités sont explicités dans les commentaires du code Arduino donné ci-après.
C'est une option que je n'ai pas considérée en premier à cause du risque potentiel de perturbation par les masses métalliques du fusil. Cependant l'utilisation du mode inertiel pur présente le risque de dérives angulaires, en azimut mais également en site et roulis.
En effet nous habitons sur un immense manège (la terre) qui tourne de 15° chaque heure. Ce vecteur rotation se projette sur les 3 axes XYZ selon l'orientation du BNO055.
Ce qui paraît surprenant lorsque l'on fait un test, c'est qu'en mode fusion IMU (voir précédemment), on n'observe rien tant que le circuit reste fixe. La valeur de l'azimut n'évolue pas d'un dixième de degré au bout d'une heure, même si on aligne l'axe Z avec l'axe de rotation de la terre. ...
En fait, l'explication est simple: la vitesse de rotation de la terre est bien inférieure au pas de quantification du gyromètre configuré en mode fusion.
Par contre, si le circuit est agité autour de ses axes par un chasseur qui bouge, le signal du gyromètre sortira du pas de quantification et statistiquement la rotation terrestre aura partiellement une influence. Ainsi par exemple l'azimut pourra se trouver décalé de quelques degrés....
En choisissant l'option magnétique, par exemple le mode ACCMAG (accéléromètres + boussole) , le gyromètre est remplacé par la boussole pour déterminer l'azimut. Ainsi, si le champ magnétique même perturbé localement, reste stable, on ne notera aucune dérive de l'azimut. De même le tilt et le roulis ne seront plus influencés par la rotation terrestre, mais resteront calés sur la référence horizontale.
En conclusion, dans la mesure où le capteur BNO n'est pas directement placé sur le canon du fusil, il est probable que l'option ACCMAG ( boussole + accéléromètres) soit la plus fiable. Je ne l'ai pas vérifié. Ça reste à faire.
Le point de départ est le fichier exemple fourni par Gotronic pour la lecture des angles d'Euler.
J'ai rajouté une partie de code pour réaliser les fonctions d'enregistrement et d'utilisation en mode chasse.
J'ai essayé de mettre des commentaires, mais si besoin je peux fournir des explications supplémentaires.
Fichiers ino et pdf couleur:Dispositif_de_s_curit_enregistrement_de_zone_de_tir_BNO055_Fusil_wikifab.ino
Dispositif_de_s_curit_enregistrement_de_zone_de_tir_BNO055_fusil_wikifab.pdf
Le but ici était de démontrer que l'on peut réaliser simplement l'enregistrement d'une zone angulaire de sécurité avec un circuit à bas coût, du type de ceux utilisés dans les manettes de jeux. Ce principe a été clairement démontré ici. Je ne chercherai pas à aller plus loin.
Cependant, par rapport à ce qui a été réalisé ici, on pourrait envisager quelques prolongements.
Tout d'abord finaliser l'option inertiel IMU versus boussole + accéléromètres ACCMAG (voir configuration du BNO055)
Trouver ensuite une liaison qui permet de relier le circuit du BNO055 avec la carte contrôleur. En effet la liaison I2C que j'ai utilisée ne convient pas pour une longueur de câble typique de 1.5 mètre. Il faudrait donc choisir plutôt l'interface série UART en enlevant le pontet I2C/UART du circuit.
La carte contrôleur pourrait se loger dans une poche intérieure de la veste de chasse et le câble pourrait circuler dans une manche, bien à l'abri de tout accrochage par la végétation lors des déplacements.
Ensuite on pourrait également facilement compléter le dispositif par d'autres fonctions utiles pour un chasseur, par exemple la mesure des angles de 30° par rapport à la ligne des chasseurs ou l'enregistrement du site et de l'azimut au moment des tirs effectifs pour une vérification apostériori...
Enfin, notons que ce genre de système de repérage inertiel, après miniaturisation, pourrait être inclus dans les lunettes de visées vendues pour les fusils de chasse....
Ma motivation pour cette réalisation est venue suite à un fait divers (accident de chasse ). J'ai pensé à ce type de solution car j'avais déjà utilisé le circuit BNO055 pour relever le défi de mesurer la vitesse de rotation de la terre de façon purement inertielle ( Mesure de la vitesse de rotation de la terre avec un gyromètre BOSCH BNO055 ).
Encore une fois ce circuit surtout utilisé dans les manettes de jeu et coutant moins de 25 Euros m'a permis de réaliser facilement un dispositif de repérage inertiel de la ligne de visée d'un fusil de chasse. Après finalisation, ce dispositif pourrait constituer un élément de sécurité précis, fiable et pratique pour réduire le risque d'accidents de chasse.
Je ne sais pas si les chasseurs seraient vraiment intéressés par ce type de dispositif de sécurité qui viendrait en complément des mesures de sécurité qu'ils mettent déjà en œuvre lors des battues au grand gibier. Par contre je me suis bien amusé à le concevoir et c'est l'essentiel pour moi....
Et enfin, et c'est une forme de récompense pour moi, je viens de constater sur Internet qu'une entreprise française a breveté et développé commercialement pratiquement le même principe ! ( https://website-protect-hunt.emts-groupe.fr/ )
fr none 0 Published
You entered an invalid page name, with one or many of the following characters :
< > @ ~ : * € £ ` + = / \ | [ ] { } ; ? #