Skip to content
  • Категории
  • Главная
  • Документация
  • Последние
  • Пользователи
Collapse
piP

pi

@pi
Сводка
Сообщения
6.3k
Темы
1.6k
Группы
1
Подписчики
0
Подписки
0

Сообщения

Последние Лучшие сообщения Спорные

  • Бесперебойный блок питания(преобразователь) для Raspberry Pi
    piP pi

    99864471-7652-4532-8a26-742545849caf-image.png
    Привет всем,

    Бесперебойный преобразователь PiGO предназначен для использования в автомобилях, либо в устройствах, где нет стабильного питания. Преобразователь снижает входящее напряжение до 5V, которое используется для питания Raspberry или Arduino, либо другие устройства, которым для питания необходимо 5V и до 2,5A. А также может использоваться в качестве зарядного устройства для смартфонов.

    Автономная работа зависит от емкости подключенного аккумулятора, а также потребления. При отключении внешнего питания (например, включение зажигания в автомобиле), выходящее напряжение не прерывается, что обеспечивает бесперебойную работу устройств. Блок управления напряжением PiGO имеет характеристики:

    • Входящее напряжение, U 4,5...18V
    • Потребляемый ток, I 6A
    • Выходное напряжение, U 5V
    • Выходной ток, I 5A
    • Рабочие температуры -40+85C
    • Время автономной работы *зависит от аккумулятора (Li-Pol 3.7V)
    • Порты USB 2.0 для зарядки смартфонов 2шт. Напряжение на USB порту 4,85...5,15V Выходной ток USB порта 600mA Дополнительный USB порт для Raspberry 1шт
    • Порт для Raspberry и Arduino 3шт Напряжение на портах 4,95V Ток на каждый порт 2,5A
    • Рабочие температуры -40+85C
    • Размеры 64x56x12мм
    • Вес 75гр

    Комплектация: плата PiGO, коннектор для подключения в прикуриватель автомобиля, 1 коннектор для подключения Raspberry, 1 коннектор для подключения Arduino, 1 коннектор для подключения внешнего аккумулятора, винты крепления, инструкция. 3D модель корпуса для 3D печати можно скачать бесплатно на сайте.

    Я думаю, что для вас будет полезно использовать в своих проектах.Более детально можно посмотреть по ссылке - https://www.indiegogo.com/projects/pigo-power-supply-arduino-powerbank/x/15069311#/

    Если есть вопросы, буду рад ответить тут.


  • Raspberry PI и цифровое телевидение dvb-t2
    piP pi

    Для просмотра передач цифрового телевидения на Raspberry pi нужно обзавестись тюнером, работающий по стандарту dvb-t2 и решить 3 задачи:

    • Убедиться, что Raspberry видит тюнер
    • Убедиться, что тюнер видит телевышку
    • Убедиться, что правильно настроены программы для приема, показа и записи телепередач

    Все это было реализовано на Raspberry Pi 3 под управлением Raspbian Stretch (Version:November 2018, Release date:2018-11-13, Kernel version:4.14)

    А теперь подробнее. (Букв будет много, но результат того стоит ☺)

    Задача 1. Убедиться, что Raspberry видит тюнер

    Для приема передач использовался тюнер AstroMeta Digital TV Dongle , который можно найти и купить на aliexpress, введя в поиск строку «DVB-T2 DVB-C FM DAB USB tv stick». Внутренности этого тюнера можно посмотреть по ссылке https://www.ixbt.com/monitor/astrometa-digital-tv-dongle.shtml
    837cb699-9bf1-409c-b35f-ba1b46026dd7-image.png
    После подключения тюнера к USB разъему нужно выйти в терминал и выполнить команду

    $ lsusb | grep HanfTek
    

    Если не экране появится строка, похожая на такую Bus 001 Device 007: ID 15f4:0131 HanfTek значит Raspberry видит тюнер на аппаратном уровне. В противном случае надо разбираться с плохими контактами, сгоревшими портами и плохим электропитанием.

    Если тюнер виден на аппаратном уровне, можно продолжить иввести команду $ sudo dmesg -t | grep dvb

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

    [ 31.201602] mn88473 4-0018: Direct firmware load for dvb-demod-mn88473-01.fw failed with error -2 
    [ 31.201653] mn88473 4-0018: firmare file 'dvb-demod-mn88473-01.fw' not found
    

    Это сообщение означает, что не найден файл dvb-demod-mn88473-01.fw , необходимый для работы тюнера. Файл нужно найти в интернете и положить его в папку /lib/firmware/ .

    Сделать это можно, выполнив следующие команды:

    $ cd /lib/firmware/
    $ sudo wget http://palosaari.fi/linux/v4l-dvb/firmware/MN88473/01/latest/dvb-demod-mn88473-01.fw
       или
    $ cd /lib/firmware/
    $ sudo wget https://github.com/OpenELEC/dvb-firmware/raw/master/firmware/dvb-demod-mn88473-01.fw
    

    После этого нужно перегрузиться и убедиться в нормальной работе тюнера.

    $ sudo reboot
    $ sudo dmesg -t | grep dvb
    

    Raspberry видит тюнер на программном уровне, если на экране будут такие строки:

    usb 1-1.3: Product: dvbt2
    usb 1-1.3: Manufacturer: astrometadvbt2
    usb 1-1.3: dvb_usb_v2: found a 'Astrometa DVB-T2' in warm state
    usb 1-1.3: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
    usb 1-1.3: dvb_usb_v2: schedule remote query interval to 200 msecs
    input: MCE IR Keyboard/Mouse (dvb_usb_rtl28xxu) as /devices/virtual/input/input1
    rc rc0: lirc_dev: driver ir-lirc-codec (dvb_usb_rtl28xxu) registered at minor = 0
    usb 1-1.3: dvb_usb_v2: 'Astrometa DVB-T2' successfully initialized and connected
    usbcore: registered new interface driver dvb_usb_rtl28xxu
    

    Ввод команды $ ls /dev/dvb/ покажет номер адаптера «adapter0», соответствующего подключенному тюнеру, а команда $ ls /dev/dvb/ adapter0 покажет название интерфейсов, которые поддерживает этот адаптер 0 demux0 dvr0 frontend0 frontend1 net0

    Для дальнейших настроек установите два пакета

    $ apt-get install dvb-tools dtv-scan-tables
    

    Можно посмотреть, что такое frontend0 и frontend1 у адаптера 0. $ dvb-fe-tool -a 0 -f 0 Вывод программы однозначно показывает, что frontend0 – это интерфейс для приема сигнала в формате DVB-T. $ dvb-fe-tool -a 0 -f 1 Глядя на вывод программы, убеждаемся, что frontend1 – это интерфейс для приема сигнала в формате DVB-T2 со всеми необходимыми возможностями и именно этот интерфейс будет использоваться для дальнейших настроек.

    Замечу, что вместе с работающим тюнером у Raspberry pi появился инфракрасный датчик, который отлично работает под lirc, но это в данной публикации рассматриваться не будет.

    Задача 2. Убедиться, что тюнер видит телевышку

    На сайте http://карта.ртрс.рф надо найти точку, в которой будут расположены тюнер и Raspberry. Щелкнув мышкой по этой точке можно увидеть параметры ближайших телевышек, с которых в дальнейшем будет приниматься телетрансляция. Для моего случая параметры такие:

    Расстояние: 10,13 км
    Направление: 339
    Пакет телеканалов РТРС-1 - ТВК 30 (546 МГц)
    Пакет телеканалов РТРС-2 - ТВК 24 (498 МГц)
    

    Расстояние и направление нужно для выбора антенны и ее ориентации при размещении.Частоты потребуются и при выборе антенны, и при настройки тюнера.

    У меня штатная антенна из комплекта тюнера не заработала при удаленности от вышки на 10 км и пришлось рассчитывать и делать антенну типа «Двойной квадрат Харченко».

    3fa1da51-1ad8-464f-905b-26439d205481-image.png

    Расчет делался по средней длине волны первого и второго мультиплекса. Кстати, третий мультиплекс на ТВК 34 (578 МГц) так же отлично принимается из-за широкополосности этой антенны.

    Скорость света = 299,792458 км/сек
    Средняя частота 1 и 2 мультиплексов = (546 + 498) / 2 = 522 Мгц
    Рабочая длина волны антенны = 299,792458 / 522 = 57,43 см
    Сторона квадрата антенны равна четверти длины волны, т.е. 57,43 / 4 = 14,36 см.
    Взявши медный провод длиной 115 см и диаметром 2,5 мм я сделал фигуру, похожую на восьмерку из двух квадратов со стороной 144 мм, запаяв стык в талии восьмерки. Зазор в талии восьмерки оставил равным 10 мм, припаяв экран коаксиала к одной стороне, а центральную жилу - к другой стороне талии. Место пайки поместил в пластиковую крышку от молока и залил пластиком, сохраняя зазор в 10 мм. Длина коаксиала до тюнера примерно 80 см. Сам тюнер включил в метровый USB удлинитель, рассчитанный на скорости USB2. Антенну разместил вертикально (т.е. как восьмерку), т.к. поляризация в Москве горизонтальная. Для приема сигнала с вертикальной поляризацией антенну надо размещать как восьмерку, лежащую на боку. Ориентировал антенну по компасу плоскостью на телевышку (в моем случае на 399 градусов).

    Антенна готова и можно приниматься за сканирование эфира.

    Таблицы сканирования расположены в папке /usr/share/dvb/dvb-t/, но нужный мне город отсутствует. Там есть таблица ru-all, которая рассчитана на сканирование всех частот, но она не учитывает используемый в Москве Multiple PLP - режим передачи нескольких каналов физического уровня внутри одного транспортного потока (мультиплекса).

    Для Москвы реальные трансляции такие:

    Мультиплекс 1 - 546 Mhz (plp 0, 1, 2)
    Мультиплекс 2 - 498 Mhz (plp 0)
    Мультиплекс 3 - 578 Mhz (plp 0)
    И соответствующая таблица сканирования выглядит так:

    [MULTIPLEX 1]
            FREQUENCY = 546000000
            MODULATION = QAM/256
            BANDWIDTH_HZ = 8000000
            INVERSION = AUTO
            CODE_RATE_HP = AUTO
            CODE_RATE_LP = AUTO
            GUARD_INTERVAL = AUTO
            TRANSMISSION_MODE = AUTO
            HIERARCHY = NONE
            STREAM_ID = 0
            DELIVERY_SYSTEM = DVBT2
    
    [MULTIPLEX 1-1]
            FREQUENCY = 546000000
            MODULATION = QAM/256
            BANDWIDTH_HZ = 8000000
            INVERSION = AUTO
            CODE_RATE_HP = AUTO
            CODE_RATE_LP = AUTO
            GUARD_INTERVAL = AUTO
            TRANSMISSION_MODE = AUTO
            HIERARCHY = NONE
            STREAM_ID = 1
            DELIVERY_SYSTEM = DVBT2
    
    [MULTIPLEX 1-2]
            FREQUENCY = 546000000
            MODULATION = QAM/256
            BANDWIDTH_HZ = 8000000
            INVERSION = AUTO
            CODE_RATE_HP = AUTO
            CODE_RATE_LP = AUTO
            GUARD_INTERVAL = AUTO
            TRANSMISSION_MODE = AUTO
            HIERARCHY = NONE
            STREAM_ID = 2
            DELIVERY_SYSTEM = DVBT2
    
    [MULTIPLEX 2]
            FREQUENCY = 498000000
            MODULATION = QAM/256
            BANDWIDTH_HZ = 8000000
            INVERSION = AUTO
            CODE_RATE_HP = AUTO
            CODE_RATE_LP = AUTO
            GUARD_INTERVAL = AUTO
            TRANSMISSION_MODE = AUTO
            HIERARCHY = NONE
            STREAM_ID = 0
            DELIVERY_SYSTEM = DVBT2
    
    [MULTIPLEX 3]
            FREQUENCY = 578000000
            MODULATION = QAM/AUTO
            BANDWIDTH_HZ = 8000000
            INVERSION = AUTO
            CODE_RATE_HP = AUTO
            CODE_RATE_LP = AUTO
            GUARD_INTERVAL = AUTO
            TRANSMISSION_MODE = AUTO
            HIERARCHY = NONE
            STREAM_ID = 0
            DELIVERY_SYSTEM = DVBT2
    

    Подготовить таблицу для своего города очень просто.В квадратных скобках указывается произвольное название транспортного потока.

    FREQUENCY = частота вещания потока в Гц

    MODULATION = вид модуляции. Если не знаете точно, то ставьте QAM/AUTO

    STREAM_ID = это тот самый номер канала физического уровня внутри транспортного канала с заданной частотой.

    Сохраните таблицу в папке /usr/share/dvb/dvb-t/ под именем «ru-название города». (В моем случае /usr/share/dvb/dvb-t/ru-Moscow). Далее нужно перейти в домашнюю папку и можно сканировать эфир программой dvbv5-scan, указав в параметрах номер адаптера, номер frontend и таблицу сканируемых частот.

    В моем случае это делается так: $ cd ~ $ dvbv5-scan -a 0 -f 1 /usr/share/dvb/dvb-t/ru-Moscow

    В домашней папке появится файл dvb_channel.conf, который можно посмотреть командой «less dvb_channel.conf».Если в нем есть названия каналов с частотами, модуляциями и т.д., по тюнер видит телевышку и можно настраивать программы для просмотра телепередач. Уровень принимаемого сигнала для разных каналов можно посмотреть так (указав название канала после параметра -r): $ dvbv5-zap -a 0 -f 1 -c dvb_channel.conf -r '01 ПЕРВЫЙ КАНАЛ'

    Если же сигнал не идет, то надо серьезно заняться подбором и настройкой антенны.

    Задача 3. Убедиться, что правильно настроены программы для приема, показа и записи телепередач.

    Для удобства просмотра нужно установить потоковый сервер и рекордер tvheadend .

    $ sudo apt-get install tvheadend
    

    При установке будут запрашиваться пароли для входа в настройки.Забытый пароль можно посмотреть в файле /var/lib/hts/.hts/tvheadend/superuser

    Чтобы работать без пароля нужно сделать 3 шага:

    • Остановить сервер (sudo service tvheadend stop)
    • В файле /etc/init.d/tvheadend строку ARGS="-f" заменить на ARGS="-f --noacl"
    • Запустить сервер (sudo service tvheadend start).

    Все настройки делаются через web интерфейс по адресу http://127.0.0.1:9981 и многократно описаны в инет. Минимально необходимые инструкции приведены ниже.

    Логика настроек tvheadend такая:

    Создать сеть внутреннего телевещания с частотами из таблицы сканируемых частот (напоминаю о /usr/share/dvb/dvb-t/ru-Moscow).
    Связать правильный интерфейс адаптера (напоминаю о adapter0 frontend1) с этой созданной сетью.
    Подождать завершения сканирования и разрешить трансляцию всех найденных каналов.
    Для создания сети на вкладке «Configuration» -> «DVB Input» -«Networks» нажать на зеленый плюс «Add»;Из списка выбрать тип сети «DVB-T» (именно «DVB-T», а не dvb-t2); В форме заполнить поля «Network:» (любое имя), «Pre-defined muxes:» (выбрать созданную ранее таблицу сканирования, например ru-Moscow), «Character set:» (выбрать AUTO) и нажать кнопку «Create»

    Для связывания адаптера с созданной сетью на вкладке «Configuration» - «DVB Input» - «TV adapters» ткнуть мышкой в «Panasonic MN88473 #0 : DVB-T #1» (что соответствует adapter0 frontend1). В форме, открывшейся справа, в разделе «Basic Settings» в поле «Networks:» выбрать созданную сеть. Там же поставить галку в поле «Enabled» и нажать на кнопку «Save».

    Для разрешения трансляции всех найденных каналов нужно перейти на вкладку «Configuration» -«DVB Input» - «Muxes», дождаться появления в колонке «Scan result» сообщения «OK» (либо «FAIL»). Далее на вкладке «Configuration» -«DVB Input» - «Services» в выпадающем списке «Mux Services» выбрать «Map all services» и нажать на кнопку «Save».

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

    • Чтобы посмотреть телетрансляции не выходя из web интерфейса tvheadend надо перейти на самую левую вкладку верхнего уровня «Electronic Progran Guide» с загруженной программой передач и ткнуть в иконку телевизора около требуемого канала.

    • Если хотите, чтобы у каждого канала показывался логотип, перейдите на вкладку «Configuration» -«General» - «Base». В нижней части открывшейся таблицы в поле «Picon path:» введите «file:///var/lib/hts/picons» (без кавычек), а в поле «Prefer picons over channel name:» поставьте галочку. Все файлы с логотипами телеканалов (png размером 256х256) скопируйте в папку /var/lib/hts/picons и смените владельца и группу для этих файлов на hts:hts. Далее на вкладке «Configuration» - «ChannelEPG» - «Channels» в каждое поле «User Icon» нужно ввести имя файла(без кавычек) с логотипом канала в формате «picon://01.png», «picon://02.png» и т.д.

    • Для просмотра на любом vlc плеере в сети нужен плейлист, который можно получить, набрав в браузере http://127.0.0.1:9981/playlist. Загрузится файл channels, который рекомендую переименовать в channels.m3u и использовать для просмотра в сети со всех компьютеров, планшетов и мобильных телефонов.

    • Для iPad и iPhone есть программа TvhClient, которая позволяет смотреть вещание сервера tvheadend и при необходимости запускать запись на Raspberry Pi.

    • Для Android-устройств так же есть программы-клиенты tvheadend, которые можно найти в Google Play, задав в строке поиска tvheadend.

    Для удобного просмотра телепередач непосредственно на Raspberry pi я использую kodi с пакетом kodi-pvr-hts.

    Установка и настройка kodi не сложна, но это уже совсем другая история.


  • Raspberry Pi PICO
    piP pi

    393bbf60-30d7-4150-987a-0899b2daeada-image.png
    Raspberry Pi не всегда является идеальным выбором для взаимодействия с внешней периферией - из-за того, что ПО запущено внутри операционной системы Linux оно не всегда подходит для работы с внешними I/O устройствами, если требуются минимальные задержки в приёме/передаче данных. Также на Raspberry Pi отсутствует встроенный АЦП для обработки аналоговых данных и большое энергопотребление - даже самая экономичная Raspberry Pi Zero потребляет минимум 100 мВт мощности.

    Во многих проектах Raspberry Pi используется в связке с микроконтроллером - RasPi выполняет сложные вычисления, обеспечивает доступ к сети и осуществляет хранение информации, а микроконтроллер обрабатывает данные, поступающие на аналоговые входы и общие порты ввода/вывода для обеспечения минимальных задержек. Также микроконтроллер может работать в режиме ожидания с минимальным энергопотреблением.

    Раньше у Raspberry Pi Foundation не было своих продуктов на основе микроконтроллеров (вроде Arduino или esp 32/esp 8266). Но теперь разработчики выпустили свой чип микроконтроллера RP2040 - и плату Raspberry Pi Pico на его основе.

    RP2040 - чип для платы Rasperry Pi Pico

    ed7e5dd5-f24b-4d01-b123-c285b45b8c3b-image.png

    При разработке RP2040 уделялось особое внимание 3 главным параметрам - высокой производительности (в частности при работе с целочисленными вычислениями), функциональности I/O портов для возможности взаимодействия с любыми внешними устройствами, и сохранению низкой цены. В итоге получился невероятно мощный и компактный чип (размером всего 7x7 мм в корпусеQFN-56, толщина кремния 40nm), обладающий следующими характеристиками:

    • Двухядерный Arm Cortex-M0+ частотой 133Мгц
    • 264Кб оперативной памяти
    • Поддержка чипов флэш-памяти до16 Mб через шину QSPI
    • DMA контроллер
    • 30 GPIO портов, 4 из которых могут быть испольщованы как аналоговые входы
    • 2 × UART, 2 × SPI, 2 × I2C
    • 16 × ШИМ каналов
    • 1 × USB 1.1 контроллер PHY, с поддержкой режимов host и device
    • 8 × программируемых I/O (PIO) машин состояния
    • Режим USB mass-storage boot с поддержкой прошивки через UF2
    • Для разработчиков ПО предоставляется также C SDK, тулчейн на основе GCC и интеграция со средой разработки Visual Studio Code.

    Так как в архитектуре Cortex-M0+ не предусмотрен "аппаратный" модуль для операций с плавающей точкой, разработчики предлагают использовать программные функции для операций с плавающей точкой от Марка Оуэна (их лицензия позволяет использование в любых продуктах на основе чипа RP2040 и они значительно быстрее аналогов gcc), автора популярной библиотеки Qfplib.

    С двумя быстрыми ядрами и большим количеством оперативной памяти RP2040 подходит и для проектов с машинным обучением (смотрите форк TensorFlow Lite Micro для RP 2040 от Пита Вордена -https://github.com/raspberrypi/pico-tflmicro)

    Для начинающих разработчиков, а также любителей Python совместно с разработчиком MicroPython создан порт MicroPython для RP2040, который позволяет использовать все возможности чипа, включая программируемые машины состояния. Также реализована поддержка MicroPython для RP2040 в популярной среде разработке Thonny

    Плата Raspberry Pico

    Raspberry Pi Pico недорогая двухслойная плата с чипом RP2040. На плате также присутствует чип Flash памяти на 2Mб и стабилизатор напряжения, позволяющий питать Pico от источника питания с напряжением от 1.8 до 5.5В.
    6ce81643-8872-4eae-9938-5b634e0aba67-image.png
    Также на плате есть кнопка, которой осуществляется вход в режим USB mass-storage boot (кнопка также может выполнять определённые пользователем функции) и светодиод.

    К отверстиям с шагом 2.54 мм по крайням платы подведены 26 линий (из 30 возможных) от GPIO контактов чипа RP2040, включая 3 (из 4 возможных) аналоговых порта. Также будет возможно купить Raspberry Pico с припаянными в отверстия контактными штырьками.

    Официальная цена - 4$

    Документация

    Datasheet чипа RP 2040

    Datasheet платы Raspberry Pico

    [Руководство для разработки плат с чипом RP 2040](Руководство для разработки плат с чипом RP 2040)

    Руководство по программированию Pico на C/С++

    Pico C/C++ SDK

    Pico Python SDK

    Описание ("распиновка") GPIO контактов Raspberry Pi Pico
    626dd633-5c73-4a25-86d7-90f0bb937613-image.png


  • Поддержка SATA добавлена в Raspberry Pi OS
    piP pi

    Раньше, чтобы использовать SATA накопители с Rasberry Pi, пользоваться скоростными преимуществами этого интерфейса и объединять SATA диски в RAID массивы, необходимо было пересобирать ядро, настраивая параметры SATA и AHCI

    Конечно можно было пользоваться и SATA-USB переходниками, но это приводило к падению производительности до 20% и невозможности построения RAID массивов.

    Но в этом месяце в Raspberry Pi OS наконец добавили встроенную поддержку для большинства PCI Express SATA адаптеров.

    Воспользоваться опцией смогут пользователи Raspberry Pi Compute Module 4, т.к многие отладочные платы для CM4 оснащены портом PCI express (на Raspberry Pi 4 порт PCI express не выведен).
    41abbf68-02bd-45f3-be1e-5cf5c6c533d7-image.png
    Встроенная поддержка SATA сильно облегчает построение RAID NAS на Raspberry Pi, например при помощи OpenMediaVault. Больше не нужно собирать и поддерживать кастомное ядро или проводить дополнительные работы - всё работает из коробки.

    Теперь множество задач, ранее выполнявшихся на огромных компьютерах и серверах, можно делегировать компактному Raspberry Pi

    В будущем предстоит реализовать возможность загрузки Raspberry Pi с SATA дисков (пока загружаться можно с USB, microSD, eMMC и даже с NVM)


  • Использование Raspberry Pi как беспроводной точки доступа
    piP pi

    564f9576-c0fb-4205-bad1-4a1f2a1f6d41-image.png
    Raspberry Pi внутри Ethernet сети может выступать как беспроводная точка доступа для беспроводных устройств.

    Существует два режима работы такой точки доступа - обычный и мост. В обычном режиме Raspberry Pi создаёт дополнительную сеть, которая изолирована от Ethernet сети. Схема сети для этого режима:

    Screenshot from 2024-11-21 05-14-44.png

    Если вам нужно раздать существующее Ethernet соединение беспроводным устройствам, то на Raspberry Pi нужно настраивать как точку доступа, работающую в режиме моста:
    Screenshot from 2024-11-21 05-15-11.png
    В этой статье сначала рассмотрим обычный режим, а потом мост

    Подготовка

    Для настройки необходим администраторский (root) доступ к Raspberry Pi.

    Подключите Raspberry Pi к Ethernet сети кабелем и загрузите его.

    В этой статье предполагается, что сеть с IP адресами 10.10.0.0/24 основная, а Raspberry Pi управляет сетью для беспроводных клиентов 192.168.4.0/24

    Также для тестирования точки доступа необходим клиент беспроводной сети(ноутбук, смартфон, и т.д)

    Установка необходимого ПО

    Чтобы Raspberry Pi мог работать как точка доступа необходимо установить пакет hostapd

    sudo apt install hostapd
    

    Активируйте службу беспроводной точки доступа и включите для неё автозапуск после загрузки:

    sudo systemctl unmask hostapd
    sudo systemctl enable hostapd
    

    Чтобы предоставить беспроводным клиентам службы управления сетью (DNS, DHCP) установите пакет dnsmasq

    sudo apt install dnsmasq
    

    Чтобы настройки файервола не сбрасывались после перезагрузки, установим пакет netfilter-persistent и плагин к нему iptables-persistent.

    sudo DEBIAN_FRONTEND=noninteractive apt install -y netfilter-persistent iptables-persistent
    

    Установка ПО закончена и далее нам предстоит его настроить

    Настройка маршрутизатора

    Raspberry Pi поднимет отдельную одиночную беспроводную сеть и будет управлять ей. А также маршрутизировать трафик между клиентами беспроводной сети и клиентами основной Ethernet сети и роутером.

    Для беспроводной сети на Raspberry Pi запущен DHCP сервер, для работы которого требуется присвоить беспроводному интерфейсу (wlan0) статический IP адрес

    Присваиваем статический IP адрес (192.168.4.1) точке доступа:

    sudo nano /etc/dhcpcd.conf
    

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

    interface wlan0
        static ip_address=192.168.4.1/24
        nohook wpa_supplicant
    

    Настройка маршрутизации и IP маскарадинга
    В этом разделе рассмотрим вопрос доступа беспроводных устройств из вспомогательной сети, организованной Raspberry Pi, к компьютерам основной Ethernet-сети и интернету.

    Для включения маршрутизации добавим в конфиг /etc/sysctl.d/routed-ap.conf строку:

    # Enable IPv4 routing
    net.ipv4.ip_forward=1
    

    Активация маршрутизации откроет участникам сети 192.168.4.0/24 доступ к основной сети и доступ в Интернет через основной роутер. Raspberry Pi может подменять IP адреса участников беспроводной сети своим IP адресом в основной сети, используя правило "маскарада" в своём файерволе, чтобы разрешить сетевой трафик между участниками беспроводной сети и Интернетом без изменения настроек роутера.

    Основной роутер будет воспринимать весь трафик от клиентов беспроводной сети, как трафик от Raspberry Pi
    Весь входящий трафик будет поступать на Raspberry Pi и перенаправляться клиенту беспроводной сети
    Добавляем новое правило в файервол Raspberry Pi:

    sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    

    Сохраняем правило при помощи netfilter-persistent, чтобы оно не сбросилось при перезагрузке.

    sudo netfilter-persistent save
    

    Настройки файервола хранятся здесь - /etc/iptables/. Не забывайте использовать netfilter-persistent при внесении изменений в правила файервола.

    Настройка DHCP и DNS для беспроводной сети

    Службы DHCP и DNS предоставляются пакетом dnsmasq. В стандартном конфиге dnsmasq содержатся примеры всех возможных настроек, нам нужны только некоторые, поэтому проще создать конфиг с нуля. На всякий случай сохраняем старый конфиг и создаём новый с таким же именем:

    sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
    sudo nano /etc/dnsmasq.conf
    

    Прописываем настройки в конфиг:

    interface=wlan0 # Listening interface
    dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h
                    # Pool of IP addresses served via DHCP
    domain=wlan     # Local wireless DNS domain
    address=/gw.wlan/192.168.4.1
                    # Alias for this router
    

    Raspberry Pi будет выделять клиентам IP-адреса в диапазоне 192.168.4.2-192.168.4.20

    Клиенты могут обращаться к RaspberryPi по доменному имени gw.wlan

    В разных странах действуют свои телекоммуникационные правила и разрешённые для радиопередачи диапазоны. Операционная система Linux помогает пользователям выполнять эти правила

    В операционной системе Raspberry Pi OS работа беспроводной сети в диапазоне 5GHz запрещена до тех пор, пока пользователь не внесёт в настройках двухбуквенный код страны (RU для России).

    Настройка ПО

    Чтобы убедиться, что работа Wi-Fi не заблокирована выполните команду

    sudo rfkill unblock wlan
    

    Далее создадим конфиг hostpad ( /etc/hostapd/hostapd.conf) и пропишем в него настройки:

    country_code=RU
    interface=wlan0
    ssid=NameOfNetwork
    hw_mode=g
    channel=7
    macaddr_acl=0
    auth_algs=1
    ignore_broadcast_ssid=0
    wpa=2
    wpa_passphrase=AardvarkBadgerHedgehog
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=TKIP
    rsn_pairwise=CCMP
    

    Обратите внимание, что имя сети (параметр ssid) и пароль (параметр wpa_passphrase) не должны содержать кавычек. Пароль должен иметь длину от 6 до 64 символов

    Указание кода страны позволяет Raspberry Pi использовать для передачи данных разрешённые в этой стране частоты.

    Чтобы использовать для передачи данных диапазон 5 GHz, нужно поменять параметр hw_mode=g на hw_mode=a. Возможные значения параметра hw_mode:

    a = IEEE 802.11a (5 GHz) (доступно начиная с модели Raspberry Pi 3B+)
    b = IEEE 802.11b (2.4 GHz)
    g = IEEE 802.11b (2.4 GHz)
    

    После смены режима hw_mode, возможно потребуется и смена номера канала (параметр channel)

    Завершение

    Теперь осталось только перезагрузиться.

    В следующей статье рассмотрим организацию точки доступа на Raspberry Pi в режиме моста


  • Подключение DC электромоторов к Raspberry Pi через драйвер L298N
    piP pi

    Если вы захотите собрать робота на колёсах, то столкнётесь с необходимостью изучения принципов работы управляющего электромоторами драйвера. Самый простой, недорогой и распространённый драйвер - L298N . Он может управлять скоростью и направлением вращения электромоторов
    fd30b231-86ed-4312-a116-d0ad05c8eebc-image.png

    Управление DC электромоторами

    Управление электромотором подразумевает под собой управление скоростью и направлением его вращения. Это достигается сочетанием двух методов:

    ШИМ (широтно-импульсная модуляция) для управления скоростью вращения
    H-Bridge - для управления направлением вращения

    Управление скоростью вращения при помощи ШИМ

    Скорость вращения мотора регулируется через изменение уровня подаваемого на него напряжения.

    ШИМ это методика, суть которой состоит в том, что среднее значение напряжение на входе регулируется серией импульсов ВКЛ-ВЫКЛ, т.е быстрыми включениями и выключениями подачи напряжения питания к двигателю.

    Средняя величина напряжения будет пропорциональна коэффициенту заполнения (ширине) импульса - чем больше коэффициент, тем выше напряжение, и наоборот.

    Эта картинка иллюстрирует данную зависимость:
    ddaa7f8d-5031-4af3-81f4-4f3535be002d-image.png

    H-Bridge

    Направление вращения регулируется сменой полярности входного напряжения. Стандартным способом реализации такой смены является H-Bridge

    В электрической цепи (которая визуально напоминает букву Н) H-Bridge присутствуют 4 ключа с мотором в центре этой цепи.

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

    L298N - драйвер электромотора

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

    Питание драйвера

    Питание к L298N подаётся через трёхконтактный зажимной терминальный разъём (провода вставляются в разъём и зажимаются вращением винта на разъёме).

    • 1 контакт Vs - питание, которое будет подаваться через драйвер на моторы;
    • 2 контакт GND - земля;
    • 3 контакт Vss - питание 5V для управляющего драйвером устройства, в качестве которого может выступать микроконтролер или Raspberry Pi)

    L298N имеет также встроенный стабилизатор (78M05) напряжения до 5V. Когда установлен джампер, то этот стабилизатор работает и с контакта Vss можно снимать 5V 0.5А для питания управляющего драйвером устройства. Когда джампер снят, то стабилизатор выключен, а значит нам нужно питатьуправляющее драйвером устройство от независимого источника питания.

    Использование джампера запрещено, при подаче на 1-ый контакт (Vs) напряжения, превышающего 12В. Это может привести к выходу из строя стабилизатора78M05 .

    Если джампер установлен, то контакт Vss работает как выход . Подавать на него напряжение извне в этом случае запрещено

    Падение напряжения на L298N

    Падение напряжение на драйвере может достигать 2В, за счёт падения напряжения на транзисторах Н-Моста. Таким образом, при подаче на контакт Vs 12В до электромоторов дойдёт только 10В, а значит они не смогут выйти на максимум своих оборотов (естественно речь идёт о 12-ти вольтовых DC электромоторах). Таким образом напряжение, подаваемое на контакт Vss должно быть на 2V выше напряжения работы электромотора (14В для 12-ти вольтовых моторов, 7В для пятивольтовых соответственно)

    Подключение DC электромоторов к драйверу

    Электромоторы подключаются к зажимным контактам по краям платы.
    5a63650b-b1c9-4a8f-b6dd-b7cf295740a5-image.png
    Можно подключать электромоторы, рассчитанные на напряжение 5-35V. Максимальный ток от драйвера к каждому мотору - 2А (если источник питания драйвера умеет отдавать столько тока)

    Контакты контроля направления вращения

    Используя контакты IN1-IN4, можно менять направление вращения электромоторов (различные уровни напряжения на этих контактах приводят к замыканию нужных пар ключей Н-Моста драйвера L298N) - по часовой стрелке или в обратном направлении.

    Контакты IN1 IN2 управляют направлением вращение первого электоромотора (А), IN3 IN4 - второго электромотора (В) Направление вращения моторов зависит от того, какой уровень напряжения (высокий или низкий) подаётся на эти контакты.

    Возможно 4 варианта:

    • Низкий уровень напряжения на обоих контактах - мотор выключен
    • Высокий уровень напряжения на обоих контактах - мотор выключен
    • In1 высокий уровень, In2 низкий уровень - мотор вращается вперёд
    • Ln1 низкий уровень, In 2 высокий уровень - мотор вращается назад

    Контакты контроля скорости

    Для управления скоростью вращения моторов используется контакты ENA (мотор А), ENB(мотор В)

    Низкий уровень - мотор отключен, высокий уровень - мотор работает на максимальных оборотах, ШИМ - различная скорость вращения в зависимости от коэффициента заполнения импульсов. По умолчанию на этих контактах установлены джамперы, их следует снять, если вы хотите управлять оборотами.

    Подключение L298N к Raspberry Pi

    Теперь, когда мы хорошо знакомы с драйвером L298N, можно подключить к нему питание, моторы и Raspberry Pi

    66096124-25be-4a46-bdaf-f63aae402ee7-image.png

    Raspberry Pi я запитал через 5V внешний аккумулятор PowerBank. Поскольку у меня не было аккумулятора на 12V драйвер L298N я запитал от того же внешнего аккумулятора, вставив в него повышающий DC/DC преобразователь

    f1186e19-1d62-4aee-bb42-12add363b640-image.png

    В следующей статье рассмотрим программирование двухколёсного робота с драйвером L298N


  • Еще раз для чайников и только для чайников - будьте внимательны, особенно кому за 50.
    piP pi

    Как миновать простых и незаметных ошибок при первоначальном запуске.

    Если Вам за пятьдесят и Вы очень уверены в себе, все равно внимательно изучите требования к этой "игрушке".

    Для меня запуск платы стал очередным маленьким уроком.

    Как говорят в армии - читайте устав.
    Итак, ошибки, которые для меня оказались незамеченными и привели к некоторым нервным движениям.

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

    Только для чайников!!!
    Буду предельно краток и приведу только результаты.

    1. На поверку оказалось, что система стартует, если даже не совпадает контрольная сумма дистрибутива. Как это отразится в дальнейшем пока не знаю. На всякий случай перекачиваю, хотя мой инет желает лучшего.

    2. Не верьте, точнее читайте внимательней, что система работает с любыми мониторами и телевизорами.

    Касательно монитора, то с VGA не работает, только с DVI.
    Посему приобретите кабель HDMI-DVI.

    Не обращайте внимание на подобное :

    Телевизор или монитор, имеющий входы HDMI или композитный (колокольчики), а так же подходящий кабель

    1. Блок питания постарайтесь приобрести более-менее стабильный. Я применил от моего HTC на 1А.

    2. Карту SD перед инсталяцией образа ОС отформатируйте sd-card reader/writer и panasonic sd карты formatter http://panasonic.jp/support/gl.....index.html.

    У меня заработала карта, которая не прописанная в списке разрешенных - Samsung 2 GB Micro SD от моего HTC.

    1. Если при записи имиджа возникает ошибка записи на SD, то карту меняйте или выбрасывайте. Не заморачивайтесь на восстановление.

    2. В статье http://habrahabr.ru/post/149890/ указано, что при загрузке малинка моргает всеми диодами, но у меня только PWR и OK, что ввело меня в заблуждение относительно работоспособности устройства. PWR и ОК - все в норме.

    3. Для первоначального запуска не нужно редактировать config.txt, как это указано в http://habrahabr.ru/post/149890/. Все должно заработать по умолчанию. Это все делается после освоения Linux.

    В итоге я потратил около 4 часов на исправление указанных ошибок. А все из-за невнимательности при изучении вопроса.

    Малинка загрузилась.

    О дальнейшем буду сообщать. Имеются планы по ее применению.

  • 1
  • 2
  • 310
  • 311
  • 312
  • 313
  • 314
  • 314 / 314
  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.
  • Первое сообщение
    Последнее сообщение
0
  • Категории
  • Главная
  • Документация
  • Последние
  • Пользователи