Kazalo:
- Korak: Fazendo O Setup Inicial Da DragonBoard 410c
- Korak: Fazendo O GPS Da DragonBoard 410c Localizar Seu Dispositivo
- 3. korak: Instalando O Dongle USB 3G/4G
- Korak: Preoblikujte DragonBoard 410c Em Hotspot / Access Point WiFi
- 5. korak: Acessando a DragonBoard 410c Por SSH Sem Fio, Utilizando O Hotspot
- Korak 6: Ligando a DragonBoard 410c Ao OBD Do Seu Carro prek Bluetooth - Passo 1/2
- Korak 7: Ligando a DragonBoard 410c Ao OBD Do Seu Carro prek Bluetooth - Passo 2/2
- 8. korak: Ligando a DragonBoard 410c Ao OBD Do Seu Carro Usando PyOBD
- 9. korak: Dodatne informacije o Carro Usando Python
- 10. korak: Ponovi skripte E Armazenamento Dados Capturados Do Carro
- 11. korak: Dificuldades Encontradas
- 12. korak: Napotki
Video: DragonBoard Com OBD: 12 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
Através da leitura do protocolo OBD2 do carro, é possível receber informações do veículo. Uporabite DragonBoard 410c começamos in trabalhar neste projeto, e trazemos aqui o caminho podrobhado para você reproduzir isso.
Este projeto foi feito em parceria com a #Qualcomm #Embarcados #Linaro #Arrow #BaitaAceleradora que permitiram que tivéssemos acesso aos melhores hardwares, além do contato com os melhores profissionais para doprinosa com o desenvolvimento.
Participaram deste projeto:
- Marcel Ogando - Heker - [email protected]
- Leandro Alvernaz - Heker - [email protected]
- Thiago Paulino Rodrigues - Trženje - [email protected]
Temos total interesse em ajudar você a compleir o seu projeto, então não deixe de entrar em contato conosco!
Če želite temu projektu slediti v angleščini, kliknite tukaj:
www.instructables.com/id/DragonBoard-and-OBD2/
A estrutura deste projeto includei os seguintes componentsntes, conforme apresentados na imagem acima:
- Qualcomm DragonBoard 410c
- ELM327 Bluetooth OBD2 vmesnik
- Ključ USB 3G/4G
- Carregador Veicular de Inversão de Tensão (110v)
Korak: Fazendo O Setup Inicial Da DragonBoard 410c
Uporabite Qualcomm DragonBoard 410c, iniciamos ali projekto com namestite za distribucijo Linaro do Linux, končno nastavite popolno konfiguracijo do dispozitiva.
Če želite uporabiti sliko Linaro za DragonBoard, uporabite Ubuntu, VirtualBox ali več, FastBoot, ki je na voljo v Linuxu. É je potrebno namestiti v ambiente Linuxa za namestitev.
Za namestitev Fastboot, dostop do terminala Máquina Virtual Ubuntu in digitalno:
sudo apt-get android-tools-fastboot
-
Para instalar o Linaro, precisamos passar por 2 passos muito importantes:
- Namestitev ali BOOTLOADER
-
Ime do arquivo: dragonboard410c_bootloader_emmc_linux-79.zip
- https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/
- Umiknite se z arquivos de dentro do ZIP
-
Vnos testenin:
cd /NomeDaPasta (caminho da pasta descompactada)
-
Fazer o comando:
sudo fastboot naprave
-
Odgovor na esperado:
(šestnajstiški) hitri zagon
-
Então digite:
sudo./flashall
-
Odgovor na esperado:
Dokončano. skupni čas 1.000 s (sem napake)
(sem napake)
-
Instalando o Sistema Operacional
- https://builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/
- Najboljša doksa arquivos:
-
boot-linaro-stretch-qcom-snapdragon-arm64-20170607-246.img.gz
Este arquivo é a última versão (Junho/17) e o nome futuro pode ser alterado. Base do nome que você deve buscar é "boot-linaro-NomeDaVersão". Nesta versão o nome é “Stretch” e anterior foi “Jessie”
-
linaro-stretch-alip-qcom-snapdragon-arm64-20170607-246.img.gz
Este arquivo é a última versão (Junho/17) e o nome futuro pode ser alterado. Naročite po “linaro-NomeDaVersão-alip”
- Retirar os arquivos de dentro do. GZ
-
Vnesite testenine "raiz" em relação aos arquivos compactados
exemplo: “/Downloads” que é o local onde os arquivos baixados estão
-
Entre com os comandos:
sudo fastboot naprave
sudo fastboot flash zagon boot-linaro-NomeDaVersão-qcom-snapdragon-arm64-DATA.img
-
Resposta esperada (lembrando que o tempo pode variar):
Dokončano. skupni čas: 100,00s
- Priključena miška, Teclado monitor in televizor s priključkom HDMI
-
Uporabite:
- Običajno: linaro
- Senha: linaro
-
Abra vmesnik Lxterminal e faça ali prenesete na seznam de atualizações disponíveis dos pacotes instalados:
sudo apt-get posodobitev
-
Uresničite instalação dos pacotes disponíveis usando o código:
sudo apt-get nadgradnja
Dicas: O Linaro tem um boot extremamente rápido, e uma comunidade bastante angajada para solução de problemas.
Korak: Fazendo O GPS Da DragonBoard 410c Localizar Seu Dispositivo
Pridite, če namestite aplikacijo, ki bo služila strankam o GPS-u, pošiljanju o GNSS-GPSD, o GPSD ali o GPSD-KLIJENTIH. Faça isso usando o comando:
sudo apt-get install gnss-gpsd gpsd gpsd-clients
Com ele instalado, você precisará rodar alguns comandos para iniciar o aplicativo, são eles:
sudo systemctl start qdsp-start.servicesudo systemctl start gnss-gpsd.servicesudo systemctl start qmi-gps-proxy.service
Leve sua DragonBoard 410c para um local aberto, com visada para o céu, e digite no terminal:
gpsmon –n
Pelos testes realizados, o tempo médio até as informationções começarem aparecer na tela, é de cerca de 10 minutes. Isso varia muito da localização da DragonBoard, quantidade de prédios ao seu redor, além de outras barreiras naturais que possam atrapalhar and recepção do sinal do GPS.
Za podpisovanje essas informações e mandar para a núvem, uporabite o código abaixo, alterando ali endereço do seu spletno stran:
3. korak: Instalando O Dongle USB 3G/4G
Existem algumas formas de fazer a DragonBoard 410c accesscess a rede 3G/4G:
- Instalando um Shield / BreakoutBoard com Modem GSM e reža za SimCard;
- Uporabite Dongle USB 3G/4G;
Za opto optomos dongle USB 3G/4G za Huawei modelo E3272, ki je na voljo za shranjevanje.
Za konfiguracijo modema, uporabo podokna za uporabo terminala (com a applicação WVDial), zaželeno je, da se uporablja in uporablja vmesnik Gráfica do Usuário (GUI) do Linaro. Faça da seguinte forma:
- Com o Dongle USB priključek, klic com botão direito no ícone de "redes" no canto inferior direito da tela.
- »Uredi povezave«> »Dodaj«
- Escolha in opção: "Mobilna širokopasovna povezava"
- Kliknite »Ustvari«
Če želite namestiti operacijski sistem, prilagoditi slikovne datoteke, konfigurirati operacijsko postajo za telefon, združiti sim kartico. Para criação deste projeto, use sim Sim Card da Tim (e um modem inicialmente vendido pela Vivo).
Korak: Preoblikujte DragonBoard 410c Em Hotspot / Access Point WiFi
Če uporabljate DragonBoard 410c kot roteador wifi (potem ste konfigurirali povezavo in internet), lahko preprosto uporabite preprost vmesnik za sistem. Siga os passos abaixo:
- Clique no botão direito no ícone de "redes" no canto inferior direito.
- »Uredi povezave«> »Dodaj«
- Uporabite »WiFi«
- Kliknite »Ustvari«
Coloque o nome da rede que você quer criar no campo "SSID" e depois altere o "Mode" za "Hotspot".
Za garancijo ali funkcijo:
- Poiščite »Nastavitve IPv4«
- To je "Metoda", označena kot "V skupni rabi z drugimi računalniki"
5. korak: Acessando a DragonBoard 410c Por SSH Sem Fio, Utilizando O Hotspot
Criamos um jeito de acessar a placa remotamente, Independente da forma que ela esteja conectada, não dependendo de estar próximo a Dragonboard para conectar diretamente à ela, ou ao wifi em que ela esteja conectada. Este é o método de conexão dos servidores Linux in Amazon.
Pridobite namestitev o samodejnem SSH, uporabite ali uporabite abaixo.
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
Agora vamos gerar uma chave criptografada com padrão de segurança RSA. Esta chave služijo para que a pessoa que a tenha, tenha autorização para acessar in instância do endpoint exclusivo no Linux, através do IP público do modem 3G, glavni cilj deste passo. V nadaljevanju, o código faz a copia da chave para ali repositório de chaves confiáveis za Linux, garantindo ainda mais confiança para conexão.
ssh -keygen -t rsa
scp ~/.ssh/id_rsa.pub uporabnik@oddaljeni strežnik:.ssh/pooblaščeni_ključi autossh -M 0 -q -f -N -i /home/pi/.ssh/id_rsa -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 2222: localhost: 22 uporabnik na oddaljenem strežniku
Če želite, spremenite način pretvorbe v oblak strežnikov DragonBoard 410c! / o/
Korak 6: Ligando a DragonBoard 410c Ao OBD Do Seu Carro prek Bluetooth - Passo 1/2
Komunikacijski vmesnik com os carros é feita através da porta OBD2. A informação que transita nesta porta precisa ser traduzida, e para isso precisamos de um interpretador que trate os dados. Dodatne informacije o strojni opremi: ELM327 ali STN1170.
Če želite to narediti, uporabite ali odstranite Bluetooth s čipom na osnovi ELM327.
Pomembno je, da poiščete disponibilizirano strojno opremo, ki ni nujno potrebna za različico ORIGINAL do ELM327. A maior parte disponível está na verão 1.5, que foi quando o chip original foi clonado e colocado a venda no mercado. Izvirni nabor čipov, različica 2.2. Evolução deste versionamento traz ao chip mais informações sobre os carros mais novos. É Importante sabre disco, pois dependendo dos testes realizados, poderá ou não conseguir obter determinadas informações de veículos mais novos.
Če imate na voljo OBD2 Bluetooth, lahko uporabite OBD2 za seu carro. Ela pode estar localizada logo abaixo do volante, no console central ou perto da caixa de fusíveis. O local varia bastante entre as montadoras e modelos. Uma opção para localizar é usar esta ferramenta:
Acesse a DragonBoard 410c com SSH, uporabite prenosni računalnik (lembrando que agora você está no carro, e não possui mais uma tela para conectar a placa).
Določite, ali je na voljo OBD2 Bluetooth za vstavitev brez povezovalnika za Carro, siga os passos abaixo za ter kontrolo za povezovanje bluetooth:
sudo bluetoothctl
možno pri agentu pri privzetem skeniranju posrednikaNeste momento é importante que você copie o naslovu MAC pois precisará para os próximos passos
Digita:
zaupajte MACADDRESS
par MACADDRESS
Naslednji trenutek je nameščen za uporabo digitalnega PIN -a ali kode PIN za Bluetooth OBD2.
O PIN PIN je na voljo 1234 ali 0000
Após a tela de sucesso de conexão, digitando este comando, você sai do program controlador do Bluetooth digitando:
prenehati
Agora é preciso fazer um "BIND" do dispositivo com a porta serial:
sudo rfcomm bind 0 MACADDRESS 1
Para validar o sucesso da operação digite:
ls /dev
Porta “Rfcomm0” deve estar na listi.
Korak 7: Ligando a DragonBoard 410c Ao OBD Do Seu Carro prek Bluetooth - Passo 2/2
Objetivo deste passo é garantir o funcionamento da comunicação entre os dispositivos:
ELM327, DragonBoard 410c e Veículo
Najprej uporabite aplikacijo “Screen” za več informacij o porta Serial
sudo apt-get namestitveni zaslon
Serijska naprava Porta Serial je namenjena uporabi v Comandosu in vnese DragonBoard 410c ali ELM327.
Para saber mais sobre Comandos AT, acesse:
ATENÇO:
Tome muito cuidado nesta parte! Todas as informações enviadas para o dispositivo conectado ao carro, poderão ser interpretadas e enviadas ao carro de maneira errada e ocasionar o mal-funcionamento do seu carro! Estude bastante os comandos antes de tentar inovar nos comandos. Recomendamos que siga as instruções abaixo podrobhadamente.
Siga a sequência de comandos abaixo para dar início à comunicação:
-
Esta função fará abrir o terminal de comunicação serijski.
screen /dev /rfcomm0
Assim que o terminal carregar, digite os comandos abaixo nesta sequência (e entenda o que cada um deles faz):
-
Reinicia o dispositivo. Kot vezes você precisará fazer isso.
ATZ
-
Liga a funcionalidade de quebra de linha nos comandos, ki olajša vizualizacijo.
ATL1
-
Liga os cabeçalhos dos comandos.
ATH1
-
Liga o espaçamento entre palavras.
ATS1
-
Opredelite protocolo de comunicação do carro para „Automático“.
ATSP0
Finale teste de comunicação:
-
Digite no console:
ATI
- Ele deve retornar “ELM327 v1.5” ali različica ELM do seu dispositivo.
- Isso prova que o ELM327 está comunicando com a placa sem problemas, e podemos prosseguir.
Dica
Za uporabo zaslona "Screen" in potreben apertar: Ctrl-A seguido de Ctrl-D
8. korak: Ligando a DragonBoard 410c Ao OBD Do Seu Carro Usando PyOBD
PyOBD é uma biblioteca de Python específica para comunicação com o padrão OBD2 dos veículos. Com ela, podemos extrair diversas informações da rede de comunicação do carro, vključno z dados como velocidade e até mesmo erros da parte elétrica.
Para estata, precisamos garantir que as seguintes bibliotecas estejam instaladas no Linaro da sua DragonBoard 410c:
-
PIP - Gerenciador de módulos do Python
sudo apt-get install python-pip
-
SetupTools - gestor de arquivos de instalação
sudo pip install -U pip setuptools
-
Kolo - formatador de arquivos para instalação
sudo apt-get install python-wheel
-
OBD - biblioteca para interpretação de dados OBD
sudo apt-get python-obd
-
GPS - biblioteca com dados do GPS
sudo pip namestite gps
-
Zahteve - módulo de solicitações
zahteve za namestitev sudo pip
Para sabre je biblioteca de Python está funcionando corretamente, precisamos rodar os comandos:
sudo python
Naslednji trenutek o kurzorju do terminala, ki ga uporabljate za ikono »>>>«, kaže na program, ki je namenjen Pythonu. Podemos começar a digitar os comandos para serem interpretados conforme abaixo.
- Comece importando a biblioteca
uvoz obd
-
Para fazer a conexão com a porta serijska uporaba o comando
povezava = obd. OBD (“/dev/rfcomm0”)
-
Para descobrir se nanaša na Python, ki je skladen z dodatnimi informacijami za carro, passando pelo Bluetooth, ELM327 ali chegar no carro, digitalno:
connection.protocol_name ()
9. korak: Dodatne informacije o Carro Usando Python
Vamos criar um arquivo chamado: OBD.py, conforme instruções abaixo e código na sequência.
Importamos a biblioteca OBD para dentro do Python para iniciar as conexões.
Por motivos desconhecidos, primeira conexão com nosso hardware, falha semper. Na segunda tentativa, funciona semper. Por isso, no código verá que há duas linhas de conexão (con).
Seguindo o funcionamento do código, com a conexão feita, iniciamos um loop infinito que busca os dados do OBD, formata de acordo com os parâmetros estabelecidos. Depois cria a URL, use Query String, para que possa enviar ao servidor using or método POST.
No exemplo abaixo pegamos as seguintes informações:
- RPM
- Velocidade
- Odômetro *
As funções para captura dos dados utilizam dois parâmetros. Na primer, usando [1] [12] estamos buscando [módulo] [PID]. Esta lista pode ser encontrada em:
Na koncu, nasmejan URL, ki je naveden kot informacija o koncatenadah in adicionadas em um arquivo, chamado "obd_data.dat".
Código za OBD.py:
import obdimport timeodoInicial = -1 paramOdo = 0 #Conect OBDprint "Primeira conexao" con = obd. OBD ("/dev/rfcomm0") print "Segunda conexao" con = obd. OBD ("/dev/rfcomm0") medtem ko je True: respRPM = con.query (obd.commands [1] [12]) print respRPM respVelo = con.query (obd.commands [1] [13]) print respVelo respOdo = con.query (obd.commands [1] [49]) tiskanje respOdo paramRPM = int (float (str (respRPM).replace ("revolutions_per_minute", ""))) paramVelo = int (float (str (respVelo).replace ("kph", ""))) paramOdo = int (float (str (respOdo).replace ("kilometer", ""))) url = "https://www.website.com/OBD?vel="+str(paramVelo)+"&rpm="+str (paramRPM)+"& odo ="+str (paramOdo)+"\ n" time.sleep (0.2) datoteka url za tiskanje = open ("obd_data.dat", "a+") file.write (url) file.close () natisni url
Depois da conexão e captura dos dados, vamos criar o arquivo chamado: envia_OBD.py
Esta parte do código fica mais enostavnosti. Começamos importando bibliotecas relacionadas à solicitações/envio de dados, usando RESTFUL.
Criamos um while para enviar através de POST a URL da primeira linha do arquivo que populado anteriormente pelo OBD.py. Depois disco, para evitar que o dado seja enviado mais de uma vez, ela apaga esta linha do arquivo.
Código para o arquivo OBD.py:
uvozne zahteve
uvoz časa medtem ko je True: poskusite: time.sleep (0.2) url = '' z odprto ('obd_data.dat', 'r') kot fin: data = fin.read (). splitlines (True) url = data [0] requests.post (url) z odprto ('obd_data.dat', 'w') kot fout: fout.writelines (data [1:]) razen: print 'izjem'
Caso tenha algum problema copiando estes códigos, baixe os arquivos abaixo:
10. korak: Ponovi skripte E Armazenamento Dados Capturados Do Carro
Tuo o que foi feito até agora era orientado in garancija za DragonBoard fizedse comunicação com os različne komponente za rešitev, kot 3G, WiFi, Bluetooth, Dados do GPS, entre outros.
Vamos usar o código abaixo para editar o arquivo 'rc.local', que já tem algumas funções e comandos pré-definidos, e fica no diretório '/etc'. Para fazer a edição, uporabite o comando:
sudo nano /etc/rc.local
Agora precisamos configurar a inicialização de todos os processos, services and funções, criando rotinas para que funcionem automaticamente ao iniciar a Dragonboard. Uporabljajte o BASH para fazer isso. O BASH (Bourne-Again-SHell) je aplikacija za interpretação de comandos Unix.
No próximo código, que tem comandos BASH, você precisará inserir o MacAddress do seu dispositivo OBD/Bluetooth, e também precisa ter bastante cuidado para garantir que o código seja colocado semper antes do comando "exit 0" que éo system.
če [! -f/etc/ssh/ssh_host_rsa_key]
nato systemctl stop ssh.socket || true dpkg-ponovno konfigurirajte 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
Partir de agora, semper que a placa for iniciada, ela já vai se conectar através do 3G e enviar os dados de GPS e OBD para or servidor escolhido.
11. korak: Dificuldades Encontradas
Seznam abaixo algumas barreira que encontramos ao longo do desenvolvimento do projeto, que resolutionmos antes de criar este Instructable, mas que é importante alertá-lo, caso esteja tendo dificuldades também.
-
PyOBD
É preciso ter muito cuidado na hora de transmitir os dados e comunicar com o carro. Nas primeira tentativas, quando a comunicação ainda não era estável com o dispositivo, enviamos alguns comandos para o carro, e acabamos causando algum problem na ECU. Neste momento o câmbio automático não aceitava mais mudanças, ficou travado. Além disco, as luzes do painel começaram a piscar aleatoriamente. Rešitev za pomemben dogodek, ki se bo zgodil za desligamento dos cabos da bateria, mantendo assim za 15 minut. Desta forma, forçamos ali reset completeto das ECUs do carro, retornando ele ao estágio original de fábrica, portanto Cancelando qualquer comando que tenhamos enviado erroneamente pela porta OBD
-
Linaro
Tivemos um problem de boot no Linaro, quando aleatoriamente ali reiniciava OS. Este težave pri reševanju ao longo do desenvolvimento do projeto, pela equipe do Linaro, que soltou uma atualização, e já construímos este tutorial use a informação mais atualizada
-
GPS in DragonBoard
Qualcomm Dragonboard 410c nima vmesnika za GPS, ki je nameščen na sinhronem sprejemniku in je nameščen na priključku ali zunanji zunanji priključek. Za več informacij o postopku, prosimo, da predlagate Qualcomm:
12. korak: Napotki
Nalagalnik
builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/
Linaro
builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/
Namestite Linaro na DragonBoard 410c
www.embarcados.com.br/linux-linaro-alip-na-qualcomm-dragonboard-410c/
Dokumentacija o GPS za DragonBoard
discuss.96boards.org/t/gps-software/170/16
Predstavitev GPS
gist.github.com/wolfg1969/4653340
Python OBD
github.com/brendan-w/python-OBD
Conectando RaspberryPi kot OBD Bluetooth
gersic.com/connecting-your-raspberry-pi-to-a-bluetooth-obd-ii-adapter/
Navodila za uporabo SSH
gist.github.com/kr0no/63e34c77b02843b46a8d89d8f7b5e4b6
Namestitev SSH brez Linuxa
ask.xmodulo.com/install-autossh-linux.html
Priporočena:
Desenvolvendo Aplikacija za oddaljeno uporabo za Dragonboard 410c Usando IDE Eclipse: 17 korakov
Desenvolvendo Aplikações Remotamente Para a Dragonboard 410c Usando IDE Eclipse: O objetivo deste documento é mostrar kot etapas potrebno á rias para konfigurator o ambiente de desenvolvimento, de modo que o HostPC (Computador / Notebook), atrav é s do IDE Eclipse compile os c ó digos e izvoz za alvo (povlecite
Kode OBD II P0420/P0430 Popravek: 5 korakov
Kode OBD II P0420/P0430 Popravilo: Ali imate na armaturni plošči vašega Mustanga to nadležno luč? Ste spremenili izpušni sistem? Če ste namestili terensko h-cev ali x-cev (brez katalizatorjev) ali odstranili svoje katalizatorje za uporabo na tirih, bodo vaši senzorji za kisik
Vision 4all - Sistem Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplikacija Android: 6 korakov
Vision 4all - Sistem Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplikacija Android: DESCRI Ç Ã OO intuito do projeto é dar autonomia para defeentes visuais se locomoverem em ambientes indoor como casas ou shopping centres e aeroportos.A locomo ç ã o em ambientes j á mapeados pode ou n ã o s
Comunicação Serial Com a Dragonboard 410c Usando Mezzanine 96boards Senzorji: 7 korakov
Comunicação Serial Com a Dragonboard 410c Usando Mezzanine 96boards Sensors: O objetivo desse tutorial é mostrar kot etapas need á rias para configurar o ambiente de desenvolvimento, de modo que seja poss í vel comunicar com a Dragonboard 410c atrav é s de um computador / notebook usando comunica & ccedi
Prilagodite kabel OBD-II, da ne izprazni akumulatorja avtomobila: 5 korakov
Prilagodite svoj kabel OBD-II, da ne bo izpraznil akumulatorja avtomobila: Že dolgo časa so vsa vozila opremljena z vmesnikom za diagnostiko na vozilu. Zelo pogosto so ta vrata na voljo kot priključek OBD-II. S tem priključkom lahko komunicirate več naprav, mnoge od njih temeljijo na