Съдържание:

DragonBoard и OBD2: 12 стъпки
DragonBoard и OBD2: 12 стъпки

Видео: DragonBoard и OBD2: 12 стъпки

Видео: DragonBoard и OBD2: 12 стъпки
Видео: DIAGNOSTICO DE CONECTOR OBD2, no enciende el Scanner 2024, Юли
Anonim
DragonBoard и OBD2
DragonBoard и OBD2

Четенето на данните, които излизат от порта OBD2 в колата ви, е възможно да се събере невероятна информация от него. Използвайки DragonBoard 410c, ние работихме по този проект и го описахме подробно тук, за да можете да го направите сами.

Този проект беше възможен само благодарение на партньорството с #Qualcomm #Embarcados #Linaro #Arrow #BaitaAceleradora, което ни позволи да имаме достъп до най -добрия хардуер на пазара, както и на контакта с най -добрите професионалисти в подкрепа на развитието.

Екипът беше съставен от тези момчета:

Ние сме много нетърпеливи да ви помогнем да постигнете целта си и да се уверите, че сте завършили проекта си, затова ни уведомете, ако имате нужда от помощ, освен инструкциите по -долу.

Para seguir este projeto em Português, клика aqui:

www.instructables.com/id/DragonBoard-Com-OBD

За този проект използвахме следните елементи:

  • Qualcomm DragonBoard 410c
  • ELM327 Bluetooth OBD2 интерфейс
  • USB ключ 3G/4G
  • Инверторно напрежение за автомобилно зарядно устройство (110v)

Стъпка 1: Извършване на първоначалната настройка на DragonBoard 410c **

Извършване на първоначалната настройка на DragonBoard 410c **
Извършване на първоначалната настройка на DragonBoard 410c **
Извършване на първоначалната настройка на DragonBoard 410c **
Извършване на първоначалната настройка на DragonBoard 410c **
Извършване на първоначалната настройка на DragonBoard 410c **
Извършване на първоначалната настройка на DragonBoard 410c **

Използвайки Qualcomm DragonBoard 410c, стартирахме проекта, като инсталирахме дистрибуцията на Linux, наречена Linaro, което ни позволи да настроим всички необходими устройства.

За да създадете изображение на Linaro за DragonBoard, използвайте Ubunto на VirtualBox, за да можете да използвате FastBoot (това е приложение, базирано на Linux). Така че основно това, което трябва да направите, е да отворите терминала във VM Ubuntu и да въведете:

sudo apt-get android-tools-fastboot

За да инсталираме Linaro, трябва да преминем през 2 важни стъпки:

1) Инсталиране на BOOTLOADER

Име на файла: dragonboard410c_bootloader_emmc_linux-79.zip

builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/

Разархивирайте файловете и изберете папката:

cd /FolderName (път към разархивираната папка)

Въведете следния код:

sudo устройства за бързо зареждане

Очаквано завръщане:

(шестнадесетично) бързо стартиране

След това въведете:

sudo./flashall

Очаквано завръщане:

завършен. общо време 1.000s (без грешки)

Инсталиране на ОПЕРАЦИОННАТА СИСТЕМА

builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/

Изтеглете тези 2 файла:

boot-linaro-stretch-qcom-snapdragon-arm64-20170607-246.img.gz

Това е най -новата налична версия до момента (17 юни), така че името може да се промени в бъдеще. Моделът, който ще търсите, е „boot-linaro-VersionName“. Тази се нарича "Stretch", а предишната беше "Jessie".

linaro-stretch-alip-qcom-snapdragon-arm64-20170607-246.img.gz

Това е последната версия до момента (17 юни) и името може да се промени в бъдеще. Потърсете модела "linaro-VersionName-alip".

Разархивирайте файловете от. GZ

Достъп до папката "root" във връзка с разархивираните файлове

пример: "/Изтегляния", където се съхраняват изтеглените файлове.

Сега започнете със следните команди:

sudo устройства за бързо зареждане

sudo fastboot флаш зареждане boot-linaro-NomeDaVersão-qcom-snapdragon-arm64-DATA.img

Очаквана възвръщаемост (запомнянето на часа може да варира):

завършен. общо време: 100.00s

Свържете мишка, клавиатура и монитор/телевизор, като използвате HDMI порта

Имайте това под ръка:

потребител: linaro

парола: linaro

Отворете приложението Lxterminal и продължете с изтеглянето на списъка с налични актуализации по отношение на инсталираните пакети:

sudo apt-get update

Не забравяйте да инсталирате наличните пакети от списъка:

