Wir bauen eine autonome Wasserdrohne oder wie ich davon geträumt habe, dem Baikal zu helfen, aber ich bin kein Gazprom. Teil 1

Hallo Habr!

Ich lebe in der Nähe des Baikalsees und war schon oft dort. Es ist ein wunderschöner See mit sauberer Luft. Vor einigen Jahren begann der See verschmutzt zu werden. Und so dachte ich, warum nicht eine Drohne mit Sonnenkollektoren bauen, einen Motor darauf setzen, einen neuronalen Computer mit YoloV3 (einem neuronalen Netzwerk, das Computer Vision bietet) mit einer Stereokamera, GPS hinzufügen und ihm beibringen, wie man Baikal offline reinigt.

Bild

Beim Googeln fand ich heraus, dass es zwei Hauptgründe gibt: schmutziges, schlecht gereinigtes Abwasser aus der Stadt Ulan-Ude und Urlauber, die Reinigungsmittel verwenden, die wiederum eine hohe Konzentration an Nitraten und Phosphaten am Ufer des Baikalsees erzeugen. Nach einer weiteren Suche in Google stellte sich heraus, dass der Baikalsee nur gereinigt werden muss, um ihn zu retten. Ich dachte, ich könnte mit so einer kniffligen Sache umgehen. Also begann ich meine Reise als Drohnenbauer.
Der Reinigungsprozess besteht darin, Wasser durch einen herkömmlichen Wasserfilter zu pumpen, der in einem fließenden Wasserversorgungssystem installiert ist. Der Filter besteht aus einem aktiven
Aluminiumoxid. Sorbens hat Genehmigungen für die Wasseraufbereitung in der Russischen Föderation. Dadurch werden Phosphate herausgefiltert, wodurch Spirogyra (die Alge, die Gewässer überflutet) gezüchtet werden kann. Die Verwendung dieses Sorptionsmittels ermöglicht es, nur den Inhalt des Filters und nicht des Filters selbst zu ändern, was zu einem billigeren Reinigungsprozess führt. Link zu einem Artikel über die Verwendung von aktivem Aluminiumoxid.

Der erste, den ich über meine Idee erzählte, war mein Chef. Es war im Frühjahr 2018. Er mochte die Idee und zeichnete in wenigen Tagen eine 3D-Zeichnung der Drohne. Dies ist das einzige Foto, das erhalten geblieben ist. Auf dem Foto wurde eine Drohne mit einer Solarbatterie und einer unteren Boje entfernt.

Bild

Als nächstes fanden wir einen Sponsor, aber er erhielt die Zeichnungen fiel sofort ab. Außerdem hat sich der Chef auf das Projekt abgekühlt, als ich angeboten habe, es für mein Geld abzuholen.

Der Januar 2019 kam und entschied sich immer noch dafür. Onkel erklärte sich bereit, mir zu helfen. Das erste, was ich kaufte, waren gewöhnliche Kunststoffrohre (warum sind sie so teuer !!!) zusammen mit Kupplungen, Revers, Klammern und Abdeckungen. Als nächstes nahmen wir ein altes Baguette, bohrten Löcher für jede Hülse und schraubten eine Sperrholzplatte daran. Die Rohre nahmen einen Meter mit einem Durchmesser von 110 mm. Wir wussten nicht, welche für unser Schiff geeignet sein würden, also nahmen wir diese und mussten in Zukunft bereits die erforderliche Tragfähigkeit anpassen.

Bild

Als nächstes schweißten wir einen Metallrahmen für den Motor aus gewöhnlichen alten Eisenstücken, die im Garten lagen. Ein defekter Motor aus der Kühlung des Wolga-3110-Motors wurde mir von einem Onkel gegeben. Nach der Autopsie stellte sich heraus, dass dort ein funkenlöschender Konder gebrochen war. Nach dem Austausch funktionierte der Motor. Und unser Floß verwandelte sich in ein Boot.

