Mục lục:

Máy chủ dữ liệu nhiệt độ kép IoT: 12 bước (có hình ảnh)
Máy chủ dữ liệu nhiệt độ kép IoT: 12 bước (có hình ảnh)

Video: Máy chủ dữ liệu nhiệt độ kép IoT: 12 bước (có hình ảnh)

Video: Máy chủ dữ liệu nhiệt độ kép IoT: 12 bước (có hình ảnh)
Video: Giới thiệu về IoT siêu dễ hiểu. Học và làm việc trong ngành IoT ra sao? 2024, Tháng sáu
Anonim
Máy chủ dữ liệu nhiệt độ kép IoT
Máy chủ dữ liệu nhiệt độ kép IoT

Đây là nỗ lực đầu tiên của tôi trong việc viết một cuốn sách Có thể hướng dẫn và vì vậy hãy bình tĩnh nhé! Nếu bạn nghĩ điều này không quá tệ, thì hãy bình chọn cho tôi trong Cuộc thi Tác giả Lần đầu tiên.

Đây là dự án Lock-Down của tôi để theo dõi từ xa 2 nhiệt độ trong nhà kính, một ở mức sàn và một ở ngay dưới mái nhà. Mặc dù tôi đã sử dụng Raspberry Pi’s (RPi) trước đây, nhưng dự án này liên quan đến một số yếu tố tôi chưa sử dụng và trên đường đi, tôi đã tìm thấy một số hướng dẫn đã lỗi thời hoặc sai. Đây là bộ sưu tập kiến thức của tôi để tạo ra một màn hình nhiệt độ từ xa kép hoạt động từ Cảm biến nhiệt độ kỹ thuật số một dây Pi Zero & 2 DS18B20 + đã được thu thập trong quá trình thực hiện.

Những điều tôi học được về:

  • Cung cấp dữ liệu từ một thiết bị như một phần của Internet of Things (IoT)
  • Giao diện 1 dây với 2 thiết bị
  • Tính đa dạng
  • Dữ liệu JSON
  • Thiết lập tường lửa UFW
  • Sử dụng Freeboard.io để hiển thị dữ liệu
  • Định cấu hình RPi để tự động chạy chương trình

Có một lượng lớn dữ liệu có thể được tìm thấy bằng một tìm kiếm đơn giản về tất cả các chủ đề này, nhưng điều chưa rõ ràng là làm thế nào để kết hợp tất cả các yếu tố riêng biệt này.

Quân nhu

  • Bạn sẽ cần một Raspberry Pi (có màn hình, chuột và bàn phím để thiết lập nhưng không phải khi chạy dự án hoàn thành)
  • Kết nối Internet đang hoạt động.
  • PSU có đầu nối Micro USB
  • 2 trong số các cảm biến nhiệt độ kỹ thuật số một dây DS18B20 +. Tôi thấy Amazon là rẻ nhất
  • Điện trở 4K7 ohm hoặc tôi đã sử dụng 2 điện trở 10K ohm.
  • Bảng mạch nhỏ và một vài dây đực / cái để thử nghiệm trên băng ghế dự bị
  • Mảnh bìa nhỏ để lắp ráp cuối cùng
  • Các công cụ đơn giản để hàn và tuốt dây.
  • Hộp nhựa nhỏ để chứa thiết kế đã hoàn thiện

Bước 1: Phần cứng

Phần cứng
Phần cứng
Phần cứng
Phần cứng

Tôi đã có Raspberry Pi Zero W (có không dây) nhưng tôi chắc chắn rằng dự án đơn giản này sẽ chạy tốt trên bất kỳ RPI nào. Hộp các bit điện tử lẻ trong xưởng của tôi có mọi thứ khác (breadboard, dây, PSU, v.v.) và vì vậy tất cả những gì tôi phải mua là hai cảm biến 2 x DS18B20 từ Amazon. Đây là những con chip DS18B20 bình thường chỉ cần gắn thuận tiện trong một vỏ chống thấm nước và dây cáp dài 3m. Có 3 dây từ cáp:

  • Màu đỏ - nguồn - kết nối với chân 3.3v 1
  • Đen - trở lại - kết nối với chân nối đất 6
  • Màu vàng - dữ liệu - kết nối với chân GPIO4 7

Các cảm biến sử dụng giao diện 1-Wire và rất dễ dàng kết nối và lấy dữ liệu từ đó. Có một số trang trên Web có thông tin chi tiết về kết nối của 1 thiết bị nhưng rất ít về kết nối 2 (hoặc nhiều hơn).

