san.net.ru

AIS-приёмник из доступных комплектующих, своими руками

Задумал расширение зоны покрытия своего проекта AIS-Мониторинга, "разбрасыванием" AIS-приёмников. Вдохновение придал проект dAISy: https://github.com/astuder/dAISy. Для пробы подыскал на Aliexpress модуль E30-170T20D на трансивере от Silicon Labs 4463 rev B1 (далее SI4463), который спроектирован на работу в диапазоне от 148-173 МГц (подходит для работы с AIS работающим на частоте ~162 МГц). Над этим модулем ставлю эксперименты.

Коротко о результатах:

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

Быстрый старт

Введение

Модуль E30-170T20D построен на трансивере SI4463, который управляется китайской копией 8-ми битного микроконтроллера от STMicroelectronics STM8L151G6 (далее STM8L). Именно в микроконтроллер необходимо вшить управляющую программу.

Китайцы оставили на модуле E30-170T20D отладочный "разъём" SWIM через который можно проводить прошивку и отладку STM8L. На фото отверстия "VSGR" - это контакты SWIM.

КонтактНазначение
VПитание 3.3V
SСигнал SWIM
GПитание GND
RСигнал Reset

Я написал простейшую программу для STM8L, которая конфигурирует SI4463 на частоту AIS и осуществляет передачу полученных данных в формате NEMA-0183 на UART разьём модуля E30-170T20D.

Обычно AIS использует два канала: 161.975 МГц и 162.025 МГц. В моей программе отсутствует возможность переключения между каналами, я выкладываю две прошивки:

Прошивка

Для прошивки я использую китайский программатор/отладчик ST-LINK V2.

Прошивку можно осуществить программой: stm8flash. Исходники: https://github.com/vdudouyt/stm8flash. Версия для Windows: https://github.com/sensics/IR-Board-Programmer/tree/master/stm8flash, необходимо скачать DLL и EXE файлы.

Необходимо произвести коммутацию согласно таблице ниже:

Контакт E30-170T20DКонтакт ST-LINK
V или VCC3.3V
SSWIM
G или GNDGND
RRST
Я использовал две швейных иголки с проводками для контактов S и R.

Процесс прошивки предельно прост. Полагаю что все файлы у вас находятся в одной папке.
Вводим:
stm8flash -c stlinkv2 -p stm8l151?6 -s flash -w a_161.bin
Получаем ответ:
Determine FLASH area
Due to its file extension (or lack thereof), "a_161.bin" is considered as RAW BINARY format!
32768 bytes at 0x8000... OK
Bytes written: 32768

Проверка

Задумка такова, что при подаче питания на модуль он сразу начинает приём данных из эфира и передаче данных на скорости 19200 бод на вывод RX. Я использовал USB TTL конвертор UART. После соединения E30-170T20D с конвертером тремя проводами по схеме:

Контакт E30-170T20DКонтакт USB TTL UART
VCC5V
TXDRXD
GNDGND
и установки в систему драйверов чипа CH340 в системе появился COM-порт с которого поступают данные AIS.

Здесь будет блок об подключении через putty...

Декодирование и просмотр данных от AIS, реализует свободная программа OpenCPN.

  • Есть предположение, что чувствительность/дальность приёмника можно увеличить оптимизировав обвязку SI4463, но нужно взяться за паяльник. К сожалению этот вариант не особо интересен, т.к. во главу я ставил доступность изделия/комплектухи.
  • Есть идея использовать ногу модуля AUX для выбора рабочего канала.
  • Изначально я задумывал передачу данных на сервер через GSM-модем, свободные ноги (TX, M0, M1) на модуле ещё есть, программа (даже в первой неоптимизированной версии) получилась очень компактной, памяти осталось более чем достаточно для управления модемом.
  • Если решу вопрос с дальностью приёма, то пойду на проект двухканального приёмника (два SI4463 и какой нибудь STM32 с двумя SPI, UART и USB).
  • По наличию свободного времени будет продолжение...

Исходники

Тем кому интересно что внутри и как работает открываю исходники.