sudo apt-get надстройка

Съвет: Linaro е избран поради изключително бързо зареждане и общност, много ангажирана и ориентирана към решаване на проблеми, което спестява много време.

Стъпка 2: Намиране на вашия DragonBoard 410c с помощта на неговата GPS антена

Намиране на вашия DragonBoard 410c с помощта на неговата GPS антена
Намиране на вашия DragonBoard 410c с помощта на неговата GPS антена
Намиране на вашия DragonBoard 410c с помощта на неговата GPS антена
Намиране на вашия DragonBoard 410c с помощта на неговата GPS антена

Започнете с инсталирането на необходимите приложения, които ще бъдат клиентите на GPS модула. Имената на приложенията са: GNSS-GPSD, GPSD и GPSD-КЛИЕНТИ. За да направите това, следвайте командите:

sudo apt-get инсталирате gnss-gpsd gpsd gpsd-клиенти

С тези инсталирани приложения ще ви трябват още команди, за да го стартирате правилно:

sudo systemctl start qdsp-start.service

sudo systemctl старт gnss-gpsd.service sudo systemctl старт qmi-gps-proxy.service

Сега занесете DragonBoard 410c на широко отворена площ с ясен изглед към небето, което му позволява да приема сигнала от спътниците. Сега въведете в терминала:

gpsmon –n

От нашите тестове данните ще започнат да се показват на екрана средно след 10 минути. Това се променя много от място на място, освен позицията на DragonBoard на прозореца или на закрито, освен много други бариери, които могат да пречат на приемането на GPS сигнал.

Стъпка 3: Инсталиране на 3G/4G USB Dongle

Инсталиране на 3G/4G USB Dongle
Инсталиране на 3G/4G USB Dongle
Инсталиране на 3G/4G USB Dongle
Инсталиране на 3G/4G USB Dongle
Инсталиране на 3G/4G USB Dongle
Инсталиране на 3G/4G USB Dongle
Инсталиране на 3G/4G USB Dongle
Инсталиране на 3G/4G USB Dongle

Има няколко начина за свързване на DragonBoard 410c към 3G/4G/GSM мрежа:

  • Използване на Shield / BreakoutBoard с GSM модем, който също има слот за SimCard;
  • Използвайте USB 3G/4G Dongle.

За този проект решихме да използваме USB ключа E3272 на Huawei, тъй като беше лесно и бързо да се купи такъв.

За да конфигурирате модема, можете да използвате терминала (с помощта на приложението WVDial), но най -лесният начин да го направите е да използвате графичния потребителски интерфейс (GUI) на Linaro. Към него, както следва:

  • Когато USB Dongle е свързан към DragonBoard, щракнете с десния бутон върху иконата „мрежи“в долния десен ъгъл на екрана;
  • „Редактиране на връзки“> „Добавяне“;
  • Изберете „Мобилен широколентов достъп“от падащото меню;
  • Кликнете върху „Създаване“.

Следвайте инструкциите от съветника, като се уверите, че сте избрали подходящия оператор от менюто, което позволява на устройството да се свърже съответно.

Стъпка 4: Трансформиране на DragonBoard 410c в Wifi гореща точка / точка за достъп

Трансформиране на DragonBoard 410c в Wifi гореща точка / точка за достъп
Трансформиране на DragonBoard 410c в Wifi гореща точка / точка за достъп
Трансформиране на DragonBoard 410c в Wifi гореща точка / точка за достъп
Трансформиране на DragonBoard 410c в Wifi гореща точка / точка за достъп
Трансформиране на DragonBoard 410c в Wifi гореща точка / точка за достъп
Трансформиране на DragonBoard 410c в Wifi гореща точка / точка за достъп

Най -лесният начин да конфигурирате DragonBoard 410c като wifi рутер или гореща точка (сега, когато сте конфигурирали интернет връзка) е да използвате GUI на системата. За да направите това, следвайте стъпките по -долу:

  • Щракнете с десния бутон върху иконата на мрежата в долния десен ъгъл
  • Изберете „Редактиране на връзки и след това„ Добавяне “
  • Изберете „WiFi“
  • Щракнете върху създаване

Променете името на мрежата, която искате да създадете, в полето „SSID“и полето „Mode“в „Hotspot“.

За да сте сигурни, че ще работи, проверете следното:

  • Отидете в раздела „Настройки на IPv4“
  • Проверете дали „Методът“

Стъпка 5: Достъп до DragonBoard 410c безжично чрез SSH, чрез Hotspot Connectivity