Để thử nghiệm trên băng ghế dự bị, mạch được lắp ráp bằng breadboard. Các hướng dẫn tôi tìm thấy đã nêu sử dụng điện trở 4K7 để phân bổ đường dữ liệu, nhưng tôi không thể tìm thấy một điện trở nào và vì vậy tôi đã sử dụng 2 * 10K song song và nó hoạt động tốt. Có rất nhiều tài nguyên trên Web để sử dụng breadboard để lắp ráp mạch RPi và vì vậy tôi sẽ không nhắc lại chúng ở đây.

Sơ đồ được tạo bằng Sơ đồ mạch

Bước 2: Thiết lập phần mềm hệ điều hành Raspberry Pi

Thiết lập phần mềm hệ điều hành Raspberry Pi
Thiết lập phần mềm hệ điều hành Raspberry Pi
Thiết lập phần mềm hệ điều hành Raspberry Pi
Thiết lập phần mềm hệ điều hành Raspberry Pi
Thiết lập phần mềm hệ điều hành Raspberry Pi
Thiết lập phần mềm hệ điều hành Raspberry Pi

Như tôi đã sử dụng RPi này trước đây, tôi quyết định bắt đầu cài đặt hệ điều hành sạch sẽ, tôi định dạng lại thẻ SD và cài đặt phiên bản NOOBS sạch. Sau đó, tôi đã cài đặt phiên bản Raspian dành cho máy tính để bàn đầy đủ (tùy chọn hàng đầu) vì điều này cũng sẽ cài đặt PIP & GIT mà phiên bản lite không có. Mặc dù tôi không cần Giao diện người dùng đồ họa (GUI) cho dự án, nhưng đây là một cách dễ dàng để thiết lập tất cả các tùy chọn và với thẻ SD 16gb thì không thiếu dung lượng.

Tôi thiết lập quyền truy cập WI-FI sau đó chạy cài đặt đầy đủ và sau đó chạy trình hướng dẫn với các bản cập nhật và nâng cấp, v.v. Sử dụng GUI, tôi thiết lập RPI khi cần thiết chỉ vì sử dụng GUI đơn giản hơn Giao diện dòng lệnh (CLI). Tôi đã đi đến cửa sổ cấu hình từ menu và sau đó:

  • Trên tab hệ thống, tôi đã thay đổi mật khẩu, đặt khởi động thành CLI và bỏ chọn Tự động đăng nhập
  • Trên tab giao diện, tôi đã bật 1 dây
  • Nhấp vào ok và khởi động lại

Nếu bạn cần quay lại GUI bất kỳ lúc nào, chỉ cần nhập startx tại CLI

startx

Bước 3: Thiết lập tính năng dữ liệu để cho phép truy cập từ xa

Thiết lập tính đa dạng để cho phép truy cập từ xa
Thiết lập tính đa dạng để cho phép truy cập từ xa
Thiết lập tính đa dạng để cho phép truy cập từ xa
Thiết lập tính đa dạng để cho phép truy cập từ xa
Thiết lập tính đa dạng để cho phép truy cập từ xa
Thiết lập tính đa dạng để cho phép truy cập từ xa

Tôi đã tìm thấy một mục blog thực sự hữu ích trên trang Datapionaire tại https://blog.datapionaire.com/how-to-build-a-raspb… và đã sử dụng một vài phần của điều này. Phần 3 của blog mô tả việc thiết lập Tính đa dạng để truy cập từ xa vào RPi. Tôi chưa bao giờ sử dụng Datapionaire trước đây, nhưng phải nói rằng, tôi khuyên bạn nên sử dụng nó như một công cụ truy cập từ xa rất đơn giản. Mặc dù ảnh chụp màn hình (trong blog ở trên) hơi lỗi thời, nhưng nguyên tắc vẫn ổn.

Trên PC của bạn, hãy truy cập Datapionaire.com và tạo một tài khoản (bạn có thể sử dụng trình duyệt trong GUI, nhưng khá chậm trên RPi Zero). Sau đó nhấp vào nút “thêm thiết bị mới” và một dòng mã được hiển thị trong cửa sổ bật lên. Sau đó, chuyển đến CLI trên RPi và nhập dòng văn bản. Nếu tất cả đều ổn, logo Datapionaire sẽ hiển thị và chương trình cài đặt sẽ chạy.

Trở lại PC của bạn, thiết bị mới bây giờ sẽ xuất hiện trên trang web Datapionaire. Nhấp vào thiết bị và bạn sẽ thấy màn hình đầu cuối cho RPi của mình.

