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
- Host: GitHub
- URL: https://github.com/gifflet/planta-iot
- Owner: gifflet
- Created: 2018-06-28T13:20:14.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2018-06-28T16:08:01.000Z (almost 7 years ago)
- Last Synced: 2025-01-31T11:49:40.601Z (4 months ago)
- Topics: arduino, iot, python, twitter-api
- Language: Python
- Size: 1.95 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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)** :## 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)
![]()
Módulo chip comparador (LM393)
![]()
## 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 A0void 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"
```