Достъп до DragonBoard 410c безжично чрез SSH, чрез Hotspot Connectivity
Достъп до DragonBoard 410c безжично чрез SSH, чрез Hotspot Connectivity

Успяхме да създадем начин за отдалечен достъп до DragonBoard, без значение дали сте близо до него или не. Обикновено трябва да се свържете към самата платка, като използвате wifi или bluetooth. Друг начин би бил достъпът до него чрез свързване към същата Wifi мрежа (например: от рутер). Изпълнявайки следващите стъпки, ние създаваме самостоятелно устройство, което генерира собствена мрежа и се отваря към мрежата, за да бъде достъпно.

Можете да започнете, като инсталирате „Auto SSH“, като използвате кода по -долу:

sudo apt-get install gcc make

wget https://www.harding.motd.ca/autossh/autossh-1.4e.tgz tar -xf autossh-1.4e.tgz cd autossh-1.4e./configure make sudo make install install

Сега ще генерираме криптографски ключ, използвайки стандарта RSA. Този ключ ще се използва за сигурен достъп до екземпляр на крайна точка на Linux чрез публичния IP на 3G модема. Основната цел на тази стъпка. Следният код ще копира този ключ в хранилището за надеждни ключове на Linux, като се увери, че има още по -голяма сигурност за връзката.

ssh -keygen -t rsa

scp ~/.ssh/id_rsa.pub потребител@отдалечен сървър:.ssh/оторизирани_ключове autossh -M 0 -q -f -N -i /home/pi/.ssh/id_rsa -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 2222: localhost: 22 потребител@отдалечен_сървър

Като следвате тези стъпки, току -що сте преобразували Qualcomm DragonBoard 410c в облачен сървър! / o/

Стъпка 6: Свързване на DragonBoard 410c към OBD на автомобила чрез Bluetooth - Част 1/2

Свързване на DragonBoard 410c към OBD на автомобила чрез Bluetooth - Част 1/2
Свързване на DragonBoard 410c към OBD на автомобила чрез Bluetooth - Част 1/2
Свързване на DragonBoard 410c към OBD на автомобила чрез Bluetooth - Част 1/2
Свързване на DragonBoard 410c към OBD на автомобила чрез Bluetooth - Част 1/2

Комуникационният интерфейс на автомобила се осъществява чрез OBD2 порт. Информацията, която се обменя в това пристанище, трябва да бъде преведена и за това се нуждаем от преводаческо устройство. Има две хардуерни алтернативи: ELM327 или STN1170.

За този проект използвахме Bluetooth устройство с чипсет на базата на ELM327.

Важно е да се отбележи, че наличността на ELM327 не означава, че това е ОРИГИНАЛНАТА ВЕРСИЯ на ELM327. Повечето от наличните чипсети са базирани на версия 1.5, тогава информацията за чипа беше клонирана и изтекла на пазара. Оригиналният ELM327 вече е на версия 2.2. Еволюцията на този чипсет носи повече данни за по -новите автомобили. Важно е да знаете това, тъй като в зависимост от тестовете може да имате или да нямате достъп до данни от по -нови превозни средства.

С Bluetooth адаптера OBD2 намерете OBD2 порта на колата си. Може да се намери някъде под волана. Може да е по -лесно да го потърсите с помощта на този инструмент:

Достъп до DragonBoard 410c с помощта на SSH от вашия преносим компютър (не забравяйте, че сега сте в колата и нямате телевизор/монитор, за да включите платката). Веднага след като OBD2 Bluetooth устройството бъде поставено в порта на автомобила, следвайте стъпките по -долу за достъп до Bluetooth връзката.

sudo bluetoothctl

може да се постави на агент при сканиране на агент по подразбиранеНа този етап е важно да копирате MAC адреса, защото ще ви е необходим за следващите стъпки

Въведете тези команди:

доверете се на МАКАДРЕС

чифт МАКАДРЕС

Трябва да бъдете подканени с искане да въведете ПИН кода, за да Сдвоите Bluetooth OBD2 с платката.

Обикновено ПИН кодът е 1234 или 0000 - зависи от вашия хардуер

Сега трябва да видите екрана "връзката е успешна". За да излезете от приложението Bluetooth, използвайте следната команда:

напусна

Следващата стъпка е да СВЪРЗЕТЕ устройството със серийния порт:

sudo rfcomm bind 0 MACADDRESS 1

За да сте сигурни, че операцията е успешна, въведете:

ls /dev

Трябва да се посочи портът „Rfcomm0“.

Стъпка 7: Свързване на DragonBoard 410c към OBD на автомобила чрез Bluetooth - част 2/2

