Sommario:

DragonBoard e OBD2: 12 passaggi
DragonBoard e OBD2: 12 passaggi

Video: DragonBoard e OBD2: 12 passaggi

Video: DragonBoard e OBD2: 12 passaggi
Video: Что может cканер ELM 327 + плагин для Renault oт MotorData ? 2024, Luglio
Anonim
DragonBoard e OBD2
DragonBoard e OBD2

Leggendo i dati che escono dalla porta OBD2 della tua auto, è possibile raccogliere informazioni sorprendenti da essa. Utilizzando DragonBoard 410c, abbiamo lavorato a questo progetto e lo abbiamo dettagliato qui in modo che tu possa farlo da solo.

Questo progetto è stato possibile solo grazie alla partnership con #Qualcomm #Embarcados #Linaro #Arrow #BaitaAceleradora che ci ha permesso di avere accesso al miglior hardware sul mercato, nonché il contatto con i migliori professionisti per supportare lo sviluppo.

La squadra era composta da questi ragazzi:

Siamo molto desiderosi di aiutarti a raggiungere il tuo obiettivo e assicurarci di completare il tuo progetto, quindi facci sapere se hai bisogno di aiuto oltre alle istruzioni di seguito.

Para seguir este project in Português, clique aqui:

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

Per questo progetto abbiamo utilizzato i seguenti elementi:

  • Qualcomm DragonBoard 410c
  • Interfaccia OBD2 Bluetooth ELM327
  • Chiavetta USB 3G/4G
  • Caricabatteria da auto ad inverter di tensione (110v)

Passaggio 1: esecuzione della configurazione iniziale di DragonBoard 410c**

Esecuzione della configurazione iniziale di DragonBoard 410c**
Esecuzione della configurazione iniziale di DragonBoard 410c**
Esecuzione della configurazione iniziale di DragonBoard 410c**
Esecuzione della configurazione iniziale di DragonBoard 410c**
Esecuzione della configurazione iniziale di DragonBoard 410c**
Esecuzione della configurazione iniziale di DragonBoard 410c**

Utilizzando Qualcomm DragonBoard 410c, abbiamo avviato il progetto installando la distribuzione di Linux chiamata Linaro, che ci consente di configurare tutti i dispositivi necessari.

Per creare un'immagine di Linaro per DragonBoard, usa Ubuntu su VirtualBox, così puoi usare FastBoot (che è un'app basata su Linux). Quindi in pratica quello che devi fare è aprire il Terminale sulla VM Ubuntu e inserire:

sudo apt-get android-tools-fastboot

Per installare Linaro, dobbiamo seguire 2 passaggi importanti:

1) Installazione del BOOTLOADER

Nome file: dragonboard410c_bootloader_emmc_linux-79.zip

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

Decomprimi i file e seleziona la cartella:

cd /FolderName (percorso della cartella decompressa)

Inserisci il seguente codice:

sudo dispositivi fastboot

Ritorno previsto:

(esadecimale) fastboot

Quindi digita:

sudo./flashall

Ritorno previsto:

finito. tempo totale 1.000s (senza errori)

Installazione del SISTEMA OPERATIVO

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

Scarica questi 2 file:

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

Questa è l'ultima versione disponibile fino ad oggi (17 giugno), quindi il nome potrebbe cambiare in futuro. Il modello che stai cercando è "boot-linaro-VersionName". Questo si chiama "Stretch" e il precedente era "Jessie".

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

Questa è l'ultima versione fino ad oggi (17 giugno) e il nome potrebbe cambiare in futuro. Cerca lo schema "linaro-VersionName-alip".

Decomprimi i file dal. GZ

Accedere alla cartella "root", in relazione ai file decompressi

esempio: "/Download" che è il luogo in cui vengono archiviati i file scaricati.

Ora inizia con i seguenti comandi:

sudo dispositivi fastboot

sudo fastboot flash boot boot-linaro-NomeDaVersão-qcom-snapdragon-arm64-DATA.img

