Hola Habr!
Vivo cerca de Baikal, y he estado allí muchas veces. Es un hermoso lago con aire limpio. Hace unos años, el lago comenzó a contaminarse. Y entonces pensé, ¿por qué no hacer un dron con paneles solares, ponerle un motor, una computadora neuronal con YoloV3 (una red neuronal que proporciona visión por computadora) con una cámara estéreo, agregar GPS y enseñarle cómo limpiar Baikal fuera de línea.

Buscando en Google, descubrí que hay dos razones principales: las aguas residuales sucias y mal limpiadas de la ciudad de Ulan-Ude y los turistas que usan detergentes, que a su vez crean una alta concentración de nitratos y fosfatos en la orilla del lago Baikal. Después de otra búsqueda en Google, resultó que para salvar el lago Baikal, solo necesita ser limpiado. Pensé que podría manejar algo tan complicado. Entonces comencé mi viaje como constructor de drones)
El proceso de limpieza consiste en bombear agua a través de un filtro de agua convencional, que se instala en un sistema de suministro de agua corriente. El filtro consistirá en un activo
óxido de aluminio Sorbent tiene permisos para su uso en el tratamiento del agua en la Federación de Rusia. Esto filtrará los fosfatos, lo que hace posible cultivar espirogira (el alga que inunda los cuerpos de agua). El uso de este sorbente permitirá cambiar solo el contenido del filtro y no el filtro en sí, lo que conducirá a un proceso de limpieza más barato.
Enlace a un artículo sobre el uso de alúmina activa.El primero que conté sobre mi idea fue mi jefe. Fue en la primavera de 2018. Le gustó la idea y, en unos días, dibujó un dibujo en 3D del dron. Esta es la única foto que se ha conservado. En la foto, un dron con una batería solar y una boya inferior quitada.

Luego, encontramos un patrocinador, pero recibió los dibujos inmediatamente se cayó. Además, el jefe también se enfrió al proyecto cuando ofrecí cobrarlo por mi dinero.
Llegó enero de 2019 y aún así decidió hacerlo. Tío aceptó ayudarme. Lo primero que compré fueron tubos de plástico ordinarios (¡¡¡¡¡¡¡¡¡¡por qué son tan caros !!!) junto con acoplamientos, solapas, abrazaderas y cubiertas. Luego, tomamos una baguette vieja, perforamos agujeros para cada manga y atornillamos una hoja de madera contrachapada. Las tuberías tomaron un medidor con un diámetro de 110 mm. No sabíamos cuáles serían adecuados para nuestro barco, por lo que tomamos estos, y en el futuro, ya tuvimos que ajustar la capacidad de carga necesaria.

Luego, soldamos un marco de metal para el motor a partir de viejas piezas de hierro que yacían en el jardín. Un tío me dio un motor roto por el enfriamiento del motor Volga-3110. Después de la autopsia, resultó que allí se había roto un estafador extintor de chispas. Después de reemplazarlo, el motor funcionó. Y nuestra balsa se convirtió en un bote.

La primavera ya ha llegado y me enteré de la competencia IT Start. Me preguntaba por qué no debería ir con mi proyecto. Pero allí, al principio, los moscovitas me dijeron que el dron que limpia el lago Baikal no es necesario, se necesita algún tipo de propósito comercial, y luego los locales no apreciaron mi iniciativa. Para el último día del lanzamiento de TI, ya habíamos logrado hacer un cuerpo para la electrónica y el volante. La noche antes de la competencia, logré terminar un control simple de la nave en esp8266 sin comentarios. Mostré este video en la competencia:
Entonces miró dentro:

La batería del sistema ininterrumpible fue presentada por un pesado familiar. El motor de la dirección fue encontrado en algún lugar por un tío. Tuve que comprar un filtro y una bomba (una bomba sumergible, por lo tanto, ubicada debajo del barco en la "nariz") por mi dinero. Relé de coche a 40 amperios.
Después de la competencia, el entusiasmo disminuyó. Y en el verano estudié no más de 2 horas a la semana. La administración recopilada en esp8266 tenía un inconveniente: todo funcionaba a través de una solicitud get en una función similar a una interrupción, y si en ese momento se enviaba otro comando, el porcentaje fallaba y se reiniciaba, lo que era visible a partir de los datos enviados a través del puerto com. Y el porcentaje en sí mismo cayó constantemente. Después de hurgar en las fuentes de Arduino y no encontrar registros allí (resulta que, como supe más tarde que los chinos escribieron inmediatamente las funciones de control para todos los modelos esp8266), decidí seguir el camino más simple, es decir, comprar un llavero de radio y escribir todos los controles en atmega-88pa. La retroalimentación de la posición del timón se realizó en dos resortes, arrastrados por una resistencia de 560 ohmios a 5 V. Cuando la barra de aluminio unida a la guía del motor estaba en la posición correcta, tocó el resorte cercano, luego el suelo llegó a pin1 micrón, cuando el extremo a pin2.

Código fuente del firmware Atmega #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; } } } }
También decidí ensamblar el controlador del motor del motor de la dirección en 4 transistores (en la foto, esta es una pieza brillante de phoners), pero después de ensamblar y probar resultó que al motor no le importa qué tipo de polaridad viene, y abandoné esta idea.
Y ahora a finales de septiembre. Después de las vacaciones, fuimos a correrlo. En el primer intento, comenzó a hundirse. La parte trasera del barco era pesada, y el sellador tenía fugas y el agua entraba. El módulo de radio ha muerto. Al día siguiente compraron uno nuevo y aumentaron las tuberías. La nave dejó de hundirse, pero en condiciones de combate el módulo de radio solo tardó medio metro. Tuve que hacer un tercer intento. Busqué en Google fuentes para esp8266 y un programa para un teléfono inteligente (
gracias a una persona amable ) y en el tercer intento obtuvo
La batería duró solo unos minutos, por lo que no fue posible tirar de ella a la orilla.
Bueno, eso es todo. El código fuente final para ESP8266 y rehecho para atmega se encuentra
aquí .