!!!!!!!!Проект CarPC мною закрыт за ненадобностью, но чтобы не пропало, вдруг кому пригодится выложил последние версии
образа(CarPC-06-07-2018.7z) и
исходников (CarPC_src_24-05-2017.tgz). Причем образ сделал самонастраивающийся после первого запуска. Идея моего проекта такая, что система на отдельном разделе, а видеоархив с камеры сохраняется на отдельном.
Подчистил систему, убрал мусор, написал скрипт(resizearch - лежит в /etc/init.d) который запускается через init.d при старте системы после монтирования локальных файловых систем. Скрипт при старте смотрит
1) Если в корне ФС для архива лежит файл "
.resize_me", то это ФС расширяется автоматом до максимально возможного размера.
2) Если в каталоге (папке) "
/root" есть файл "
.first_start", то пароль пользователей (а у меня их всего два "
opi" - пользователь системы под которым стартует CarPC и "
root" - суперпользователь) сбрасывается и становится по дефолту "
opi" что для "opi", что для "root". При этом при первом входе под "root"-ом принудительно заставляет сменить пароль на свой, до тех пор пока не сменишь.
==============================================================================
Вот мой проект
https://www.drive2.ru/b/3091885/ Начну не торопясь переносить сюда, только по существу.
I. Выбор оборудования и ПОСостав оборудования:установленноепланируемое- Отладочная плата:
Orange Pi PC Allwinner H3
- Дисплей с тачпанелью:
TFT LCD display 7" AT070TN90 with RTD2660 Controller and touchscreen
- Видеокамера : 5mp OV5640 CSI CameraВидеорегистратор(
Creative live cam sync hd vf0770)USB WEB CAMERA-для отладки
- Камера заднего вида (КЗВ): CCD Chip Car Rear View Reverse CAMERA for OPEL Astra H+Датчики парковки
- GPS приемник:
GY-NEO6MV2Навигация, фиксация скорости и координат на видео
- USB Bluetooth dongle:
Broadcom BCM92045B3HandsFree(HFP)+A2DP
- Часы реального времени (RTC):
DS3231Сохранение времени при выключении/Установка времени при старте
- Модуль CAN BUS: ?***? Диагностика ДВС и систем авто, управление CarPC штатными кнопками на руле. Еще нет конкретного решения
- Блок питания:
AC/DC ~220/+5V 4AДля домашнего использования ?***?Для авто не выбран
- Корпус для OPI:
от производителя
Состав ПО:- ОС: ARMBIAN jessie desktophttp://www.armbian.com
Извините, вам запрещён просмотр содержимого спойлеров.
- Оболочка: CarPCСобственная разработка. Написана на C под GTK+2.0
Извините, вам запрещён просмотр содержимого спойлеров.
- Модуль AVR: Видеорегистратор, Клиент-Серверное приложениеСобственная разработка
Извините, вам запрещён просмотр содержимого спойлеров.
- GPS и навигация:GPSDинструментарий для устройств GPS http://catb.org/gpsd/, 7waysПрограмма навигации "Семь Дорог" http://ru.navikey.org/
Извините, вам запрещён просмотр содержимого спойлеров.
- Bluetooth: HFP for linuxПО для организации Bluetooth HandsFree. http://nohands.sourceforge.net/ A2DP работает из коробки
Извините, вам запрещён просмотр содержимого спойлеров.
- Проигрыватель мультимедиа: Аудио/Видео проигрывательВ разработке
Извините, вам запрещён просмотр содержимого спойлеров.
- БК: Бортовой компьютерВ разработке
Извините, вам запрещён просмотр содержимого спойлеров.
II. Установка и настройка оборудования: HARDWAREВ дальнейшем при упоминании PINx OPI будет иметься в виду контакт номер x разъема GPIO на плате OrangePI PC
Пассивная система охлаждения:Без радиатора даже в холостом режиме температура проца до +50С. Был приобретен радиатор размером
35х35х19мм у которого необходимо отрезать один ряд, чтобы получить размер
35х32х19мм (отрезал обыкновенной ножовкой по металлу). В результате получившийся радиатор спокойно закрывает процессор и память, при этом не цепляет кварц, который выше процессора с памятью. Радиатор клеится на термоклей.

