Como usar Ubuntu com o Arduino

Preparar o seu computador com Ubuntu para trabalhar (ou brincar) com o Arduíno é muito fácil.
A versão 16.04 Xenial Xerus traz, pelo menos, 5 pacotes oficiais para instalar no seu sistema e começar a “fuçar” no seu kit novo.
ubuntu arduino packages
Use o apt search para encontrar os pacotes:


apt search arduino

Sorting... Pronto
Full Text Search... Pronto
arduino/xenial,xenial 2:1.0.5+dfsg2-4 all
  AVR development board IDE and built-in libraries

arduino-core/xenial,xenial 2:1.0.5+dfsg2-4 all
  Code, examples, and libraries for the Arduino platform

arduino-mighty-1284p/xenial,xenial 1-2 all
  Platform files for Arduino to run on ATmega1284P

arduino-mk/xenial,xenial 1.5-2 all
  Program your Arduino from the command line

pd-pduino/xenial,xenial 0.5.1-1 all
  interfacing with the Arduino from within Pure Data (Pd)

Você pode obter informações individuais sobre cada um destes pacotes, com o apt show. Segue um exemplo:


apt show arduino

Vamos conhecer um pouco mais de cada um destes pacotes, nos próximos tópicos.
foto do arduino uno r3

O pacote de softwares arduino no Ubuntu

O primeiro pacote da lista é, provavelmente, o principal.
Ele contém a IDE AVR (2:1.0.5+dfsg2-4) de desenvolvimento da placa e algumas bibliotecas.
Ele requer também a instalação dos pacotes arduino-core (obrigatoriamente) e do arduino-mk (como sugestão).
Com relação à IDE, se você fizer questão e não se importa de compilar um pouco de código, pode obter uma versão mais atual no site http://www.arduino.cc.
Se você está iniciando, isto é tudo o que você vai precisar, por enquanto.

O pacote arduino-core

Como eu disse, este pacote é requerido e instalado automaticamente com o pacote principal do Arduino no Ubuntu.
Ele contém códigos-fonte, códigos exemplo e bibliotecas essenciais ou complementares para você desenvolver para a plataforma.

O pacote arduino-mighty-1284p

Contém os arquivos necessários para rodar a plataforma do processador ATmega1284P.
Se você já olhou a sua placa cuidadosamente e se ela não contém este processador, é muito provável que não precise deste pacote.
atmel arduino atmega 1284p

O pacote arduino-mk

É sugerido, no momento da instalação dos outros.
Com ele é possível programar o seu Arduino direto da linha de comando do Linux.
Entre outros softwares, o pacote contém o utilitário ard-reset-arduino que… faz o que o nome diz: reseta o arduino.
Pode ser necessário, em alguns momentos.

Pure Data com Arduino

O último pacote da lista traz software para comunicação e interação com a placa e troca de dados puros ou pure data.
Este pacote é instalado, como padrão, no Ubuntu Studio e é voltado para as pessoas que usam o hardware para reproduzir sons, áudio etc.
A página oficial do projeto é https://puredata.info/downloads/pduino.
Como resumo, iniciantes apenas precisam instalar o primeiro pacote arduino e, eventualmente, o arduino-mk. São pequenos, leves e ocupam um espaço ínfimo no seu sistema.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Proteja o disco rígido do seu notebook Linux contra quedas

Quando um laptop cai no chão, da altura de uma mesa ou da sua cintura, vários de seus componentes pode ser danificados.
Um dos componentes mais sensíveis é o disco rígido (HDD).
O maior problema, neste caso, não são os danos físicos, uma vez que ele sempre pode ser substituído por outro.
O maior problema, ao danificar um HD, é perder todos os seus dados.
O disco rígido é composto de várias peças e partes móveis, como sabemos. Após a queda, quando ele chega ao chão, estas peças funcionam como armas — umas contra as outras.
O braço mecânico e a ponta da cabeça de leitura, podem destruir uma quantidade significativa de dados gravados nos discos, durante o processo de desaceleração brusca — sem qualquer chance de recuperação.
O software que vou apresentar, neste post, trabalha na detecção de situações típicas de queda e “ordena” que o sistema recolha imediatamente os braços de leitura/gravação dos discos rígidos.
A partir daí, as possibilidades de recuperação dos seus dados podem ser bem maiores.
Mesmo que o HD não funcione mais, se os discos ainda estiverem inteiros, ainda será possível entregá-los a uma empresa de recuperação de dados, para tentar extrair e salvar as informações de dentro deles.

