... | ... | @@ -5,7 +5,7 @@ O projeto Meteorolog visa proporcionar: |
|
|
* Site: [dados.cta.if.ufrgs.br/emm](http://dados.cta.if.ufrgs.br/emm)
|
|
|
* Repositório: [meteorolog/cta-emm-web](https://git.cta.if.ufrgs.br/meteorolog/cta-emm-web)
|
|
|
|
|
|
Este repositório contém o código necessário para a execução da primeira etapa acima.
|
|
|
Este repositório contém o código necessário para a execução da primeira etapa acima. Instruções de uso estão presentes nesta página.
|
|
|
|
|
|
# Overview and Usage
|
|
|
|
... | ... | @@ -15,16 +15,16 @@ Existem hoje no mercado diversos sensores de baixo custo que podem ser utilizado |
|
|
|
|
|
Confira nas próximas seções a descrição dos sensores suportados nesse projeto, sugestões de montagem na placa e instalação/uso do software disponível neste repositório.
|
|
|
|
|
|
### Sensores
|
|
|
## Sensores
|
|
|
|
|
|
#### LDR (Light Dependent Resistor) -- Luminosidade ambiente
|
|
|
### LDR (Light Dependent Resistor) -- Luminosidade ambiente
|
|
|
|
|
|
![](http://cta.if.ufrgs.br/attachments/1727/CDS-Photoresistor-LDR.jpg)
|
|
|
(Fonte da imagem: http://p.globalsources.com)
|
|
|
|
|
|
Trata-se de um resistor especial cuja resistência é afetada pela presença de luz. Ligando ele num pino analógico do Arduino, em série com um resistor comum (cerca de 2k2), é possível obter variações na voltagem do pino (entre 0 V e 5 V) conforme a intensidade de luz incidente: muita luz --> aumenta resistência --> diminui voltagem, e vice-versa.
|
|
|
|
|
|
#### DHT22 -- Temperatura e umidade relativa do ar
|
|
|
### DHT22 -- Temperatura e umidade relativa do ar
|
|
|
|
|
|
![](http://cta.if.ufrgs.br/attachments/1728/dht22.jpg)
|
|
|
(Fonte da imagem: http://moretosprojects.blogspot.com.br)
|
... | ... | @@ -33,7 +33,7 @@ A medida de temperatura é obtida através de um termistor, que combinada com a |
|
|
|
|
|
A leitura dos valores é facilitada com o uso da biblioteca [DHT.h](https://github.com/adafruit/DHT-sensor-library).
|
|
|
|
|
|
#### BMP085 -- Pressão e temperatura
|
|
|
### BMP085 -- Pressão e temperatura
|
|
|
|
|
|
![](http://cta.if.ufrgs.br/attachments/1729/bmp085-2-500x500.jpg)
|
|
|
(Fonte da imagem: http://www.hobbytronics.co.uk)
|
... | ... | @@ -42,7 +42,7 @@ O funcionamento interno é controlado por um microchip onde a leitura é solicit |
|
|
|
|
|
A leitura dos valores é facilitada com o uso da biblioteca [Adafruit_BMP085.h](https://github.com/adafruit/Adafruit-BMP085-Library).
|
|
|
|
|
|
### Prototipagem
|
|
|
## Prototipagem
|
|
|
|
|
|
![board-proto.svg](http://cta.if.ufrgs.br/attachments/1724/board-proto.svg)
|
|
|
|
... | ... | @@ -57,21 +57,21 @@ O esquema acima ilustra a montagem (em protoboard) dos sensores atualmente supor |
|
|
|
|
|
Essa é uma excelente maneira de aprender eletrônica, mesmo para aqueles não familiarizados no assunto. Considerando o baixo custo dos sensores acima, juntamente com a versatilidade da Arduino, esperamos que qualquer pessoa seja capaz de montar essa estação meteorológica básica para então colaborar com a aquisição de dados na nossa rede pública.
|
|
|
|
|
|
### Instalando o firmware
|
|
|
## Instalação do firmware
|
|
|
|
|
|
Tendo a placa com os sensores (seja via prototipagem ou com shield pronto), siga os seguintes passos para instalar o software que vai rodar na Arduino, responsável por recolher a medida dos sensores.
|
|
|
Tendo a placa montada com os sensores (seja via prototipagem ou com shield pronto), abra um terminal (linha de comando) e siga os seguintes passos para instalar o software que vai rodar no processador do Arduino, responsável por recolher a medida dos sensores.
|
|
|
|
|
|
> OBS: Assumimos aqui o uso de um sistema operacional Linux.
|
|
|
> OBS: Assumimos aqui o uso de um sistema operacional Linux baseado em Debian.
|
|
|
|
|
|
#### 1. Obtenha o código
|
|
|
### 1. Obtenha o código
|
|
|
|
|
|
Clone esse repositório (requer a ferramenta git)
|
|
|
```
|
|
|
$ git clone https://git.cta.if.ufrgs.br/meteorolog/arduino-meteorolog.git
|
|
|
```
|
|
|
ou simplesmente clique em [Download ZIP](https://git.cta.if.ufrgs.br/meteorolog/arduino-meteorolog/repository/archive.zip) (também presente na página inicial) para baixar o código.
|
|
|
ou simplesmente clique em [Download ZIP](https://git.cta.if.ufrgs.br/meteorolog/arduino-meteorolog/repository/archive.zip) (também presente na página inicial) para baixar o código desse repositório.
|
|
|
|
|
|
#### 2. Compile o firmware e grave na placa
|
|
|
### 2. Compile o firmware e grave na placa
|
|
|
|
|
|
Existem duas alternativas para alcançar esses objetivos.
|
|
|
|
... | ... | @@ -87,7 +87,7 @@ Existem duas alternativas para alcançar esses objetivos. |
|
|
|
|
|
* Clique no botão ![(-->)](http://cta.if.ufrgs.br/attachments/1725/arduino_upload_button_cut.png) para compilar o código e enviá-lo para a placa.
|
|
|
|
|
|
* Se tudo deu certo (nenhuma menssagem de erro), abra o Monitor Serial no botão ![de lupa](http://cta.if.ufrgs.br/attachments/1726/serial-monitor-button-cut.JPG) para iniciar uma seção de comunicação com a placa (ver seção 3)
|
|
|
* Se tudo deu certo (nenhuma menssagem de erro), abra o Monitor Serial no botão ![de lupa](http://cta.if.ufrgs.br/attachments/1726/serial-monitor-button-cut.JPG) para iniciar uma seção de comunicação com a placa (ver seção 3 - Lendo sensores)
|
|
|
|
|
|
#### 2ª Opção) Linha de comando
|
|
|
|
... | ... | @@ -115,30 +115,68 @@ $ make setup |
|
|
```
|
|
|
$ make bu
|
|
|
```
|
|
|
> Opcionalmente você pode executar
|
|
|
```
|
|
|
$ make bus
|
|
|
```
|
|
|
para iniciar comunicação serial logo após a compilação e upload.
|
|
|
|
|
|
6. Teste a comunicação serial através da ferramenta [picocom](http://manpages.ubuntu.com/manpages/raring/man8/picocom.8.html)
|
|
|
6. Teste a comunicação serial com:
|
|
|
```
|
|
|
$ make serial
|
|
|
```
|
|
|
Esse comando iniciará uma seção de IPython com uma conexão serial ativa através do objeto `ser`:
|
|
|
```
|
|
|
>>> ser
|
|
|
Serial<id=0x2b11c6a2f1d0, open=True>(port='/dev/ttyACM0', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=False, rtscts=False, dsrdtr=False)
|
|
|
```
|
|
|
Você poderá enviar comandos para a Arduino através de uma string dentro da função local `send()`:
|
|
|
```
|
|
|
>>> send('read,l,p')
|
|
|
'57.1218,101403'
|
|
|
```
|
|
|
A resposta da serial é uma string, que no caso, contém a leitura da luminosidade e pressão. Ver a próxima seção para maiores detalhes sobre os comandos possíveis esperados pela placa.
|
|
|
|
|
|
#### 3. Teste a comunicação serial
|
|
|
### 3. Lendo sensores
|
|
|
|
|
|
Seja com o Monitor Serial da IDE do Arduino ou via `picocom`, experimente enviar alguns dos seguintes comandos para ler a medida do respectivo sensor:
|
|
|
Neste ponto a placa Arduino está preparada para receber comandos via serial. Estes comandos podem ser enviados com o Monitor Serial da IDE do Arduino ou pelo próprio terminal, conforme mencionado na seção anterior.
|
|
|
|
|
|
| Comando | Medida | Sensor |
|
|
|
| -------- | ---------------------- | ------- |
|
|
|
| t | tempertura | DHT22 |
|
|
|
| ah | umidade relativa do ar | DHT22 |
|
|
|
| p | pressão | BMP085 |
|
|
|
| l | luminosidade | LDR |
|
|
|
Os comandos atualmente suportados são:
|
|
|
|
|
|
Os comandos podem ser enviados unicamente ou separados por vírgula, como por exemplo:
|
|
|
| Comando | Descrição |
|
|
|
| ---------------------- | -------------------------------------------------------------------- |
|
|
|
| `read,A,B,C` | Solicita a leitura de 1 ou mais sensores. |
|
|
|
| | `A`, `B` e `C` devem ser nomes ou apelidos dos sensores. |
|
|
|
| `setrtc,Y,M,D,H,M,S` | Configura o relógico `RTC_DS1307` (se presente) |
|
|
|
| | `Y`: ano, `M`: mês, `D`: dia, `H`: hora, `M`: minuto, `S`: segundo |
|
|
|
|
|
|
```
|
|
|
t,p,l
|
|
|
```
|
|
|
Os sensores suportados oficialmente são:
|
|
|
|
|
|
| Nome | Apelido | Medida | Unidade |
|
|
|
| ----------------- | ---------- | ---------------------- | ----------------- |
|
|
|
| `DHT22_TEMP` | `t` | tempertura | ºC |
|
|
|
| `DHT22_AH` | `ah` | umidade relativa do ar | % |
|
|
|
| `BMP085_PRESSURE` | `p` | pressão atmosférica | Pa |
|
|
|
| `LDR` | `l` | luminosidade | % |
|
|
|
| `RTC_DS1307` | `dt` | relógio | %Y-%m-%d %H:%M:%S |
|
|
|
|
|
|
para ler temperatura, pressão e luminosidade simultaneamente.
|
|
|
* Solicitando leituras:
|
|
|
```
|
|
|
read,t,p,l
|
|
|
```
|
|
|
A resposta deverá ser algo como
|
|
|
```
|
|
|
24.5,101308,75
|
|
|
```
|
|
|
|
|
|
* Configurando o relógio (`RTC_DS1307`):
|
|
|
```
|
|
|
setrtc,2015,6,30,7,28,41
|
|
|
```
|
|
|
Caso bem sucedido, a resposta deverá ser:
|
|
|
```
|
|
|
done: 2015-6-30 7:28:41
|
|
|
```
|
|
|
|
|
|
### Executando o logger
|
|
|
|
... | ... | |