U
D
RM9WY ( ex. ra9woy ) Ham's site

https://github.com/F4HTB/Universal_HamRadio_Remote_HTML5    Открытый и бесплатный!!!

Позволяет подключится к серверу, выполенному на Raspberry Pi с любого устройства через интернет и веб-браузер, и удалённо проводить связи через трансивер, подключенный к серверу. В ближайшее время авторы обещают добавить управление поворотками антенн и антенными переключателями (к сожалению, проект более не развивается и не обновляется). Минусом проекта является необходимость иметь на стороне сервера белый IP адрес (можно промапить нужный порт через домашний роутер с таким адресом, но там авторизация та ещё, поэтому небезопасно). Ну или более правильный вариант, использовать какое либо тоннельное подключение между клиентом и сервером. Плюсом  - отсутствие всевозможных облаков, тем более, платных!


Если вылезет вот такое сообщение о нехватке библиотеки,

то можно сделать вот так:

sudo apt-get install libatlas-base-dev

запуск скрипта с консоли

cd ~/Universal_HamRadio_Remote_HTML5
PYTHONPATH=/usr/local/lib/python3.7/site-packages:$PYTHONPATH ./UHRR

Для автоматического запуска приложения при старте малинки надо добавить строчки запуска в /etc/rc_user. Однако, на этапе отладки лучше сделать пару командных файликов start / stop c нужными командами, что ускоряет процесс.


P.S. Копия  update  файлов с гитхаба. Как всегда, на "всякий случай"  face pic1 pic2 Копия WIKI

P.P.S. Если гитхаб не открывается (как у меня из FireFox), попробуйте открыть из Chome или Chomium браузера, помогает!


13.01.2024 Поскольку мой предполагаемый для удалённой работы трансивер миник не имеет возможность дистанционно включаться и выключаться по командам CAT интерфейса, я решил добавить такую возможность аппаратным способом. Для этого надо дополнительно проинстолить на малинку пакет Rpi.GPIO для 3 версии PYTHON (информация чуть ниже). Так-же сделать аппаратную реализацию транзисторного ключа, управляющего реле, что подает напряжение питания на трансивер, ну и попутно добавил ещё один транзистор как ключ управления PTT. Соответственно, пришлось немного модернизировать программку на питоне, чтоб она могла дрыгать нужными ногами GPIO. Попутно немного уменьшил длину и размерность буферов для передачи звука, чтобы уменьшить временную задержку аудио.

Примечание! Скорее всего, после этой доработки не будет корректно работать панорама на SDR RTL, но у меня его нет и я не проверял.

Доработка проги UHRR для аппаратного управления PWR и PTT

---

### надо поправить две переменные - это уменьшит задержку звука. Но возможно, разрушит работу RTL SDR я не проверял это, да и уменьшение задержки звука может сказаться на качестве звука. Надо проверять в реальной сети (пока это эксперимены на столе)


FFTSIZE=4096  ### поменять на 32
nbBuffer=24       ### поменять на 2  - можно поиграть с этим, но буферов должно быть четное количество    

### после всех импортов добавить

import RPi.RPIO as gpio
pinpwr = 12    ### задаем нужные ноги управления питанием
pinptt = 6    ### управление передачей
gpio.setwarnings(False)
gpio.setmode(gpio.BCM)
gpio.cleanup()
time.sleep(1)
gpio.setup(pinpwr, gpio.OUT, initial=0)
gpio.setup(pinptt, gpio.OUT, initial=0)

...


###   в данный кусок проги вставляются строчки  для аппаратного управления передачей

    def setPTT(self,status):
        try:
            if status == "true":
                gpio.output(pinptt, 1)                                          ### выставляяем ногу передачи
                self.rig.set_ptt(Hamlib.RIG_VFO_CURR,Hamlib.RIG_PTT_ON)
                self.infos["PTT"]=True
            else:
                gpio.output(pinptt, 0)                                          ### опускаем ногу передачи
                self.rig.set_ptt(Hamlib.RIG_VFO_CURR,Hamlib.RIG_PTT_OFF)
                self.infos["PTT"]=False
        except:
            print("Could not set the mode via Hamlib!")
        return self.infos["PTT"]
        
    def getPTT(self,status):
        return self.infos["PTT"]
        
...

###   в данный кусок проги вставляются строчки  для аппаратного управления питанием трансивера


### после строки
print('connection closed for TX socket')
## добавить с тем же отступом
                gpio.output(pinpwr, 0)    ###  отключаем питание

### перед строкой
print('new connection on ControlTRX socket.')
## добавить с тем же отступом
                gpio.output(pinpwr, 1)    ###  включаем питание

 

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


RPi.GPIO - работа с входами, выходами и прерываниями в Raspberry Pi, примеры на Python: https://ph0en1x.net/106-rpi-gpio-installation-working-with-inputs-outputs-interrupts.html#gpio-cleanup

Raspberry Pi 3: GPIO (#1) — введение - http://codius.ru/articles/Raspberry_Pi_3_GPIO_%D0%B2%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5  


инфа по HamLib https://github.com/Hamlib/Hamlib/wiki 


Предназначение контактов.

Управление контактами GPIO выполняется с помощью специально созданной для этого библиотеки WiringPi. Скачать ее актуальную версию можно здесь. В данной библиотеке нумерация контактов может не совпадать с нумерацией, указанной в таблице выше.

1.  +3.3 V DC Power.

2.  +5 V DC Power.

3. GPIO 2 (SDA). Контакт ввода-вывода с возможностью подключения устройств, поддерживающих передачу данных по двухсторонней, двунаправленной шине i2c. Выполняет функцию линии данных SDA.

4. +5 V DC Power.

5.  GPIO 3 (SCL). Контакт ввода-вывода с возможностью подключения устройств, поддерживающих передачу данных по двухсторонней, двунаправленной шине i2c. Выполняет функцию тактовой линии синхронизации SCL

6.  Ground.

7. GPIO 4 (GPCLK0). Контакт ввода-вывода, который может использоваться в том числе и как General Purpose Clock - вывод для формирования варьируемой тактовой частоты для внешних устройств в целях достижения больших скоростей передачи данных при использовании последовательных интерфейсов.

8. GPIO 14 (TXD). Контакт, который по умолчанию используется как Передающая линия TXD (Transmitted Data) интерфейса UART. После включения на нем присутствует высокий уровень 3,3 В. Программно его можно переконфигурировать в обычные выводы. Все остальные GPIO после включения Raspberry выполняют основную функцию и работают как обычные цифровые выводы.

9.  Ground.

10.  GPIO 15 (RXD). Контакт, который по умолчанию используется как принимающая линия RXD (Received Data) интерфейса UART. После включения на нем присутствует высокий уровень 3,3 В. Программно его можно переконфигурировать в обычные выводы.

11. GPIO 17. Контакт ввода-вывода общего назначения.

12. GPIO 18 (PCM_C). Контакт ввода-вывода, который может применяться в качестве линии тактирования при использовании аудио-интерфейса I2S в процессе  импульсно-кодовой модуляцией при оцифровке звука (Pulse Code Modulation — PCM).

13.  GPIO 27 (PCM_D). Контакт ввода-вывода, который может применяться в качестве линии передачи данных при использовании аудио-интерфейса I2S в процессе  импульсно-кодовой модуляцией при оцифровке звука (Pulse Code Modulation — PCM).

14.  Ground.

15. GPIO 22. Контакт ввода-вывода общего назначения.

16. GPIO 23. Контакт ввода-вывода общего назначения.

17. +3.3 V DC Power. Питание напряжением 3.3 Вольта.

18.  GPIO 24. Контакт ввода-вывода общего назначения.

19.  GPIO 10 (MOSI). Контакт ввода-вывода, который может использоваться как выход последовательной передачи данных шины SPI (Serial Peripheral Interface).

20. Ground.

21. GPIO 9 (MISO). Контакт ввода-вывода, который может использоваться как вход последовательного приема данных шины SPI (Serial Peripheral Interface).

22. GPIO 25. Контакт ввода-вывода общего назначения.

23. GPIO 11 (SCLК). Контакт ввода-вывода, который может использоваться как выход синхронизации передачи данных в шине SPI (Serial Peripheral Interface).

24. GPIO 8 (CE0). Контакт ввода-вывода, который может использоваться как линия для задания режима работы шины SPI.

25. Ground.

26. GPIO 7 (CE1). Контакт ввода-вывода, который может использоваться как линия для задания режима работы шины SPI.

27. ID_SD. Контакт ввода-вывода с возможностью подключения устройств, поддерживающих передачу данных по двухсторонней, двунаправленной шине i2c. Представляет собой линию данных и зарезервирован для будущих плат расширения.

28. ID_SC. Контакт ввода-вывода с возможностью подключения устройств, поддерживающих передачу данных по двухсторонней, двунаправленной шине i2c. Представляет собой линию синхронизации передачи данных и зарезервирован для будущих плат расширения.

29. GPIO 5. Контакт ввода-вывода общего назначения.

30. Ground.

31. GPIO 6. Контакт ввода-вывода общего назначения.

32. GPIO 12. Контакт ввода-вывода общего назначения.

33. GPIO 13. Контакт ввода-вывода общего назначения.

34. Ground.

35. GPIO19 (MISO). Контакт ввода-вывода, который может использоваться как дополнительный вход последовательного приема данных шины SPI

36. GPIO 16. Контакт ввода-вывода общего назначения.

37. GPIO 26. Контакт ввода-вывода общего назначения.

38. GPIO 20 (MOSI). Контакт ввода-вывода, который может использоваться как дополнительный выход последовательной передачи данных шины SPI

39. Ground.

40. GPIO 21 (SCLK). Контакт ввода-вывода, который может использоваться как дополнительный выход синхронизации передачи данных в шине SPI

Таким образом, этот на первый взгляд несерьезный по размерам компьютер охватывает станет замечательной платформой для изучения Linux и постройки собственного высокоинтеллектуального робота.

При работе с Raspberry Pi также стоит помнить несколько важных моментов:

Максимальный суммарный ток обоих выводов 3.3 В равен 50 мА!

Поэтому эти выводы могут использоваться для питания внешних устройств, только если их потребляемый ток меньше 50 мА.

Максимальный суммарный ток обоих выводов 5 В равен 300 мА!

Эти выводы также могут использоваться для питания внешних устройств только в том случае, если их потребляемый ток меньше 300 мА.

Нельзя на GPIO подавать напряжение больше 3,3 В!

Цифровые выводы GPIO имеют уровни напряжения 0 - 3,3 В и не совместимы с традиционными уровнями напряжения 0 – 5В! Поэтому нельзя напрямую соединять Raspberry Pi и цифровые устройства, работающие с TTL-уровнями 5 В, а также цифровые датчики с внешним питанием более 3,3 В. Если подать на GPIO вывод одноплатного компьютера логическую единицу, представляющую собой 5 В, а не 3,3 В - вывод может выйти из строя.

Все настраиваемые пины GPIO по-умолчанию являются входами.

И поэтому имеют высокое входное сопротивление. При этом подтяжка логического уровня у них не включена, выводы "висят в воздухе", поэтому после включения Raspberry напряжение на них может меняться в реальном времени. Это вполне штатная ситуация. Исключением является только 2 следующих вывода:

Выводы GPIO 2 (SDA) и GPIO 3 (SCL) по-умолчанию "подтянуты" к питанию.

Поэтому после включения Raspberry на них присутствует напряжение логической единицы (3,3 В).

Сигнал на любом из цифровых выводов может служить источником внешнего прерывания.


Дополнение: Еще один пример использования GPIO в одноплатном компьютере описывает заметка Реверс-инжиниринг роутера на примере GL.iNet GL-AR750.


Безопасное завершение работы Raspbian кнопкой, подключенной к Raspberry Pi

Расскажу о создании несложного скрипта и службы для systemd, которые будут отслеживать нажатие подключенной к GPIO кнопки и запускать процесс завершения работы операционной системы Raspbian, что потом позволит безопасно отключить питание Raspberry Pi.


https://raspberrypi-ru.com/%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0-%D0%BC%D0%B0%D0%BB%D0%B8%D0%BD%D0%B0-%D0%BF%D0%B8-usb/  Raspberry Pi, как загрузиться с USB-накопителя или внешнего жесткого диска. Вариант позволяет обойтись вообще без карточки при загрузке.


http://helpexe.ru/tehnologija-objasnila/diy/kak-podkljuchit-zhestkij-disk-k-raspberry-pi-i

Как смонтировать и прочитать жесткий диск на Raspbian и Как загрузить Raspberry Pi с жесткого диска  


https://habr.com/ru/company/ruvds/blog/528428/  Raspberry Pi в роли сервера для хостинга сайтов



Настройка Raspberry Pi WiFi из командной строки.

1. В терминале Pi введите следующую команду:

 

2. В конце этого файла добавьте следующие строки:

 

 

3. Выйдите из nano, нажав ctrl + x, а затем нажмите y, чтобы сохранить изменения.

4. Теперь Raspberry Pi должна применить изменения в файле wpa_supplicant и попытаться подключиться к сети. Вы можете применить изменения, используя

 

А затем

 

Имя wlan0 здесь и далее вы должны заменить на название своего интерфейса, используйте ifconfig, чтобы увидеть свое имя.

5. Вы можете проверить, статус подключения Raspberry, используя ifconfig wlan0. В поле inet addr должен быть IP-адрес.

Если у вас возникли проблемы с подключением, убедитесь, что Pi поддерживает ключ безопасности (пароль) Wi-Fi. Также возможно, что у вас не правильный SSID, чтобы проверить это используйте sudo iwlist wlan0 scan и проверите поле essid. Это поле должно совпадать с тем, что вы вводили в поле ssid


 

    Ссылка на статью   21 Jan 2021 by RM9WY         Распечатать
Powered by CuteNews

05:57:47 up 261 days, 1   53.96% free       Archive 2010 2011 2012 2013 - Go read         Mb: +40.0 C     Pr: +54.0 C