O que é o hdapsd

O acrônimo significa Hard Drive Active Protection System — Sistema Ativo de Proteção ao Disco Rígido.
De acordo com a descrição oficial, o HDAPS é um daemon voltado para laptops de diversas marcas que possuam sensores de movimento (motion sensor).
Sua função é proteger o disco rígido do seu sistema, com o monitoramento constante dos valores de aceleração.
Assim que o daemon detecta uma queda ou um deslizamento brusco do seu notebook, ele age, fazendo com que as cabeças de leitura/gravação “estacionem” (parking).

Verifique no manual do seu produto ou pergunte ao vendedor se o seu equipamento possui sensor de movimento. Sem isso, o hdaps é inútil.

A versão atual (20141203) do hdapsd tem suporte às seguintes interfaces:

  • IBM/Lenovo ThinkPad (HDAPS)
  • Apple iBook/PowerBook (AMS)
  • Apple MacBook/MacBook Pro (APPLESMC)
  • HP (HP3D)
  • Dell (FREEFALL)
  • Toshiba (ACPI and HAPS)
  • Acer (INPUT)

No Debian/Ubuntu, é possível obter estas informações (lista, acima), bem como da versão do hdapsd, com o comando apt, antes de instalar:

apt show hdapsd

Se você tem um Lenovo Thinkpad, é recomendado usar o módulo hdaps, que já vem no pacote tp-smapi-dkms ou tp-smapi — que consome menos energia e tem compatibilidade com uma quantidade maior de equipamentos da linha Thinkpad.


Como instalar e usar o hdapsd

O daemon começa a funcionar logo após a instalação.
Para instalar no Debian/Ubuntu, use o apt:

sudo apt install hdapsd

O arquivo de configuração padrão, pode ser encontrado em /etc/hdapsd.conf.
Dentro dele, podemos indicar exatamente qual o dispositivo (sda, sdb etc.) a ser protegido e qual a sensibilidade desejada para a interface do sensor (sensitivity).
O valor padrão de sensibilidade é 15. Se quiser que ele seja mais sensível (recomendado!), use um valor mais baixo.

Como determinar a versão do Bluetooth de qualquer carro, usando o Linux

O bluetooth está se tornando cada vez mais comum em equipamentos de som, tanto automotivos, quanto domésticos ou profissionais.
Equipamentos de som domésticos não são trocados com a mesma frequência dos smartphones. Tal como as TVs, é comum manter um bom aparelho de som por mais de 10 anos.
bluetooth mercedes-benz multimedia
O equipamento de som do carro, contudo, é um caso a parte.
Muitos carros atuais, já vem com o sistema de som completo, já instalado e perfeitamente ajustado ao design interior do veículo.
Neste caso, a substituição é mais difícil e pode ser mais cara — principalmente, se você decidir trocar o carro, em função de ter se decepcionado com o seu sistema de áudio.
O Bluetooth é uma tecnologia em desenvolvimento (desde o início da década de 90) e, provavelmente, deve estar atingindo o ápice da sua maturidade.
Se o equipamento de som tem este recurso, saber a versão embarcada do Bluetooth pode ajudar a entender o que realmente é possível fazer, dentro do automóvel, durante uma viagem, por exemplo.
Dentro de um carro, considero alguns itens importantes, neste tema:

  • que o sistema de som aceite a conexão com mais de um dispositivo simultaneamente — o que permite que vários ocupantes possam se revezar facilmente no seu uso.
  • que a conexão tenha largura de banda o suficiente para reproduzir áudio de altíssima qualidade.
  • que mantenha um fluxo estável da transmissão de áudio, sem engasgos, mesmo quando se sai do carro com o smartphone no bolso.
  • e que aceite ligações telefônicas.

O Bluetooth versão 2.1 já é capaz de satisfazer estas condições, embora tenha limitações quanto ao alcance — ou seja, se você for sair do carro, levando o smartphone conectado e no bolso, para ajeitar alguma coisa no porta-malas ou calibrar os pneus, o som irá engasgar.
reconhecer o meu dispositivo, se conectar e começar a tocar a minha playlist do ponto em que ela parou.

