Skip to content

Commit

Permalink
Escrevi o README e o devlog
Browse files Browse the repository at this point in the history
  • Loading branch information
lucasmnd committed Oct 21, 2024
1 parent e0059b7 commit 3fa5d64
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 5 deletions.
23 changes: 23 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Biblioteca para uso do DS18B20

Essa biblioteca fornece o código necessário para controlar um sensor de temperatura DS18B20 a partir de um STM Blue Pill (STM32F103C6T6 ou STM32F103C8T6).

## Como conectar o sensor
- Energize o STM
- Caso queira ler os logs do STM, conecte o RX de um leitor UART ao pino A9
- Conecte o fio GND (preto) ao ground.
- Conecte o fio VDD (vermelho) a uma fonte de tensão de 3 a 5.5V
- Conecte o fio DQ (amarelo) ao pino A1 do STM. Adicione a essa conexão um resistor de 4.7kΩ (veja o diagrama abaixo)
- Para mudar esse pino, basta modificar o arquivo *stm32_min_dev_blue.overlay*. Se for fazer isso, verifique se o pino substituto apresenta diferenças significativas de hardware com relação ao pino A1, como uma resistência interna, por exemplo.

![diagrama de circuito do sensor](readme_src/circuito.png)

## Como usar a biblioteca
Sempre que quiser ler a temperatura do sensor, utilize a função **ds18b20_get_temperature()**. Note que há um valor de retorno da função (fora do intervalo de possíveis temperaturas lidas pelo sensor) que indica erro na leitura, então é necessário checar qual é o valor lido.

## Sobre os logs do STM
Caso haja algum problema ao se comunicar com o sensor, será emitido um log de erro.


## Possíveis problemas / problemas conhecidos
- O protocolo de comunicação OneWire possibilita a conexão de diversos sensores DS18B20 ao mesmo barramento, entretanto essa biblioteca consegue lidar com apenas um sensor.
20 changes: 20 additions & 0 deletions devlog/devlog.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
-------------------------------------18/10--------------------------------------
Acabei o desenvolvimento dessa biblioteca. Então aqui vai uma revisão de o que eu
aprendi no processo.

No começo, eu gastei bastante tempo tentando entender e adaptar a bilioteca já
existente no Zephyr para o sensor DS18B20. Aparentemente, aquela biblioteca é uma
das únicas do Zephyr que é restrita a poucas placasm eu demorei pra perceber isso.

Outro detalhe que eu não percebi inicialmente foi que era necessário colocar um resistor
entre o VCC e o fio OneWire do sensor.

Acho que os aprendizados que posso tirar disso são:
1. Sempre ler atentamente o datasheet de um dispositivo novo, especialmente se for a
primeira vez que a equipe está usando aquele dispositivo. (Note que isso foi diferente
do desenvolvimento da biblioteca do SIM800L, já que o Gian já havia usado e conseguiu
me ensinar como usar).

2. Às vezes, tentar adaptar o trabalho de outra pessoa pode ser mais difícil do que
simplesmente fazer tudo do zero. Acho que eu deveria ter gasto menos tempo com a
biblioteca do Zephyr.
2 changes: 1 addition & 1 deletion inc/ds18b20.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* em graus Celsius e tem resolução de 0.0625.
*
* @return Caso consiga obter a temperatura, retorna a temperatura lida. Caso
* não consiga obter a leitura do sensor, retorna FLT_MIN (da lib float.h).
* não consiga obter a leitura do sensor, retorna FLT_MIN (da biblioteca float.h).
*/
float ds18b20_get_temperature();

Binary file added readme_src/circuito.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion src/ds18b20.c
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,6 @@ float ds18b20_get_temperature(){
temperature += ds18b20_read() << 8;
temperature /= 16.0;

LOG_INF("%f", temperature);

return temperature;
}
3 changes: 0 additions & 3 deletions src/main.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
// Esse programa de expemplo printa "Hello World!" no LOG no momento em que o
// led pisca

#include <zephyr/drivers/gpio.h>
#include <zephyr/kernel.h>
#include <zephyr/logging/log.h>
Expand Down

0 comments on commit 3fa5d64

Please sign in to comment.