Arduino – Projeto de Sonda Meteorológica – Parte II

Near Space

Essa é a região da estratosfera, a camada atmosférica que fica acima daquela em que vivemos, a troposfera, e se estende entre 10 milhas e 30 milhas de altitude, o que corresponde a aproximadamente entre 16km e 48km. A altitude atingida pelos balões atmosféricos varia em função da sua gramatura, sendo que os balões detentores de recordes de altitude são aqueles que chegam em torno de 120.000 pés (algo em torno de 40km).

Esta camada apresenta o desafio de ter uma grande variação térmica grande, entre -50C e +10C, além de a pressão atmosférica diminuir cada vez mais, em função da altitude. A sonda deve estar preparada para fazer face às temperaturas extremas, e continuar o seu trabalho de registro das informações, bem como garantir o funcionamento do Arduino e dos sensores. Rotinas de reinicialização devem estar previstas para lidar com eventuais panes do sistema ocasionadas pelas condições extremas.

O que queremos registrar?

Em uma missão de vôo de um HAB, estamos interessados em registrar as variáveis ambientais, de localização e posicionamento, bem como a variação de cada uma destas variáveis nas diferentes altitudes e camadas atmosféricas. A coleta de dados em série, permitirá o estudo e a compreensão das diversas variáveis, bem como a correlação entre elas.

As variáveis de interesse para a sonda estão listadas abaixo, com seus respectivos parâmetros:

Temperatura interna (tint) – temperatura observada no interior da cápsula da sonda; min: -70C; max: +100C.
Temperatura externa (text) – temperatura observada no exterior da cápsula da sonda; min: -70C; max: +100C.
Umidade relativa do ar (urel) – min: 0%; max: 100%.
Pressão atmosférica (patm) – Pressão atmosférica, inversamente proporcional à altitude; min: 0; max: 110000 (ao nível do mar).
Altitude (alt) – altitude corrente da sonda; min: 0m; max:50000m.
Partículas de poluição no ar (ppm) – ou partes por milhão, mede a dispersão de poeira no ar; min: 0; max: 10.000.000.
Luminosidade (lux) – luminosidade no espectro visível aos humanos; min: 0.1; max: 40000.
Luz infra-vermelho (lIR) – luminosidade infra-vermelho.
Luz ultra-violeta (lUV) – luminosidade ultra-violeta.
Concentração de ozônio (o3) – mede a concentração do gás ozônio.

Todos os circuitos e sensores devem ser capazes de se manter funcionando em temperaturas extremamente baixas, impostas pelo ambiente inóspito do “Near Space”. Uma camada de isolamento térmico será provida aos circuitos mais sensíveis ao frio, e cujo funcionamento não seja afetado por esse isolamento.

Que hardware queremos utilizar na sonda?

O hardware utilizado para a construção da sonda pode ser dividido em duas categorias: o hardware de sensoriamento e o hardware de apoio.

O hardware de sensoriamento é essencial ao processo de medição das variáveis de interesse. Se trata portanto, de todos os sensores que direta ou indiretamente participam da medição ou do cálculo para a derivação de valores para as variáveis. Segue uma listagem do hardware mínimo para o atendimento dos objetivos da sonda:

• sensor de temperatura;
• sensor de pressão;
• sensor de umidade;
• sensor de luminosidade (lux);
• sensor de espectro IR (infra-vermelho);
• sensor de espectro UV (ultra-violeta);
• microfone;
• acelerômetro;
• giroscópio;
• magnetômetro;
• GPS;
• contador Geiger (se possível embarcar no balão).

O hardware de apoio é todo aquele necessário ao funcionamento da sonda meteorológica, mas que não está relacionado diretamente ao processo de sensoriamento. Dos hardwares pertencente a esta categoria, podemos citar (lista não exaustiva):

• Arduino Uno;
• gravador de áudio;
• módulo Bluetooth;
• módulo Wifi;
• SD-Card;
• bateria Li-Po;
• display OLED;
• Trackball vibratório.

O que mais queremos incluir na sonda?

Existem diversas outras características que gostaríamos de implementar na sonda meteorológica, que são complementares às funcionalidades principais, mas que ajudam a dar a usabilidade que a sonda necessita para ser utilizada pelo público.

Interface por linha de comando, via comunicação serial – implementaremos a interface de usuário em linha de comando serial, para possibilitar ao usuário a parametrização da sonda. Disponibilizaremos uma lista de comandos e seus parâmetros, bem como uma ajuda de contexto para o usuário.