Quais as maiores diferenças entre as várias versões do Bluetooth?

Dentre os carros que testei, para escrever este artigo, o Ford Ka Sedan 2016 era o que tinha a versão mais antiga: Bluetooth 2.1.
Como já disse, esta versão é satisfatória mas… se você não quiser se incomodar com a interrupção da transmissão, vai ter que deixar o smartphone dentro carro.
Veja alguns dos recursos:

  • Bluetooth 2.1 — a partir desta versão, você já dispõe de A2DP, EDR, possível suporte a NFC e facilidade de pareamento — é tudo o que se precisa para usufruir dos maiores benefícios da tecnologia.
  • Bluetooth 3.0 — esta é a primeira versão de alta velocidade (20 Mbps) — aliado a um melhor alcance.
    É possível “enxergar” o carro na garagem do vizinho, se ele estiver usando esta versão.
    É encontrada em modelos como o Fiat Palio e Grand Siena Essence 2016, por exemplo.
    A partir desta versão, já é possível até transmitir áudio 5.1 surround sound.
  • Bluetooth 4.x e superior — nestas versões são introduzidos os protocolos de baixo consumo de energia e possibilidade de conexão de até 7 dispositivos simultâneos.

Quanto mais atual a versão do Bluetooth, maior o seu alcance, menor o consumo de energia e menor a interferência nas redes Wi-Fi e 4G.
bluetooth automobile information

Se o sistema de som do seu carro tiver suporte a versão 2.1, ele já terá, pelo menos, estes 3 recursos — A2DP (streaming em estéreo); AVRCP (seleção remota de trilhas de áudio) e EDR (taxa de transmissão mais alta).

Como detectar a versão do Bluetooth nos veículos ao meu redor

A maioria dos veículos precisa estar com o sistema de som ligado para obter uma conexão básica, que permita inquirir sobre o seu Bluetooth.
Eu não precisei parear o meu notebook (com Bluetooth 4.2) a nenhum veículo das redondezas para conseguir obter informações básicas. Só tive que esperar que o vizinho ligasse o carro e, consequentemente, o som.
Após ligar o Bluetooth no seu notebook, realize uma busca na rede, com o comando hcitool:

hcitool scan

Scanning ...
	00:54:AF:97:FC:F6	FIAT CONNECT

Agora use o endereço de hardware encontrado para obter mais informações:

sudo hcitool info 00:54:AF:97:FC:F6
[sudo] senha para justincase: 

Se você obtiver a mensagem “Operation not permitted“, execute o procedimento com privilégios administrativos (sudo, por exemplo).
Veja os resultados, que obtive após dar o comando acima:

Requesting information ...
	BD Address:  00:54:AF:97:FC:F6
	OUI Company: Continental Automotive Systems Inc. (00-54-AF)
	Device Name: FIAT CONNECT
	LMP Version: 3.0 (0x5) LMP Subversion: 0x1982
	Manufacturer: Cambridge Silicon Radio (10)
	Features: 0xff 0xff 0x8f 0xfe 0x9b 0xff 0x51 0x87
		<3-slot packets> <5-slot packets> <encryption> <slot offset> 
		<timing accuracy> <role switch> <hold mode> <sniff mode> 
		<park state> <RSSI> <channel quality> <SCO link> <HV2 packets> 
		<HV3 packets> <u-law log> <A-law log> <CVSD> <paging scheme> 
		<power control> <transparent SCO> <broadcast encrypt> 
		<EDR ACL 2 Mbps> <EDR ACL 3 Mbps> <enhanced iscan> 
		<interlaced iscan> <interlaced pscan> <inquiry with RSSI> 
		<extended SCO> <EV4 packets> <EV5 packets> <AFH cap. slave> 
		<AFH class. slave> <3-slot EDR ACL> <5-slot EDR ACL> 
		<sniff subrating> <pause encryption> <AFH cap. master> 
		<AFH class. master> <EDR eSCO 2 Mbps> <EDR eSCO 3 Mbps> 
		<3-slot EDR eSCO> <extended inquiry> <encapsulated PDU> 
		<non-flush flag> <LSTO> <inquiry TX power> <EPC> 
		<extended features> 

