Технояхтинг с Ардуино

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Аватара пользователя
maxlab
Мучитель микросхем
Сообщения: 478
Зарегистрирован: Вт апр 23, 2013 22:21:18
Откуда: KUBAN, Krasnodar

Технояхтинг с Ардуино

Сообщение maxlab »

Всем привет! Ищу единомышленников.
Лодки пока нет, но скоро будет. Правда убитая в хлам.
Пока решаю этот вопрос, решил наклепать всяких датчиков
и объединить их по протоколу ModBUS.
Планируется:
Качество воздуха (противопожарка)
Температура, влажность, атм. давление (типа барометр ясно-пасмурно-ураган)
Анеморумбометр
Эхолот до 100м (стандартный фитинговый трансдьюсер или самодельный)
Лаг (СВЧ или ультразвуковой)
Радар-детектор
АИС
Автопилот( магнитный/GPS курс, ветер)
Система управления движетелем (BLDC)
Ну и т.д
Я тут уже на полляма наговорил...
И, в качестве бреда - полное радиоуправление аки дрон :)
Девице - Device
phalanx
Нашел транзистор. Понюхал.
Сообщения: 158
Зарегистрирован: Сб апр 24, 2021 18:42:11

Re: Технояхтинг с Ардуино

Сообщение phalanx »

IMHO, в судовых условиях в качестве связного протокола CAN уже нужен. Arduino никаким боком. Или Вам утопнуть? Или речь о моделировании (беспилотном судне) идет?
Аватара пользователя
maxlab
Мучитель микросхем
Сообщения: 478
Зарегистрирован: Вт апр 23, 2013 22:21:18
Откуда: KUBAN, Krasnodar

Re: Технояхтинг с Ардуино

Сообщение maxlab »

IMHO, в судовых условиях в качестве связного протокола CAN уже нужен.

Совершенно не обязательно. Разные производители судового оборудования используют разные протоколы и транспортные уровни. Гармин вообще проприетарщиной занимается. Традиционно используют NMEA (RS-232), NMEA-2000 (CAN) ну и SeaTalk (EtherNet) для взаимной интеграции. Мой выбор протокола общения ModBUS между системами обусловлен личным опытом интеграции 1С-Предприятия с пром.оборудованием. И на небольшой парусной лодке транспорт RS-485 будет к стати, бикоз он хорошо себя зарекомендовал в промышленных условиях (помехозащищенность). Стабильную скорость обмена можно подобрать из стандартного ряда.
И почему "Ардуино никаким боком. Или Вам утопнуть"? Ардуино - это не железо. Всего лишь платформа для быстрой разработки, в основе которой Processing. Железо может быть любым. Я например китайские чипы использую lgt8f328p для обработки данных с датчиков. Непотопляемость обеспечивается другими способами. Электроника здесь не при чем.
Примерно так будет выглядеть конструкция датчиков микроклимата внутри лодки.
Изображение Изображение
После отладки кода все внутренности замазываются цапон-лаком и коробочка герметизируется.

Полное радиоуправление - это вишенка на торте :). Можно попробовать ... но это не точно :)
Девице - Device
kaetzchen
Друг Кота
Сообщения: 11994
Зарегистрирован: Пн апр 19, 2010 00:04:18
Откуда: Малороссия

Re: Технояхтинг с Ардуино

Сообщение kaetzchen »

. Качество воздуха (противопожарка)

Шо датчик дыма? На лодке? Накуя?
Вы ишо ковидные тесты на ардуино замутите...
Аватара пользователя
maxlab
Мучитель микросхем
Сообщения: 478
Зарегистрирован: Вт апр 23, 2013 22:21:18
Откуда: KUBAN, Krasnodar

Re: Технояхтинг с Ардуино

Сообщение maxlab »

Это датчик не только дыма но и пропан-бутана. От зажигалки срабатывает.
На любой серьезной лодке есть газовая плита. Вдруг утечка :). Пожар в открытом море - это беда.
Яхты горят. Вот... спички детям не игрушки :) https://www.youtube.com/watch?v=WJz1j6Z_8j4
Девице - Device
AndyGU70
Прорезались зубы
Сообщения: 231
Зарегистрирован: Ср апр 17, 2019 01:53:29

Re: Технояхтинг с Ардуино

