terça-feira, 4 de outubro de 2011

Arduino Bluetooth




A BT é uma placa Arduino microcontrolador baseado no ATmega168 ( datasheet ) eo Bluegiga WT11 módulo bluetooth ( detalhes e folha de dados [pdf]). Ele suporta comunicação serial sem fio por bluetooth (mas não é compatível com fones de ouvido Bluetooth ou outros dispositivos de áudio). Tem 14 digitais de entrada / saída pinos (dos quais 6 podem ser usados ​​como saídas PWM e pode ser usado para repor o WT11 módulo), 6 entradas analógicas, a 16 MHz cristal oscilador, terminais de parafuso para poder, um cabeçalho ICSP, e um botão reset. Ele contém tudo o necessário para apoiar o microcontrolador e pode ser programado remotamente através da conexão Bluetooth. Instruções estão disponíveis para começar a usar o Arduino BT .
Sumário
Microcontrolador ATmega168
Tensão operacional 5V
Tensão de entrada 1,2-5,5 V
Digital I / O Pinos 14 (dos quais 6 oferecem saída PWM)
Analógica dos Pinos de Entrada 6
DC Corrente por I / O Pin 40 mA
Corrente DC 3.3V para Pin 50 mA
Memória Flash 16 KB (dos quais 2 KB utilizado pelo gerenciador de boot)
SRAM 1 KB
EEPROM 512 bytes
Velocidade do relógio 16 MHz
Desenho esquemático & Referência
Referência Design: arduino-bt-reference-design.zip
esquemática: arduino_bt06.pdf
Poder
A BT Arduino pode ser alimentado através do + V e terminais de parafuso GND. A placa contém um convector DC-DC que permite que ele seja alimentado com tão pouco como 1.2V, mas um máximo de 5.5V. tensões mais elevadas ou polaridade invertida na fonte de alimentação pode danificar ou destruir a placa.
Os pinos de alimentação são os seguintes:
9V. A tensão de entrada para a placa Arduino (ou seja, o mesmo que o parafuso terminal V +). Você pode fornecer tensão por este pino, ou, se o fornecimento de tensão através dos terminais de parafuso, acessá-lo através deste pino. Atenção: apesar do rótulo, não atribuem 9V para este pino. Ele vai danificar a placa.
5V. A fonte de alimentação regulada usada para alimentar o microcontrolador e outros componentes na placa. Isto pode vir tanto de V + através do on-board DC-DC conversor, ou ser fornecidas por uma fonte de 5V regulado.
GND. terra pinos.
Memória
O ATmega168 tem 16 KB de memória flash para armazenamento de código (dos quais 2 KB é usado para o bootloader). Ele tem 1 KB de SRAM e 512 bytes de EEPROM (que pode ser lido e escrito com a biblioteca EEPROM ).
Entrada e Saída
Cada um dos 14 pinos digitais do BT podem ser usados ​​como uma entrada ou saída, usando pinMode () , digitalWrite () , e digitalRead () funções. Eles operam com 5 volts. Cada pino pode fornecer ou receber um máximo de 40 mA e tem um resistor pull-up interno (desligado por padrão) de 20-50 kOhms. Além disso, alguns pinos têm funções especializadas:
Serial:. 0 (RX) e 1 (TX) Usado para receber (RX) e transmitir dados (TX) TTL serial. Estes pinos são conectados aos pinos correspondentes do Bluegiga WT11 módulo.
Interrupções externas:. 2 e 3 Estes pinos podem ser configurados para disparar uma interrupção por um valor baixo, uma borda de subida ou queda, ou uma alteração no valor. Veja o attachInterrupt () função para obter detalhes.
PWM:. 3, 5, 6, 9, 10 e 11 Fornecer de 8 bits de saída PWM com o analogWrite () função.
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estes pinos de suporte de comunicação SPI, que, embora fornecido pelo hardware subjacente, não está incluída na linguagem Arduino.
BT Reset:. 7 conectado à linha de reset do Bluegiga WT11 módulo, que é alta ativo.
LED: 13. Há um built-in LED conectado ao pino digital 13. Quando o pino está em HIGH o LED está ligado, quando o pino é baixo, está fora.
A BT tem 6 entradas analógicas, cada uma das quais com 10 bits de resolução (ie 1024 valores diferentes). Por padrão, eles medem de terreno para 5 volts, mas é possível mudar o limite superior de sua escala usando o pino AREF e algum código de baixo nível. Além disso, alguns pinos têm funções especializadas:
I 2 C:. 4 (SDA) e 5 (SCL) Suporte I 2 C de comunicação (TWI) usando a biblioteca Wire (documentação no site do Wiring).
Há um par de pinos diferentes na placa:
AREF. Tensão de referência para as entradas analógicas. Usado com analogReference ().
Veja também o mapeamento entre os pinos do Arduino e ATmega168 portas .
Bluetooth Comunicação
O Bluegiga WT11 módulo sobre o Arduino BT fornece comunicação Bluetooth com computadores, telefones e outros dispositivos Bluetooth. A WT11 se comunica com o ATmega168 via serial (compartilhado com o RX e TX pinos na placa). Ele vem configurado para 115,200 comunicação baud. O módulo deve ser configurável e detectável por motoristas do sistema operacional bluetooth, o que deve, então, fornecer uma porta com virtual para uso por outros aplicativos. O software Arduino inclui um monitor serial que permite que dados simples de texto a ser enviado para e da placa Arduino por essa conexão bluetooth. O conselho também pode ser reprogramada usando esta mesma conexão sem fio.
A WT11 é especialmente configurado para uso na BT Arduino. Seu nome está definido para ARDUINOBT e código de acesso para 12345. Para mais detalhes, consulte a completa esboço de inicialização .
Comunicação
A BT Arduino tem uma série de outras facilidades para a comunicação. O ATmega168 's UART TTL (5V) de comunicação serial está disponível nos pinos digitais 0 (RX) e 1 (TX), bem como estar conectado à WT11 módulo.
A biblioteca SoftwareSerial permite a comunicação serial em qualquer dos pinos digitais do BT.
O ATmega168 também suporta I2C comunicação (TWI) e SPI. O software Arduino inclui uma biblioteca Wire para simplificar o uso do I2C bus, veja a documentação no site do Wiring para mais detalhes. Para usar a comunicação SPI, consulte o ATmega168 folha de dados.
Programação
A BT Arduino pode ser programado com o software Arduino ( baixar ). Para mais detalhes, consulte a referência e tutoriais .
O ATmega168 no Arduino BT vem preburned com um bootloader que permite envio de novos códigos sem o uso de um programador de hardware externo. Ele se comunica com o original STK500 protocolo ( de referência , arquivos de cabeçalho C ).
Você também pode ignorar o bootloader e programar o ATmega168 pelo ICSP (In-Circuit Serial Programming) cabeçalho, ver estas instruções para obter detalhes.
Características Físicas
O comprimento máximo e largura da BT são aproximadamente 3,2 e 2,1 polegadas, respectivamente. Três furos permitem que o conselho a ser ligado a uma superfície ou caso. Note que a distância entre os pinos digitais 7 e 8 é de 160 mil (0,16 "), e não um múltiplo do espaçamento mil 100 dos outros pinos.

Projeto Amoreiras

Processo do Projeto

Cinco pequenas amoreiras foram plantadas em grandes vasos, na Avenida Paulista, em São Paulo. A captação da "poluição" é feita através de um microfone, que mede as variações e discrepâncias de ruídos, como um sintoma dos diversos poluentes e poluidores. O balançar dos galhos é provocado por uma "prótese motorizada" (disposta ao redor do tronco de cada árvore, a prótese vibra, causando movimentos nas folhas e nos galhos). A observação e o amadurecimento do comportamento das "árvores" são possibilitados a partir de um algoritmo de aprendizado artificial. Ao longo dos dias, as árvores vibram em diálogo com a variação dos fatores de poluição, numa dança de árvores, próteses e algoritmos, tornando aparente e poético o balançar, às vezes (in)voluntário-maquínico, às vezes conduzido pelo balanço do próprio vento sobre as folhas.

O Projeto Amoreiras é composto basicamente pelos seguintes elementos:

- 5 amoreiras;
- 3 microfones, que captarão os ruídos (um dos quais é responsável pela leitura da trepidação do chão, decorrente da passagem do metrô e de outras interferências) e funcionarão como sensores e coletores dos dados para as árvores;
- 1 computador, que gerencia os dados das 5 árvores e retransmite as informações;
- 5 placas arduino bluetooth (uma para cada árvore);


- 5 caixas de acrílico com 3 motores independentes, varetas e mecanismo de transmissão (uma para cada árvore).

O comportamento de cada árvore é autônomo e se dá em resposta à intensidade do som ambiente, também sendo influenciado pela "personalidade" de cada árvore. A captura do som é realizada diretamente por um patch escrito no Pure Data, que envia as informações para a aplicação principal, desenvolvida em Java, via OSC. Já a "personalidade" de cada árvore, é definida por duas variáveis, sorteadas no início de cada dia, que definem o quanto cada árvore irá buscar imitar as suas companheiras e o quanto o seu comportamento será perturbado de forma aleatória.

Cada árvore tem um algoritmo que determina como ativar seus motores (via arduíno) de acordo com a atividade sonora. De uma maneira geral, quanto maior o ruído, maior a atividade. É importante ressaltar que há regras adicionais, como, por exemplo, a intensidade e a extensão da vibração, para que os movimentos sejam suaves, ou o limite de duração de tempo, período em que se pode balançar as árvores sem que elas sejam danificadas.

As árvores podem "ver" o comportamento das outras árvores, de modo que cada uma é influenciada pelo comportamento das vizinhas. Essa capacidade é utilizada pelo algoritmo do trabalho para avaliar o "comportamento" de cada árvore. Por "comportamento", entendemos o nível de ativação dos motores: quanto mais parecido for o comportamento de uma árvore com o comportamento das demais, melhor avaliado será seu comportamento.

Inicialmente, o algoritmo é "não habituado", o que leva a comportamentos "sem sentido" (por exemplo, as árvores balançarem mesmo sem que haja ruído). Um algoritmo de aprendizado monitora o banco de dados e observa constantemente o comportamento de cada árvore, comparando-o com a atividade sonora, e tenta adaptar o algoritmo para que este possa agir de maneira similar. Isto é: o algoritmo de aprendizado tenta fazer com que o algoritmo de cada árvore chegue ao mesmo nível de ativação que os das demais em uma dada intensidade sonora.

Existe uma grande variedade de algoritmos de aprendizagem; alguns tão complexos, que podem ser aplicados até mesmo à simulação de processos mentais humanos. Para este projeto, basta um algoritmo simplificado, que atinja um nível de complexidade suficiente para que o resulta do final seja interessante e emergente. O funcionamento seria basicamente o seguinte: para as cinco árvores aprendizes, haveria equações similares que guiariam seus comportamentos, com apenas uma variável adicional para cada uma. O aprendizado seria o processo de modificar o valor dessa variável, até que as equações se aproximassem em reação à excessiva poluição. De acordo com o resultado prático dessa abordagem, os parâmetros poderiam ser regulados, de forma a obter o comportamento desejado, que é indeterminado a priori para cada uma das distintas árvores, gerando uma "dança da chuva" espontânea e coletiva.

Para a realização do algoritmo das amoreiras, nos orientamos pelos princípios do jogo da vida, de John Conway. Isto é: temos um conjunto de regras simples, que dão origem a um resultado complexo.

Entretanto, devemos observar que o comportamento final não é especificado pelas regras, apesar de derivar delas.

O que fazemos é aplicar princípios de vizinhança ao processo de autoavaliação das amoreiras. Quer dizer: o comportamento de duas (ou de apenas uma, se a amoreira estiver em uma das extremidades) amoreiras adjacentes possui um peso maior do que o das amoreiras mais distantes (o que poderia facilitar a ocorrência de comportamentos com possíveis combinações de acionamento dos motores).

Todos os algoritmos citados acima são a princípio programados em Java, rodando no computador7. Por conta das limitações de processamento da Arduíno e da sua incapacidade de armazenar dados, a placa só será usada como uma interface entre a aplicação desenvolvida em Java e os motores. Também estão sendo utilizados o banco de dados MySQL, para registrarmos o comportamento de cada amoreira ao longo da exposição, e um pequeno sistema de monitoramento, escrito em PHP, que é acionado pela aplicação em Java, em caso de erro8. Ao ser acionado, o sistema de monitoramento envia e-mails aos integrantes do grupo, relatando o erro ocorrido.

Na prática, o resultado esperado é o seguinte:

• As árvores irão balançar isoladamente, de vez em quando, de acordo com o ruído ambiente, de forma a se livrar da poluição em suas folhas.

• As árvores irão agir de maneira inicialmente arbitrária e ao longo do dia passarão também a dialogar entre si, entrando cada vez mais em uma sintonia emergente.

Algumas observações:

• As árvores são todas jovens e cada uma delas é tratada como um indivíduo. Seus motores e caixas-próteses são similares, mas não idênticas, adaptando-se de forma adequada a cada uma delas, sem machucá-las.

• Ao término de cada dia, as "personalidades" das árvores são alteradas de maneira randômica, de forma a reiniciar o processo de aprendizagem. Isso impede que, a partir do primeiro dia, todas as árvores já estejam "em sintonia fechada" e não mudem mais de comportamento; ao contrário, permite que construam ciclos e ritmos emergentes e que continuem buscando distintas aproximações entre si, como numa dança de folhas e árvores, com suas próteses poéticas, que se rebelam contra a fuligem, em meio a barbárie urbana. Como se as árvores da cidade se agitassem para denunciar a sujeira do ar9, lembrando-nos também do perigo em que vivemos e da situação que ajudamos a gerar.