Como você pode ver, a versão instalada é a 3.0.
Se preferir, use o comando grep para obter um resultado mais enxuto:

hcitool info 00:54:AF:97:FC:F6 | grep -i version
	LMP Version: 3.0 (0x5) LMP Subversion: 0x1982

Você pode usar o comando ‘hcitool con’, alternativamente, para encontrar dispositivos Bluetooth na sua vizinhança.
Se quiser obter mais informações sobre o seu dispositivo local, leia sobre o hciconfig.
Por fim, use área dos comentários para nos contar o que encontrou na sua vizinhança e quais os recursos que você considera mais importantes em dispositivos Bluetooth para automóveis.

Como monitorar sua conexão Bluetooth no Linux

Há várias formas de se monitorar uma conexão Bluetooth, no Linux.
Normalmente, você obtém todo o feedback gráfico necessário durante as transferências de conteúdo.
Mas… e quando a transferência é de áudio ou se trata de uma conexão de rede?
Como obter informações sobre o fluxo de dados nestes casos?
Já demonstramos o uso dos utilitários de linha de comando hciconfig e hciutils, no artigo sobre como determinar a versão do Bluetooth de seus dispositivos. Recomendo esta leitura, caso você queira saber mais sobre este assunto.

O padrão de comunicação de dados Bluetooth foi lançado pela empresa sueca Ericsson, em 1994. Mas já vinha sendo desenvolvido desde 1989.

bluetooth logo
O utilitário hciconfig pode ser usado para obter várias informações sobre o dispositivo interno do seu notebook.
Use a opção ‘-a’, para obter alguns dados preliminares sobre ele:

hciconfig -a

A informação que nos interessa, aqui, é que se encontra na 4a e 5a linhas — taxas de recepção e transmissão (RX/TX):

hci0:	Type: BR/EDR  Bus: USB
	BD Address: A4:02:B9:02:85:36  ACL MTU: 1021:5  SCO MTU: 96:6
	UP RUNNING PSCAN 
	RX bytes:12033039 acl:240 sco:223076 events:85742 errors:0
	TX bytes:83500510 acl:84655 sco:222759 commands:326 errors:0
	Features: 0xff 0xfe 0x0f 0xfe 0xdb 0xff 0x7b 0x87
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
	Link policy: RSWITCH HOLD SNIFF 
	Link mode: SLAVE ACCEPT 
	Name: 'inspiration'
	Class: 0x0c010c
	Service Classes: Rendering, Capturing
	Device Class: Computer, Laptop
	HCI Version: 4.2 (0x8)  Revision: 0x1000
	LMP Version: 4.2 (0x8)  Subversion: 0x1000
	Manufacturer: Intel Corp. (2)

O comando watch é muito usado para fazer monitoramento no Linux de arquivos ou de resultados de comandos.
No exemplo, abaixo, vamos monitorar a saída do hciconfig e exibir apenas as linhas que contenham dados que sofram alterações (a cada 2 segundos):

watch -n 2 -d hciconfig
Every 2,0s: hciconfig                      inspiration: Mon Sep 19 16:18:27 2016

hci0:   Type: BR/EDR  Bus: USB
        BD Address: A4:02:B9:02:85:36  ACL MTU: 1021:5  SCO MTU: 96:6
        UP RUNNING PSCAN
        RX bytes:15310713 acl:252 sco:287321 events:85858 errors:0
        TX bytes:86772182 acl:84667 sco:286900 commands:347 errors:0

bluetooth monitoring audio stream on Linux - Monitoramento do stream de audio bluetooth no Linux
Os exemplos, acima, mostram o monitoramento do fluxo de audio Bluetooth.
Você pode fazer a mesma coisa para monitorar uma conexão à Internet via Bluetooth, também.

Como determinar a versão do seu dispositivo Bluetooth

Dispositivos Bluetooth são muito comuns em notebooks e são extremamente úteis para a comunicação de dados — troca de arquivos, conexão à Internet etc.
No entanto, a tecnologia tem tido várias versões, desde o início de seu desenvolvimento (no fim da década de 80).
bluetooth logo
Cada nova versão tem incorporado novos recursos — para transmissão/recepção de dados e correção de problemas.
Saber qual a versão do Bluetooth suportada pelo dispositivo instalado no seu notebook ou desktop PC é importante para saber exatamente quais as suas capacidades — ou seja, saber o que verdadeiramente pode ser feito com ele.

