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
web java-script bmp280 adc bldc stm32 rs-232 programmator 3d-printer flash pwm sms motor docker raspberry-pi meteo gps ngnix bme280 timer ssd1331 mpu-6050 bkp battery rfid st-link tim mpx4115a ssd1306 encoder atmega pmsm wifi options rtc examples nvic soldering mongodb esp8266 books lcd foc flask barometer bluetooth ethernet brushless uart watchdog servo gpio solar git remap dma usart eb-500 smd nodemcu sensors displays html python capture dht11 led i2c eeprom piezo exti websocket max1674 usb dc-dc avr hih-4000 css mpu-9250
Архіви



