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
Недавні записи
- Text to speech. Українська мова
- LCD Display ST7567S (IIC)
- Розпізнавання мови (Speech recognition)
- Selenium
- Комп'ютерний зір (Computer Vision)
- Деякі думки про точність вимірювань в електроприводі
- Датчики Холла 120/60 градусів
- Модуль драйверів напівмосту IGBT транзисторів
- Драйвер IGBT транзисторів на A316J
- AS5600. Варіант встановлення на BLDC мотор
Tags
docker sensors rtc led timer wifi remap sms css websocket mongodb bme280 rfid bluetooth esp8266 nodemcu bkp piezo bmp280 i2c mpu-6050 encoder examples avr brushless ngnix nvic displays bldc java-script pmsm barometer pwm lcd ethernet stm32 raspberry-pi capture usart gpio exti atmega meteo solar smd dma adc eeprom eb-500 flask python ssd1306 uart options flash mpx4115a html gps st-link 3d-printer servo dc-dc foc git books battery hih-4000 watchdog dht11 web tim programmator ssd1331 mpu-9250 usb rs-232 motor max1674 soldering
Архіви