Raspberry Pi - DS18B20
Підключення цифрового датчика температури DS18B20 до Raspberry Pi виконується за наступною схемою:
DS18B20 - це цифровий датчик температури який працює з інтерфейсом 1-Wire. Він вимірює температуру в межах -10..+85 градусів за шкалою Цельсія. Як видно зі схеми для його використання нам потрібно сам датчик DS18B20 та резистор 4,7 КОм. Ви можете підключити декілька датчиків як вказано на наступній схемі:
Якщо використовувати дроти, довші за 3 метри, можуть виникнути проблеми зі зчитуванням. У цьому випадку рекомендується використовувати екрановані дроти.
Після підключення датчика виконуємо наступні команди:
sudo modprobe w1-gpio && sudo modprobe w1_therm
ls -l /sys/bus/w1/devices/
Маємо побачити щось схоже на наступне:
total 0 total 0 lrwxrwxrwx 1 root root 0 Nov 29 10:49 28-000000d7970b -> ../../../devices/w1_bus_master1/28-000000d7970b lrwxrwxrwx 1 root root 0 Nov 29 10:49 w1_bus_master1 -> ../../../devices/w1_bus_master1Якщо подібного результату немає, редагуємо файл /boot/config.txt:
sudo nano /boot/config.txt
додаємо рядок:
dtoverlay=w1-gpio
записуємо файл і перезавантажуємо Raspberry командою reboot.
Кожен датчик має унікальний номер. Знаходимо ID датчика. В моєму випадку 28-000000d7970b.
Далі виконуємо команду (Ви маєте замінити значення 28-000000d7970b на ID свого датчика):
cat /sys/bus/w1/devices/28-000000d7970b/w1_slave
Бачимо інформацію, яку видає датчик:
7c 01 4b 46 7f ff 04 10 09 : crc=09 YES 7c 01 4b 46 7f ff 04 10 09 t=23750Серед цієї інформації є наступний фрагмент: t=23750. Це температура за шкалою Цельсія, помножена на 1000. Тобто, температура 23750/1000=23,750 oC. Не треба поринати у ілюзії стосовно трьох знаків після коми. Абсолютна точність датчика всього 0,5 oC.
Програмно отримати значення температури можна наступним чином:
Bash:
cat /sys/bus/w1/devices/28-000000d7970b/w1_slave | sed -n `s/^.*\(t=[^ ]*\).*/\1/p` | sed `s/t=//` | awk `{x=$1}END{print(x/1000)}`
Python:
tfile=open("/sys/bus/w1/devices/28-000000d7970b/w1_slave")
ttext=tfile.read()
tfile.close()
temp=ttext.split("")[1].split(" ")[9]
temperature=float(temp[2:])/1000
print temperature
Успіхів.
Дивись також:
- Raspberry Pi — що це таке?
- Raspberry Pi — GPIO
- Raspberry Pi — UART
- Raspberry Pi — FT232
- Raspberry Pi — PWM і Сервопривод
- Raspberry Pi — DHT11
- Raspberry Pi - FM Transmitter
- Прошивка AVR мікроконтролерів за допомогою Raspberry Pi
- Raspberry Pi — LCD display 1602
- Raspberry Pi — WiFi
- Raspberry-Pi — I2C (TWI)
- Raspberry Pi - DS18B20
- Raspberry Pi Camera
- nRF24L01+ ATMEGA + Raspberry Pi
- BMP180 + Raspberry Pi + WH1602
- Wi-Fi Метео станція
- Raspbian. Apache + PHP + Python + MySQL
- Встановлюємо Raspbian на Raspberry Pi без клавіатури та монітору
- IR-дистанційне керування. Використання LIRC у Python
- Raspberry Pi. Raspbian. Відправлення пошти через аккаунт Gmail
- Neoway M590 – GSM/GPRS modem
- MPU-6050 – гіроскоп – акселерометр
- HMC5883L Магнітометр
- PWM контролер з інтерфейсом I2С на базі мікросхеми PCA9685
- Метеостанція на Raspberry Pi своїми руками
- Raspberry Pi. Live-stream video
Tags
bme280 bmp280 gps mpu-6050 options stm32 ssd1331 ssd1306 eb-500 3d-printer soldering tim mpu-9250 dma watchdog piezo exti web raspberry-pi docker ngnix solar bluetooth foc html css brushless flask dc-dc capture gpio avr rs-232 mpx4115a atmega mongodb st-link barometer pwm nvic git java-script programmator dht11 hih-4000 pmsm encoder max1674 smd sensors rtc adc lcd motor timer meteo examples i2c usb flash sms rfid python esp8266 servo books bldc remap eeprom bkp battery ethernet uart usart displays led websocket nodemcu wifi
Архіви