Relógio de tempo real integrado – um relógio de tempo real permitirá à sonda registrar a hora correta, com precisão de milissegundos, para fazer o timestamping de todas as linhas de dados. Com isso, garantimos o registro do momento do sensoriamento com precisão, conferindo a confiabilidade necessária aos dados colhidos. O RTC tem como vantagem adicional a manutenção da contagem da data/hora, independentemente de o circuito estar ligado a uma fonte de alimentação, graças ao seu esquema de backup de alimentação por bateria moeda.

Monitoramento do nível da bateria – o nível de carga da bateria será monitorado por um processo de software. Uma vez que esse nível chegue perto da condição de brown-out (onde a bateria já não consegue mais fornecer energia o suficiente no nível lógico do circuito, causando erros de funcionamento, pois o circuito não distingue mais um ‘estado alto’ de um ‘estado baixo’).

Anúncios

Arduino – Projeto Sonda Meteorológica – Parte I

Apresentação

Este projeto se trata de uma sonda meteorológica para ser embarcada em um balão e chegar à atmosfera. O objetivo da sonda é registrar diversas variáveis continuamente ao longo do vôo do balão, para verificar qual o comportamento destas variáveis em função da altitude, assim como a eventual correlação entre cada uma delas.

O projeto é dividido em diversas fases. Os principais milestones dele são: a) projeto do hardware; b) projeto do firmware; c) projeto do software pós missão; d) apresentação dos resultados obtidos, e próximos passos.

A fase “projeto de hardware” lidará com as definições de quais equipamentos utilizar, escolher a plataforma da microcontroladora, os sensores utilizados, e os periféricos de apoio (memória EEPROM, cartão SD, etc). Nesta fase também será projetado o circuito impresso que servirá de base para a integração de todos os equipamentos e a sua comunicação com a microcontroladora. Fatores que determinarão o sucesso da fase serão a escolha dos equipamentos em termos de custo, peso, e de tolerância às condições apresentadas na estratosfera, criação do layout da PCB em tamanho compacto e com o desempenho correto das funções de sensoriamento e registro das atividades.

A fase “projeto do firmware” deverá lidar com as especificidades de cada equipamento de hardware, escrever o código para seu correto funcionamento, e integrar toda a funcionalidade no espaço restrito de memória oferecido pelo Arduino (em geral, 32kb de ROM). Outra preocupação nesta fase será escrever uma interface de usuário mínima, para que o usuário possa configurar e verificar diretamente na placa as informações e parâmetros de funcionamento do módulo.

O “projeto de software pós-missão” é opcional, mas permite a análise dos dados colhidos na missão de maneira personalizada, permitindo a partir dos registros do módulo realizar cálculos, gerar gráficos, fazer a correlação das variáveis, enfim, toda a análise que transformará os dados em informação prontamente disponível à comunidade. Aqui, como prova de conceito, temos a ideia de utilizar o OpenCOBOL como linguagem para manipulação dos arquivos, processamento dos dados, e a realização dos cálculos estatísticos. Para a geração dos gráficos, utilizaremos a API do GnuPlot.

Finalmente, na fase “apresentação dos resultados obtidos e próximos passos” irá lidar com as informações geradas na fase de análise dos dados e formatar documentos para disponibilização da comunidade, como relatórios no formato PDF, as imagens geradas a partir do GnuPlot. Em termos de próximos passos, vamos verificar a ocorrência de algum erro ou inconformidade na missão, e discutir as suas soluções. Vamos também discutir sobre o projeto de uma nova placa PCB, desta vez incluindo o circuito do Arduino, para eliminar a necessidade de embarcar uma placa da nossa famosa microcontroladora num balão a cada viagem.

Bem, é isso, espero que vocês acompanhem a cada quarta-feira a seqüência de cada uma das fases deste projeto.

Arduino – Noções Básicas

INDICE
1. O que é Arduino?
2. Entradas e Saídas do Arduino
3. Instalando a IDE do Arduino
4. Instalando os Drivers de dispositivo
5. Trabalhando com a IDE do Arduino
6. Escrevendo seu primeiro programa no Arduino

1. O que é Arduino?

Arduino é a plataforma de microcontroladores mais popular do mundo. O que é um microcontrolador? Bem, um microcontrolador é um pequeno computador que contém um processador, alguma memória e todas as suas Entradas e Saídas.

O que você pode fazer com o Arduino? Na verdade, você pode fazer qualquer coisa, desde piscar um LED até construir um controlador para um satélite, portanto com o Arduino nem o céu é o limite. O Arduino tem muitos tipos diferente de Entradas e Saídas, e eu gostaria de cobri-las com um pouco mais de detalhes.

2. Entradas e Saídas do Arduino

A figura 1 mostra todas as Entradas e Saídas da placa compatível com o Arduino Leonardo. Eu quero explicar estas E/S (entradas/saídas) com um pouco mais de detalhes.

Entrada/Saída Digital: O Arduino Leonardo e as placas compatíveis possuem 20 entradas e saídas deste tipo. O lado de entrada de um sinal digital ler· um sinal de +5V ou 0V, e nenhum outro valor neste intervalo, para por exemplo, ler o valor de um botão. O lado de saída do sinal digital enviar· um sinal de +5v ou 0V, para por exemplo, ligar um LED (+5V) ou desligá-lo (0V). Veja a figura 2.

Fig. 2 (Ref: http://www.jeremyblum.com/2010/09/05/driving-5-speakers-simultaneously-with-an-arduino/)

Entrada analógica: se você quiser medir a voltagem de uma pilha AA você pode usar uma entrada analógica. Ela converte o nível da voltagem em um valor digital que a placa compatível com Arduino pode processar.

Modulação de largura de pulso (PWM – Pulse Width Modulation): Imagine que você esteja ligando e desligando uma luz em uma frequencia muito alta; se você pudesse fazê-lo, poderia controlar o quão brilhante ou tênue a luz brilha, aumentando o tempo em que ela fica ligada (para deixá-la mais brilhante) ou aumentando o tempo em que ela está desligada (para deixá-la mais tênue); isto é exatamente o que os sinais PWM fazem. Veja a Fig. 3.

Fig. 3 (Ref:http://arduino.cc/en/tutorial/SecretsOfArduinoPWM)

Circuito Inter-Integrado (I2C – Inter-Integrated Circuit): Este tipo de sinal o permite controlar múltiplos dispositivos sem usar entradas e saídas extras. O I2C tem um sistema de dois canais SDA e SCL. O SDA é o canal por onde o dado é transmitido, e SCL é o clock que controla a velocidade na qual os dados são transmitidos.

Interface Serial de Periféricos (SPI – Serial Peripheral Interface): Este tipo de porta também permite conexão a múltiplos dispositivos, de modo que se possa economizar entradas e saídas. Porém, este sinal necessita de um pino para a seleção de chip (CS Pin). O SPI geralmente necessita de 4 canais: MOSI, MISO, SCK E CS. O SPI pode lidar com volumes de dados consideravelmente maiores que o I2C.

Universal Assynchronous Receiver/Transmitter (UART): Este tipo de porta permitirá o envio e recebimento de dados de sua placa compatível com Arduino. Tipicamente uma porta UART tem um TX (transmissão) e um  RX (recepção).

Não se espera que você seja um expert em cada um destas portas / sinais; só queria assegurar que você tivesse uma noção de que tipos de sinal nós examinaremos no futuro. Portanto, agora que você sabe o que é um Arduino, e o que o Arduino pode oferecer, nós podemos prosseguir para como usá-lo.

A primeira coisa que precisamos fazer é instalar a IDE do Arduino no computador. Mas o que é a IDE (Integrated Development Environment) do Arduino? É o editor integrado no qual você escreverá seus programas (ou Sketch) e os transferirá para sua placa compatível com Arduino. Nós examinaremos a IDE do Arduino posteriormente nesta lição. Agora vamos explicar como instalar a IDE no seu computador (no sistema operacional Windows).

3. Instalando a IDE do Arduino

1) Vá para http://arduino.cc/en/Main/Software e clique sobre “Windows (ZIP File)”. O download começará;
2) Agora dê um duplo-clique no arquivo baixado para descompactá-lo;
3) Arraste e solte a pasta arduino-1.0.5 para seu desktop;
4) Para abrir a IDE do Arduino, dê um duplo-clique na pasta arduino-1.0.5 e uma nova janela se abrirá;
5) Agora clique no ícone do Arduino e a splash screen será exibida, abrindo a IDE em seguida.

Estes são os passos necessários para baixar e instalar a IDE do Arduino.

Agora que a IDE está instalada, precisamos instalar os drivers de dispositivo para a placa compatível com Arduino.

1) Conecte sua placa compatível com Arduino ao computador utilizando um cabo micro USB;
2) Vá ao Gerenciador de Dispositivos, no Painel de Controle;
3) Quando o Gerenciador de Dispositivos abrir, você verá uma categoria chamada “Outros Dispositivos” e sob ela você verá “Arduino Leonardo” com uma exclamação amarela ao seu lado;