Có một số điều cần lưu ý ở đây:

  • Để đăng nhập, hãy nhập "su pi" (để truy cập siêu người dùng) và bạn sẽ được nhắc nhập mật khẩu (như đã đặt trước đó)
  • Bạn cần kích hoạt Wormhole (sẽ được sử dụng sau này)
  • Bạn sẽ cần địa chỉ Wormhole để hiển thị dữ liệu sau này (nhấp chuột phải để sao chép khi cần)

Bạn có thể sử dụng quyền truy cập từ xa này cho tất cả các bước sau và việc sao chép dữ liệu, chương trình, v.v. dễ dàng hơn nhiều so với trực tiếp trên RPi.

Bước 4: Kiểm tra cảm biến

Bây giờ bạn có thể sử dụng Datapionaire để truy cập từ xa vào RPI cho tất cả các phần tiếp theo.

Nếu tất cả hiện đã được kết nối ổn, bạn sẽ có thể thấy nhiệt độ được trả về từ DS18B20’s. Tôi đã làm việc thông qua hướng dẫn Pi Hut nhưng hầu hết điều này là không bắt buộc. Nếu bạn muốn biết chi tiết đầy đủ có thể tìm thấy chúng tại đây:

Các bit quan trọng là truy cập thư mục thiết bị và đảm bảo 2 cảm biến khác nhau được hiển thị.

cd / sys / bus / w1 / devices /

Điều này sẽ hiển thị 2 thiết bị bắt đầu bằng 28- và bus chính. Chương trình của tôi:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

2 số ID này rất quan trọng và sau này sẽ cần đến! Sau đó, thay đổi thành một trong các thư mục cảm biến:

cd 28-011453ebfdaa

(ví dụ) và sau đó để đọc giá trị từ cảm biến

mèo w1_slave

Phải có 2 dòng văn bản được hiển thị:

53 01 4b 46 7f ff 0c 10 2d: crc = 2d CÓ

53 01 4b 46 7f ff 0c 10 2d t = 21187

YES cho thấy cảm biến đang đọc chính xác và 21187 hiển thị nhiệt độ theo độ C là 21,187 (chia cho 1000) Lặp lại điều này để kiểm tra cảm biến thứ hai. Nếu cả hai đều đọc ok thì chúng ta có thể chuyển sang đọc dữ liệu bằng Python3.

Tôi đã sao chép và điều chỉnh đoạn mã sau mà tôi tìm thấy trên Web nhưng tôi không thể nhớ từ đâu. Nếu điều này trông giống như mã của bạn, thì tôi xin lỗi vì không có ý định đạo văn; xin vui lòng cho tôi biết và tôi sẽ ghi nhận công việc của bạn.

Tạo một thư mục có tên là các dự án và thay đổi thành thư mục đó.

mkdir ~ / dự án

cd ~ / dự án

Trong thư mục này, hãy sử dụng trình soạn thảo văn bản (nano) để tạo và chỉnh sửa tệp có tên là thermo-test.py

sudo nano thermo-test.py

Điều này đáng lẽ phải mở trình chỉnh sửa và khi bạn đang sử dụng Datapionaire, bạn có thể chỉ cần sao chép đoạn mã sau bên dưới (thermo-test.py) và dán vào trình chỉnh sửa. Bạn sẽ cần phải thay đổi 2 tên thiết bị (bắt đầu từ 28-…) thành những tên đã lưu ý ở trên. Khi tất cả đều chính xác, nhấn ctrl + X để hoàn tất, Y để lưu & quay lại sử dụng tên hiện có. Nếu bạn thích sử dụng GUI thì Thonny cũng sẽ làm như vậy.

Để chạy chương trình thử nghiệm:

sudo python3 thermo-test.py

Tất cả đều ổn, điều này sẽ thực thi tệp bằng python 3 và in ra màn hình nhiệt độ 2 sau mỗi 10 giây. Bạn có thể kiểm tra tất cả đều ổn bằng cách đặt 1 cảm biến vào nước đá hoặc làm ấm nhẹ bằng máy sấy tóc. Nếu tất cả đều ổn, thì chúng ta có thể tiếp tục!

Bước 5: Tường lửa UFW

Tường lửa UFW
Tường lửa UFW

Vì RPi này sẽ được kết nối vĩnh viễn với internet nên tôi quyết định Tường lửa sẽ là một ý tưởng hay và một cái đơn giản để sử dụng là Tường lửa không phức tạp (ufw). Có một hướng dẫn rất đơn giản ở đây