После установки радиатора, при полной нагрузке (обработка видео, трансляция видеопотока, сборка достаточно большого пакета из исходников, при этом с двух компов был просмотр камеры в онлайне, а с одного просмотр архива) температура выше +63С не поднималась.
Модернизация питания:После покупки на рынке разъема
DC4x1.7 OPI был запитан через штатный разъем питания.
Дисплей с тачпанелью:Монитор TFT LCD display 7" AT070TN90 with RTD2660 Controller and touchscreen подключается по HDMI, на борту дополнительно имеются: 1 - VGA вход, 2 - AV входа. Тачпанель подключается по USB.
Видеокамера:USB Web камера Creative live cam sync hd vf0770 подключена в отдельный USB разъем (вертикальный)
GPS приемник:Neo6mv2 (gps6mv2) подключить согласно таблице
Neo6mv2 | OrangePI PC |
VCC | PIN2 |
GND | PIN9 |
TX | PIN11 |
RX | PIN13 |
В качестве корпуса GPS приемника была использована крышки от GPS-антены одного очень известного производителя радиооборудования. По образцу этой крышки из 3-х мм пластика было вырезано основание, из 1 мм пластика — донышко. В качестве кабеля, использован кусок витой пары FTP2-ST (01-0125), длинной 2м. При помощи термопистолета, саморезов, дрели и паяльника был собран GPS-приемник.
USB Bluetooth dongle:USB Bluetooth dongle Broadcom BCM92045B3 подключается в свободный USB порт
Часы реального времени (RTC):Модуль DS3231 подключить согласно таблице. Элемент питания CR2035
DS3231 | OrangePI PC |
SDA | PIN3 |
SCL | PIN5 |
VCC | PIN4 |
GND | PIN6 |
Корпус от производителя:
III. Установка и настройка ПО: SOFTWAREУстановка ОСНастройка ОС- Войти в сиcтему под root
- Скопировать SCRIPT.BIN
cp /boot/bin/orangepipc.bin /root
- Декомпилировать в SCRIPT.FEX
cd /root
bin2fex orangepipc.bin orangepipc.fex
- Внести изменения в SCRIPT.FEX*/root/orangepipc.fex
- Сохранить SCRIPT.FEX*/root/orangepipc.fex
- Скомпилировать в SCRIPT.BIN
fex2bin /root/orangepipc.fex /root/orangepipc.bin
- Скопировать в нужное место
cp /root/orangepipc.bin /boot/bin/orangepipc.bin
Настройка звука*Передача звука на ГУ авто по AUX. Звуковая карта по умолчанию (default): audiocodec (выход - 3.5mm jack, вход - встроенный микрофон)
Настройка монитора и тачпанели*Тач поддерживается штатным драйвером и определяется, как eGalax Inc. USB TouchController kill -1 `ps -ax -o pid=,comm= | grep Xorg | sed 's/ Xorg//'|sed 's/ *//'`
- Установить xinput_calibrator
apt-get install xinput-calibrator
- Откалибровать тачпанель, запустив в окне xterm
путем нажатия на появляющуюся мишень провести калибровку, по результатам которой выведется сообщение о необходимости создания файла /usr/share/X11/xorg.conf.d/99-calibration.conf следующего содержания
Извините, вам запрещён просмотр содержимого спойлеров.
*Значения опции Calibration как правило у всех разные- Создать и сохранить файл /usr/share/X11/xorg.conf.d/99-calibration.conf с указанным содержимым
- Перезапустить X-ы в окне супертерминала или через sudo
kill -1 `ps -ax -o pid=,comm= | grep Xorg | sed 's/ Xorg//'|sed 's/ *//'`
Установка и настройка навигационной программы 7ways- Скачать
- Распаковать TAR-архив в нужное место
mkdir -p /usr/local/src/7ways
cd /usr/local/src/7ways
wget http://navikey.ru/files/7w/7ways-linux-arm.tar.gz
cd /usr/local
tar -xzf 7ways-linux-arm.tar.gz
Установка и настройка ПО для GPS приемника*Для корректной работы CarPC GPS-демон должен отвечать двум условиям:
1. Посылать данные GPS в порт псевдо-терминала ( /dev/pts/X ). Необходимо для работы программы навигации 7ways
2. Посылать данные в сетевой сокет (netsocket) для видеорегистратора (AVR), в дальнейшем и для других приложений
- Настроить gpsd, создав необходимые файлы
/etc/default/gpsd
Извините, вам запрещён просмотр содержимого спойлеров.
/lib/systemd/system/gpsd.service
Извините, вам запрещён просмотр содержимого спойлеров.
/lib/systemd/system/gpsd.socket
Извините, вам запрещён просмотр содержимого спойлеров.
- Запустить gpsd
systemctl daemon-reload && systemctl reenable gpsd.service && service gpsd start
- Проверить, запустился-ли gpsd
● gpsd.service - GPS (Global Positioning System) Daemon
Loaded: loaded (/lib/systemd/system/gpsd.service; enabled)
Active: active (running) since Пн 2016-09-05 20:27:41 KRAT; 20h ago
Main PID: 544 (gpsd)
CGroup: /system.slice/gpsd.service
└─544 /usr/local/sbin/gpsd -P /var/run/gpsd.pid -N -n /dev/ttyS2
сен 05 20:27:41 orangepipc systemd[1]: Started GPS (Global Positioning Sy....
Hint: Some lines were ellipsized, use -l to show in full.
- Проверить, идут-ли данные с gps
{"class":"VERSION", "release":"3.16", "rev":"3.16", "proto_major":3,"proto_minor":11}
{"class":"DEVICES", "devices":[{"class":"DEVICE", "path":"/dev/ttyS2", "driver":"u-blox", "subtype":"SW 1.00 (59842), HW 00070000,PROTVER 14.00,GPS;SBAS;GLO;QZSS", "activated":"2016-07-09T11:48:54.184Z", "flags":1,"native":1,"bps":9600,"parity":"N", "stopbits":1,"cycle":1.00,"mincycle":0.25}]}
{"class":"WATCH", "enable":true, "json":false, "nmea":true, "raw":0,"scaled":false, "timing":false, "split24":false, "pps":false}
$GPZDA,114855.00,09,07,2016,00,00*61
$GPGGA,114855,6748.4563,N,08333.2005,E,1,08,0.84,70.19,M, -16.967,M, , *52
$GPRMC,114855,A,6748.4563,N,08333.2005,E,0.0765,215.894,090716,, *2A
$GPGSA, A,3,5,6,9,12,23,26,29,31,, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,2.3,0.8,2.1*0D
$GPGSV,3,1,11,02,65,124,15,04,23,326,14,05,34,176,20,06,25,087,33*70
$GPGSV,3,2,11,09,29,052,35,12,18,201,20,23,22,024,40,25,38,235,08*73
$GPGSV,3,3,11,26,10,339,17,29,52,273,25,31,18,305,35*45
- перенаправить данные с GPS на псевдо-терминал в первый свободный порт /dev/pts/X
socat -d -d exec:"/usr/local/bin/gpspipe -r, pty, raw, echo=0" pty, raw, echo=0
2016/07/10 11:25:21 socat[23983] N forking off child, using pty for reading and writing
2016/07/10 11:25:21 socat[23983] N forked off child process 23984
2016/07/10 11:25:21 socat[23983] N forked off child process 23984
2016/07/10 11:25:21 socat[23984] N execvp'ing "/usr/local/bin/gpspipe"
2016/07/10 11:25:21 socat[23983] N PTY is /dev/pts/1
2016/07/10 11:25:21 socat[23983] N starting data transfer loop with FDs [5,5] and [6,6]
- для правильной работы навигационной программы 7ways необходимо применить скрипт автоматической правки конфигурационного файла (gpsnavi.shhttps://yadi.sk/d/sKs7wiYVt9rSE)
создав и настроив сервис gpsnavi
/etc/default/gpsnavi
Извините, вам запрещён просмотр содержимого спойлеров.
/lib/systemd/system/gpsnavi.service
Извините, вам запрещён просмотр содержимого спойлеров.
- Запустить сервис gpsnavi
systemctl daemon-reload && systemctl reenable gpsnavi.service && service gpsnavi start
- Проверить, запустился-ли gpsnavi
● gpsnavi.service - GPS driver for 7ways
Loaded: loaded (/lib/systemd/system/gpsnavi.service; enabled)
Active: active (running) since Пн 2016-09-05 20:27:43 KRAT; 21h ago
Process: 555 ExecStart=/usr/local/sbin/gpsnavi.sh (code=exited, status=0/SUCCESS)
Main PID: 621 (socat)
CGroup: /system.slice/gpsnavi.service
├─621 /usr/bin/socat -L/var/run/gpsnavi.pid -d -d exec:/usr/local/...
└─635 /usr/local/bin/gpspipe -r
сен 05 20:27:43 orangepipc systemd[1]: Started GPS driver for 7ways.
Установка и настройка ПО для Bluetooth- Проверить видимость Bluetooth адаптера системой
[ 5.903869] Bluetooth: Core ver 2.16
[ 5.912704] Bluetooth: HCI device and connection manager initialized
[ 5.912719] Bluetooth: HCI socket layer initialized
[ 5.912729] Bluetooth: L2CAP socket layer initialized
[ 5.912773] Bluetooth: SCO socket layer initialized
[ 18.801590] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 18.801605] Bluetooth: BNEP filters: protocol multicast
[ 28.852498] Bluetooth: RFCOMM TTY layer initialized
[ 28.852529] Bluetooth: RFCOMM socket layer initialized
[ 28.852540] Bluetooth: RFCOMM ver 1.11
- Проверить наличие загрузки необходимых модулей
rfcomm 32863 4
mali_drm 2732 1
drm 178255 2 mali_drm
mali 123208 0
ump 29379 3 mali
bnep 9617 2
snd_usb_audio 80300 0
snd_hwdep 5250 1 snd_usb_audio
snd_usbmidi_lib 17198 1 snd_usb_audio
uvcvideo 58868 0
snd_rawmidi 16149 1 snd_usbmidi_lib
btusb 11031 0
bluetooth 174065 24 bnep, btusb, rfcomm
- Установить поддержку звука для работоспособности A2DP и HFP
*В качестве основного модуля поддержки Bluetooth подсистемы в armbian выбран BlueZ, который как выяснилось не поддерживает ALSA, но поддерживает PULSEAUDIO через модуль pulseaudio-module-bluetooth. PULSEAUDIO — это прослойка между уровнем приложений и уровнем ядра, которая перенаправляет аудио от приложений к ALSA
apt-get update
apt-get install pulseaudio
apt-get install pulseaudio-module-bluetooth
cd /usr/local/src
git clone https://github.com/heinervdm/nohands/
cd nohands
apt-get install libspeex-dev libspeexdsp-dev libaudiofile-dev \
libasound2-dev libdbus-1-dev qt4-dev-tools python-qt4 -y
./autogen.sh
./configure
make
make install
- Для корректной работы HFP внести изменения
/etc/bluetooth/main.conf
Извините, вам запрещён просмотр содержимого спойлеров.
/lib/udev/rules.d/50-bluetooth-hci-auto-poweron.rules
Извините, вам запрещён просмотр содержимого спойлеров.
- Перезагрузиться
- Используя bluetoothctl проверить сопряжение (pairing) со смартфоном под root или из супертерминала
[NEW] Controller 00:1A:7D:0A:B6:AE orangepipc [default]
[bluetooth]#
- Получить список доступных контроллеров
[bluetooth]# list
Controller 00:1A:7D:0A:B6:AE orangepipc [default]
[bluetooth]#
- Получить информацию об интересующем контроллере
[bluetooth]# show 00:1A:7D:0A:B6:AE
Controller 00:1A:7D:0A:B6:AE
Name: orangepipc
Alias: orangepipc
Class: 0x0c0408
Powered: yes
Discoverable: no
Pairable: yes
UUID: PnP Information (00001200-0000-1000-8000-00805f9b34fb)
UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)
UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control (0000110e-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
UUID: Audio Source (0000110a-0000-1000-8000-00805f9b34fb)
UUID: Audio Sink (0000110b-0000-1000-8000-00805f9b34fb)
Modalias: usb:v1D6Bp0246d0517
Discovering: no
[bluetooth]#
- Установить контроллер по умолчанию
[bluetooth]# power on
Changing power on succeeded
[bluetooth]#
[bluetooth]# agent on
Agent registered
[bluetooth]#
- Установить режим авторизации по умолчанию
[bluetooth]# default-agent
Default agent request successful
[bluetooth]#
- Установить видимость и разрешить подключение
[bluetooth]# discoverable on
Changing discoverable on succeeded
[CHG] Controller 00:1A:7D:0A:B6:AE Discoverable: yes
[bluetooth]#
[bluetooth]# pairable on
Changing pairable on succeeded
[bluetooth]#
[bluetooth]# scan on
Discovery started
[CHG] Controller 00:1A:7D:0A:B6:AE Discovering: yes
[NEW] Device 80:13:82:DD:FD:51 80-13-82-DD-FD-51
[CHG] Device 80:13:82:DD:FD:51 LegacyPairing: no
[CHG] Device 80:13:82:DD:FD:51 Name: IgZero
[CHG] Device 80:13:82:DD:FD:51 Alias: IgZero
[bluetooth]#
- Подключиться к нужному устройству
[bluetooth]# pair 80:13:82:DD:FD:51
Attempting to pair with 80:13:82:DD:FD:51
[CHG] Device 80:13:82:DD:FD:51 Connected: yes
Request PIN code
[agent] Enter PIN code:
[agent] Enter PIN code: 1275
[CHG] Device 80:13:82:DD:FD:51 Modalias: bluetooth:v001Dp1200d1436
[CHG] Device 80:13:82:DD:FD:51 UUIDs:
00001105-0000-1000-8000-00805f9b34fb
0000110a-0000-1000-8000-00805f9b34fb
0000110c-0000-1000-8000-00805f9b34fb
00001112-0000-1000-8000-00805f9b34fb
00001115-0000-1000-8000-00805f9b34fb
00001116-0000-1000-8000-00805f9b34fb
0000111f-0000-1000-8000-00805f9b34fb
0000112f-0000-1000-8000-00805f9b34fb
00001132-0000-1000-8000-00805f9b34fb
00001200-0000-1000-8000-00805f9b34fb
[CHG] Device 80:13:82:DD:FD:51 Paired: yes
Pairing successful
[CHG] Device 80:13:82:DD:FD:51 Connected: no
[CHG] Device 80:13:82:DD:FD:51 RSSI: -45
[bluetooth]#
- Сделать смартфон доверенным
[bluetooth]# trust 80:13:82:DD:FD:51
[CHG] Device 80:13:82:DD:FD:51 Trusted: yes
Changing 80:13:82:DD:FD:51 trust succeeded
- Установить соединение со смартфоном
connect 80:13:82:DD:FD:51
[bluetooth]# connect 80:13:82:DD:FD:51
Attempting to connect to 80:13:82:DD:FD:51
[CHG] Device 80:13:82:DD:FD:51 Connected: yes
Connection successful
[bluetooth]#

- В окне xterm запустить демон HFP hfpd в режиме отладки

- Запустить GUI терминал HFP hfconsole через Меню приложений->Запустить приложение...
- Через меню настроек hfconsole соединиться со смартфоном


- Имплантировал hfconsole в свою оболочку CarPC*произведены небольшие изменения в исходном коде под CarPC
Часы реального времени (RTC)- Определить I2C-адрес, подключенного DS3231
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- 57 -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
- Настроить автоинициализацию устройства при старте системы
- Файл /etc/default/rtc
Извините, вам запрещён просмотр содержимого спойлеров.
- Файл /lib/systemd/system/rtc.service
Извините, вам запрещён просмотр содержимого спойлеров.
- Настроить systemd
systemctl daemon-reload && systemctl reenable rtc.service
Removed symlink /etc/systemd/system/sysinit.target.wants/rtc.service.
Created symlink from /etc/systemd/system/sysinit.target.wants/rtc.service to /lib/systemd/system/rtc.service.
- Проверить работоспособность
[ 0.928262] sunxi-rtc sunxi-rtc: rtc core: registered sunxi-rtc as rtc0
[ 5.256555] rtc-ds1307 0-0068: rtc core: registered ds1307 as rtc1
[ 5.256587] rtc-ds1307 0-0068: 56 bytes nvram
apt-get --purge autoremove fake-hwclock
- Настроить установку системного времени при старте системы (источник времени DS3231)
- Проверить запись системного времени в RTC при рестарте/выключении OPI
Извините, вам запрещён просмотр содержимого спойлеров.
*Сервис будет выполнен при рестарте/выключении системы, при условии изменения времени при помощи команд ntpd/openntpd/chrony[/li]
[li]Проверить наличие сервиса
hwclock-save.service в
systemd[/li]
[/list]
systemctl status hwclock-save.service
● hwclock-save.service - Synchronise Hardware Clock to System Clock
Loaded: loaded (/lib/systemd/system/hwclock-save.service; enabled)
Active: inactive (dead)
P.S.: Если сервис отсутствует - настроить запуск
systemctl daemon-reload && systemctl reenable hwclock-save.service
[/spoiler]
Оболочка CarPC*Пока еще не документирована, описание только в виде комментариев в исходных текстах. Поэтому пока не вижу смысла, что-либо писать. Выложи скриншоты. Исходники будут доступны свободно, после более-менее адекватного описанияРолик как все работаетПапка с образами Armbian+CarPC+SRCПапка с исходниками CarPCПост обновляется ...