Сообщение AndyGU70 »

Virtuino ModBUS автору в помощь..
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Технояхтинг с Ардуино

Сообщение roman.com »

Ну... радиоуправление для лодки у нас уже есть... https://www.radiokot.ru/forum/viewtopic ... 8&t=148087
Осталось дело за малым))
:tea:
Аватара пользователя
maxlab
Мучитель микросхем
Сообщения: 478
Зарегистрирован: Вт апр 23, 2013 22:21:18
Откуда: KUBAN, Krasnodar

Re: Технояхтинг с Ардуино

Сообщение maxlab »

Всем яхтсменам и сочувствующим привет!
Загремел в госпиталь с ковидлой, поэтому месяц не отсвечивал :cry:
Как выписался так сразу понеслось... :solder:
Первый комплект датчиков готов. Выкладываю скетч. В комментариях к коду написано куда что подсоединять. Питание - DC/DC преобразователь с 8-18 на 5 вольт. Трансивер RS485 любой, с сигналом разрешения передачи.
Спойлер

Код: Выделить всё

// Для китайского контроллера LGT8F328P. Тактовая 32 мГц
#include <WDT.h>
#include "DHTStable.h"
#include "BMP085.h"                           //BMP-180 подключаем через I2C (SCL,SDA)
#include <Wire.h>
#include <ModbusRtu.h>                        //Протокол ModbusRTU

#define TXEN    7                             //Нога для управления трансивером прием/передача
#define DEV_ID  1                             //Номер устройства

#define Air_Quality A0                        //Нога датчика качества воздуха (пропан-бутан и угарный газ)
#define DHT22_PIN   12                        //Нога DHT-22

uint16_t fld_data[4] = {0,0,0,0};             //Массив для передачи

DHTStable DHT;
BMP085 myBarometer;                           //Подключен к i2c

Modbus slave(DEV_ID,0,TXEN);

void setup() {
  analogReference(INTERNAL4V096);               //Внутренний опорник на 4,096V
  wdt_enable(WTO_8S);                           //Сторожевой таймер на 8 сек.
  pinMode(Air_Quality,INPUT);                   
  pinMode(LED_BUILTIN,OUTPUT);
  Serial.begin(115200);
  myBarometer.init();                           //Инициализация BMP180
  slave.start();                                //Запуск ModbusRTU
}

void loop() {
  wdt_reset();                                      // Сброс сторожевого таймера
  delay(500);
  DHT.read22(DHT22_PIN);
  fld_data[0] = analogRead(Air_Quality);   // Текущее значение с датчиков пишем в массив
  fld_data[1] = DHT.getHumidity()*10;
  fld_data[2] = DHT.getTemperature();
  fld_data[2] = ((fld_data[2]+myBarometer.bmp085GetTemperature(myBarometer.bmp085ReadUT())) / 2)*10;
  fld_data[3] = (myBarometer.bmp085GetPressure(myBarometer.bmp085ReadUP())/133.3223684)*10;   //Переводим в мм.ртст

  digitalToggle(LED_BUILTIN);   //Моргаем
  slave.poll(fld_data,4);
  digitalToggle(LED_BUILTIN);   //Моргаем
}

Этот код должен на любой нано,про микро,уно заработать
Контролировал работу с помощью QModBus. Данные идут корректные
Изображение
Потроха буду герметизировать.
Изображение
Ток потребления 73 мА
Следующее на очереди это датчик пространственной ориентации
Девице - Device
Аватара пользователя
maxlab
Мучитель микросхем
Сообщения: 478
Зарегистрирован: Вт апр 23, 2013 22:21:18
Откуда: KUBAN, Krasnodar

Re: Технояхтинг с Ардуино

Сообщение maxlab »

Привет!
Добавил активную пищалку на 2 ногу контроллера.
Немного причесал скетч
Окончательная редакция:
Спойлер

Код: Выделить всё

// Для китайского контроллера LGT8F328P. Плата SSOP-20 MiniEVB. Тактовая 32 мГц, питание 5v
#include <WDT.h>
#include "DHTStable.h"
#include "BMP085.h"                           //BMP-180 подключаем через I2C (SCL,SDA)
#include <Wire.h>
#include <ModbusRtu.h>                        //Протокол ModbusRTU

#define TXEN    7                             //Нога для управления трансивером прием/передача
#define DEV_ID  1                             //Номер устройства
#define BEEP    2                             //Активный Buzzer
#define Air_Quality A0                        //Нога датчика качества воздуха (пропан-бутан и угарный газ) MQ-2
#define DHT22_PIN   12                        //Нога DHT-22

#define BAD_AIR_QUALITY 1200                  //Для датчика MQ-2 значение найденное экспериментально
uint16_t fld_data[4] = {0,0,0,0};             //Массив для передачи

DHTStable DHT;
BMP085 myBarometer;                           

Modbus slave(DEV_ID,Serial,TXEN);             // Слейв режим

void setup() {
  analogReference(INTERNAL4V096);             //Внутренний опорник на 4,096V (только для lgt8f328p)
  wdt_enable(WTO_8S);                         //Сторожевой таймер на 8 сек.
  pinMode(Air_Quality,INPUT);                   
  pinMode(LED_BUILTIN,OUTPUT);
  pinMode(BEEP,OUTPUT);
  Serial.begin(38400);                        //Оптимальная скорость обмена данными для моего случая
  myBarometer.init();                         //Инициализация BMP180
  slave.start();                              //Запуск ModbusRTU
}

void loop() {
  wdt_reset();                                // Сброс сторожевого таймера
  delay(500);
  DHT.read22(DHT22_PIN);
  fld_data[0] = analogRead(Air_Quality);      // Текущее значение с датчиков пишем в массив
  fld_data[1] = DHT.getHumidity()*10;         // целочисленные значения в 2 байта (умножение на 10 где необходимо)
  fld_data[2] = DHT.getTemperature();
  fld_data[2] = ((fld_data[2]+myBarometer.bmp085GetTemperature(myBarometer.bmp085ReadUT())) / 2)*10;
  fld_data[3] = (myBarometer.bmp085GetPressure(myBarometer.bmp085ReadUP())/133.3223684)*10;   //Переводим в мм.ртст
  if (fld_data[0] > BAD_AIR_QUALITY)  alarm();//Сигнал тревоги
  digitalToggle(LED_BUILTIN);                 //Моргаем. Короткие вспышки - контроллер не висит. Длинные вспышки - идет обмен по RS485
  slave.poll(fld_data,4);                     //Проверка входящих запросов и отправка массива мастеру
  digitalToggle(LED_BUILTIN);                 
}

void alarm() {                                //Сигнал тревоги - 3 гудка
  for (int k=0;k<6;k++) {
    digitalToggle(BEEP);
    delay(200); 
    }
    digitalWrite(BEEP, LOW);
}
Девице - Device
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Технояхтинг с Ардуино

Сообщение roman.com »

датчик пространственной ориентации...
:roll:
а мы так ине доделали пространственную ориентацию...
https://img.radiokot.ru/files/54967/med ... 1njro5.JPG
https://img.radiokot.ru/files/54967/med ... 3c55tt.JPG
https://www.radiokot.ru/forum/download/ ... ?id=359087
https://www.radiokot.ru/forum/download/ ... ?id=359224
https://www.radiokot.ru/forum/download/ ... ?id=359225
https://www.radiokot.ru/forum/download/ ... ?id=359233
...
ещё добавляли кучу датчиков...
https://www.radiokot.ru/forum/download/ ... ?id=359330
https://www.radiokot.ru/forum/download/ ... ?id=359328
...
и т.д.

Добавлено after 2 minutes 11 seconds:
в итоге подключились к компу))
https://www.radiokot.ru/forum/download/ ... ?id=358997
https://www.radiokot.ru/forum/download/ ... ?id=359228
https://www.radiokot.ru/forum/download/ ... ?id=359229
...

Добавлено after 56 seconds:
а яхта будет управляться с телефона ? ))
https://www.radiokot.ru/forum/download/ ... ?id=358648

Добавлено after 50 seconds:
или с компа ?
https://www.radiokot.ru/forum/download/ ... ?id=358560
Аватара пользователя
maxlab
Мучитель микросхем
Сообщения: 478
Зарегистрирован: Вт апр 23, 2013 22:21:18
Откуда: KUBAN, Krasnodar

Re: Технояхтинг с Ардуино

Сообщение maxlab »

Круто Вы там навертели... :shock:
В моем понимании датчик "пространственной ориентации", применительно к лодке, это магнитный курс, крен и курсовые данные с GPS.
Координаты в долготе и широте понадобятся потом, когда встанет задача научить автопилот ходить по заранее заданному треку.
Магнитный курс и крен намерен получить при помощи MPU-6500 + HMC5883. есть готовые либы чтобы данные с этих модулей сразу в
Эйлеровы координаты пересчитывать. А там есть все. И курс и тангаж и крен.
Крен тоже нужен будет автопилоту. Один из критических параметров чтобы не лечь парусами на воду или уйти в брочинг
Девице - Device
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Технояхтинг с Ардуино

Сообщение Martian »

MPU-6500 имеет статус Not recommended for new designs
Аватара пользователя
maxlab
Мучитель микросхем
Сообщения: 478
Зарегистрирован: Вт апр 23, 2013 22:21:18
Откуда: KUBAN, Krasnodar

Re: Технояхтинг с Ардуино

Сообщение maxlab »

MPU-6500 имеет статус Not recommended for new designs

Других нету :)
Девице - Device
Аватара пользователя
maxlab
Мучитель микросхем
Сообщения: 478
Зарегистрирован: Вт апр 23, 2013 22:21:18
Откуда: KUBAN, Krasnodar

Re: Технояхтинг с Ардуино

Сообщение maxlab »

Тут все просто... Так как лодка не игрушечная, буду использовать нетбук для сбора данных с Processing (как вариант).
У такого решения есть важное преимущество... Не надо лепить Master устройство. Есть возможность интеграции с OpenCPN.
Девице - Device
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Технояхтинг с Ардуино

Сообщение roman.com »

Аватара пользователя
maxlab
Мучитель микросхем
Сообщения: 478
Зарегистрирован: Вт апр 23, 2013 22:21:18
Откуда: KUBAN, Krasnodar

Re: Технояхтинг с Ардуино

Сообщение maxlab »

Для автопилота можно взять за основу вот эту идею... Вроде проверена в реале
https://create.arduino.cc/projecthub/ma ... tem-b880bd
Девице - Device
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Технояхтинг с Ардуино

Сообщение roman.com »

OpenCPN...
не работал с таким...
:roll:
Аватара пользователя
maxlab
Мучитель микросхем
Сообщения: 478
Зарегистрирован: Вт апр 23, 2013 22:21:18
Откуда: KUBAN, Krasnodar

Re: Технояхтинг с Ардуино

Сообщение maxlab »

OpenCPN...
не работал с таким...
:roll:

В OpenCPN есть готовый универсальный модуль автопилота написанный на Питоне.
Вопрос только в интеграции.
Девице - Device
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Технояхтинг с Ардуино

Сообщение roman.com »

делали по радио...
https://www.radiokot.ru/forum/download/ ... ?id=313952
делали по Wi-Fi...
https://www.radiokot.ru/forum/download/ ... 074fd886f3
делали по всякому))
от ModBUS отказались...
:roll:

Добавлено after 5 minutes 28 seconds:
подключали всякие датчики... гироскопы... компасы... акселерометры... и т.д.
всё выводили на экран и передавали по радио... с этим проблем не возникло))
проблемы начались с обработкой всех этих данных... посчитать... откалибровать... и т.д.
программист из нашей команды не сумел правильно настроить и обработать данные со всех датчиков данные... а мне одному всё это долго...)) тем более без библиотек на простом AVR ))
:tea:
ну если есть готовые библиотеки под ардуино... тогда думаю проблем не будет))

Добавлено after 13 minutes 15 seconds:
автопилот... https://create.arduino.cc/projecthub/ma ... tem-b880bd
не знаю... у нас была другая идея...
AVR не захотел считать косинусы и синусы)) поэтому решили всё делать на нетбуке или любом другой гаджете... там с этим проблем нет))

Добавлено after 5 minutes 24 seconds:
OpenCPN... https://habr.com/ru/post/572736/
первый раз такое вижу))

Добавлено after 1 minute 48 seconds:
на Питоне мы писали... писали... а потом перешли на Java... теперь у меня всё на Java.
Ответить

Вернуться в «Arduino»