- Vật liệu thiết yếu
- Giới thiệu về cảm biến nhiệt độ DS18B20
- Điều kiện tiên quyết
- Sơ đồ mạch
- Cài đặt thư viện Adafruit LCD trên Raspberry P
- Bật giao diện một dây trong Pi
- Đầu ra / Làm việc
Raspberry Pi được biết đến với sức mạnh tính toán và ứng dụng rộng lớn của nó trong lĩnh vực IoT, Tự động hóa gia đình, v.v. Tuy nhiên, để bất kỳ hệ thống điện tử nào tương tác với thế giới thực và lấy thông tin về nó, hệ thống phải sử dụng cảm biến. Có nhiều loại cảm biến được sử dụng cho quá trình này và cảm biến yêu cầu được lựa chọn dựa trên thông số cần đo và ứng dụng của nó. Trong hướng dẫn này, chúng ta học cách giao tiếp cảm biến nhiệt độ DS18B20 với Raspberry Pi.
Các DS18B20 được sử dụng rộng rãi cảm biến nhiệt độ, chủ yếu ở những nơi mà môi trường hoạt động khắc nghiệt có liên quan đến ngành công nghiệp tương hóa chất, nhà máy mỏ, vv Bài viết này sẽ nói về các cảm biến và làm thế nào nó outstands cảm biến nhiệt độ khác và cuối cùng là giao diện nó với Raspberry Pi và xem nhiệt độ giá trị trên màn hình LCD 16x2.
Vật liệu thiết yếu
- Cảm biến nhiệt độ DS18B20
- Raspberry Pi
- Màn hình LCD 16 * 2
- Chậu trang trí 10k
- 10k Kéo lên điện trở
- Breadboard
- Kết nối dây
Giới thiệu về cảm biến nhiệt độ DS18B20
DS18B20 là một cảm biến nhiệt độ ba đầu cuối có sẵn trong gói TO-92 (loại bóng bán dẫn). Nó rất dễ sử dụng và chỉ cần một thành phần bên ngoài để bắt đầu hoạt động. Ngoài ra, nó chỉ yêu cầu một chân GPIO từ MCU / MPU để giao tiếp với nó. Một cảm biến nhiệt độ DS18B20 điển hình với tên chân của nó được hiển thị bên dưới.
Cảm biến này cũng có sẵn dưới dạng phiên bản chống nước, trong đó cảm biến được bao phủ bởi một ống kim loại hình trụ. Trong hướng dẫn này, chúng tôi sẽ sử dụng cảm biến loại bóng bán dẫn bình thường được hiển thị ở trên. Các DS18B20 là một cảm biến nhiệt độ 1-wire có thể lập trình có nghĩa là nó chỉ đòi hỏi pin dữ liệu để gửi thông tin cho Ban vi điều khiển hoặc bộ vi xử lý như Raspberry Pi. Mỗi cảm biến có một địa chỉ 64-bit duy nhất cho nó, vì vậy cũng có thể có nhiều cảm biến được kết nối với cùng một MCU / MPU vì mỗi cảm biến có thể được định địa chỉ riêng lẻ trên cùng một bus dữ liệu. Thông số kỹ thuật của cảm biến được hiển thị bên dưới.
- Điện áp hoạt động: 3-5V
- Phạm vi đo: -55 ° C đến + 125 ° C
- Độ chính xác: ± 0,5 ° C
- Độ phân giải: 9-bit đến 12-bit
Bây giờ chúng ta đã biết đủ về cảm biến, hãy để chúng tôi chỉ số giao tiếp nó với Raspberry Pi.
Điều kiện tiên quyết
Giả định rằng Raspberry Pi của bạn đã được cài sẵn hệ điều hành và có thể kết nối với internet. Nếu không, hãy làm theo hướng dẫn Bắt đầu với Raspberry Pi trước khi tiếp tục. Ở đây chúng tôi đang sử dụng Rasbian Jessie đã cài đặt Raspberry Pi 3.
Nó cũng được giả định rằng bạn có quyền truy cập vào số pi của mình thông qua cửa sổ đầu cuối hoặc thông qua ứng dụng khác mà qua đó bạn có thể viết và thực thi các chương trình python và sử dụng cửa sổ đầu cuối.
Sơ đồ mạch
Như chúng tôi đã nói trước đó trong hướng dẫn này, chúng tôi sẽ giao diện cảm biến DS18B20 với Pi và hiển thị giá trị nhiệt độ trên màn hình LCD 16 * 2. Vì vậy, cảm biến và màn hình LCD nên được kết nối với Raspberry Pi như hình dưới đây.
Thực hiện theo sơ đồ mạch và thực hiện kết nối cho phù hợp. Cả màn hình LCD và cảm biến DS18B20 đều hoạt động với sự hỗ trợ của + 5V được cung cấp bởi chân 5V trên Raspberry pi. Các màn hình LCD được thực hiện để làm việc trong chế độ 4-bit với Raspberry pi, các chân GPIO 18,23,24 và 25 được sử dụng cho các dòng dữ liệu và các chân GPIO 7 và 8 được sử dụng cho các dòng điều khiển. Một chiết áp cũng được sử dụng để kiểm soát mức độ tương phản của màn hình LCD. Đường dữ liệu của DS18B20 được kết nối với chân GPIO 4. Cũng lưu ý rằng phải sử dụng điện trở 10K để kéo dữ liệu lên cao như trong sơ đồ mạch.
Bạn có thể làm theo sơ đồ mạch ở trên và thực hiện các kết nối hoặc sử dụng bảng ghim để theo dõi số chân GPIO.
Tôi đã xây dựng mạch trên một breadboard bằng cách sử dụng dây sợi đơn và dây đực với dây cái để tạo kết nối. Như bạn có thể thấy, cảm biến chỉ yêu cầu một dây để giao tiếp và do đó chiếm ít không gian và chân cắm hơn. Phần cứng của tôi trông như thế này bên dưới khi tất cả các kết nối được thực hiện. Bây giờ là lúc để tăng sức mạnh cho pi và bắt đầu lập trình.
Cài đặt thư viện Adafruit LCD trên Raspberry P
Giá trị của nhiệt độ sẽ được hiển thị trên màn hình LCD 16 * 2. Adafruit cung cấp cho chúng tôi một thư viện để dễ dàng vận hành màn hình LCD này ở chế độ 4-bit, vì vậy hãy thêm nó vào Raspberry Pi bằng cách mở cửa sổ đầu cuối Pi và làm theo các bước dưới đây.
Bước 1: Cài đặt git trên Raspberry Pi của bạn bằng cách sử dụng dòng bên dưới. Git cho phép bạn sao chép bất kỳ tệp dự án nào trên Github và sử dụng nó trên Raspberry pi của bạn. Thư viện của chúng tôi ở trên Github nên chúng tôi phải cài đặt git để tải thư viện đó xuống pi.
apt-get cài đặt git
Bước 2: Dòng sau liên kết đến trang GitHub nơi có thư viện, chỉ cần thực hiện dòng sao chép tệp dự án trên thư mục chính của Pi
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Bước 3: Sử dụng lệnh bên dưới để thay đổi dòng thư mục, vào tệp dự án mà chúng ta vừa tải xuống. Dòng lệnh được đưa ra bên dưới
cd Adafruit_Python_CharLCD
Bước 4: Bên trong thư mục sẽ có một tập tin tên là setup.py , chúng ta phải cài đặt nó, để cài đặt thư viện. Sử dụng mã sau để cài đặt thư viện
sudo python setup.py cài đặt
Đó là thư viện lẽ ra đã được cài đặt thành công. Bây giờ, tương tự, hãy tiến hành cài đặt thư viện DHT cũng từ Adafruit.
Bật giao diện một dây trong Pi
Vì cảm biến DS18B20 giao tiếp thông qua phương pháp Một dây, chúng tôi phải bật giao tiếp một dây trên Pi bằng cách làm theo các bước dưới đây.
Bước 1: - Mở dấu nhắc Lệnh và sử dụng lệnh dưới đây để mở tệp cấu hình
sudo nano /boot/config.txt
Bước 2: - Bên trong tệp cấu hình, thêm dòng “ dtoverlay = w1-gpio ” (bao quanh trong hình bên dưới) và lưu tệp như hình dưới đây
Bước 3: - Sử dụng Ctrl + X để thoát và lưu tệp bằng cách nhấn “Y” rồi nhấn phím Enter. Cuối cùng khởi động lại Pi bằng lệnh
khởi động lại sudo
Bước 4: - Sau khi khởi động lại, mở lại terminal và nhập các lệnh sau.
sudo modprobe w1– gpio sudo modprobe w1-therm. cd / sys / bus / w1 / devices ls
Cửa sổ đầu cuối của bạn sẽ hiển thị một cái gì đó như thế này
Bước 5: - Vào cuối bước 4 khi bạn nhập ls , số pi của bạn sẽ hiển thị một số duy nhất, con số này sẽ khác nhau đối với mỗi người dùng, dựa trên cảm biến, nhưng sẽ luôn bắt đầu bằng 28-. Trong trường hợp của tôi, số là 28-03172337caff .
Bước 6: - Bây giờ chúng ta có thể kiểm tra xem cảm biến có hoạt động hay không bằng cách nhập các lệnh sau
cd 28-XXXXXXXXXXXX.find ('t =') # tìm "t =" trong dòng nếu trimmed_data! = -1: temp_string = lines #trim chỉ khoảng cách với giá trị nhiệt độ temp_c = float (temp_string) / 1000.0 # chia giá trị 1000 để nhận giá trị thực trả về temp_c # quay lại giá trị để in trên màn hình LCD
Các dòng biến được sử dụng để đọc các dòng bên trong tệp. Sau đó, các dòng này được so sánh và tìm kiếm ký tự “t =” và giá trị sau ký tự đó được lưu trong biến temp_string . Cuối cùng để lấy giá trị nhiệt độ, chúng ta sử dụng biến temp_c, trong đó chúng ta chia giá trị chuỗi cho 1000. Cuối cùng trả về biến temp_c là kết quả của hàm.
Bên trong vòng lặp while vô hạn, chúng ta chỉ cần gọi hàm đã xác định ở trên để lấy giá trị của nhiệt độ và hiển thị nó trên màn hình LCD. Chúng tôi cũng xóa màn hình LCD cứ sau 1 giây để hiển thị giá trị cập nhật.
while 1: #Infinite Loop lcd.clear () # Xoá màn hình LCD lcd .message ('Temp =%.1f C'% get_temp ()) # Hiển thị giá trị thời gian nhiệt độ.sleep (1) # Chờ trong 1 giây sau đó cập nhật các giá trị
Đầu ra / Làm việc
Như mọi khi, mã python hoàn chỉnh được cung cấp ở cuối trang, hãy sử dụng mã và biên dịch nó trên Raspberry Pi của bạn. Thực hiện kết nối như thể hiện trong sơ đồ mạch và trước khi thực hiện chương trình, hãy đảm bảo rằng bạn đã làm theo các bước trên để cài đặt các tệp tiêu đề LCD và kích hoạt giao tiếp một dây trên pi. Sau khi hoàn tất, chỉ cần thực thi chương trình, nếu mọi thứ hoạt động như mong đợi, bạn sẽ có thể nhận thấy văn bản giới thiệu. Nếu không điều chỉnh chiết áp tương phản cho đến khi bạn nhìn thấy thứ gì đó. Kết quả cuối cùng sẽ giống như sau.
Hy vọng bạn đã hiểu dự án và không gặp vấn đề gì khi xây dựng nó. Nếu khác, hãy nêu vấn đề của bạn trong phần bình luận hoặc sử dụng diễn đàn để được trợ giúp kỹ thuật hơn. Đây chỉ là một dự án giao diện, nhưng khi điều này được thực hiện, bạn có thể suy nghĩ trước bằng cách làm việc trên trạm thời tiết Raspberry Pi, trình thông báo E-mail nhiệt độ và hơn thế nữa.
Toàn bộ hoạt động của dự án cũng được hiển thị trong video dưới đây, nơi bạn có thể thấy giá trị nhiệt độ được cập nhật theo thời gian thực.