Use o hciconfig para obter informações sobre os dispositivos bluetooth presentes no seu sistema

O hciconfig é uma ferramenta de configuração de dispositivos Bluetooth.
Você pode usá-lo para se referir especificamente a um dispositivo, usando o termo ‘hciX’. Caso esta referência não seja suprida, o utilitário irá buscar e exibir informações sobre todos os dispositivos que forem encontrados.
Ao usar o hciconfig sem qualquer parâmetro ou opção, ele retornará informações básicas sobre os diapositivos locais.

O prefixo HCI são as iniciais para Host Controller Interface ou interface de controle do hospedeiro.
E LMP corresponde a Link Management Protocol ou protocolo de gestão de link — usado para controlar a conexão de rádio entre os dispositivos envolvidos.

Veja um exemplo, com o uso da opção ‘-a’:

hciconfig -a
hci0:	Type: BR/EDR  Bus: USB
	BD Address: A4:02:B9:02:85:36  ACL MTU: 1021:5  SCO MTU: 96:6
	UP RUNNING PSCAN ISCAN 
	RX bytes:2077 acl:0 sco:0 events:192 errors:0
	TX bytes:32521 acl:0 sco:0 commands:191 errors:0
	Features: 0xff 0xfe 0x0f 0xfe 0xdb 0xff 0x7b 0x87
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
	Link policy: RSWITCH HOLD SNIFF 
	Link mode: SLAVE ACCEPT 
	Name: 'inspiration'
	Class: 0x0c010c
	Service Classes: Rendering, Capturing
	Device Class: Computer, Laptop
	HCI Version: 4.2 (0x8)  Revision: 0x1000
	LMP Version: 4.2 (0x8)  Subversion: 0x1000
	Manufacturer: Intel Corp. (2)

Use o comando grep para obter apenas os resultados mais relevantes:

hciconfig -a | grep -i hci 

hci0:	Type: BR/EDR  Bus: USB
	HCI Version: 4.2 (0x8)  Revision: 0x1000

Use o comando ‘version’ para obter esta informação do dispositivo:

hciconfig hci0 version

hci0:	Type: BR/EDR  Bus: USB
	BD Address: A4:02:B9:02:85:36  ACL MTU: 1021:5  SCO MTU: 96:6
	HCI Version: 4.2 (0x8)  Revision: 0x1000
	LMP Version: 4.2 (0x8)  Subversion: 0x1000
	Manufacturer: Intel Corp. (2)

Como obter informações sobre dispositivos Bluetooth conectados

Se você tem dispositivos conectados de versões diferentes, os recursos disponíveis serão reduzidos aos da versão mais antiga.
Por este motivo, pode ser mais interessante saber qual é a versão do dispositivo ao qual o meu notebook está conectado.
Use o utilitário hcitool, para obter informações sobre os aparelhos conectados via Bluetooth ao seu notebook:

hcitool con

O comando acima vai mostrar informações, tais como o endereço MAC do dispositivo Bluetooth pareado ao notebook. Veja:

Connections:
	< ACL 5C:51:88:EB:9F:B1 handle 512 state 1 lm MASTER AUTH ENCRYPT 

De posse do endereço de hardware, acima, já posso inquirir o dispositivo diretamente. Veja como:

hcitool info 5C:51:88:EB:9F:B1

Requesting information ...
	BD Address:  5C:51:88:EB:9F:B1
	OUI Company: Motorola Mobility LLC, a Lenovo Company (5C-51-88)
	Device Name: Wintermute
	LMP Version: 4.1 (0x7) LMP Subversion: 0x7d3
	Manufacturer: Qualcomm (29)

...

Por exemplo, se o notebook usa um dispositivo Bluetooth 4.2 e se conecta ao smartphone com a versão 4.1, é seguro contar apenas com os recursos disponíveis na versão deste último.
Há vários outros comandos no Linux, que podem ajudar a obter informações importantes sobre o seu sistema. Para saber mais, leia Como obter informações sobre o seu sistema.

Referências

https://web.archive.org/web/20071222231740/http://www.information-age.com/article/2001/may/the_bluetooth_blues.
https://en.wikipedia.org/wiki/Bluetooth