Ritorno previsto (ricordando che l'orario può variare):

finito. tempo totale: 100.00s

Collega un mouse, una tastiera e un monitor/TV utilizzando la porta HDMI

Tieni questo a portata di mano:

utente: linaro

password: linaro

Aprire l'app Lxterminal e procedere con il download della lista degli aggiornamenti disponibili, relativi ai pacchetti installati:

sudo apt-get update

Assicurati di installare i pacchetti disponibili dall'elenco:

sudo apt-get upgrade

Suggerimento: Linaro è stato scelto per un avvio estremamente veloce e una community molto impegnata e orientata al problem solving, che fa risparmiare molto tempo.

Passaggio 2: Individuazione della DragonBoard 410c tramite l'antenna GPS

Individuazione della DragonBoard 410c tramite l'antenna GPS
Individuazione della DragonBoard 410c tramite l'antenna GPS
Individuazione della DragonBoard 410c tramite l'antenna GPS
Individuazione della DragonBoard 410c tramite l'antenna GPS

Inizia installando le app necessarie che saranno i client del modulo GPS. I nomi delle app sono: GNSS-GPSD, GPSD e GPSD-CLIENTS. Per farlo, segui i comandi:

sudo apt-get install gnss-gpsd gpsd gpsd-clients

Con queste app installate, avrai bisogno di più comandi per avviarlo correttamente:

sudo systemctl start qdsp-start.service

sudo systemctl start gnss-gpsd.service sudo systemctl start qmi-gps-proxy.service

Ora porta il DragonBoard 410c in un'ampia area aperta, con una visuale libera del cielo, permettendogli di ricevere il segnale dai satelliti. Ora digita nel terminale:

gpsmon –n

Dai nostri test, i dati inizierebbero a essere visualizzati sullo schermo dopo 10 minuti, in media. Questo cambia molto da un luogo all'altro, oltre alla posizione della DragonBoard sulla finestra, o all'interno, oltre a molte altre barriere che possono interferire nella ricezione del segnale GPS.

Passaggio 3: installazione del dongle USB 3G/4G

Installazione del dongle USB 3G/4G
Installazione del dongle USB 3G/4G
Installazione del dongle USB 3G/4G
Installazione del dongle USB 3G/4G
Installazione del dongle USB 3G/4G
Installazione del dongle USB 3G/4G
Installazione del dongle USB 3G/4G
Installazione del dongle USB 3G/4G

Ci sono alcuni modi per connettere la DragonBoard 410c alla rete 3G/4G/GSM:

  • Utilizzo di uno Shield / BreakoutBoard con un modem GSM che ha anche uno slot per SimCard;
  • Usa una chiavetta USB 3G/4G.

Per questo progetto abbiamo deciso di utilizzare il Dongle USB E3272 di Huawei, perché è stato facile e veloce acquistarne uno.

Per configurare il modem puoi utilizzare il terminale (utilizzando l'app WVDial), ma il modo più semplice per farlo è utilizzare l'interfaccia grafica utente (GUI) di Linaro. Ad esso come segue:

  • Con il Dongle USB collegato alla DragonBoard, fare clic con il pulsante destro del mouse sull'icona "reti" nell'angolo in basso a destra dello schermo;
  • “Modifica connessioni” > “Aggiungi”;
  • Scegli "Banda larga mobile" dal menu a discesa;
  • Fare clic su "Crea".

Segui le istruzioni della procedura guidata, assicurandoti di selezionare l'operatore appropriato dal menu, consentendo al dispositivo di connettersi di conseguenza.

Passaggio 4: trasformare la DragonBoard 410c in un hotspot/access point Wi-Fi

Trasformare la DragonBoard 410c in un hotspot/access point Wi-Fi
Trasformare la DragonBoard 410c in un hotspot/access point Wi-Fi
Trasformare la DragonBoard 410c in un hotspot/access point Wi-Fi
Trasformare la DragonBoard 410c in un hotspot/access point Wi-Fi
Trasformare la DragonBoard 410c in un hotspot/access point Wi-Fi
Trasformare la DragonBoard 410c in un hotspot/access point Wi-Fi

Il modo più semplice per configurare DragonBoard 410c come router Wi-Fi o hotspot (ora che hai configurato la connessione Internet) è utilizzare la GUI del sistema. Per farlo, segui i passaggi seguenti:

  • Fare clic con il tasto destro sull'icona della rete nell'angolo in basso a destra
  • Scegli "Modifica connessioni e poi "Aggiungi"
  • Scegli "WiFi"
  • Fare clic su Crea

Modificare il nome della rete che si desidera creare nel campo "SSID" e modificare il campo "Modalità" in "Hotspot".

Per assicurarti che funzioni, verifica quanto segue:

  • Vai alla scheda "Impostazioni IPv4"
  • Verificare se il "Metodo"

Passaggio 5: accesso a DragonBoard 410c in modalità wireless utilizzando SSH, tramite connettività hotspot

Accesso a DragonBoard 410c in modalità wireless tramite SSH, tramite connettività hotspot
Accesso a DragonBoard 410c in modalità wireless tramite SSH, tramite connettività hotspot

Siamo riusciti a creare un modo per accedere a DragonBoard da remoto, indipendentemente dal fatto che ci sia vicino o meno. Di solito dovresti connetterti alla scheda stessa, usando wifi o bluetooth. Un altro modo, sarebbe quello di accedervi collegandosi alla stessa Rete Wifi (es: da un router). Eseguendo i passaggi successivi, stiamo creando un dispositivo autonomo, che genera la propria rete e si apre al web, per potervi accedere.

Puoi iniziare installando "Auto SSH", utilizzando il codice seguente:

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

Ora genereremo una chiave crittografica, utilizzando lo standard RSA. Questa chiave verrà utilizzata per accedere in modo sicuro a un'istanza dell'endpoint Linux, tramite l'IP pubblico del modem 3G. L'obiettivo principale di questo passaggio. Il codice seguente copierà quella chiave nel Trusted Keys Repository di Linux, assicurandosi che la connessione sia ancora più sicura.

ssh-keygen -t rsa

scp ~/.ssh/id_rsa.pub user@remote_server:.ssh/authorized_keys autossh -M 0 -q -f -N -i /home/pi/.ssh/id_rsa -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 2222:hostlocale:22 utente@server_remoto

Seguendo questi passaggi, hai appena trasformato Qualcomm DragonBoard 410c in un Cloud Server! \o/

Passaggio 6: collegamento della DragonBoard 410c all'OBD dell'auto tramite Bluetooth - Parte 1/2

Collegamento della DragonBoard 410c all'OBD dell'auto tramite Bluetooth - Parte 1/2
Collegamento della DragonBoard 410c all'OBD dell'auto tramite Bluetooth - Parte 1/2
Collegamento della DragonBoard 410c all'OBD dell'auto tramite Bluetooth - Parte 1/2
Collegamento della DragonBoard 410c all'OBD dell'auto tramite Bluetooth - Parte 1/2

L'interfaccia di comunicazione dell'auto avviene tramite una porta OBD2. Le informazioni che vengono scambiate in questa porta devono essere tradotte e per questo abbiamo bisogno di un dispositivo interprete. Esistono due alternative hardware: ELM327 o STN1170.

Per questo progetto abbiamo utilizzato un dispositivo Bluetooth con un chipset basato su ELM327.

È importante notare che la disponibilità dell'ELM327 non significa che sia la VERSIONE ORIGINALE dell'ELM327. La maggior parte dei chipset disponibili si basa sulla versione 1.5, ovvero quando le informazioni del chip sono state clonate e sono trapelate nel mercato. L'originale ELM327 è ora alla versione 2.2. L'evoluzione di questo chipset porta più dati sulle auto più recenti. È importante saperlo, perché a seconda dei test, potresti o meno essere in grado di accedere ai dati dai veicoli più recenti.

Con l'adattatore Bluetooth OBD2, trova la porta OBD2 della tua auto. Potrebbe trovarsi da qualche parte sotto il volante. Potrebbe essere più semplice cercarlo utilizzando questo strumento:

Accedi alla DragonBoard 410c tramite SSH, dal tuo notebook (ricorda che ora sei in macchina e non hai una TV/Monitor per collegare la scheda). Non appena il dispositivo Bluetooth OBD2 viene inserito nella porta dell'auto, seguire i passaggi seguenti per accedere alla connettività Bluetooth.

sudo bluetoothctl

abbinabile su agente su scansione agente predefinita attivaIn questa fase è importante copiare l'indirizzo MAC perché ne avrai bisogno per i passaggi successivi

Digita questi comandi:

fidati di MACADDRESS

coppia MACADDRESS

Dovrebbe essere richiesto con una richiesta di digitare il codice PIN per accoppiare il Bluetooth OBD2 con la scheda.

Di solito il codice PIN è 1234 o 0000 - dipende dal tuo hardware

Ora dovresti vedere la schermata "connessione riuscita". Per uscire dall'applicazione Bluetooth, utilizzare il seguente comando:

uscire

Il prossimo passo è BIND il dispositivo con la porta seriale:

sudo rfcomm bind 0 MACADDRESS 1

Per assicurarti che l'operazione sia riuscita, digita:

ls /dev

Dovrebbe essere elencata la porta "Rfcomm0".

Passaggio 7: collegamento della DragonBoard 410c all'OBD dell'auto tramite Bluetooth - Parte 2/2

Collegamento della DragonBoard 410c all'OBD dell'auto tramite Bluetooth - Parte 2/2
Collegamento della DragonBoard 410c all'OBD dell'auto tramite Bluetooth - Parte 2/2
Collegamento della DragonBoard 410c all'OBD dell'auto tramite Bluetooth - Parte 2/2
Collegamento della DragonBoard 410c all'OBD dell'auto tramite Bluetooth - Parte 2/2

L'obiettivo principale di questo passaggio è garantire che la comunicazione tra i 3 dispositivi funzioni:

ELM327, DragonBoard 410c e la macchina

Scarica l'app "Schermo" per inviare messaggi seriali tramite la porta seriale

sudo apt-get install screen

La porta seriale verrà utilizzata per inviare i comandi AT e ricevere le risposte tra la DragonBoard 410c e il dispositivo ELM327.

Accedere al seguente collegamento per ulteriori informazioni sui comandi AT:

elmelectronics.com/ELM327/AT_Commands.pdf

Avvertimento:

Stai molto attento con questo passaggio! Tutte le informazioni inviate al dispositivo verranno interpretate e inviate all'auto, se viene inviato un messaggio errato, può essere interpretato erroneamente dall'auto e causare problemi. Presta attenzione ai comandi e studiali prima di provare il tuo codice. Consigliamo vivamente di seguire alla lettera le istruzioni riportate di seguito.

Seguire la sequenza di comandi di seguito per avviare la comunicazione:

  • Questa funzione avvierà la comunicazione seriale utilizzando lo schermo:

    schermo /dev/rfcomm0

Non appena il terminale si carica, digita i seguenti comandi in questa sequenza:

ATZ

ATL1 ATH1 ATS1 ATSP0

Prova finale di comunicazione:

Digita nella console:

ATI

Dovrebbe restituire "ELM327 v1.5" o la versione ELM del tuo dispositivo

Questa è la prova che la comunicazione tra il dispositivo ELM e la DragonBoard 410c funziona

Consiglio rapido

Per uscire da “Screen” è necessario premere Ctrl+A seguito da Ctrl+D.

Passaggio 8: collegamento della DragonBoard 410c all'OBD dell'auto tramite PyOBD

Collegamento della DragonBoard 410c all'OBD dell'auto tramite PyOBD
Collegamento della DragonBoard 410c all'OBD dell'auto tramite PyOBD

PyOBD è una libreria Python per abilitare la comunicazione con dispositivi OBD2 collegabili alle auto. Con ciò, possiamo estrarre diverse informazioni tra cui la velocità del veicolo e gli errori elettrici.

In questo passaggio dobbiamo assicurarci che le seguenti librerie Python siano installate in Linaro della tua DragonBoard 410c:

  • PIP - Gestore di pacchetti di Python

    sudo apt-get install python-pip

  • SetupTools - gestore di installazione di file

    sudo pip install -U pip setupstools

  • Wheel - installa il formattatore del pacchetto

    sudo apt-get install python-wheel

  • OBD - Libreria Python per comunicare con il dispositivo OBD

    sudo apt-get install python-obd

  • GPS - Libreria Python per ottenere dati dal GPS

    sudo pip install gps

  • Richieste - Pacchetto Python per RESTful

    sudo pip install richieste

Per verificare se il pacchetto di OBD funziona correttamente, segui questi passaggi:

sudo pitone

Ora il cursore del terminale verrà modificato in ">>>" indicando che Python è in esecuzione. Ora puoi iniziare a digitare i comandi seguenti:

  • Inizia importando la libreria OBD:

    importare obd

  • Per connettersi alla Porta Seriale utilizzare il comando:

    connessione = vecchio. OBD(“dev/rfcomm0”)

  • È normale mostrare un messaggio di errore, dicendo che la comunicazione non è riuscita, quindi se ciò accade, prova ancora una volta.
  • Per scoprire se Python sta ricevendo informazioni dall'auto che passa attraverso ELM327 tramite bluetooth, digita quanto segue:

    connection.protocol_name()

Passaggio 9: lettura dei dati dall'auto, utilizzando Python

Leggere i dati dall'auto, usando Python
Leggere i dati dall'auto, usando Python

Creeremo un file chiamato: OBD.py, come istruzioni di seguito, seguito dal codice.

Inizia importando la libreria OBD in Python per avviare le connessioni.

Per ragioni sconosciute, utilizzando il nostro hardware, il primo tentativo di connessione fallisce sempre. Secondo tentativo, funziona sempre. Ecco perché sul codice noterai due righe di comando che tentano di stabilire la connessione.

Dopo che la connessione è andata a buon fine, abbiamo avviato un ciclo infinito, che cerca i dati OBD, li formatta secondo i parametri preimpostati. Successivamente, crea un URL, utilizzando Query String, che consente di inviarlo al server utilizzando il metodo POST.

Nell'esempio seguente, siamo riusciti a ottenere le seguenti informazioni:

  • RPM
  • Velocità

Le funzioni per acquisire i dati utilizzano due parametri. Ad esempio, utilizzando [1][12] stai cercando [module] [PID]. L'elenco delle funzioni è disponibile su:

Infine, genera l'URL con tutte le informazioni concatenate e aggiunte al file, chiamato "obd_data.dat".

Il codice per OBD.py è sotto.

Dopo aver connesso e acquisito i dati, creeremo un file chiamato: envia_OBD.py

Questa parte del codice diventa più semplice. Importa le librerie relative ai dati di richiesta/invio, utilizzando RESTFUL.

Crea un WHILE per utilizzare POST e invia l'URL della prima riga del file, precedentemente popolato da OBD.py. Dopodiché, per evitare che i dati vengano inviati nuovamente, cancella quella riga dal file.

Di seguito è riportato il codice per il file OBD.py.

Passaggio 10: script ricorrenti e procedura di archiviazione dei dati per i dati acquisiti

Script ricorrenti e procedura di memorizzazione dei dati per i dati acquisiti
Script ricorrenti e procedura di memorizzazione dei dati per i dati acquisiti

Tutto ciò che abbiamo fatto finora è stato orientato per assicurarci che la DragonBoard comunicasse correttamente con i componenti, come 3G, Wifi, Bluetooth, dati GPS e altro ancora.

Usa il codice qui sotto per modificare il file "rc.local", che ha già alcune funzioni e comandi predefiniti. Si trova in '/etc'. Per modificare usa il comando:

sudo nano /etc/rc.local

Ora dobbiamo configurare tutti i servizi e le funzioni, creando delle routine che si inizializzano automaticamente all'avvio della DragonBoard. Usiamo BASH per farlo. BASH (Bourne-Again-SHell) è un'app per interprete di comandi Linux.

Il codice seguente contiene comandi BASH e sarà necessario inserire l'indirizzo MAC Bluetooth/OBD. Fai molta attenzione per assicurarti di terminare il codice con "exit 0" che è la risposta del sistema che l'azione ha avuto successo.

Se [! -f /etc/ssh/ssh_host_rsa_key]

poi 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

D'ora in poi, ogni volta che accendi la DragonBoard, si connetterà al 3G e invierà i dati GPS e OBD al server prescelto.

Passaggio 11: problemi lungo la strada

Problemi lungo la strada
Problemi lungo la strada

Di seguito abbiamo elencato alcuni dei problemi che abbiamo riscontrato lungo la strada prima di scrivere questo Instructable, ma abbiamo pensato che potesse aiutarti se ti capita.

  • PyOBD

    Devi essere molto cauto per inviare dati mentre comunichi con l'auto. In uno dei nostri primi tentativi, quando la comunicazione non era stabile, abbiamo inviato il comando sbagliato che ha praticamente mandato in crash l'ECU. Il cambio era bloccato nel parcheggio e alcune luci del cruscotto continuavano a lampeggiare casualmente. La soluzione trovata è stata quella di scollegare uno dei cavi della batteria per circa 15 minuti. Ciò ripristina l'ECU al suo stato predefinito di fabbrica, annullando quindi eventuali comandi o modifiche che potremmo aver apportato

  • Linaro

    Abbiamo avuto un problema con la nostra DragonBoard, che continuava a riavviarsi sporadicamente. Il problema è stato risolto dal team di Linaro che ha rilasciato una versione più recente del sistema operativo. Abbiamo scritto questo tutorial con la versione aggiornata

  • Il GPS di DragonBoard

    La DragonBoard 410c di Qualcomm non dispone di un'antenna GPS interna, quindi per migliorare l'acquisizione del segnale GPS, è necessario installare un connettore per un'antenna esterna. Questo processo è meglio spiegato nel seguente link:

Passaggio 12: riferimenti

Riferimenti
Riferimenti

Boot loader

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

Linaro

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

Come installare o Linaro na DragonBoard 410c

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

Documentazione GPS per DragonBoard

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

Dimostrazione GPS

gist.github.com/wolfg1969/4653340

Python OBD

github.com/brendan-w/python-OBD

Collegamento RaspberryPi à um OBD Bluetooth

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

Consigliato: