Nous fabriquons un drone aquatique autonome, ou comme je rêvais d'aider le Baïkal, mais je ne suis pas Gazprom. Partie 1

Bonjour, Habr!

J'habite près du Baïkal et j'y suis allé plusieurs fois. C'est un beau lac avec de l'air pur. Il y a quelques années, le lac a commencé à devenir pollué. Et donc j'ai pensé, pourquoi ne pas faire un drone avec des panneaux solaires, y mettre un moteur, un ordinateur neuronal avec YoloV3 (un réseau neuronal qui fournit la vision par ordinateur) avec une caméra stéréo, ajouter du GPS et lui apprendre à nettoyer le Baïkal hors ligne.

image

Sur Google, j'ai découvert qu'il y a deux raisons principales: les eaux usées sales et mal nettoyées de la ville d'Oulan-Oude et les vacanciers qui utilisent des détergents, qui à leur tour créent une forte concentration de nitrates et de phosphates sur la rive du lac Baïkal. Après une autre recherche sur Google, il s'est avéré que pour sauver le lac Baïkal, il fallait juste le nettoyer. Je pensais que je pouvais gérer une chose aussi délicate. J'ai donc commencé mon voyage en tant que constructeur de drones)
Le processus de nettoyage consiste à pomper l'eau à travers un filtre à eau conventionnel, qui est installé dans un système d'alimentation en eau courante. Le filtre consistera en un
oxyde d'aluminium. Sorbent est autorisé à utiliser dans le traitement de l'eau en Fédération de Russie. Cela filtrera les phosphates, ce qui permettra de faire pousser du spirogyre (l'algue qui submerge les plans d'eau). L'utilisation de ce sorbant permettra de changer uniquement le contenu du filtre et non du filtre lui-même, ce qui conduira à un processus de nettoyage moins cher. Lien vers un article sur l'utilisation de l'alumine active.

Le premier à qui j'ai parlé de mon idée était mon patron. C'était au printemps 2018. Il a aimé l'idée et donc en quelques jours il a dessiné un dessin 3D du drone. C'est la seule photo qui a été conservée. Sur la photo, un drone avec une batterie solaire et une bouée inférieure retirés.

image

Ensuite, nous avons trouvé un sponsor, mais il a reçu les dessins immédiatement tombés. De plus, le patron s'est également calmé lorsque j'ai proposé de le récupérer pour mon argent.

Janvier 2019 est arrivé et a quand même décidé de le faire. Mon oncle a accepté de m'aider. La première chose que j'ai achetée était des tuyaux en plastique ordinaires (pourquoi sont-ils si chers !!!) ainsi que des raccords, des revers, des pinces et des couvercles. Ensuite, nous avons pris une vieille baguette, percé des trous pour chaque manche et y avons vissé une feuille de contreplaqué. Les tuyaux ont pris un mètre avec un diamètre de 110 mm. Nous ne savions pas lesquels conviendraient à notre navire, nous les avons donc pris et, à l'avenir, nous devions déjà ajuster la capacité de charge nécessaire.

image

Ensuite, nous avons soudé un cadre métallique pour le moteur à partir de vieux morceaux de fer ordinaires qui traînaient dans le jardin. Un oncle a donné un moteur cassé du refroidissement du moteur Volga-3110. Après l'autopsie, il s'est avéré qu'un conder extincteur y avait été brisé. Après l'avoir remplacé, le moteur a fonctionné. Et notre radeau s'est transformé en bateau.

image

Le printemps est déjà arrivé et j'ai découvert le concours IT Start. Je me suis demandé pourquoi je ne devrais pas aller avec mon projet. Mais là, au début, les Moscovites m'ont dit que le drone qui nettoie le lac Baïkal n'est pas nécessaire, une sorte de but commercial est nécessaire, puis les habitants n'ont pas apprécié mon initiative. Le dernier jour du lancement informatique, nous avions déjà réussi à fabriquer une carrosserie pour l'électronique et un volant. La veille de la compétition, j'ai réussi à terminer un simple contrôle de vaisseau sur esp8266 sans retour. J'ai montré cette vidéo au concours:


Alors il a regardé à l'intérieur:

image

