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

pi

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

Сообщения

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

  • Расширяем дисковое пространство с помощью Google Drive
    piP pi

    Прочитав статью про подключения к Малине облачного диска "Яндекс.Диск" я решил повторить описанное у себя на малине.Проблема в том, что экосистемой Яндекса я не пользуюсь, а регистрировать аккаунт ради одного только "Диска" - не вижу смысла. К тому же у меня уже есть аналогичный сервис от Google - "Google Drive"

    Покопавшись в интернете, собрав из кусков информацию я сумел подключить гуглодиск. Как это сделать опишу ниже. Замечу только, что инструкция рассчитана на то что у вас уже есть аккаунт GoogleDrive. Если нету - вы всегда можете зарегистрировать его здесь https://drive.google.com/

    Итак, приступим.

    Для начала зайдем на сайт http://dav-pocket.appspot.com/ . Тут нам нужно зарегистрировать аккаунт. Это нужно потому, что изначально Google Drive не поддерживает протокол WebDav, а наш софт, который мы будем использовать для монтирования работает именно с ней. Сайт выступает в роли промежуточного звена - он берет данные из Google Drive и как бы выставляет их в виде WebDav. Для регистрации нужно нажать оранжевую кнопку "Sign up", после чего ввести желаемое имя пользователя и пароль (дважды). Подтверждение по Email не требуется, так что вас сразу перенаправят на следующую страницу, где нужно будет нажать кнопку "Authorize DAV-pocket service". По её нажатию Вас перенаправит на страницу гугла, где Вы должны будете предоставить доступ к Вашему аккаунту. После проделанного вас перебросит на страницу, где вам будут выданы данные для подключения, а именно Server Adress (адрес сервера), Login (логин) и Password (пароль :). Можете оставить эту вкладку открытой, или просто сохраните эти данные - они понадобятся нам во время следующих действий. Когда все описанное выше проделано, вооружимся консолью Raspberry Pi и выполним в нем следующие команды: 1. Установим davfs2:

    sudo apt-get install davfs2
    

    Соглашаемся на то, чтобы система скачала архив.2. Перенастроим пакет davfs2

    sudo dpkg-reconfigure davfs2
    

    В открывшемся интерфейсе выбираем "Да". Этим мы позволим монтировать систему непривилегированным пользователям ОС.3.Добавим нашего пользователя в группу davfs2

    sudo usermod -aG davfs2 pi
    

    pi - это имя пользователя. Если вы меняли стандартное имя то впишите вместо "pi" имя вашего пользователя. 4. Создадим папку, куда будет монтироваться наше облако.

    mkdir Gdrive
    

    Опять же. "Gdrive" - имя папки. Вы можете выбрать любое которое нравится Вам, но в дальнейшем инструкция будет написана именно для этого имени файла. 5. Настроим параметры авторизации.

    sudo nano /etc/davfs2/secrets
    

    Откроется файл, в конец которого надо добавить запись формата:

    https://dav-pocket.appspot.com/docso [Логин выданный сайтом] [пароль выданный сайтом]
    Логин и пароль нужно ввести без квадратных скобок. То есть, к примеру, если сайт выдал Вам логин "Login123", а пароль "parol", то запись будет такой:

    https://dav-pocket.appstot.com/docso Login123 parol
    Сохраняем файл -Ctrl+O и закрываем его - Ctrl+X6. Настраиваем автоматическое монтирование.Для того чтобы наше облако автоматически монтировалось при инициализации сетевого интерфейса нам нужно отредактировать файл fstab

    sudo nano /etc/fstab
    

    В него нужно дописать следующую строку (в конец)

    https://dav-pocket.appspot.com/docso [абсолютный путь к папке монтирования] davfs uid=1000,user,rw,_netdev 0 0
    

    абсолютный путь к папке указывается БЕЗ квадратных скобок, и выглядеть должен как путь из корня файловой системы. Например если Вы создали папку Gdrive в домашней папке пользователя pi, то путь будет выглядеть так:

    /home/pi/Gdrive
    Сохраняем файл - Ctrl+O и закрываем его - Ctrl+X, по уже знакомой нам схеме.Теперь осталось только перезагрузить Малинку для проверки автоматического монтирования.

    sudo reboot
    

    Если все сделано правильно, то в папке которую вы создали и выбрали как точку монтирования должны появиться файлы находящиеся на облаке (советую закачать туда хоть что-то для наглядности, если у вас там пусто). Эти файлы не занимают места на SD карте, но при этом остаются доступными для редактирования.Надеюсь эта статья будет кому-то полезна. Если вы найдете какие-то ошибки, или у вас возникнут какие-то вопросы - пишите это все в комментарии - буду рад ответить.


  • Управление освещением и голосовое оповещение о погоде
    piP pi

    Управление освещением и голосовое оповещение о погоде. Пример кода и электрическая схема подлючения реле к Raspberry Pi. Запилил видео, где рассказываю о простейшем применении "малинки".

    Предварительно установитеmplayer и alsa:

    sudo apt-get install alsa-utils
    sudo apt-get install mplayer
    

    Также установите pip для Python, для легкой установки пакетов. И затем c его помощью установите feedparser. Рассказывать не буду, проще найти информацию по запросу "install pip python" в гугле )

    Сам код для скрипта WebIOPi:

    # заставляем работать с кодировкой utf8, необходимо для гугло транслита
    # -*- coding: utf-8 -*-
    # импорт модулей
    import webiopi
    import subprocess
    import feedparser
    
    # получаем GPIO
    GPIO = webiopi.GPIO
    
    # константы на нумерацию портов GPIO
    LIGHT = 23
    LIGHT2 = 18
    BUTTON1 = 17
    BUTTON2 = 22
    
    def setup():
        # конфигурируем пины GPIO
        GPIO.setFunction(LIGHT, GPIO.OUT)
        GPIO.setFunction(LIGHT2, GPIO.OUT)
        GPIO.setFunction(BUTTON1, GPIO.IN)
        GPIO.setFunction(BUTTON2, GPIO.IN)
    
    def loop():
    	# ловим нажатие кнопки 1
    	if (GPIO.digitalRead(BUTTON1) == GPIO.HIGH):
    		# инвертируем значение на пине (программный свитч)
    		GPIO.digitalWrite(LIGHT, not GPIO.digitalRead(LIGHT))
    	# ловим нажатие кнопки 2
    	if (GPIO.digitalRead(BUTTON2) == GPIO.HIGH):
    		# предупреждаем о задержке
    		subprocess.call(["mplayer", "http://translate.google.com/translate_tts?tl=ru&ie=UTF-8&q=Пожалуйста, ожидайте, запрашиваю погоду."])
    		# вытаскиваем погоду
    		d = feedparser.parse('http://rp5.kz/rss/76334/ru')
    		# читаем погоду
    		subprocess.call(["mplayer", "http://translate.google.com/translate_tts?tl=ru&ie=UTF-8&q="+d.entries[0].title])
    
    def destroy():
    	# заканчиваем работу, выключаем свет )
        GPIO.digitalWrite(LIGHT, GPIO.LOW)
    

    Схема:

    Транзистор любой NPN структуры, я использовал советский КТ961Б, для работы в режиме коммутации подойдет любой. Сопротивление подобрать для необходимого тока открывания транзистора. Реле я взял SRI-05VDC-SD-C с напряжением 5 вольт и максимальным током для контактов 10А. Диод 1N4001 вроде, необходим для уберания эффекта самоиндукции катушки реле, иначе попалим транзистор и ногу малинки. Земля на транзисторе общая с питанием реле и малиной. НИ В КОЕМ СЛУЧАЕ НЕ ПИТАЙТЕ РЕЛЕ ОТ GPIO! Спалите нахрен малину) Перед питанием можно включить реле. А так желательно отдельный источник питания для таких штук. Реле можно и на 12 вольт.Просьба не винить меня за спаленные малины, делаете все на свой страх и риск. Необходимо уметь держать паяльник и знать основы работы с электрическими цепями. Осторожнее в цепях 220 вольт! Это смертельно.


  • Выжмем по максимуму из Raspbian!
    piP pi

    Нет, это не то, о чём Ты, дорогой читатель, думаешь. Я не создавал образа через загрузчик, не вырезал приложения из Raspbian, и так далее по списку извращений с готовым образом. Сегодня Мы поговорим о Minibian и настройке WM (оконного менеджера) в целях сохранения ОЗУ и мощности ЦП. Кому интересно - прошу, красноглазим).

    Скачаем и запишем образ, лежит здесь: ТЫЦ

    После загрузки - голая консоль.... Едем далее. Пока будем смотреть в паутину через Ethernet-port.

    apt update - обновляем список пакетов

    apt install firmware-brcm80211 pi-bluetooth wpasupplicant firmware-realtek wpasupplicant -y - устанавливаем драйвера

    Теперь можно поднять Wi-Fi:

    Поправим файл /etc/network/interfaces . Пропишем там

    allow-hotplug wlan0
    iface wlan0 inet manual
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
    iface default inet dhcp
    

    Теперь поправим файл /etc/wpa_supplicant/wpa_supplicant.conf . Пропишем там

    network={
    ssid="Имя вашей сети"
    psk="Пароль"
    }
    

    Перезагружаемся, можно вытащить Ethernet.

    apt install nano sudo rpi-update raspi-config -y - устанавливаем текстовый редактор, sudo, специальную утилиту обновления, утилиту конфигурации

    Запустим raspi-config. Там нажмём:

    expand_rootfs - здесь вы можете увеличить корневой раздел на всю SD

    configure_keyboard - в этом пункте вы можете выбрать драйвер клавиатуры

    change_locate - установка языка

    change_timezone - выбор часового пояса.

    memory_split - управление памятью видеочипа. Здесь стоит выбрать 128M для работы с 180p 60FPS, так как память видеочипу выделяется из ОЗУ

    overclock - разгон процессора. Сильно, думаю, гнать не стоит. Можно повредить SD и увеличить температуру ЦП. При разгоне рекомендую иметь хорошую карту памяти, радиаторы и куллер на ЦП

    ssh - включение или выключение сервера удалённого доступа SSH.

    Далее нажимаем Ctrl+F и соглашаемся на перезагрузку.

    rpi-update - обновимся

    adduser pi - добавим пользователя в систему.

    usermod -a -G sudo pi - дадим пользователю возможность использовать sudo

    visudo - откроем настройки sudo

    И пропишем: pi ALL=(ALL) ALL

    Сохранимся.

    Снова перезагрузимся, и войдём теперь уже под пользователя pi.

    sudo apt install xorg - установим графический сервер.

    Изменим файл ~/.xinitrc Пропишем там: exec openbox-session

    Сохранимся

    Далее

    nano -w ~/.bash_profile - откроем редактором файл ~/.bash_profile

    И пропишем там: [[ $(fgconsole 2>/dev/null) == 1 ]] && exec startx -- vt1

    Сохранимся

    nano -w /etc/inittab - откроемредакторм файл /etc/inittab и пропишем там: c1:2345:respawn:/sbin/agetty -a pi -8 -s 38400 tty1 linux

    А так же поставим # перед существующей похожей строкой

    Сохранимся

    sudo apt install openbox obenbox-themes obconf obmenu tint2 feh lxterminal lxappearance -y - установим WM, панель, апплеты, терминал и утилиты для настройки.

    Скачаем картинку для обоев, например файл 1.jpg в домашнюю папку.

    Теперь откроем файл ~/.fehbg

    И пропишем там: feh --bg-scale '/home/pi/1.jpg'

    Сохранимся

    Теперь настроим панель, я предпочитаю настройки от Manjaro, его можно взять тут: ТЫЦ.

    Скопируем конфиг в файл ~/.config/tint2/tint2rc

    Теперь настроим Openbox. Обои мы почти установили, откроем файл ~/.config/openbox/autostart.sh и пропишем там:

    xmodmap ~/.Xmodmap &
    feh --bg-scale /home/pi/1.jpg &
    tint2 &
    Сохранимся

    Теперь запустим графику: startx

    Если всё сделали правильно - перед нами будут обои, панелька и меню приложений по ПКМ. Им и займёмся. Запустим obmenu.

    Там видны все подпапки. С помощью кнопки + можно добавить приложение. Появятся графы Name, Execute. Name - имя приложения в меню, Execute - само приложение. Например Name=Terminal, Execute= lxterminal, то в меню появится строка Terminal, кликнув по которой, мы запустим lxterminal. Удалять приложения из меню кнопкой -.

    Тепеь запустим obconf. Там можно выбрать тему окон, добавить или убрать кнопки окон и многое другое. Настройка также через графику.

    Теперь запустим lxappearance. Также загрузим иконки и по желанию gtk-тему. Установим их в меню lxappearance.

    Впринципе, настройка openbox окончена, более подробно тут: ТЫЦ. Установим нужные приложения, приведу небольшой список легковесных:

    luakit - браузер

    pcmanfm - файловый менеджер

    leafpad - текстовый редактор

    lxmusic - аудиоплеер

    vlc - видеоплеер со всеми кодеками

    libreoffice - офис

    p7zip и unrar - архиваторы

    И очистим кеши, а также удалим не нужное:

    sudo apt purge obconf obmenu raspi-config lxappearance
    sudo apt clean
    На сим, думаю, всё. Ман написал для конкурса "Автор Месяца".


  • WineHQ на Raspberry Pi.Сказ о том,как я хотел Windows приложения на Raspberry Pi запустить.
    piP pi

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

    Внимание!Статья довольно бредовая :).Слабонервным лучше не читать.

    В конце статьи расскажу как запустить Windows

    Данная история началась уже довольно давно,еще в прошлом году меня посетила эта поистине бредовая затея.

    После непродолжительных поисков я наткнулся на статью о том,как кому-то удалось скомпилировать Wine для Малинки.Понимая головой,что Windows приложения написаны для x86/x64 ,а Малинка имеем ARM процессор я все таки решил попробовать посмотреть ,что получится.

    Загрузив исходники я запустил их компиляцию на Raspberry Pi и пошел спать.

    На утро я увидел,что все собралось без единой ошибки и на лице появилась глупая улыбка 🙂
    f22d231a-9024-4c56-a91d-975f6f77c8ec-image.png

    И что с этим делать?
    Да ничего на самом деле.Мне удалось собрать блокнот(notepad.exe) из React OS для малинки и запустить его.

    А если я хочу и правда запустить x86 приложения ?
    Тогда есть QEMU и ExaGear Desktop!

    Чтож,будем запускать Windows в Qemu

    sudo apt-get install
    sudo apt-get uprage
    sudo apt-get install git zlib1g-dev libsdl1.2-dev libpixman-1-0 libpixman-1-dev
    

    Загрузим исходник

    git clone git://git.qemu-project.org/qemu.git
    

    Теперь мы соберем программу из исходника

    cd qemu
    ./configure --target-list="i386-softmmu" --enable-sdl --prefix=/usr
    sudo make
    

    Отладка может продолжаться неопределённое время, (~15-20 минут). Последнее, что мы должны сделать, это подправить конфигурации и отладить.

    sudo nano /home/pi/qemu/tcg/arm/tcg-targe­t.c
    sudo nano /home/pi/qemu/tcg/i386/tcg-targ­et.c
    

    Зажимаем Ctrl+W, открывается строка поиска, вводим: static void tcg_out_addi. Меняем на static inline void tcg_out_addi. Переходим ко второму конфигу, так же вызываем строку поиска и вводим этот текст: static void tcg_out_opc и меняем на static inline void tcg_out_opc. Если вы не нашли какую-то из строк, то ничего не делаем, а просто закрываем конфиг и выполняем следующий шаг (в первом конфиге я не нашёл нужную строку, однако эмулятор у меня работает нормально).

    Идем дальше.

    sudo make
    sudo make install
    

    Загрузим образ отсюда

    В директории с образом выполним

    qemu-system-i386 здесь тип образа (-hda, -fda, -cdrom) НазваниеВашегоОбраза.img -m
    Тут_Кол-во_ОЗУ_В_МБ(Без подчёркиваний)
    

    Если все было сделать правильно,то начнется загрузка системы.Медленно,но начнется,правда 🙂


  • DOOM на Raspberry Pi
    piP pi

    Статья для тех,кому не хватает средств на новый DOOM ,хочется поностальгировать или для тех кто делает эмулятор консолей на Raspberry Pi.

    Загрузим саму игру в /home/pi

    wget https://www.chocolate-doom.org/downloads/2.2.1/chocolate-doom-2.2.1.tar.gz
    

    Установим нужные пакеты

    sudo apt-get update
    sudo apt-get install gcc build-essential libsdl1.2-dev libsdl1.2debian libsdl-image1.2 libsdl-image1.2-dev libsdl-mixer1.2 libsdl-mixer1.2-dev libsdl-net1.2 libsdl-net1.2-dev timidity
    

    Распакуем архив с игрой

    tar zxvf chocolate-doom-2.2.1.tar.gz
    

    Соберем и установим

    ./configure
    sudo make
    sudo make install
    

    Отлично! В принципе все готово, но для того, чтобы DOOM избавился от мелких фризов надо настроить Chocolate Doom. Для этого сделаем следующее:

    Введем в терминале

    chocolate-doom-setup
    

    Эта команда запустит окно напоминающее DOS. Идем в Display configuration, нажимаем "A" на клавиатуре, убираем точку с пункта Fix aspect ratio, а затем выставляем оконный режим и разрешение экрана от 1280x800 и ниже. Сохраняем.

    Осталось запустить DOOM. Для этого нам понадобится .wad файл. Скачиваем эти 2 .wad файла, кидаем в /home/pi и запускаем

    chocolate-doom -iwad ~/имяфайла.wad
    По всем вопросам можете обращаться в комментарии,постараюсь помочь

    Если не получилось,то не расстраиваемся,ведь DOOM есть также в магазине приложений для Raspberry Pi


  • Полезный совет начинающим (команда wget, watch)
    piP pi

    Как вы все наверное знаете в linux есть полезная команда Wget - благодаря ней вы сможете скачивать файлы по HTTP протоколу с серверов. Ну так вот иногда может возникать потребность сохранять скачиваемый файл под другим именем. Так вот делается это при помощи "Настройки"-O. Вот пример её использования:

    wget http://google.com -O google.html
    

    В Linux есть одна классная команда называется watch. Благодаря ней вы сможете повторять одну и ту же команду за n количество секунд. Вот вам пример её использования:

    watch -n 9 python myscript.py
    

    Эта команда будет запускать скрипт myscript.py каждые 9 секунд


  • Прощай ноут и долой ПК. Малинка в качестве приличного десктопа
    piP pi

    Самой большой моей мечтой за долгие годы, было посидеть в тишине, а не слушать как многочисленные вентиляторы с завыванием гоняют пыль в пылающих недрах БЭСМ, а им вторят неутомимым стрекотанием диски, вечно чем-то озадаченные.

    Итак, перфокарты в мусорку, ноут другому страдальцу, а Raspberry Pi 3 model B прикручена к спине монитора. Что мы имеем? Топовое железо уровня 2005 года и проблему с узким бутылочным горлышком в виде дискового ввода-вывода.

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

    70de6769-eee5-4b09-a7cc-1e66a2770ba1-image.png

    Вижу, что количество тех кто остался значительно сократилось, но это самые смелые люди. Хорошо, тогда продолжим и примем вызов брошенный нам в лицо этими творцами неуемных в своем аппетите программ. Давайте раздробим проблему на более мелкие и не связанные с собой части. Увеличим размер доступной памяти, попробуем свести к минимуму обращение к диску (под ним будем иметь в виду нашу SD-карту), избавимся от "лишних" занимающих память программ.

    Часть первая

    Увеличь свою память быстро! без рекламы регистрации и смс Физически увеличить память на устройстве не получится. Но руки опускать рано ведь в линуксе есть zram.

    zRam — модуль ядра Linux. Он увеличивает производительность путём предотвращения подкачки страниц на диск, используя сжатое блочное устройство в оперативной памяти, пока не появится необходимость использовать файл подкачки на жёстком диске. Скорость обмена с оперативной памятью быстрее, чем с жёстким диском, следовательно zRam позволяет Linux производить большее число операций подкачки, особенно на старых компьютерах с малым объёмом оперативной памяти.

    Добавляем в конец файла /etc/rc.local инициализацию и запуск модуля zram (перед строкой exit 0):

    modprobe zram num_devices=4  # Пусть все 4 ядра будут задействованы для компрессии
    
    SIZE=512    # Отдадим под псевдо свап-файл 512 Мб
    echo $(($SIZE*1024*1024)) > /sys/block/zram0/disksize
    echo $(($SIZE*1024*1024)) > /sys/block/zram1/disksize
    echo $(($SIZE*1024*1024)) > /sys/block/zram2/disksize
    echo $(($SIZE*1024*1024)) > /sys/block/zram3/disksize
    mkswap /dev/zram0
    mkswap /dev/zram1
    mkswap /dev/zram2
    mkswap /dev/zram3
    swapon /dev/zram0 -p 10
    swapon /dev/zram1 -p 10
    swapon /dev/zram2 -p 10
    swapon /dev/zram3 -p 10
    
    

    Файл доступен на запись только пользователю root, так что не забудьте $
    sudo leafpad /etc/rc.local

    Часть вторая

    Посади толстяка на диету

    69b36f1f-13d5-4180-a6a5-77653c473edf-image.png

    В качестве ежовых руковиц мы возьмем расширения для хрома OneTab которое группирует все открытые вкладки в одну (а одна открытая вкладка = запущенному процессу = съеденной памяти) и uMatrix который фильтрует контент страницы удаляя рекламу, скрипты фреймы, аудио и видео. Если uMatrix покажется вам слишком агрессивным, попробуйте uBlock Origin.

    Часть третья

    Все ненужное на слом, соберем металлолом! Ребята колдующие над Raspbian и так постарались основательно подчистив lxde и дальнейшее творчество рассчитано исключительно на людей сильных духом и обладающих пытливым умом.

    Поскольку я давно заметил что наблюдаю красивые обои только после включения компьютера, а затем они быстро пропадают под многочисленными окнами, то если их не будет, ничего страшного не случиться. Тоже относиться и к обрамлению окон. Ну а если так, то почему бы не попробовать в меру аскетичный оконный менеджер что-то вроде awesome, dwm, wmii, larswm, 9wm, w9wm...

    Странно, почему они все пытаются в той или иной мере воссоздать окружение Plan9? Лично я возьму plan9port от Расса Кокса и скомпилирую его. Но предварительно нужно поставить необходимые библиотеки для сборки.

    $ sudo apt install libx11-dev libxext-dev libxt-dev
    

    Скачанный plan9port-master.zip сохраню в /opt/plan9port распакую и запущу компиляцию $ ./INSTAL После сборки создадим файл ~/.xsession следующего содержания

    export PLAN9=/opt/plan9port
    export PATH=$PATH:$PLAN9/bin
    export LANG=en_US.UTF-8
    font=$PLAN9/font/lucm/unicode.9.font
    GS_FONTPATH=$PLAN9/postscript/font
    home=$HOME
    prompt="$H=;  "
    user=$USER
    export \
    
    GS_FONTPATH \
    font \
    home \
    prompt \
    user\
    plumber &
    /home/pi/riostart &
    
    exec rio
    

    Еще один файл ~/riostart для "автозапуска" нужных вам приложений

    #!/opt/plan9port/bin/rc
    stats -W 100x100@0,0 -lmsew &
    xclock -geometry  100x100+0+100 &
    9term -W 500x300@300,770 &
    9term -W 310x200@1600,870 &
    

    Сделаем его исполняемым $ chmod a+x ~/riostart

    Ну и напоследок, добавим в конец ~/.bashrc пару строк

    PLAN9=/opt/plan9port export PLAN9
    PATH=$PATH:$PLAN9/bin export PATH
    

    Почитать про Plan9 , оконный менеджер Rio и редактор Acme можно на вики.

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

    Чтобы загружалась ваша привычная оконная среда вам понадобиться удалить или переименовать файл .xsession

    $ mv ~/.xsession ~/.xsession.old
    

    Желаю Вам быстрой и приятной эксплуатации малинки!


  • Не очевидное использование Raspberry Pi 3
    piP pi

    Заказал себе Raspberry Pi 3 с комплектом датчиков. Заказал не потому что человек рукастый и разбираюсь в скупых строчках программного кода. Этого как раз нет. Обычный пользователь ПК и операционной системы под названием Windows.

    Заказал потому, что интересно. И не дорого. Мне кажется, что архитектура устройства прямо призывает к творческому процессу. Типа, вот тебе мозг, осталось приставить руки и ноги и оно пойдет. На самом деле, так и есть.

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

    И в основном, судя по постам этого блога, люди используют Raspberry для приятного время препровождения: заставляют мигать светодиод по созданной ими программе, отключать свет и всякое такое. Но почему только это? Почему только очевидное?

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

    Это примеры, как бы, с потолка. И я понимаю, что все это как раз и реализуемо. Предложений почему-то не видно. И вот к чему я все это пишу. Хочу сформировать группу молодых и талантливых разработчиков и конструкторов для реализации интересных проектов на Raspberry Pi 3 к взаимной выгоде. Буду рад любым идеям!


  • Lego вездеход с видео и bluetooth на Raspberry
    piP pi

    Особенности- управляется через bluetooth с android-планшета

    • транслирует видео- определяет расстояние до предметов перед собой
    • фары для движения в темноте
    • более 4-х часов работы без подзарядки
    • всё программирование raspberry сделано на Java

    6a27adcc-37f2-4d15-b61b-b0ae8ced942e-image.png

    Детали по реализации и инструкция

    http://privateblog.info/lego-vezdexod-s-video-i-bluetooth/
    http://privateblog.info/dorabotka-lego-vezdexoda/

    09c52863-5540-4fa4-986e-244cf8a02fdb-image.png

    b10ddefc-f3fa-4b4b-bcc3-91cc97787ba0-image.png

    2b229c71-3a4b-4033-a8f7-89de50e59ae6-image.png

    51ede801-18f6-42e7-b290-79f0e2a606a1-image.png

    7424eee0-d668-45fb-8143-f4cc0f01bfd3-image.png


  • Домашнее облачное хранилище на основе Nextcloud и Raspberry Pi
    piP pi

    Знаете ли вы, что существует открытое решение, позволяющее создать домашний облачный сервер наподобие Google Drive на Raspberry Pi?

    Nextcloud — это клиент-серверное программное обеспечение для создания приватных облаков, где файлы хранятся на жёстком диске у вас дома или в офисе и больше нигде. Файлы доступны только вам и вашим друзьям. Обменивайтесь фотографиями, редактируйте документы, настраивайте права доступа с помощью приложений для Windows, Mac OS, Linux, Android и iOS.

    Добрые ребята из компании Google анализируют содержимое файлов в Google Drive, но у них нет физического доступа к файлам в домашних облачных хранилищах. В этом главное отличие приватных облаков на основе Nextcloud от Google Drive, Dropbox, Яндекс.Диск и т.п.

    Пару лет назад мой друг Максим скопировал все свои фотографии и видеозаписи на домашний неттоп, установил ownCloud(предшественник Nextcloud), купил статический ip-адрес у интернет-провайдера и открыл доступ через интернет для друзей. Получилось домашнее облако. Мы ездили в горы, много фотографировались и загружали фотографии в домашнее облако Максима через приложение Nextcloud.

    830bd41f-e6a7-4269-ba1c-22bf7aebec6e-image.png

    Недавно я подключил 1 ТБ жесткий диск к Raspberry Pi 3, установил Nextcloud Server 11 и запустил собственное домашнее облако. Установка и настройка Nextcloud Server оказалась самым сложным для меня и заняла два часа. Инструкция на официальном сайте написана для системных администраторов, а не для рядовых пользователей. Мне пришлось скачивать файлы через wget, править конфигурационные файлы через vim, настраивать веб-сервер, СУБД, PHP и т.д. И вот, чтобы вам сэкономить время, команда разработчиков cusbeb.com подготовила образ для SD-карты с установленным и настроенным Nextcloud Server 11.

    Нажмите здесь, чтобы скачать образ

    На всякий случай, вот исходники.

    Итак, простой способ создать домашнее облако:

    1. Скачайте образ для вашей модели Raspberry Pi по ссылке выше.

    2. Запишите образ на SD-карту и вставьте в Raspberry Pi.

    3. Отформатируйте внешний HDD или USB-флешку в NTFS и подключите к Raspberry Pi. Обращаю ваше внимание, что хранилище данных должно быть подключено к Raspberry Pi до включения питания.

    4. Подключите Raspberry Pi к локальной сети или к роутеру.

    5. Включите питание. Внимание! При первом запуске на инициализацию образа требуется 5 минут.

    6. Узнайте адрес Raspberry Pi в локальной сети, допустим это x.x.x.x.

    7. Запустите браузер на любом устройстве, подключенном к локальной сети, и в браузере наберите http://x.x.x.x:8001/nc

    8. Если вы всё сделали правильно, то увидите страницу завершения настройки Nextcloud Server. Придумайте логин и пароль администратора и нажмите кнопку Завершить установку. Пожалуйста, не меняйте значения в заполненных полях из раздела Хранилище и база данных.

    9. Если хотите подключаться к облаку не только через локальную сеть, но и через интернет, то купите статический ip-адрес у своего интернет-провайдера и настройте роутер.

    13427ec3-6c18-4681-95b6-f02321446070-image.png

    После того, как Nextcloud Server настроен, к нему можно подключаться различными способами, например, через браузер, но я обычно пользуюсь мобильным приложением для Android: https://play.google.com/store/apps/details?id=com.nextcloud.client&hl=ru Вот так выглядит загрузка файлов с моего телефона в облако:
    57ccfcc8-c647-436b-93f1-00738c5dcb2c-image.png

    Рекомендую ознакомиться с руководством пользователя на официальном сайте Nextcloud: https://docs.nextcloud.com/server/11/user_manual/

    Также, мы постоянно обновляем информацию об образе на странице wiki: https://cusdeb.com/w/Nextcloud_на_Raspberry_Pi/ru

    Пишите в комментариях или на почту denismosolov@cusdeb.com если что-то не получается, я постараюсь оперативно помочь.

    Денис Мосолов,разработчик https://cusdeb.com


  • Несколько операционных систем на одной карте памяти, Berryboot
    piP pi

    f388f59f-bacd-4bc9-a31c-b6e500b4d992-image.png
    Raspberry Pi загружает операционные системы со сменных карт памяти SD/microSD (в зависимости от модели), поэтому можно держать разные операционные системы на разных картах памяти, вставляя карту памяти с нужной операционной системой, когда это потребуется. Инструмент, который нахывается BerryBoot позволяет сократить количество карт с операционными системами, предоставляя возможность загрузки множества операционных систем с одной карты памяти. На одну карту памяти ёмкостью 32Gb можно записать множество полезных дистрибутивов.

    Кроме того BerryBoot может настроить Raspberry Pi для загрузки с внешнего жёсткого диска или USB флэшки, которую можно сделать загрузочной и записать на неё множество операционнных систем. Удобно иметь возможность выбора операционной системы при загрузке и далее мы рассмотрим как это осуществить при момощи BerryBoot

    Что нам потребуется

    • Raspberry Pi
    • Карта памяти microSD на 32 или 64Gb
    • Источник питания и экран
    • Компьютер или ноутбук для записи файлов на карту памяти
    • Кардридер

    Шаг 1.
    Скачиваем BerryBoot и готовим карту памяти
    BerryBoot для старых моделей Raspberry Pi (младше Raspberry Pi 2)
    Berry Boot для 4-ядерных моделей Raspberry Pi (2,3)

    Скачайте zip архив по указанным выше ссылкам и вставьте кардридер с картой памяти в компьютер/ноутбук. Карту памяти нужно отформатировать в файловую систему FAT32. Далее распакуйте скаченный архив на карту памяти, а затем вставьте в Raspberry Pi. Во время первой загрузки BerryBoot запустит мастер для дальнейшей настройки.


  • Облако в штанах
    piP pi

    Предыстория.

    Нельзя сказать, что идея компактного беспроводного сервера с функциями хранения пользовательских файлов возникла и воплотилась в проекте τAURUS. В настоящее время на IT рынке присутствуют как беспроводные накопители типа Voyager Air, MobileLite, Wireless Air Bank, Air Drive, Connect Wireless Flash Drive, Wireless Plus, так и полноценные беспроводные и компактные NAS серверы типа Seagate STCR3000, Western Digital, My Cloud Synology DS115j, Corsair Voyager Air Home.

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

    На базе такого решения профессор школы культуры, образования и человеческого развития Штейнгардт в Нью-Йоркском университете Дэвид Дартс (David Darts) сконфигурировал свое детище PirateBox. Сутью проекта Дэвида является наделение Raspberry Pi функциями автономного узла хранения и раздачи контента всем, кто имеет возможность подключиться к нему посредством Wi-Fi сети образованной самой Raspberry. Популяризация его идеи сразу вышла за пределы информационного ресурса Дэвида и оставила отпечаток во многих СМИ, в т.ч. в русскоязычном выпуске журнала Linux Format за 2016 год (статья «PirateBox на Pi»).

    PirateBox оказался вполне работоспособным, но весьма ограниченным решением вопросов собственного карманного электронного хранилища и файлообменника. Более того, неудачный web-интерфейс и ограниченная программная функциональность, на практике свело к пользованию PirateBox только в качестве развлечения в кругу друзей.

    Нам бы также только лучше. Под таким девизом были предприняты попытки модернизации PirateBox, которые по разным причинам не привели к каким либо значимым результатам, после чего и было принято решение разработки нового проекта без оглядки на PirateBox.

    Идея.

    А что собственно не устраивало в PirateBox?

    Ключевыми минусами этого проекта является:

    • собственный web интерфейс с отсутствием удобоваримого файлового менеджера наделенного функциями «предосмотра», фильтров и критериев;

    • невозможность дистанционного управления файлами в собственном хранилище (данная возможность реализована только посредством использования команды ssh или непосредственным редактированием содержимого USB-flash носителя);

    • невозможность управления и настройки сервера посредством web-интерфейса;

    • отсутствие поддержки ряда стандартов мультимедиа и сетевых стандартов;

    • отсутствие автоматической загрузки web-интерфейса при первом подключении (функция реализована только методом перенаправления в браузере);

    • отсутствие поддержки работы с мультимедиа файлами «на лету»;

    • отсутствие распределения прав доступа, ну и других «плюшек», без которых сложно наладить комфортную работу с файлохранилищем.

    Более того, не хватало еще одного – возможности удобного размещения собственных web-страниц для последующего мультиплатформенного тестирования и отладки где бы то ни было.

    Все вышеперечисленные минусы должен был убить проект τAURUS.

    Суть.

    Итак, τAURUS – это автономное беспроводное портативное облачное решение, построенное на операционной системе Raspbian (Linux, Debian). τAURUS можно считать small server с

    внешним USB 2.0 накопителем, аккумулятором до 4000 mAh и собственным многофункциональным интерфейсом.

    Фактически мы хотели получить некое подобие NAS-сервера стоимостью в районе 40€ без учета стоимости flash накопителя USB (стоимость которого варьируется от 8€ за 16 Гб до 45€ за 128 Гб, накопители с размером памяти превышающем 128 Гб не рассматривались по причине резкого увеличения их стоимости) и стоимости microSD карты объемом 16 Гб (5€). Итоговая стоимость готового решения варьируется от 53€ до 90€.

    Анализ существующих NAS-серверов представленных на рынке показал наличие единичных портативных экземпляров и стоимостью более 150€, такое стоимостное преимущество было еще одним толчком для развития проекта τAURUS.

    Не будем скрывать, конкуренцию производителям NAS накопителей с объемом памяти от 512 Гб создать трудно, по одной простой причине – коммерческие твердотельные накопители с большим объемом памяти стоят достаточно серьёзных денег (от 160€), более того наличие USB 2.0 и средней скорости обмена технически проигрывают совершенным коммерческим решениям типа My Passport Wireless Pro Wi-Fi. Отчасти решением этой проблемы может стать применение SATA накопителей, что конечно повлияет на габариты и время работы τAURUS. Да и

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

    Постановка задач.

    • Конференции, деловые встречи и учебные классы - мгновенная многопользовательская организация хранения и раздачи электронных материалов.
    • Потоковый просмотр мультимедиа - мультиплатформенный просмотр мультимедиа в любом удобном месте без привязки к наличию интернета.
    • Удобное хранение - использование беспроводной сети и встроенного web-интерфейса для передачи, получения и хранения ваших файлов.
    • Легкий доступ - сервер сам позаботится о загрузке web-интерфейса как только вы подключитесь к нему по беспроводной сети
    • Мультиплатформенность - поддержка любых устройств с возможностями работы посредством беспроводной связи.
    • Портативность - размер чуть больше кредитной карты и толщиной в два пальца, весом не более 150 г. с возможностью автономной работы до 7 часов.
    • Поддержка популярных стандартов мультимедиа, сетевых протоколов и продуктов.
    • Поддержка функций - "предосмотра" популярных мультимедиа файлов, установки фильтров и других "плюшек", без которых невозможно представить удобную работу с хранилищем фалов.
    • Многопользовательность - создание и распределение прав доступа для пользователей.
    • Легкая управляемость и настройка - "дружелюбный" web-интерфейс управления сервером и файлового менеджера.
    • Доступность для частного использования - лицензии используемых программных решений предоставляют свободу действий и бесплатность для частного использования.
    • Дополнительно поставлены задачи - разработка и изготовление корпуса с обеспечением защиты класса IP67, увеличение емкости аккумулятора, использование устройства в качестве PowerBank, разработка и внедрение собственных решений аналогичных продуктам Ajenti и FileRun, повышение скорости и дальности действия Wi-Fi сети, обеспечение резервирования и шифрования данных пользователей. Более того, возможно у τAURUS появится собственный сенсорный экран и полноценная светодиодная индикация.

    Использование.

    1 шаг. Включение. После выполнения нашей инструкции по конфигурированию сервера подаем питание на Raspberry Pi 3 и ждем примерно 15 с пока станет доступной Wi-Fi сеть «MyCloud».

    2 шаг. Подключение. Подключаемся к точке доступа «MyCloud», пароль (по умолчанию) вводить не нужно, сеть имеет открытый доступ. После подключения на вашем смартфоне автоматически появляется стартовая страница MyCloud.pi, аналогично произойдет при открытии браузера на вашем ноутбуке или компьютере.

    По умолчанию загрузится интерфейс FileRun, однако если на используемой flash карте (заранее отформатированной с меткой SERVER) разместить по пути «www/html/» ваш web проект, то при загрузке будет подхвачен именно ваш index.html/php файл. Используя адрес «mycloud.pi:8000» мы перейдем на страницу доступа панели управления сервером Ajenti.Введя пароли доступа мы попадаем на вашу учетную запись менеджера FileRun или панели управления сервером Ajenti.

    3 шаг. Работа. После прохождения авторизации мы получаем самое вкусное.

    В случае с FileRun мы получаем PHP файловый менеджер с поддержкой русского языка для совместного использования файлов, которое позволяет организовывать, просматривать и редактировать файлы. FileRun можно использовать для хранения и просмотра документов, фотографий, музыки и других файлов.

    Весь багаж возможностей FileRun вы можете оценить на сайте http://www.filerun.com.

    В случае с Ajenti мы получаем мощный инструмент управления сервером с понятным и красивым интерфейсом, который, как и FileRun обладает поддержкой русского языка. Более подробно на http://ajenti.org.

    Примечания

    tAURUS - Название собрано из нескольких символических кубиков: τ – 19 буква греческого алфавита, часто обозначающая время релаксации, τAU – полное название все той же самой τ, rus – намекает на страну разработчика, ну и полное сочетание τAURUS - относит к астрономии древнего Вавилона к знаку зодиака тельцу, в год которого родился основатель проекта

    PirateBox – устройство на платформе Raspberry PI для беспроводного обмена файлами с функциями чата и форума

    Испытания

    Мы пока только планируем провести ряд полноценных тестов на скорость, длительность работы при различной загрузке, температурные тесты и т.п.. На данный момент скорость загрузки файлов на tAURUS достигает 3,5 Мб/с, а чтения 1 Мб/с (что конечно пока достаточно мало). Предварительный анализ показал неутешительную работу интегрированного в Raspberry Pi 3 Wi-Fi модуля, переход на внешний USB Wi-Fi адаптер надеемся позволит улучшить картину.

    Тесты на скорость обмена данными с использованием LAN интерфейса показали значения 10 – 11 Мб\с на запись и 6 – 10 Мб\с на чтение.

    Результат.

    На выходе мы получили беспроводной накопитель, оптимизированный для мобильного образа жизни. Он позволяет наслаждаться всем набором мультимедиа — видео, музыкой, фотографиями и привычными вам файлами, куда бы Вы ни пошли, устраняя ограничения планшетного компьютера или смартфона по объему памяти. Он является отличным выбором для тех, кому необходимы возможности хранения и потоковой передачи данных. τAURUS не нужны проводные подключения к домашней сети. Вы, ваша семья, коллеги, деловые партнеры, студенты получают инструмент одновременного беспроводного использования хранилища с функциями полноценного сервера посредством своих гаджетов. Удобный web-интерфейс позволяеN обращаться пользователям к τAURUS без специальных знаний пользования и управления серверами. Более того, τAURUS является неплохим помощником дизайнеров, верстальщиков, тестировщиков и архитекторов web-страниц любой сложности.Полностью бесплатную инструкцию вы можете получить на ресурсах MyTaurus.ru и MyCloudBox.ru.

    Планы.

    Проект предлагается развивать совместно с raspberry энтузиастами на площадках MyTaurus.ru и MyCloudBox.ru.

    В ближайшей перспективе запланировано проведение расширенных тестов сервера и его доработка путем применения внешнего USB Wi-Fi адаптера для увеличения радиуса и скорости работы беспроводной сети.

    Приоритетные задачи - разработка и изготовление корпуса с обеспечением защиты класса IP67, увеличение емкости аккумулятора, использование устройства в качестве PowerBank, разработка и внедрение собственных решений аналогичных продуктам Ajenti и FileRun, обеспечение резервирования и шифрования данных пользователей. Более того, возможно у τAURUS появится собственный сенсорный экран и полноценная светодиодная индикация


  • Инструменты кастомизации Linux для Raspberry Pi
    piP pi

    Этим летом я разослал больше 500 писем тем, кто кастомизирует дистрибутивы Linux для проектов на базе Raspberry Pi. Получив около 100 ответов, я выделил три самых распространенных причины для кастомизации операционной системы:

    Причина первая - убрать лишнее

    В своей сборке я хочу отключить установку больших пакетов, которые я никогда бы не запускал на Raspberry Pi, например, офис, игры и т.п.”, – вот что люди чаще всего говорят о причинах создания собственного образа для Raspberry Pi. И дело не в уменьшении размера образа, а в том, что люди просто не хотят держать неиспользуемые пакеты на своём устройстве.

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

    “Чем меньше пакетов установлено в системе, тем меньше запущенных в фоне программ и тем меньше операций записи на SD-карту”. Я никогда не задумывался об этом, но ведь действительно, уменьшение количества операций записи продлевает срок службы SD-карты. Изначально SD-карты были рассчитаны на хранение фотографий, а не на использование их в качестве хранилища корневого раздела операционной системы.

    Причина вторая - упростить установку

    Разработчики RetroPie, FreedomBox и других проектов с открытым исходным кодом подготавливают специальные сборки с предустановленным ПО для конечных пользователей. К примеру, раньше установка RetroPie на Raspberry Pi отнимала два часа, а сегодня, благодаря образу с предустановленным RetroPie это занимает десять минут. Чем проще процесс установки, тем больше пользователей пользуются приложением.

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

    Причина третья - узнать новое

    Некоторым просто нравится собирать операционные системы вручную. Они экспериментируют и таким образом каждый раз узнают для себя что-то новое: об архитектуре ARM, о ядре Linux, о debootstrap и т.д.

    Теперь расскажу о трёх инструментах кастомизации ОС для Raspberry Pi, но на самом деле их намного больше.

    rpi23-gen-image

    https://github.com/drtyhlpr/rpi23-gen-image Консольная программа для создания образов с операционной системой Debian для Raspberry Pi 2 и Raspberry Pi 3. Принимает сотню параметров для конфигурации создаваемого образа, например:RELEASE=stretch RPI_MODEL=3 PASSWORD=12345 APT_INCLUDES=mc,vim IMAGE_NAME=myimage.img ./rpi23-gen-image.shСоздает минимальный образ myimage.img c Debian Stretch для Raspberry Pi 3 и устанавливает туда утилиты mc и vim. Пароль суперпользователя будет 12345. Полный список параметров смотрите здесь.

    По умолчанию, rpi23-gen-image скачивает последнюю версию ядра Linux от разработчиков Raspberry Pi и кросскомпилирует под ARM. Разработчики предусмотрели 18 параметров для управления ядром, на случай, если стандартное поведение вам не подойдёт.

    Чтобы воспользоваться скриптом нужна операционная система на базе Debian или его производных (Ubuntu, Linux Mint и пр.).

    PiBakery

    http://www.pibakery.org/PiBakery не создаёт образы с нуля в отличие от rpi23-gen-image, а используется для модификации уже существующих образов Raspbian. С помощью PiBakery невозможно перекомпилировать ядро, но в интуитивно-понятном графическом интерфейсе программы очень просто задать пароль суперпользователя и прописать настройки WIFI. 27 различных блоков с настройками сгруппированы на панели справа. Каждый блок это команда, которая будет выполнена после запуска операционной системы на Raspberry Pi, а поля ввода на блоках это параметры команд. Блоки объединяются в цепочки перетаскиванием из панели слева в рабочую область справа.

    014078f3-d94d-40ec-ab4b-2076bddd14a6-image.png

    Операционная система последовательно выполнит команды из цепочки On First Boot(на скриншоте выше) при первом запуске, и будет выполнять команды из цепочки On Every Boot при каждой загрузке образа. Разработчик PiBakery рекомендует кастомизировать только официальные образы Raspbian.

    PiBakery работает на компьютерах под управлением Windows, macOS и Linux(установка из исходников).

    CusDeb

    https://cusdeb.com/ru/ Онлайн конструктор образов для одноплатных компьютеров. Под капотом образы собираются с помощью rpi23-gen-image, но скоро перейдём на собственный скрипт под названием Pieman, чтобы не ограниваться Raspberry Pi, а собирать образы для других одноплатных компьютеров.

    71e693f2-d0ba-4e4d-ba6f-767cd9cbaf93-image.png

    Для создания образа в CusDeb нужен только браузер. Пошаговый интерфейс предлагает выбрать операционную систему (Debian Jessie или Debian Stretch), выбрать целевое устройство (Raspberry Pi 2 или Raspberry Pi 3), выбрать нужные пакеты, создать пользователей и ещё пару настроек (часовой пояс, имя хоста и т.п.). Затем образ собирается на сервере и после сборки доступен для скачивания.

    В этом посте я назвал три распростанённые причины, по которым люди кастомизируют операционные системы для Raspberry Pi, а так-же кратко рассказал о трёх инструментах кастомизации. Буду рад узнать ваше мнение об этом в комментариях.


  • Raspberry Pi 4 8 Gb RAM
    piP pi

    В продаже появилась новая модификация Raspberry Pi 4 - Raspberry Pi 4 c 8 Gb оперативной памяти по цене от 75$
    8e430f9a-06a5-424d-aa90-a11991cccdaf-image.png

    Raspberry Pi 4 появилась на свет менее года назад, и за это время произошло много событий - продажи превысили 3 миллиона штук, плата пережила 2 небольших модернизации (rev.1.1, rev.1.2), уравнена в сторону удешевления стоимость моделей с 1Gb и 2Gb оперативной памяти. Совершенствовалось и программное обеспечение - уменьшено потребление тока в режиме ожидания и работы, реализована поддержкаOpenGL ES 3.1, начаты работы по интеграции драйвера Vulkan, реализована возможность загрузки по сети (PXE) и бета-версия загрузки с USB flash накопителя, исправлялись ошибки и добавлялись новые интересные функции.

    Процессор BCM2711, который используется в RPi4, может обрабатывать до 16Gb оперативной памяти. Единственным препятствием для создания модификации платы с 8Gb памяти было отсутствие на рынке подходящихLPDDR4 чипов. В этом году подходящий чип был создан компанией Micron, что позволило сделать новую модификацию - Raspberry Pi 4 8Gb

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

    Когда появится 64-битный Raspbian?

    В настоящий момент базовая версия Raspbian Linux основана на 32-битном ядре и 32-битном пользовательском окружении. Такая архитектура без проблем позволяет множеству процессов делить между собой 8Gb оперативной памяти. Единственным ограничением является то, что ни один процесс не может единолично занимать больше 3Gb оперативной памяти. Этого вполне достаточно даже для браузера Chrome, т.к каждая новая вкладка запускается в отдельном процессе.

    Пользователям, которым требуется возможность отдачи 8Gb оперативной памяти одному процессу нужна 64-битная ОС. Для Raspberry Pi существуют 64-битные образы Linux дистрибутивов Ubuntu и Gentoo

    Разработчики Raspberry Pi также выпустили 64-битную бета-версию своей операционной системы (для моделей 3 и 4), скачать её можно по этой ссылкеТакже официальная операционная система сменила своё название с Raspbian на Raspberry Pi OS


  • LoRa sx1278 и Raspberry Pi - дальняя P2P радиосвязь
    piP pi

    Технология LoRa (англ. Long Range - дальний диапазон) набирает популярность в сфере IoT, подключенных автомобилей, M2M телематики и т.д. Благодаря возможности передавать данные на большое расстояние с минимальным энергопотреблением разработчики предпочитают использовать LoRa для приёма/передачи данных от устройств, питаемых от батарей.

    В этой статье мы рассмотрим использование LoRa модуля SX1278/SX1276 (дальность передачи данных несколько километров) c Raspberry Pi для общения с другим устройством - Arduino с таким же модулем LoRa - SX1278. На практике это можно использовать следующим образом - Arduino выступает как сервер, собирающий данные от множества датчиков и передающий их на удалённый Raspberry Pi, выступающий в роли клиента, принимающего данные и загружающего их в облако через Интернет-соединение. Итак, поехали!

    Подключение LoRa модуля SX1278 к Raspberry Pi

    SX1278 16ти контактный модуль, взаимодействует с Raspberry Pi по SPI интерфейсу (логика 3.3V), поэтому подключать его можно напрямую к SPI-пинам GPIO

    Raspberry Pi          SX1278 
    3.3V      <-->   3.3V
    Ground    <-->   Ground
    GPIO 10   <-->   MOSI
    GPIO 9	  <-->   MISO
    GPIO 11	  <-->   SCK
    GPIO 8	  <-->   Nss / Enable
    GPIO 4	  <-->   DIO 0
    GPIO 17   <-->   DIO 1
    GPIO 18	  <-->   DIO 2
    GPIO 27	  <-->   DIO 3
    GPIO 22	  <-->   RST
    

    В этом примере я буду запитывать модуль от Raspberry Pi, тока должно хватить, т.к это энергоэффективный модуль с низким потреблением тока. При желании можно также запитать модуль от внешнего источника

    39910ead-15a6-419a-bcfd-1fd9ef7d6587-image.png

    Библиотека PyLora

    Существует множество python библиотек для работы с LoRa модулями. Чаще всего Raspberry Pi используется в базовых станций LoRaWan для получения данных от множества LoRa устройств и последующей отправки этих данных на облачный сервер. Мы же пока рассмотрим простой P2P обмен данными при помощи Python пакета PyLora.

    Подготовка Raspberry Pi

    Как уже было сказано выше, взаимодействие между LoRa модулем SX1298 и Raspberry Pi происходит через SPI интерфейс, поэтому первым делом запустим из консоли sudo raspi-config и в появившемся окне выберем 5 пункт - Interfacing Options, а затем пункт "SPI enable" для включения SPI интерфейса.

    e5666ab4-88aa-416b-8638-b759e75962ac-image.png

    Далее установим Python библиотеку для работы с GPIO Raspberry Pi

    pip install RPi.GPIO
    

    библиотеку для работы с SPI spidev

    pip install spidev
    

    и собственно пакет pyLoRa

    pip install pyLoRa
    PyLora также поддерживает зашифрованные соединения, но их мы рассмотрим в следующих статьях.

    Программируем Raspberry Pi

    В P2P LoRa соединениях модуль, передающий данные называется сервером, а принимающий - клиентом. Arduino c датчиком будет передавать полезные данные (сервер), а Raspberry Pi (клиент) - принимать.

    Сама по себе программа очень простая - мы должны настроить SX1278 для работы на частоте 433Мгц и затем "слушать" эфир для приёма входящих пакетов. Если что-то приходит, выводим значение в терминал.

    Подключаем необходимые библиотеки:

    from time import sleep
    from SX127x.LoRa import *
    from SX127x.board_config import BOARD
    

    Далее создадим класс LoRaRcvCont() с тремя методами.

    Так как нам требуется только работа Raspberry Pi в качестве клиента, то в классе определены только методы init, start и rx_done

    Метод set_pa_config задаёт режим работы модуля. В нашем случае инициализируем модуль для работы на частоте 433МГц с пропускной способностью 125КГц

    from time import sleep
    from SX127x.LoRa import *
    from SX127x.board_config import BOARD
    
    BOARD.setup()
    
    class LoRaRcvCont(LoRa):
        def __init__(self, verbose=False):
            super(LoRaRcvCont, self).__init__(verbose)
            self.set_mode(MODE.SLEEP)
            self.set_dio_mapping([0] * 6)
    
        def start(self):
            self.reset_ptr_rx()
            self.set_mode(MODE.RXCONT)
            while True:
                sleep(.5)
                rssi_value = self.get_rssi_value()
                status = self.get_modem_status()
                sys.stdout.flush()
                
        def on_rx_done(self):
            print("\nReceived: ")
            self.clear_irq_flags(RxDone=1)
            payload = self.read_payload(nocheck=True)
            print(bytes(payload).decode("utf-8",'ignore'))
            self.set_mode(MODE.SLEEP)
            self.reset_ptr_rx()
            self.set_mode(MODE.RXCONT) 
    
    lora = LoRaRcvCont(verbose=False)
    lora.set_mode(MODE.STDBY)
    
    #Medium Range  Defaults after init are 434.0MHz, Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on 13 dBm
    lora.set_pa_config(pa_select=1)
    try:
        lora.start()
    except KeyboardInterrupt:
        sys.stdout.flush()
        print("")
        sys.stderr.write("KeyboardInterrupt\n")
    finally:
        sys.stdout.flush()
        print("")
        lora.set_mode(MODE.SLEEP)
        BOARD.teardown()
    

    В функции start происходит настройка модуля как постоянного получателя данных (режим RXCONT), а также постоянный мониторинг (каждые полсекунды) уровня мощности принимаемого сигнала RSSI и статуса. RSSI измеряется вdBm и является отрицательной величиной. Минимальное значение -120 dBm.

    Функция on_rx_done выполняется после приёма входящего пакета данных. После установки флага RxDone в переменную payload помещается из Rx-буффера полученное значение, затем конвертируем значение этой переменной в utf-8 и выводим в терминал. Возвращаем модуль в спящий режим до приёма следующего значения.

    Также в программе реализовано завершение при нажатии на кнопки клавиатуры.

    Подключение SX1278 к Arduino

    d8aadf28-3694-41d5-84ec-424bdba2f927-image.png

    SX1278                Arduino UNO 
    3.3V	  <-->   3.3V
    Gnd	  <-->   Gnd
    En/Nss	  <-->   D10
    G0/DIO0	  <-->   D2
    SCK	  <-->   D13
    MISO	  <-->   D12
    MOSI	  <-->   D11
    RST	  <-->   D9
    

    Программируем Arduino

    Первым делом нужно установит в Arduino IDE библиотеку Radiohead от AirSpayce. Скачать её можно отсюда -https://github.com/PaulStoffregen/RadioHead

    Программа для Arduino будет отправлять тестовые пакеты с численными значениями от 0 до 9.

    Подключаем SPI библиотеку и RH_RF95 для осуществления LoRa связи. Затем прописываем, к каким контактам Arduino подключены линии CS, RST, INT модуля SX1278 и устанавливаем частоту работы модуля (434Мгц)

    В функции setup перезагружаем LoRa модуль, устанавливая низкий уровень на контакте сброса (RST) на 10 миллисекунд. Инициализируем SX1278 функцией rf95.init() . Затем устанавливаем частоту и мощность передатчика (чем больше, тем дальше максимальное расстояние передачи, но и выше энергопотребление)

    #include <SPI.h> //подключаем библиотеку SPI  
    #include <RH_RF95.h> // подключаем библиотеку RF95  
    
    #define RFM95_CS 10 
    #define RFM95_RST 9
    #define RFM95_INT 2 
    
    #define RF95_FREQ 434.0
    
    RH_RF95 rf95(RFM95_CS, RFM95_INT);
    
    void setup() 
    {
    
      Serial.begin(9600);  
    // Перезагрузка LoRa модуля 
      pinMode(RFM95_RST, OUTPUT); 
      digitalWrite(RFM95_RST, LOW);
      delay(10);
      digitalWrite(RFM95_RST, HIGH);
      delay(10);
    
    //Инициализация LoRa модуля 
      while (!rf95.init()) {
        Serial.println("LoRa radio init failed");
        while (1);
      } 
     //Устанавливаем частоту 434.0MHz
      if (!rf95.setFrequency(RF95_FREQ)) {
        Serial.println("setFrequency failed");
        while (1);
      }
    
      rf95.setTxPower(18); //устанавливаем мощность передатчика
    }
    char value = 48;
    void loop()
    {
      Serial.print("Send: ");
      char radiopacket[1] = {char(value)};
      rf95.send((uint8_t *)radiopacket, 1); 
      delay(1000);
      value++;
      if (value > '9')
      value = 48;
    }
    

    В бесконечном цикле главной функции отсылаем пакеты с данными методом rf95.send() . Данные могут быть любые, например, показания датчиков или пользовательские команды. В нашем примере просто отсылаются символьные значения от 0 до 9 с интервалом в 1 секунду.

    Проверка работы

    c4b00fcb-c513-4e3c-b41c-74c3e94f8b8c-image.png

    Загружаем программу в Arduino, включаем Raspberry Pi и запускаем на ней Python скрипт.

    Если всё сделано верно, то в терминале должны начать выводиться принимаемые значения

    В следующей статье рассмотрим построение базовой станции LoRaWan на основе Raspberry Pi и LoRa модуля SX1301/SX1308


  • Raspberry Pi 4 OTG USB устройство, подключаемся к компьютеру по USB
    piP pi

    В Raspberry Pi 4 USB type-C гнездо питания может также использоваться для передачи данных. Это можно использовать в разных полезных целях, например для подключения к компьютеру по USB в качестве OTG-устройства
    5e6904b0-4388-4ab0-a2e4-78c1af73d35c-image.png

    Включаем драйвер dwc2, прописав в /boot/config.txt строку

    dtoverlay=dwc2
    

    Рассмотрим варианты использования Raspberry Pi в качестве USB устройства, подключенного к компьютеру

    Хранилище данных

    BOOT-раздел microSD карты будет отображаться на компьютере как обычная флэшка. Подгружаем драйвер g_mass_storage и перезагружаем RasPi

    sudo modprobe g_mass_storage file=/dev/mmcblk0p1 removeable=1
    

    Можно также создать небольшую файловую систему FAT32 в файле на SD-карте, которая будет отображаться на компьютере как диск для чтения/записи

    sudo dd if=/dev/zero of=/piusb.bin bs=512 count=2880
    sudo mkdosfs /piusb.bin
    sudo modprobe g_mass_storage file=/piusb.bin stall=0
    

    USB serial устройство

    sudo systemctl enable getty@ttyGS0.service
    

    После этого к Raspberry Pi можно будет подключиться по SSH с компьютера по USB кабелю, аналогично подключению при помощи USB-serial адаптера (https://raspberrypi.ru/606-upravlenie-raspberry-pi-s-kompyutera-cherez-usb-ttl-adapter)

    USB сетевая карта

    sudo modprobe g_ether
    

    Прочие варианты использования Raspberry Pi 4 как USB устройства, подключённого к компьютеру

    • USB звуковая карта sudo modprobe g_audio
    • USB клавиатура/мышь sudo modprobe g_hid
    • USB веб камера sudo modprobe g_webcam
    • USB принтер sudo modprobe g_printer

    P.S Ранние модели Raspberry Pi (за исключением Zero) не могут быть подключены в качестве OTG устройства.


  • Raspberry Pi Compute Module 4 (CM4)
    piP pi

    Новая модель серии Compute Module с обновлённым SoM-чипом выходит после каждой новой модели классической Raspberry Pi (исключением стала только Raspberry Pi 2).

    16 месяцев назад состоялся релиз Raspberry Pi 4, а сегодня свой День Рождения отмечает и Raspberry Pi Compute Module 4.

    Половина из 7 миллионов продаваемых компьютеров Raspberry Pi используется в промышленных и коммерческих целях. Для пользователей, которым важна компактность, возможность глубокой кастомизации устройств на основе Raspberry Pi и встроенная eMMC память серия Compute Module открывает дополнительные возможности и простой способ перейти от прототипов с Raspberry Pi к массовому производству коммерческой электроники.

    Улучшенная производительность

    Будучи построенным на том же 4х ядерном 64-битном процессореBCM2711, что и Raspberry Pi 4, CM4 показывает значительный рост производительности по сравнению с предшественниками (СМ1,CM3,CM3+) - более быстрые ядра, улучшенные мультимедиа возможности, больше интерфейсов для взаимодействия с другими устройствами и чипами. Также теперь доступны несколько модификаций модели, отличающиеся объёмом оперативной памяти и наличием/отсутствием поддержки беспроводных сетей.

    52845e3a-9186-40b0-91fb-11e2c652da53-image.png

    Основные технические характеристики:

    • 1.5GHz 4-ядерный 64-битный процессор ARM Cortex-A72
    • Графическре ядро VideoCore VI с поддержкой OpenGL ES 3.x
    • 4Kp60, 1080p60 аппаратный декодер видео H.265 (HEVC)
    • Запись видео в 1080p30
    • 2 HDMI интерфейса с разрешением до 4K
    • Одноканальный PCI Express 2.0 интерфейс
    • 2 интерфейса MIPI DSI для подключения DSI дисплеев, 2 интерфейса MIPI CSI-2 для подключения камер
    • Оперативная память в зависимости от модификации - 1GB, 2GB, 4GB или 8GB LPDDR4-3200 SDRAM
    • Встроенная память eMMC в зависимости от модификации - 8GB, 16GB, 32GB, без встроенной памяти
    • 2.4GHz/ 5GHz IEEE 802.11b/g/n/ac WiFi и Bluetooth 5.0 (есть упрощённые модификации без поддержки сети)
    • Gigabit Ethernet PHY с поддержкой IEEE 1588
    • 28 GPIO пинов, до 6 × UART, 6 × I2C и 5 × SPI

    Более компактный форм-фактор и новый интерфейс подключения

    В CM4 используется новый форм фактор, который делает её несовместимой с предыдущими моделями Compute Module. От коннектора стандартаJEDEC DDR2 SODIMM с выводом линий от ног процессора на края разъёма решено было отказаться в пользу 2 новых разъёмов (один для низкосокоростных интерфейсов и питания, второй - для высокоскоростных)
    e41a1351-3cee-47f7-9855-8f99cf4c5c6e-image.png
    7a502b25-f20f-4d88-9a8e-887f8edfa43d-image.png

    32 модификации

    Модель CM4 имеет 32 модификации (4 варианта по оперативной памяти, 4 варианта по размеру встроенной памяти, наличие/отстутствие поддержки беспроводной сети). Официальная стоимость от 25$ (за модификацию 1Gb без поддержки беспроводных сетей) до 90$ за максимальную комплектацию (8Gb RAM, 32Gb eMMC, поддержка WiFi+Bluetooth)

    Compute Module 4 IO Board

    Традиционно к новой модели Compute Module разработчики выпустили отладочную плату CM4 IO Board, на которой все интерфейсы от SoC чипа CM4 заведены на разъёмы.
    8477aa59-8b4b-475d-9762-bca0c9e0379b-image.png
    Что есть на официальной отладочной плате?

    • 2 полноразмерных HDMI порта
    • Разъём Ethernet
    • 2 USB 2.0 парта
    • Гнездо для карты памяти MicroSD (только для использования с модификициями CM4 без встроенной eMMC памяти)
    • Разъём PCI Express Gen 2
    • 40-pin GPIO штырьковый разъём и штырьковый разъём для PoE
    • 12V коннектор для подключения питания
    • FPC разъёмы для CSI-2 камеры и DSI-экрана
    • Часы реального времени с гнездом для батареи
      Стоимость официальной отладочной платы - 35$.

    Набор "Антенна" для Compute Module 4

    Для большинства случаев будет достаточно встроенной антенны. Но иногда требуется подключение внешней антенны (например, если CM4 размещена в металлическом корпусе). В набор входит антенна и провод-адаптер для подключения антенны к гнезду на плате CM4
    399cdc5f-9631-40e4-829b-166d86233d5e-image.png

    Документы

    • Raspberry Pi CM4 PDF-инструкция
    • Raspberry Pi CM4 Datasheet
    • 3D модель Raspberry Pi CM4 в формате STEP
    • 3D модель Raspberry Pi CM4 Lite в формате STEP
    • Raspberry Pi CM4 IO Board инструкция
    • Raspberry Pi CM4 IO Board datasheet
    • Дизайн платы CM4 IO Board в формате KiCAD

  • Raspberry Pi Zero 2
    piP pi

    d756eaf2-7ddd-42a0-9191-3604b3d2e42d-image.png

    В продажу поступила обновлённая версия линейки Zero - Raspberry Pi Zero 2 W. Модель отличается от первой Raspberry Pi Zero новым процессором - теперь это четырёхядерный 64 битный ARM Cortex-A53 с тактовой частотой 1 ГГц . Объём оперативной памяти не изменился - 512 МБ. Габариты также остались прежними - 65 x 30мм

    Данная модель обеспечивает подключение к беспроводным сетям через 2.4GHz 802.11 b/g/n wireless LAN и Bluetooth устройствам (Bluetooth 4.2, BLE). Упрощённых модификаций без Wi-Fi и Bluetooth у Zero 2 пока нет

    Разработчик гарантирует, что новая модель будет производиться как минимум до января 2028 года

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


  • Создаём систему развертывания приложений с помощью Docker
    piP pi

    Сегодня речь пойдёт о замечательном инструменте, а именно о контейнерной системе развертывания приложений - Docker. Разработчиков для Raspberry Pi тема касается непосредственно. Добро пожаловать под кат.

    Описание

    1. Что такое Docker

    Возможно не все знакомы с системами развертывания. Поэтому я поясню.

    Говоря совсем простым языком, Docker - это такая система, которая позволяет один раз настроить приложение на одной машине, сохранить его окружение (не только конфигурацию, а именно и окружение тоже) и зависимости, дальше распространять его уже настроенным в виде контейнера. Т.е. для развертывания ничего не понадобится кроме образа.

    Также вы можете где-нибудь увидеть слова "Docker" и "виртуализация" в одном предложении, это не значит что Docker эмулирует процессор, память, ядро ОС и т.д., виртуализация происходит на уровне ядра т.е. все "виртуализируемые" им процессы являются реальными процессами вашей ОС.

    Как вы уже догадались можно придумать массу применений. Например, вы собираетесь сделать кластер Raspberry Pi, который будет майнить биткоины (кстати, это нерентабельно в наши дни) и на каждую из 1000 имеющихся в арсенале плат вы должны установить и настроить один и тот же софт. Да, можно скомпилировать свой образ ОС, но это во-первых не так быстро, во-вторых это не так гибко (конфигурация чуть-чуть поменялась и надо пересобирать весь образ ОС).

    Или, например, вы хотите распространять ваше приложение под несколько модификаций одноплатных компьютеров: Rpi1, Rpi2, O-droid, Rpi3. Везде одна и та же структура приложения, один и тот же исполняемый код, но конфигурация отличается. Вы можете создать 3,4 отдельных мануала для пользователей по установке и настройке, а потом вам это надоест и вы создадите N различных, уже настроенных конфигураций вашего приложения под самые популярные платформы и будете распространять их виде контейнеров.

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

    Это то что я придумал навскидку. На самом деле Docker это очень-очень мощный инструмент, применений ему можно найти неограниченное количество.

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

    Ладно, вводная часть что-то слишком затянулась. Перейдем к делу.

    2. Установка

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

    Большинство пользователей не будет переустанавливать систему из-за того что хотят попробовать Docker. Поэтому ниже будет приведен процесс установки на Raspbian.

    1. Если у вас старая версия Raspbian, обновляемся до новой т.к. с версии Debian 8 появилась поддержка ядра Docker "из коробки":
    $ sudo sed -i 's/wheezy/jessie/' /etc/apt/sources.list
    $ sudo sed -i 's/wheezy/jessie/' /etc/apt/sources.list.d/raspi.list 
    $ sudo apt-get update && sudo apt-get -y upgrade # answer 'y' to upcoming questions 
    $ sudo sudo apt-get -y dist-upgrade # answer 'y' to upcoming questions
    $ sudo init 6
    $ sudo apt-get -y autoremove
    $ sudo apt-get -y purge $(dpkg -l | awk '/^rc/ { print $2 }')
    $ sudo init 6
    
    1. На официальном сайте отсутствует мануал с описанием установки на Raspberry Pi, но команда Hypriotпроделала большую работу по автоматизации установки Docker на Raspberry. Воспользуемся плодами их труда:
    $ git clone https://github.com/hypriot/rpi-docker-builder.git
    $ cd rpi-docker-builder
    $ sudo sh build.sh
    $ sudo sh run-builder.sh
    

    После этого пакет для установки Docker вы найдете в каталоге ./dist/docker-hypriot_1.10.3-1_armhf.deb. На данный момент это последняя версия.

    Ленивые могут воспользоваться готовыми пакетами от Hypriot:

    $ curl -sSL http://downloads.hypriot.com/docker-hypriot_1.10.3-1_armhf.deb >/tmp/docker-hypriot_1.10.3-1_armhf.deb
    $ sudo dpkg -i /tmp/docker-hypriot_1.10.3-1_armhf.deb
    $ rm -f /tmp/docker-hypriot_1.10.3-1_armhf.deb
    $ sudo sh -c 'usermod -aG docker $SUDO_USER'
    $ sudo systemctl enable docker.service
    

    2. Проверка работоспособности

    sudo docker info
    

    или

    docker version
    

    Выведет информацию о версии, количестве контейнеров, версии ядра, драйверов и т.д.

    1. Теперь любое приложение, которое есть в виде docker-контейнера для ARM, можно устанавливать с помощью docker run на Raspberry Pi.

    Следующая команда скачает и развернёт небольшой уже настроенный веб-сервер:

    docker run -d -p 80:80 hypriot/rpi-busybox-httpd
    

    Список контейнеров можно посмотреть с помощью

    docker ps
    

    3. Использование

    Можно, конечно, описывать основные команды и прочее, но за этим лучше обращаться к документации.

    Поэтому мы рассмотрим на примере.

    Предположим мы хотим собрать контейнер в котором будет веб сервер NGinx и PHP 5.4.

    В начале пишется инструкция по сборке образа. Листинг файла с комментариями приведен ниже.

    src: build/backend/Dockerfile
    
    # Используем за основу контейнера Ubuntu 14.04 LTS
    FROM ubuntu:14.04
    # Переключаем Ubuntu в неинтерактивный режим — чтобы избежать лишних запросов
    ENV DEBIAN_FRONTEND noninteractive 
    # Устанавливаем локаль
    RUN locale-gen ru_RU.UTF-8 && dpkg-reconfigure locales 
    
    # Добавляем необходимые репозитарии и устанавливаем пакеты
    RUN apt-get install -y software-properties-common
    RUN add-apt-repository -y ppa:ondrej/php5-5.6
    RUN add-apt-repository -y ppa:nginx/stable
    RUN sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C
    RUN apt-get update
    RUN apt-get upgrade -y
    RUN apt-get install -y wget curl php5-fpm php5-mysql php5-gd php5-curl php-pear php-apc php5-mcrypt php5-imagick php5-memcache supervisor nginx
    
    # Добавляем описание виртуального хоста
    ADD iloverpi.ru /etc/nginx/sites-enabled/iloverpi.ru 
    # Отключаем режим демона для Nginx (т.к. запускать будем сами) 
    RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf 
    # Отключаем режим демона для php-fpm
    RUN sed -i -e "s/;daemonize\s*=\s*yes/daemonize = no/g" /etc/php5/fpm/php-fpm.conf 
    # Добавляем конфиг supervisor (описание процессов, которые мы хотим видеть запущенными на этом контейнере)
    ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf 
    
    # Объявляем, какие директории мы будем подключать
    VOLUME ["/var/www"] 
    # Объявляем, какой порт этот контейнер будет транслировать
    EXPOSE 80 
    # Запускаем supervisor
    CMD ["/usr/bin/supervisord"]
    

    Далее команды supervisord для запуска наших приложений:

    src: build/backend/supervisord.conf
    
    [supervisord]
    nodaemon=true
    loglevel=debug
    
    [program:nginx]
    command=/usr/sbin/nginx
    autorestart=true
    
    [program:php5-fpm]
    command=/usr/sbin/php5-fpm
    autorestart=true
    

    Полный список команд с пояснениями доступен по ссылке.

    Теперь, используя эту инструкцию, собираем образ iloverpi.ru.

    sudo docker build -t iloverpi.ru ~/PATH_TO_DOCKERFILE_DIR
    

    Образ iloverpi.ru надо запустить, тем самым создав контейнер. Помимо этого требуется связать 80 порт хоста с 80 портом контейнера. Для удобства и полноты примера также свяжем /var/www хоста и /var/www контейнера.

    $ sudo docker run -v /var/www:/var/www -p 80:80 -м -t iloverpi.ru
    

    Убеждаемся что контейнер запущен:

    sudo docker ps | grep 'iloverpi.ru'
    

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

    У меня вывод предыдущей команды выглядит так:

    d8429cc192c0    astgo.ru/dev:latest    "/usr/bin/supervisor 20 seconds ago  
    Up 19 seconds  0.0.0.0:80->80/tcp  container23
    

    Здесь "container23" - имя контейнера.

    Для взаимодействия с командной строкой контейнера существует команда

    sudo docker exec -i -t container23 bash
    

    После этого станет доступно обычное приглашение командной строки. Это и будет консоль нашего контейнера.

    Итак, мы собрали и развернули свой контейнер, научились с ним взаимодействовать.

    Статья получилась длинной, но надеюсь Вам было интересно. До новых встреч.


  • Захват видео через HDMI вход HDMI-CSI моста для Raspberry Pi
    piP pi

    HDMI порт Raspberry Pi работает только в режиме выхода видеосигнала. Что делать, если необходим HDMI-вход для захвата видео (от камеры или видеокарты)? Использовать специальный модуль -HDMI-CSI мост, который подключается к порту камеры.

    f966b1f1-93fb-4851-970d-bfb7c1f13cfe-image.png

    В данном статье рассмотрим одно из таких устройств - B101 от Auvidea

    Технические характеристики:

    • Разрешение захватываемого видео - 1080p25 (это программное ограничение драйвера для Raspberry Pi в настоящий момент, в будущем разрешение может быть улучшено)
    • Чип - Toshiba TC358743XBG
    • Подключение к Raspberry Pi - 15-ти контактным с шагом 1мм FPC шлейфом к CSI порту (всё аналогично подключению модуля камеры)
    • Питание - 3.3V, питается от 15 контакта CSI порта
      532d1ec8-25bf-4874-8fb2-ccd6ce24012a-image.png
      Linux ядро начиная с 4-ой версии имеет встроенные драйвера для чипаTC358743XBG, который используется в модуле. В Raspberry Pi всё должно работать "из коробки"

    Захват видео в Raspbian

    Захват видео данным модулем тестировался вRapsbian Jessie Lite 4.1.13-v7+ (релиз от 25.11.2015). Поскольку модуль эмулирует CSI-камеру Raspberry Pi, то для его работы необходимо активировать камеру через raspi-config . После перезагрузки с данным модулем можно работать через стандартную программу Raspbian raspivid , точно также как с камерой, например для бесконечного отображения входящего видеопотока на экране, нужно выполнить команду:

    raspivid -t 0
    

    Перезагрузка модуля видеозахвата

    Модуль необходимо перезагружать перед каждым новым вызовом raspivid. Для этого соединим произвольный (в моём примере это будет GPIO 4) управляющий контакт на GPIO RasPi и контакт сброса на модуле проводком. Для перезагрузки модуля захвата видео нужно кратковременно обеспечить низкий уровень на контакте сброса, а потом вернуть высокий.

    Также можно обойтись без проводка. Линия сброса на модуле видеозахвата соединена с 11 линией CSI порта RasPi (CAM_GPIO) шлейфом. Линия CAM_GPIO c CSI порта физически соединена с одним из контактов на GPIO (каким конкретно зависит от модели Raspberry Pi). Низкий, а затем высокий уровень на CAM_GPIO приведёт к перезагрузке модуля.

    P.S. В этой статье рассмотрено устройство B101 от Auvidea . Существуют также более дешёвые(20-30$) аналоги устройств захвата видео для Raspberry Pi с этим же чипом ( Toshiba TC358743XBG ) от китайских производителей

  • 1 / 1
  • Войти

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

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