Как я изобретал велосипед, а точнее подводную лодку с управлением через мобильный интернет

в 15:45, , рубрики: 3d-моделирование, 3D-печать, opencv, python3, Raspberry Pi, sockets, Программирование, робототехника, Читальный зал

Привет всем, я когда-то увидел, что не продаются модели подводных лодок с дальним радиусом действия, более менее сносным функционалом и ценой меньше чем у новенького iphone и решил сделать ее сам. Она управляется через интернет, а сейчас мобильный интернет покрывает большую площадь России. Маленькие водоемы полностью им покрыты, а от берегов больших интернет есть на даже в десятках километрах от берега.

Как я изобретал велосипед, а точнее подводную лодку с управлением через мобильный интернет - 1

Также Илон Маск объявил о создании всемирного интернета.

Лодку я решил печатать на 3D принтере, модели сделаны в компас_3d. Код написан на python 3.
Cсылка на github.

Оборудование и материалы

• 3d принтер
• Одноплатный компьютер Raspberry pi
• 4g модемы (2 штуки)
• ноутбук (2 штуки 1-й — передатчик, 2-й — сервер)
• серводвигатели
• веб-камера
• двигатель
• аккумуляторы Pb
• другое (реле, паяльник, датчики, клеи, краски, герметики...).

Детали

Как уже было сказано детали напечатаны на 3D принтере слоем в 0.3 мм соплом 0.4 мм
на алюминиевом столе с подложкой из клея бф2 для лучшей адгезии, самые долгие детали печатались около 14 часов. снизу картинка основных деталей.

Как я изобретал велосипед, а точнее подводную лодку с управлением через мобильный интернет - 2

Герметичность

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

Питание

В качестве источника питания — две последовательно подключенных свинцовых батарей на 6 v способные выдавать 3.3 AmH, свинцовые батареи используются из-за того что они дешевле, меньше контактов для зарядки надо выводить за пределы лодки и также они тяжелые(лодка слишком объемная, а средняя ее плотность должна быть около 1000 кг/м**3).

Передача данных

Теперь о главном, передача данных.

Так как вода поглощает ЭМВ то нужно выводить модем на верх, поэтому та лодка работает с поплавком.

В локальной сети, дома установлен сервер передающий все поступающее на него с одного адреса на другой. На данный момент лодка передает видео, а ноутбук команды управления. Организованно это все через сокеты.

Так как мне захотелось сделать как можно больше всего, дабы было поинтереснее , и чтобы по изобретать велосипеды, то передачу видео, как я уже говорил, делал сам, поэтому не придумав ничего лучше, я решил передавать не видео, а кадры в jpg. Передается одна картинка потом отравляется стоп слово «stop», и так как оно не встречается в jpg, то код легко отделяет где и когда показывать картинку.

while bytes('stop','utf-8') not in data:
          image_result.write(data)#записывает картинку по 1 Кб в файл
          data = sock.recv(1024)#принимает данные с сервера 1 Кб  
if bytes('stop','utf-8')  in data: 
            image_result.write(data[:data.index(bytes('stop','utf-8'))])#записывает в файл то что пришло до стоп слова

Как я изобретал велосипед, а точнее подводную лодку с управлением через мобильный интернет - 3

Воспроизведение картинки, и прием с камеры с помощью opencv. Сжатия никакого пока не происходит, поэтому задержка целых 9-13 секунд. Кнопочки управления написаны с помощью Tkinter.

Вовремя загрузки 3D модели на github я увидел из чего состоит stl файл, и решил написать код еще и для создания 3d модели рельефа дна из списка расстояний до него снятых ультразвуковым дальномером (который еще не установлен).

пример тетраэдр.stl в txt

solid
facet normal 0 0 0
outer loop
vertex 0 0 0
vertex 2 0 0
vertex 1 1 2
endloop
endfacet
facet normal 0 0 0
outer loop
vertex 2 0 0
vertex 1 2 0
vertex 1 1 2
endloop
endfacet
facet normal 0 0 0
outer loop
vertex 0 0 0
vertex 1 2 0
vertex 1 1 2
endloop
endfacet
facet normal 0 0 0
outer loop
vertex 0 0 0
vertex 1 2 0
vertex 2 0 0
endloop
endfacet
endsolid

Как я изобретал велосипед, а точнее подводную лодку с управлением через мобильный интернет - 4

Подведение итогов

Это собственно все что я хотел рассказать, основной моей идеей кто не понял было создание аппарата позволяющего получать информацию из-под воды на огромном расстояние от управляющего ноутбука. Пока, до следующей статьи.

Автор: Alexandr2001

Источник

Поделиться

* - обязательные к заполнению поля