Tôi không đi sâu vào vì đây không phải là mục đích của Sách hướng dẫn này, nhưng nói ngắn gọn là:

Cài đặt tường lửa với:

sudo apt-get install ufw

Đặt các quy tắc mặc định:

sudo ufw mặc định cho phép gửi đi

sudo ufw mặc định từ chối đến

Mở cổng 80 cho Datapionaire

sudo ufw allow 80

Bật tường lửa

sudo ufw kích hoạt

Kiểm tra trạng thái và đảm bảo rằng tất cả đều đang chạy

tình trạng sudo ufw

Bước 6: S kết thúc Dữ liệu nhiệt độ dưới dạng JSON

S kết thúc Dữ liệu nhiệt độ dưới dạng JSON
S kết thúc Dữ liệu nhiệt độ dưới dạng JSON

Quay lại blog của Tim Fernando và phần 5.

Thực hiện theo các bước như đã nêu (ngoại trừ chúng tôi đã tạo thư mục dự án) và tất cả sẽ hoạt động tốt. Sử dụng GIT, bạn sẽ tải xuống các tệp ứng dụng của Tim và PIP sẽ đảm bảo tất cả các chương trình cần thiết được cài đặt vào RPi của bạn. Sau đó, tôi thấy mình cần khởi động lại để đảm bảo rằng tất cả các gói đều được thiết lập chính xác.

Sau đó, chạy chương trình của Tim và khi đó RPi của bạn sẽ cung cấp dữ liệu JSON cho cảm biến đầu tiên.

cd nhà / pi / dự án / nhiệt độ-phục vụ-pi

nhiệt độ sudo gunicorn: app -b 0.0.0.0:80

Bạn có thể tiếp tục blog đến phần 6, nơi bạn sẽ thấy dữ liệu đang được cung cấp cho 1 trong các cảm biến.

Bạn cũng có thể sử dụng JSON Viewer để xem dữ liệu https://codebeautify.org/jsonviewer Nhấp vào nút “tải URL” và dán vào địa chỉ Wormhole đã lưu ý trước đó. Trong ngăn bên trái, bạn sẽ thấy hai mục nhập, một cho độ C và một cho độ F.

Bước 7: Gửi dữ liệu từ cả hai cảm biến

Gửi dữ liệu từ cả hai cảm biến
Gửi dữ liệu từ cả hai cảm biến

Dựa trên mã trong Temperature.py và thermo-test.py, tôi đã tạo 2temps.py Đã chỉnh sửa như trước trong thư mục /DA / nhiệt độ-phục vụ-pi, được dán vào mã và lưu. Sau đó tôi đã chạy

sudo gunicorn 2temps: app -b 0.0.0.0:80

Bây giờ khi tôi chạy lại Trình xem JSON, tôi nhận được các giá trị cho temp1 và temp2

Sự thành công:)

Bước 8: Tự động bắt đầu

Tự động bắt đầu
Tự động bắt đầu

Khi nguồn điện của nhà kính thỉnh thoảng bị ngắt, tôi muốn RPi tự động tải chương trình và bắt đầu chứng minh dữ liệu. Cách đơn giản nhất dường như là chỉnh sửa tệp rc.local và thêm mã bắt buộc ở dưới cùng ngay trên dòng thoát 0.

cd vv

sudo nan rc.local

sau đó bổ sung

ngủ 10

cd home / pi / project / Temperature-serve-pi sudo gunicorn temp04: app -b 0.0.0.0:80 &

  • Dấu & ở cuối yêu cầu máy tính chạy tập lệnh trong trình bao phụ để máy tính của bạn không đợi chức năng kết thúc và sẽ tiếp tục khởi động
  • Ngủ 10 [giây] đảm bảo rằng tất cả các thao tác trước đó đã hoàn thành trước khi bắt đầu dịch vụ.

Thoát và lưu như trước. Sau đó khởi động lại và chạy lại JSON Viewer để kiểm tra tất cả đều ổn.

Nếu bạn muốn biết thêm thông tin về các chương trình tự động chạy, có một hướng dẫn tuyệt vời ở đây

Bước 9: Hiển thị dữ liệu trên Freeboard.io (1)

Hiển thị dữ liệu trên Freeboard.io (1)
Hiển thị dữ liệu trên Freeboard.io (1)

Tóm lại, các bước trong blog của Tim hoạt động tốt; tạo một tài khoản tại www.freeboard.io và sau đó tạo một Freeboard mới, tôi gọi là SHEDTEMPERATURES của tôi.