Bild

Der Frühling ist bereits gekommen und ich habe mich über den IT Start-Wettbewerb informiert. Ich fragte mich, warum ich nicht mit meinem Projekt gehen sollte. Aber dort sagten mir die Moskauer zuerst, dass die Drohne, die den Baikal reinigt, nicht benötigt wird, dass ein kommerzieller Zweck benötigt wird, und dann schätzten die Einheimischen meine Initiative nicht. Am letzten Tag des IT-Starts war es uns bereits gelungen, eine Karosserie für Elektronik und ein Lenkrad herzustellen. In der Nacht vor dem Wettbewerb gelang es mir, eine einfache Schiffssteuerung auf esp8266 ohne Rückmeldung zu beenden. Ich habe dieses Video beim Wettbewerb gezeigt:


Also schaute er hinein:

Bild

Die Batterie aus dem unterbrechungsfreien System wurde von einer bekannten Waage präsentiert. Der Lenkmotor wurde irgendwo von einem Onkel gefunden. Ich musste für mein Geld einen Filter und eine Pumpe (eine Tauchpumpe, die sich daher unter dem Schiff in der „Nase“ befindet) kaufen. Autorelais bei 40 Ampere.

Nach dem Wettbewerb ließ die Begeisterung nach. Und im Sommer habe ich nicht mehr als 2 Stunden pro Woche gelernt. Das auf esp8266 gesammelte Management hatte einen Nachteil: Alles funktionierte durch eine Abrufanforderung in einer Funktion ähnlich einem Interrupt, und wenn in diesem Moment ein anderer Befehl gesendet wurde, schlug der Prozentsatz fehl und wurde neu gestartet, was aus den über den COM-Port gesendeten Daten ersichtlich war. Und der Prozentsatz selbst fiel ständig ab. Nachdem ich in den Arduino-Quellen gestöbert und dort keine Register gefunden hatte (es stellte sich heraus, dass die Chinesen sofort Steuerfunktionen für alle esp8266-Modelle geschrieben hatten), entschied ich mich für den einfachsten Weg, nämlich einen Funkschlüsselbund zu kaufen und alle Steuerelemente auf atmega-88pa zu schreiben. Die Rückmeldung der Ruderposition erfolgte an zwei Federn, die von einem 560-Ohm-Widerstand auf 5 V gezogen wurden. Wenn sich die an der Motorführung angebrachte Aluminiumstange in der richtigen Position befand und die nahe Feder berührte, kam der Boden auf Pin1 Mikron, während die entfernte auf Pin2.

Bild


Quellcode der Atmega-Firmware
/* * 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; } } } } 

Ich habe mich auch entschlossen, den Fahrer des Lenkmotors auf 4 Transistoren zu montieren (auf dem Foto ist dies ein helles Stück Phoner), aber nach dem Zusammenbau und Testen stellte sich heraus, dass es dem Motor egal ist, welche Polarität dazu kommt, und ich habe diese Idee aufgegeben.

Und jetzt Ende September. Nach den Ferien haben wir es geleitet. Beim ersten Versuch begann er zu sinken. Die Rückseite des Schiffes war schwer und das Dichtmittel war undicht und Wasser drang ein. Das Funkmodul ist gestorben. Am nächsten Tag kauften sie eine neue und erhöhten die Rohre. Das Schiff hörte auf zu sinken, aber unter Kampfbedingungen brauchte das Funkmodul nur einen halben Meter. Ich musste einen dritten Versuch machen. Ich google Quellen für esp8266 und ein Programm für ein Smartphone ( dank einer freundlichen Person ) und beim dritten Versuch verdient es


Die Batterie hielt nur einige Minuten, so dass es nicht möglich war, sie ans Ufer zu ziehen.

Nun, das ist alles. Der endgültige Quellcode für ESP8266 und für atmega überarbeitet liegt hier .

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


All Articles