Хабрахабр

Делаем автономного водного дрона или как я мечтал помочь Байкалу, но я не газпром. Часть 1

Привет, Хабр!

Это красивое озеро с чистым воздухом. Я живу рядом с Байкалом, и много раз бывал на нем. И вот я подумал почему бы не сделать дрона с солнечными батареями, поставить на нее двигатель, нейронный компьютер с YolloV3(нейросеть которая обеспечивает зрение компьютеру) со стереокамерой, добавить GPS и научить его чистить Байкал в автономном режиме. Несколько лет назад озеро начало загрязняться.

После еще одно поиска в гугле выяснилось, что для спасения Байкала, его всего лишь нужно очищать. image
Погуглив, я узнал что есть две основные причины: грязные, плохо очищенные канализационные стоки города Улан-Удэ и отдыхающие, которые пользуются моющими средствами, которые в свою очередь создают на берегу Байкала высокую концентрацию нитратов и фосфатов. Так я начал свой путь дроностроителя) Я подумал что с таким не хитрым делом я справлюсь.

Это было весной 2018. Первый кому я рассказал про свою идею это был мой начальник. Это единственное фото которое сохранилось. Идея ему понравилась и поэтому за несколько дней он начертил 3д чертеж дрона. На фото дрон со снятой солнечной батареей и нижним буйком.

image

Далее и начальник тоже остыл к проекту, когда я предложил собрать его за свои деньги. Далее мы нашли спонсора, но он получив чертежи сразу отвалился.

Дядя согласился мне помочь. Наступил январь 2019 и все таки решил сделать его. Далее мы взяли старую алюминиевую гардину, просверлили в ней отверстия под каждую муфту и прикрутили к ней лист фанеры. Первое что я купил — это обычные пластиковые трубы ( почему они такие дорогие!!!) вместе с муфтами, отворотами, хомутами и крышками. Мы не знали какие подойдут для нашего корабля, поэтому взяли эти, ну а в будущем уже подогнать необходимую грузоподъемность. Трубы взял по метру диаметром 110мм.

image

Сломанный двигатель от охлаждения мотора волги-3110 дал мне дядя. Далее мы сварили металлическую станину для двигателя из обычных старых железяк, которые валялись в огороде. После его замены двигатель заработал. После вскрытия оказалось что там был пробит искрогасящий кондер. И наш плот превратился в кораблик.

image

Я подумал почему и мне не пойти с моим проектом. Вот уже пришла весна и я узнал про конкурс «IT-старт». К последнему дню «IT-старта» мы уже успели сделать корпус для электроники и руль. Но там мне сначала москвичи сказали, что дрон который чистит Байкал не нужен, нужно какое то коммерческое назначение, ну а потом и местные не оценили моей инициативы. Это видео я показал на конкурсе: За ночь перед конкурсом я успел доделать простенькое управление кораблем yf esp8266 не имеющее обратной связи.

Так он выглядел внутри:

image

Двигатель руля где-то нашел дядя. Аккумулятор от бесперебойника подарил знакомый весовщик. Рэле автомобильное на 40 Ампер. Фильтр и насос ( насос погружного типа, поэтому находится под кораблем в «носу») пришлось окупать за свои деньги.

И летом я занимался не белее 2 часов в неделю. После конкурса энтузиазм убавился. Да и сам проц постоянно отваливался. Управление собранное на esp8266 имело один недостаток: работало все через get запрос в функции похожей на прерывание и если в этот момент отправлялась еще одна команда, то проц сбоил и перезагружался, что было видно по данным отправленным по ком порту. Обратная связь положения руля была сделана на двух пружинках, притянутых резистором на 560 Ом к 5 В. Порывшись в ардуиновских исходниках и не найдя там регистров (оказывается, как я потом уже узнал, что китайцы сразу написали управляющие функции для всех моделей esp8266) я решил идти по самому простому пути, а именно купить радио брелок и написать все управление на atmegа88pa. Когда алюминиевая планка, приделанная к направляющей двигателя была в правом положение, касалась ближней пружинки, то на пин1 мк приходила земля, когда к дальней то на пин2.

image

Исходный код прошивки атмеги

/* * 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) 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; } } }
}

Я еще решил собрать драйвер движка управления рулем на 4-х транзисторах (на фото это светлый кусок фонеры), но после его сборки и опробования оказалось что движку без разница какая на него полярность приходит, и я отказался от этой затеи.

После отпуска мы поехали его запускать. И вот уже конец сентября. Зад корабля оказался тяжелый, а герметик дырявый и в него попала вода. С первой попытки он начал тонуть. На следующий день купили новый и нарастили трубы. Умер модуль радиосвязи. Пришлось делать третью попытку. Кораблик перестал тонуть, но в боевых условиях радиомодуль брал только на пол метра. Я нагуглил исходники для esp8266 и программу для смартфона (спасибо доброму человеку ) и с третьей попытки он заработал

Аккумулятора хватило только на несколько минут, поэтому к берегу так и не получилось притянуть.

Окончательный исходный код для ESP8266 и переделанный для атмеги лежит тут. Ну вот и все.

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»