Đầu tiên, thêm nguồn dữ liệu, nhấp vào THÊM ở trên cùng bên phải và từ cửa sổ bật lên, chọn JSON làm loại, đặt TÊN cho nguồn dữ liệu, thêm địa chỉ lỗ sâu từ trước đó làm URL và nhấp KHÔNG để THỬ THINGPROXY. Nhiệt độ chỉ thay đổi rất chậm và vì vậy LÀM LẠI MỖI 15 GIÂY là ổn. Nhấp vào để lưu.

Bước 10: Hiển thị dữ liệu trên Freeboard.io (2)

Hiển thị dữ liệu trên Freeboard.io (2)
Hiển thị dữ liệu trên Freeboard.io (2)
Hiển thị dữ liệu trên Freeboard.io (2)
Hiển thị dữ liệu trên Freeboard.io (2)
Hiển thị dữ liệu trên Freeboard.io (2)
Hiển thị dữ liệu trên Freeboard.io (2)
Hiển thị dữ liệu trên Freeboard.io (2)
Hiển thị dữ liệu trên Freeboard.io (2)

Nhấp vào THÊM PANE và sau đó nhấp vào + để thêm tiện ích đầu tiên. Bạn có thể chọn và chơi với nhiều LOẠI khác nhau nhưng tôi thấy Gauge rất ổn. Đưa ra một TITLE, UNITS (C), MINIMUM và MAXIMUM phù hợp với ứng dụng của bạn. Đối với DATASOURCE, hãy nhấp vào + và nguồn được tạo ở trên sẽ xuất hiện.

Menu thả xuống bây giờ sẽ hiển thị 2 nguồn dữ liệu JSON (temp2 & temp2) được tạo trước đó. Chọn nguồn thích hợp và nhấp vào lưu.

Lặp lại điều này cho thước đo thứ hai và chúng ta đã sẵn sàng.

Dữ liệu bây giờ sẽ được hiển thị trên 2 đồng hồ đo và nếu bạn vẫn kết nối PRi với màn hình, bạn sẽ thấy các yêu cầu từ Freeboard.io khi chúng đến.

Bước 11: Xây dựng dự án thành một hộp

Xây dựng dự án thành một hộp
Xây dựng dự án thành một hộp
Xây dựng dự án thành một hộp
Xây dựng dự án thành một hộp
Xây dựng dự án thành một hộp
Xây dựng dự án thành một hộp
Xây dựng dự án thành một hộp
Xây dựng dự án thành một hộp

Cho đến thời điểm này, RPi và các thành phần khác đã được lắp ráp trên băng ghế bằng cách sử dụng một breadboard. Sau đó, một mảnh bìa nhỏ đã được sử dụng để thay thế breadboard và tất cả các dây dẫn đều được hàn vào đúng vị trí.

Một hộp lưu trữ Lego nhỏ màu hồng sáng được tìm thấy có nhiều không gian và nơi RPI sẽ không quá nóng. Các lỗ đã được khoan vào các cạnh của hộp và các trụ gắn nylon 3mm được sử dụng để giữ RPi và tấm bìa cứng vào đúng vị trí.

Chỉ có 3 kết nối được yêu cầu từ GPIO, 3.3v, GND & dữ liệu.

  • Chân 3.3vdc 1
  • GND pin 6
  • Dữ liệu (GPIO4) pin 7

Các lỗ cũng được thêm vào trong hộp để cấp nguồn USB và cáp cho cảm biến nhiệt độ. Khi mọi thứ đã được gắn vào đúng vị trí, một lượng nhỏ keo silicon đã được thêm vào để đảm bảo lũ nhện không nghĩ rằng đó là một nơi ấm áp tuyệt vời để trải qua mùa đông!

Bước 12: Hoàn thành

Hoàn thành
Hoàn thành
Hoàn thành
Hoàn thành

Hộp được đặt trong nhà kính và được cấp nguồn từ bộ sạc USB. Hai cảm biến được đặt một cái gần đỉnh nhà kính và cái kia đặt trên chậu cây để kiểm tra độ lạnh của cây con vào ban đêm.

Đây là tài liệu hướng dẫn đầu tiên của tôi và tôi hy vọng bạn nghĩ rằng nó ổn. Nếu bạn tìm thấy bất kỳ lỗi nào, vui lòng cho tôi biết và tôi sẽ sửa đổi nếu cần thiết. Bước tiếp theo có thể là ghi dữ liệu sau mỗi (giả sử) 60 giây, nhưng điều này sẽ đến sau.

Đề xuất: