Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить

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

Ср ноя 03, 2021 21:38:47

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

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

Чт ноя 04, 2021 05:00:18

IMHO, в судовых условиях в качестве связного протокола CAN уже нужен. Arduino никаким боком. Или Вам утопнуть? Или речь о моделировании (беспилотном судне) идет?

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

Чт ноя 04, 2021 14:49:30

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

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

Полное радиоуправление - это вишенка на торте :). Можно попробовать ... но это не точно :)

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

Чт ноя 04, 2021 19:56:26

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

Шо датчик дыма? На лодке? Накуя?
Вы ишо ковидные тесты на ардуино замутите...

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

Чт ноя 04, 2021 20:57:11

Это датчик не только дыма но и пропан-бутана. От зажигалки срабатывает.
На любой серьезной лодке есть газовая плита. Вдруг утечка :). Пожар в открытом море - это беда.
Яхты горят. Вот... спички детям не игрушки :) https://www.youtube.com/watch?v=WJz1j6Z_8j4

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

Пт ноя 05, 2021 15:00:46

Virtuino ModBUS автору в помощь..

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

Ср ноя 10, 2021 00:14:17

Ну... радиоуправление для лодки у нас уже есть... https://www.radiokot.ru/forum/viewtopic ... 8&t=148087
Осталось дело за малым))
:tea:

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

Пт фев 04, 2022 22:40:42

Всем яхтсменам и сочувствующим привет!
Загремел в госпиталь с ковидлой, поэтому месяц не отсвечивал :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 мА
Следующее на очереди это датчик пространственной ориентации

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

Вс фев 06, 2022 16:20:59

Привет!
Добавил активную пищалку на 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);
}

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

Вс фев 06, 2022 16:52:40

датчик пространственной ориентации...
: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

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

Вс фев 06, 2022 17:00:19

Круто Вы там навертели... :shock:
В моем понимании датчик "пространственной ориентации", применительно к лодке, это магнитный курс, крен и курсовые данные с GPS.
Координаты в долготе и широте понадобятся потом, когда встанет задача научить автопилот ходить по заранее заданному треку.
Магнитный курс и крен намерен получить при помощи MPU-6500 + HMC5883. есть готовые либы чтобы данные с этих модулей сразу в
Эйлеровы координаты пересчитывать. А там есть все. И курс и тангаж и крен.
Крен тоже нужен будет автопилоту. Один из критических параметров чтобы не лечь парусами на воду или уйти в брочинг

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

Вс фев 06, 2022 17:09:14

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

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

Вс фев 06, 2022 17:10:17

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

Других нету :)

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

Вс фев 06, 2022 17:41:02

а данные выводить куда ? на экран ?
ковыряли мы разные экранчики... от LCD...
https://www.radiokot.ru/forum/download/ ... ?id=359975
до OLED...
https://www.radiokot.ru/forum/download/ ... ?id=360055
и TFT...
https://www.radiokot.ru/forum/download/ ... ?id=356588
https://www.radiokot.ru/forum/download/ ... ?id=356815
рисовали картинки всякие ))
https://www.radiokot.ru/forum/download/ ... ?id=356599
https://www.radiokot.ru/forum/download/ ... ?id=356600
https://www.radiokot.ru/forum/download/ ... ?id=356621
https://www.radiokot.ru/forum/download/ ... ?id=356623
...

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

Вс фев 06, 2022 17:47:10

Тут все просто... Так как лодка не игрушечная, буду использовать нетбук для сбора данных с Processing (как вариант).
У такого решения есть важное преимущество... Не надо лепить Master устройство. Есть возможность интеграции с OpenCPN.

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

Вс фев 06, 2022 17:47:55

меняли схему 10 раз...
https://www.radiokot.ru/forum/download/ ... ?id=356812
https://www.radiokot.ru/forum/download/ ... ?id=360054
...
драйвера всякие...
https://www.radiokot.ru/forum/download/ ... ?id=360091
https://www.radiokot.ru/forum/download/ ... ?id=360108
...
ещё графики всякие))
https://www.radiokot.ru/forum/download/ ... ?id=356622
...
и итоге сделали))
https://www.radiokot.ru/forum/download/ ... ?id=356498

потом отказались от экранчиков... перешли на компы))
долго думали как лучше подключить комп...
https://www.radiokot.ru/forum/download/ ... ?id=360219
https://www.radiokot.ru/forum/download/ ... ?id=360220
https://www.radiokot.ru/forum/download/ ... ?id=360221
https://www.radiokot.ru/forum/download/ ... ?id=360222
https://www.radiokot.ru/forum/download/ ... ?id=360223
...
Ethernet на AVR ))
https://www.radiokot.ru/forum/download/ ... ?id=360283
...

а вот автопилот так и не доделали...
:roll:

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

Вс фев 06, 2022 17:51:33

Для автопилота можно взять за основу вот эту идею... Вроде проверена в реале
https://create.arduino.cc/projecthub/ma ... tem-b880bd

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

Вс фев 06, 2022 17:52:04

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

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

Вс фев 06, 2022 17:55:05

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

В OpenCPN есть готовый универсальный модуль автопилота написанный на Питоне.
Вопрос только в интеграции.

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

Пн фев 07, 2022 01:38:29

делали по радио...
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.
Ответить