La batterie du système sans coupure a été présentée par une peseuse familière. Le moteur de direction a été trouvé quelque part par un oncle. J'ai dû acheter un filtre et une pompe (une pompe submersible donc située sous le navire dans le «nez») pour mon argent. Relais de voiture à 40 ampères.

Après la compétition, l'enthousiasme a diminué. Et en été, j'étudiais pas plus de 2 heures par semaine. La gestion collectée sur esp8266 avait un inconvénient: tout fonctionnait à travers une requête get dans une fonction similaire à une interruption, et si à ce moment une autre commande était envoyée, le pourcentage échouait et redémarrait, ce qui était visible à partir des données envoyées sur le port com. Et le pourcentage lui-même tombait constamment. Après avoir fouillé les sources Arduino et n'y avoir trouvé aucun registre (il s'avère que j'ai appris plus tard que les Chinois ont immédiatement écrit les fonctions de contrôle pour tous les modèles esp8266), j'ai décidé d'aller le plus simplement possible, à savoir acheter un trousseau de radio et écrire tous les contrôles sur atmega-88pa. La rétroaction de la position du gouvernail de direction a été effectuée sur deux ressorts, tirés par une résistance de 560 ohms à 5 V.Lorsque la barre en aluminium attachée au guide-moteur était dans la bonne position, a touché le ressort le plus proche, puis le sol est venu à la pin1 micron, tandis que la plus éloignée à la pin2.

image


Code source du firmware Atmega
/* * korabl.cpp * * Created: 24.07.2019 21:59:04 * Author :  */ #include <avr/io.h> #include "util/delay.h" # define F_CPU 8000000UL int p=0; int polozhenue = 0; void init_port(void) { DDRD|=(1<<2)|(1<<3); ///DDRB|=1<<1; } void po_4asovoi_on(void) { PORTD|=(1<<2)|(1<<3); } void po_4asovoi_off(void) { PORTD&=0b11110011; } void init_polozhenie(void) { po_4asovoi_on(); while(PIND&0x10); po_4asovoi_off(); p = 0; polozhenue = 0; } int main(void) { init_port(); p=0; /* Replace with your application code */ while (1) { if(PIND&0x10) { if ((p==1)||(p==2))///if(GPIOB->IDR&(1<<9)) { po_4asovoi_on(); _delay_ms(200); // HAL_TIM_Base_Stop_IT(&htim3); po_4asovoi_off(); p=0; } while(PIND&0x10) { PORTD|=(1<<1); _delay_ms(100); } } PORTB&=0xfc; if(PIND&0x20) { if ((p==2)||(p==0))///if(GPIOB->IDR&(1<<8)) { po_4asovoi_on(); while(PIND&0x80) { } //HAL_TIM_Base_Stop_IT(&htim3); po_4asovoi_off(); p=1; } } if(PIND&0x40) { if ((p==1)||(p==0))///if(GPIOB->IDR&(1<<7)) { po_4asovoi_on(); while(PINB&0x02) { } /// HAL_TIM_Base_Stop_IT(&htim3); po_4asovoi_off(); p=2; } } } } 

J'ai également décidé d'assembler le conducteur du moteur du moteur de direction sur 4 transistors (sur la photo, c'est un morceau brillant de phoners), mais après assemblage et test, il s'est avéré que le moteur ne se soucie pas du type de polarité qui lui vient, et j'ai abandonné cette idée.

Et maintenant fin septembre. Après les vacances, nous sommes allés l'exécuter. À la première tentative, il a commencé à couler. L'arrière du navire était lourd, et le scellant fuyait et de l'eau y était entrée. Le module radio est mort. Le lendemain, ils en ont acheté un nouveau et ont augmenté les tuyaux. Le navire a cessé de couler, mais dans des conditions de combat, le module radio n'a pris qu'un demi-mètre. J'ai dû faire une troisième tentative. Je google sources pour esp8266 et un programme pour smartphone ( grâce à une personne gentille ) et à la troisième tentative ça a valu


La batterie n'a duré que quelques minutes, il n'a donc pas été possible de la tirer sur le rivage.

C’est tout. Le code source final pour ESP8266 et refait pour atmega se trouve ici .

Source: https://habr.com/ru/post/fr471014/


All Articles