Свързване на DragonBoard 410c към OBD на автомобила чрез Bluetooth - част 2/2
Свързване на DragonBoard 410c към OBD на автомобила чрез Bluetooth - част 2/2
Свързване на DragonBoard 410c към OBD на автомобила чрез Bluetooth - част 2/2
Свързване на DragonBoard 410c към OBD на автомобила чрез Bluetooth - част 2/2

Основната цел на тази стъпка е да гарантира, че комуникацията между трите устройства работи:

ELM327, DragonBoard 410c и колата

Изтеглете приложението „Screen“, за да изпращате серийни съобщения през серийния порт

sudo apt-get екран за инсталиране

Серийният порт ще се използва за изпращане на AT команди и получаване на отговорите между DragonBoard 410c и устройството ELM327.

Достъп до следната връзка за повече информация относно AT команди:

elmelectronics.com/ELM327/AT_Commands.pdf

Внимание:

Бъдете много внимателни с тази стъпка! Цялата информация, която изпращате на устройството, ще бъде интерпретирана и изпратена до колата, ако е изпратено грешно съобщение, тя може да бъде интерпретирана погрешно от колата и да причини проблеми. Обърнете внимание на командите и ги изучете, преди да опитате свой собствен код. Силно препоръчваме да следвате инструкциите по -долу на буквата.

Следвайте командната последователност по -долу, за да започнете комуникацията:

  • Тази функция ще стартира серийната комуникация с помощта на екрана:

    screen /dev /rfcomm0

Веднага щом терминалът се зареди, въведете следните команди в тази последователност:

ATZ

ATL1 ATH1 ATS1 ATSP0

Последен тест за комуникация:

Въведете в конзолата:

ATI

Той трябва да връща „ELM327 v1.5“или версията на ELM на вашето устройство

Това е доказателство, че комуникацията на ELM устройството и DragonBoard 410c работи

Бърз съвет

За да излезете от „Екран“е необходимо да въведете Ctrl+A, последвано от Ctrl+D.

Стъпка 8: Свързване на DragonBoard 410c към OBD на автомобила с помощта на PyOBD

Свързване на DragonBoard 410c към OBD на автомобила с помощта на PyOBD
Свързване на DragonBoard 410c към OBD на автомобила с помощта на PyOBD

PyOBD е библиотека на Python, която позволява комуникацията с OBD2 устройства, които могат да бъдат свързани към автомобили. С това можем да извлечем няколко информация, включително скоростта на автомобила и електрическите грешки.

В тази стъпка трябва да гарантираме, че следните библиотеки на python са инсталирани в Linaro на вашия DragonBoard 410c:

  • PIP - мениджър на пакети на Python

    sudo apt-get install python-pip

  • SetupTools - мениджър за инсталиране на файлове

    sudo pip install -U pip setupstools

  • Wheel - инсталирайте форматиращ пакет

    sudo apt-get инсталирайте python-wheel

  • OBD - Python библиотека за комуникация с OBD устройство

    sudo apt-get install python-obd

  • GPS - библиотека на Python за получаване на данни от GPS

    sudo pip инсталирате gps

  • Заявки - Python пакет за RESTful

    искания за инсталиране на sudo pip

За да проверите дали пакетът на OBD работи правилно, изпълнете следните стъпки:

sudo python

Сега курсорът на терминала ще бъде променен на „>>>“, което показва, че Python работи. Вече можете да започнете да въвеждате командите по -долу:

  • Започнете с импортиране на OBD библиотека:

    внос obd

  • За да се свържете със серийния порт, използвайте командата:

    връзка = old. OBD („dev/rfcomm0“)

  • Нормално е да се покаже съобщение за грешка, че комуникацията е неуспешна, така че ако това се случи, опитайте още веднъж.
  • За да разберете дали Python получава информация от колата, преминаваща през ELM327 по Bluetooth, въведете следното:

    connection.protocol_name ()

Стъпка 9: Четене на данни от колата, с помощта на Python

Четене на данни от колата, с помощта на Python
Четене на данни от колата, с помощта на Python

Ще създадем файл, наречен: OBD.py, съгласно инструкциите по -долу, последван от кода.

Започнете с импортиране на OBD библиотеката в Python, за да стартирате връзките.

По неизвестни причини, използвайки нашия хардуер, първият опит за свързване винаги се проваля. Втори опит, винаги работи. Ето защо в кода ще забележите два реда на команда, опитващи се да установят връзката.

