... | ... | @@ -71,112 +71,69 @@ $ 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 desse repositório.
|
|
|
|
|
|
### 2. Compile o firmware e grave na placa
|
|
|
|
|
|
Existem duas alternativas para alcançar esses objetivos.
|
|
|
Acesse a pasta raiz, que contém o arquivo `Makefile`:
|
|
|
```
|
|
|
$ cd arduino-meteorolog
|
|
|
```
|
|
|
Daqui em diante será assumido que você está dentro desta pasta ao executar os comandos `make`.
|
|
|
|
|
|
#### 1ª Opção) IDE do Arduino
|
|
|
### 2. Prepare o ambiente de execução
|
|
|
|
|
|
* Dentro da pasta meteorolog, abra o arquivo [meteorolog.ino](meteorolog/meteorolog.ino) utilizando a [IDE do Arduino](https://www.arduino.cc/en/Main/Software).
|
|
|
* Instale ferramentas de sistema (apenas para Linux baseado em Debian):
|
|
|
```
|
|
|
$ make apt-install
|
|
|
```
|
|
|
|
|
|
* Selecione a sua placa correta no menu "Tools" > "Board".
|
|
|
* Por exemplo: `Arduino Uno`, ou `Arduino Duemilanove`, etc.
|
|
|
* Instale o ambiente Python:
|
|
|
```
|
|
|
$ make setup
|
|
|
```
|
|
|
|
|
|
* Selecione a porta USB na qual a placa está conectada, no menu "Tools" > "Port".
|
|
|
* Por exemplo, `/dev/ttyACMx` ou `/dev/ttyUSBx` (onde "x" é um número).
|
|
|
Para maiores detalhes, consulte a wiki [prepare-venv](prepare-venv).
|
|
|
|
|
|
* 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.
|
|
|
### 3. Configure o arquivo `settings.yaml`
|
|
|
|
|
|
* 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)
|
|
|
Presente na pasta raiz do projeto, esse arquivo contém todas as configurações necessárias para uso de todos os softwares inclusos no projeto.
|
|
|
|
|
|
#### 2ª Opção) Linha de comando
|
|
|
Certifique-se de configurar/revisar pelo menos os seguintes intens:
|
|
|
|
|
|
> ATENÇÃO: Apesar de poder ser executada completamente no terminal, essa opção ainda requer que a tool chain do Arduino esteja instalada.
|
|
|
* **SERVER/API_POST_URL**: Contém o endereço do servidor para onde os dados serão mandados.
|
|
|
* Substitua a parte final `BID` pelo número de ID da sua placa conforme cadastrada em [dados.cta.if.ufrgs.br/emm](http://dados.cta.if.ufrgs.br/emm).
|
|
|
|
|
|
1. Acesse a pasta `ino` que está dentro da pasta raiz (`arduino-meteorolog`)
|
|
|
```
|
|
|
$ cd arduino-meteorolog/ino
|
|
|
```
|
|
|
* **LOGGER/INTERVAL**: Configure aqui o intervalo de tempo entre as leituras. Basta alterar os números dos campos `seconds`, `minutes`, `hours` ou `days` conforme desejado.
|
|
|
* OBS: Utilize apenas números inteiros!
|
|
|
|
|
|
2. Instale ferramentas de sistema (necessário apenas uma vez)
|
|
|
```
|
|
|
$ make apt-install
|
|
|
```
|
|
|
* **ARDUINO/SERIAL_PORT**: Preencha o campo com uma lista de possíveis portas USB onde a Arduino possa a vir estar presente. A lista pode conter uma única porta, ou mais de uma separadas por vírgula.
|
|
|
* OBS: Arduino Uno em geral aparece em `/dev/ttyACMx`, e as demais em `/dev/ttyUSBx`, onde `x` é um número inteiro.
|
|
|
|
|
|
3. Instale as ferramentas de Python (necessário apenas uma vez)
|
|
|
```
|
|
|
$ make setup
|
|
|
```
|
|
|
* **SENSORS**: Lista de sensores cuja leitura será solicitada. A ordem da lista refletirá as colunas do arquivo `DATALOG`.
|
|
|
* Para omitir algum sensor, comente a linha colocando um `#` no início da mesma. Assim, caso queira reverter a situação, basta retirar o `#`.
|
|
|
* No final do arquivo existe uma seção `SENSORS_AVAILABLE` contendo uma lista de todos sensores suportados.
|
|
|
|
|
|
4. Edite `ino.ini` com o modelo correto da placa e a porta serial.
|
|
|
* Use `make list-models` para listar os modelos suportados.
|
|
|
Os demais valores já estão configurados de maneira a funcionar prontamente, mas é interessante que você observe sua existência. Por exemplo, a seção `FILES` indica o local onde os arquivos gerados aparecerão.
|
|
|
|
|
|
5. Faça build e upload do sketch:
|
|
|
```
|
|
|
$ make bu
|
|
|
```
|
|
|
> Opcionalmente você pode executar
|
|
|
```
|
|
|
$ make bus
|
|
|
```
|
|
|
para iniciar comunicação serial logo após a compilação e upload.
|
|
|
### 5. Compile o firmware e grave na placa
|
|
|
|
|
|
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.
|
|
|
Existem duas alternativas para alcançar esses objetivos.
|
|
|
|
|
|
### 3. Lendo sensores
|
|
|
#### 1ª Opção) IDE do Arduino
|
|
|
|
|
|
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.
|
|
|
* Dentro da pasta meteorolog, abra o arquivo [meteorolog.ino](meteorolog/meteorolog.ino) utilizando a [IDE do Arduino](https://www.arduino.cc/en/Main/Software).
|
|
|
|
|
|
Os comandos atualmente suportados são:
|
|
|
* Selecione a sua placa correta no menu "Tools" > "Board".
|
|
|
* Por exemplo: `Arduino Uno`, ou `Arduino Duemilanove`, etc.
|
|
|
|
|
|
| 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 |
|
|
|
* Selecione a porta USB na qual a placa está conectada, no menu "Tools" > "Port".
|
|
|
* Por exemplo, `/dev/ttyACMx` ou `/dev/ttyUSBx` (onde "x" é um número).
|
|
|
|
|
|
Os sensores suportados oficialmente são:
|
|
|
* 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.
|
|
|
|
|
|
| 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 |
|
|
|
* 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 wiki [serial-commands](serial-commands) para saber os comandos possíveis.
|
|
|
|
|
|
* Solicitando leituras:
|
|
|
```
|
|
|
read,t,p,l
|
|
|
```
|
|
|
A resposta deverá ser algo como
|
|
|
```
|
|
|
24.5,101308,75
|
|
|
```
|
|
|
#### 2ª Opção) Linha de comando
|
|
|
|
|
|
* 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
|
|
|
```
|
|
|
Ver a wiki [Build from terminal](build-from-terminal).
|
|
|
|
|
|
### Executando o logger
|
|
|
|
... | ... | @@ -195,60 +152,9 @@ data logger.py Makefile settings.yaml |
|
|
deploy.py logs requirements.pip supervisor.conf
|
|
|
```
|
|
|
|
|
|
#### 2. Instale as ferramentas de sistema
|
|
|
|
|
|
Caso esteja utilizando um sistema Linux baseado em Debian (ex: `Ubuntu`, `Mint`, etc), execute:
|
|
|
|
|
|
```
|
|
|
$ make apt-install
|
|
|
```
|
|
|
para assegurar que as seguintes ferramentas estejam instaladas no seu sistema:
|
|
|
* **python3**: Linguagem de programação na qual o logger foi escrito.
|
|
|
* Ainda não conheçe essa linguagem incrível? Acesse [python.org](https://www.python.org/).
|
|
|
* **pip3**: Gerenciador de pacotes do Python
|
|
|
* Permite gerenciar a instalação de bibliotecas (packages) de Python de maneira similar ao gerenciador de pacotes do sistema (ex: `apt`).
|
|
|
* **virtualenv**: Gerenciador de ambientes virtuais de Python.
|
|
|
* Permite instalar bibliotecas em um ambiente Python isolado, localmente, de modo a não afetar o Python do sistema.
|
|
|
* **supervisor**: Gerenciador de processos (escrito em Python).
|
|
|
* Entre muitas coisas, permite registrar daemons (processos que rodam em background) que iniciam automaticamente ao ligar a máquina.
|
|
|
|
|
|
Usuários de outras distribuições Linux deverão instalar essas ferramentas por si mesmos, através do seu gerenciador de pacotes (por exemplo, `yum` do CentOS, etc).
|
|
|
|
|
|
> OBS: Caso ocora o erro
|
|
|
```
|
|
|
bash: pip3: command not found
|
|
|
```
|
|
|
verifique se o `pip3` do seu sistema está cadastrado com algum outro nome, como `pip3.4`, por exemplo. Caso afirmativo, finalize a instalação executando:
|
|
|
```
|
|
|
$ sudo pip3.x install virtualenv
|
|
|
```
|
|
|
onde `x` é o número correto do pip na sua máquina.
|
|
|
|
|
|
#### 3. Prepare o ambiente Python
|
|
|
|
|
|
```
|
|
|
$ make setup
|
|
|
```
|
|
|
|
|
|
Após a execução desse comando, uma pasta `.venv` deverá ter sido criada. Ela contém uma instalação local de Python e das bibliotecas necessárias pelo logger.
|
|
|
|
|
|
#### 4. Configure o arquivo `settings.yaml`
|
|
|
|
|
|
Certifique-se de configurar/revisar pelo menos os seguintes intens:
|
|
|
|
|
|
* **SERVER/API_POST_URL**: Contém o endereço do servidor para onde os dados serão mandados.
|
|
|
* Substitua a parte final `BID` pelo número de ID da sua placa conforme cadastrada em [dados.cta.if.ufrgs.br/emm](http://dados.cta.if.ufrgs.br/emm).
|
|
|
|
|
|
* **LOGGER/READING_INTERVAL**: Configure aqui o intervalo de tempo entre as leituras. Basta alterar os números dos campos `seconds`, `minutes`, `hours` ou `days` conforme desejado.
|
|
|
* OBS: Utilize apenas números inteiros!
|
|
|
|
|
|
* **ARDUINO/SERIAL_PORT**: Preencha o campo com uma lista de possíveis portas USB onde a Arduino possa a vir estar presente. A lista pode conter uma única porta, ou mais de uma separadas por vírgula.
|
|
|
* OBS: Arduino Uno em geral aparece em `/dev/ttyACMx`, e as demais em `/dev/ttyUSBx`, onde `x` é um número inteiro.
|
|
|
|
|
|
* **SENSORS**: Lista de sensores cuja leitura será solicitada. A ordem da lista refletirá as colunas do arquivo `FILES/DATALOG_CSV`.
|
|
|
* Caso queira omitir algum sensor, comente a linha colocando um `#` no início da mesma. Assim, caso queira reverter a situação, basta retirar o `#`.
|
|
|
|
|
|
Os demais valores já estão configurados de maneira a funcionar prontamente, mas é interessante que você observe sua existência. Por exemplo, a seção `FILES` indica o local onde os arquivos gerados aparecerão.
|
|
|
|
|
|
#### 5. Execute o logger
|
|
|
|
... | ... | |