An open API service indexing awesome lists of open source software.

https://github.com/gifflet/planta-iot

Planta IoT - Monitore seu estado de umidade
https://github.com/gifflet/planta-iot

arduino iot python twitter-api

Last synced: about 2 months ago
JSON representation

Planta IoT - Monitore seu estado de umidade

Awesome Lists containing this project

README

        

# Planta IoT - Monitore o seu estado
Este projeto foi desenvolvido para arduino e desktop, seguindo o esquema abaixo **(com exceção da utilização dos leds)** :
drawing

## Requisitos

### Software
- [Python 2.7](https://www.python.org/downloads/)
- [tweepy](https://pypi.org/project/tweepy/)
- [serial](https://pypi.org/project/pyserial/)
- [Arduino IDE](https://www.arduino.cc/en/Main/Software#download)

### Hardware

Sensor de umidade de solo (YL-69)

drawing


Módulo chip comparador (LM393)

drawing

## Como isso funcionamento?
Cada mudança do estado de umidade da terra detectada faz com que o arduino escreva na porta serial o estado atual de umidade recebido. Para isso, é necessário iniciar a comunicação serial e habilitar a entrada analógica `A0`, como podemos ver no arquivo `planta_iot.ino`:
```c
#define pino_sinal_analogico A0

void setup() {
//Inicia a comunicação serial
Serial.begin(9600);
//Habilita entrada analógica A0
pinMode(pino_sinal_analogico, INPUT);
}
```
O processo de monitoração é continuo, tendo uma curta interrupção de 100 milissegundos:
```c
void loop() {

//Le o valor do pino A0 do sensor
valor_analogico = analogRead(pino_sinal_analogico);

//Solo com umidade alta
if (valor_analogico > 0 && valor_analogico < 400) {
estado_atual = UMIDO;
}
//Solo com umidade moderada
if (valor_analogico > 400 && valor_analogico < 800) {
estado_atual = MODERADO;
}
//Solo com umidade baixa
if (valor_analogico > 800 && valor_analogico < 1024) {
estado_atual = SECO;
}
if(ultimo_estado != estado_atual) {
ultimo_estado = estado_atual;
Serial.print(estado_atual);
}
delay(100);
}
```

Os bytes escritos, pelo arduino, na porta serial são lidos na outra ponta dessa comunicação, no desktop, pelo `arduino_tweet.py`. Cada byte lido é interpretado para um estado de umidade e cada estado de umidade possui uma mensagem apropriada para servir de conteúdo para um tweet. É necessário realizar o [procedimento de obter as credenciais](https://developer.twitter.com/en/docs/basics/authentication/guides/access-tokens.html) para a utilização da api do twitter. Após realizado, substituir os respectivos valores das seguintes variáveis no arquivo `arduino_tweet.py`:
```python
#twitter application credentials
consumer_key="CONSUMER_KEY"
consumer_secret="CONSUMER_SECRET"

#twitter user credentials
access_token="ACCESS_TOKEN"
access_token_secret="ACCESS_TOKEN_SECRET"
```