След като връзката е успешна, стартирахме безкраен цикъл, който търси OBD данни, форматира ги според предварително зададените параметри. След това той създава URL, използвайки Query String, което му позволява да бъде изпратен до сървъра, използвайки метода POST.

В примера по -долу успяхме да получим следната информация:

  • RPM
  • Скорост

Функциите за улавяне на данни използват два параметъра. Например, с помощта на [1] [12] търсите за [модул] [PID]. Списъкът с функции може да бъде намерен на:

Най -накрая генерирайте URL адреса с цялата информация, свързана и добавена към файла, наречена "obd_data.dat".

Кодът за OBD.py е по -долу.

След свързване и улавяне на данните ще създадем файл, наречен: envia_OBD.py

Тази част от кода става по -опростена. Импортирайте библиотеките, свързани с заявката/изпратете данни, като използвате RESTFUL.

Създайте WHILE, за да използвате POST и изпратете URL адреса на първия ред на файла, попълнен преди това с OBD.py. След това, за да се избегне изпращането на данни отново, той изтрива този ред от файла.

Кодът за файла OBD.py е по -долу.

Стъпка 10: Повтарящи се скриптове и процедура за съхранение на данни за уловените данни

Повтарящи се скриптове и процедура за съхранение на данни за уловените данни
Повтарящи се скриптове и процедура за съхранение на данни за уловените данни

Всичко, което направихме досега, беше ориентирано да гарантира, че DragonBoard комуникира правилно с компонентите, като 3G, Wifi, Bluetooth, GPS данни и др.

Използвайте кода по -долу, за да редактирате файла "rc.local", който вече има някои функции и предварително дефинирани команди. Намира се на '/etc'. За да редактирате, използвайте командата:

sudo nano /etc/rc.local

Сега трябва да конфигурираме всички услуги и функции, като създадем подпрограми, които се инициализират автоматично при стартиране на DragonBoard. Нека използваме BASH за това. BASH (Bourne-Again-SHell) е приложение за интерпретатор на команди на Linux.

Следният код има команди BASH и ще трябва да вмъкнете Bluetooth/OBD MAC адрес. Бъдете особено внимателни, за да сте сигурни, че завършвате кода с "exit 0", което е отговорът на системата, че действието е било успешно.

ако [! -f/etc/ssh/ssh_host_rsa_key]

след това systemctl stop ssh.socket || true dpkg-reconfigure openssh-server fi sudo systemctl start qdsp-start.service rfcomm bind 0 MACADDRESS 1 sudo python /home/linaro/Documents/FadaDoCarro/conectaGPS.py & sudo python/home/linaro /Documents/FadaDoCarro/OBD.py & sudo python /home/linaro/Documents/FadaDoCarro/envia_OBD.py & exit 0

Отсега нататък всеки път, когато включите DragonBoard, той ще се свързва с 3G и ще изпраща GPS и OBD данни към избрания сървър.

Стъпка 11: Проблеми по пътя

Неприятности по пътя
Неприятности по пътя

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

  • PyOBD

    Трябва да сте много предпазливи, за да изпращате данни, докато общувате с колата. В един от първите ни опити, когато комуникацията не беше стабилна, изпратихме грешна команда, която по същество разби ECU. Превключването на предавките е останало при паркиране и някои от светлините на таблото продължиха да мигат произволно. Намереното решение беше да изключите един от кабелите на батерията за около 15 минути. Това връща ECU към фабрично състояние по подразбиране, поради което се анулират всички команди или промени, които може да сме направили

  • Линаро

    Имахме проблем с нашата DragonBoard, която продължаваше да се рестартира от време на време. Проблемът беше решен от екипа на Linaro, който пусна по -нова версия на операционната система. Написахме този урок с обновената версия

  • GPS на DragonBoard

    DragonBoard 410c на Qualcomm няма вътрешна GPS антена, така че за да подобрим събирането на GPS сигнал, трябва да инсталираме конектор за външна антена. Този процес е по-добре обяснен на следната връзка:

Стъпка 12: Препратки

Препратки
Препратки

Буутлоудър

builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/

Линаро

builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/

Като инсталатор за Linaro на DragonBoard 410c

www.embarcados.com.br/linux-linaro-alip-na-qualcomm-dragonboard-410c/

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

discuss.96boards.org/t/gps-software/170/16

GPS демонстрация

gist.github.com/wolfg1969/4653340

OBD на Python

github.com/brendan-w/python-OBD

Conectando RaspberryPi като OBD Bluetooth

gersic.com/connecting-your-raspberry-pi-to-a-bluetooth-obd-ii-adapter/

Препоръчано: