Mục lục:

TheAir - Dự án cảm biến khí: 10 bước
TheAir - Dự án cảm biến khí: 10 bước

Video: TheAir - Dự án cảm biến khí: 10 bước

Video: TheAir - Dự án cảm biến khí: 10 bước
Video: Thanh Niên Có Siêu Năng Lực Điều Khiển Bằng C.ủ Kho.ai | Review Phim 2024, Tháng bảy
Anonim
TheAir - Dự án cảm biến khí
TheAir - Dự án cảm biến khí

Carbon monoxide và carbon dioxide, còn được gọi là CO và CO2. Khí không màu, không mùi, không vị và rất nguy hiểm khi ở nồng độ cao trong phòng kín. Ví dụ, nếu bạn đang sống trong một căn phòng sinh viên bị cách ly tồi tệ, không có luồng không khí tốt và vì một lý do nào đó, máy nướng bánh mì phát ra tiếng ồn kỳ lạ trong khi nướng bánh mì. Sau đó, bạn có thể tiếp xúc với những khí này và khi điều đó xảy ra, hãy hy vọng nó chỉ kết thúc bằng một cơn đau đầu nhỏ, vì khi tập trung cao độ, nó có thể bị bất tỉnh hoặc thậm chí giết chết bạn (mặc dù rất hiếm).

Vì vậy, tôi quyết định đưa ra dự án này. Ý tưởng của tôi rất đơn giản, sử dụng quạt để tạo luồng không khí. Có thể nói, không khí tốt vào và không khí xấu ra. Để có thêm tiện ích, tôi đã thêm một cảm biến nhiệt độ bổ sung, nút cho quạt kích hoạt thủ công và cũng có một trang web cho những người thích xem số liệu thống kê và / hoặc kích hoạt quạt từ máy tính của họ.

Là sinh viên, phụ huynh, người độc thân hoặc đang sống. Đây là điều bạn thường muốn tránh khi sống trong sự thoải mái trong ngôi nhà của mình. Điều này giúp những người thích cuộc sống của họ dễ dàng hơn một chút.

Quân nhu

  • Raspberry Pi 3+
  • Bộ sạc mini-usb 5V / 2.5A
  • Thẻ micro SD
  • Cảm biến

    • MQ-7 (CO)
    • MQ-135 (CO2)
    • DS18B20 (nhiệt độ)
  • 2 x quạt DC 12V
  • 2 x 2n2222 bóng bán dẫn
  • Màn hình LCD 16 * 2
  • Nút bấm
  • MCP3008
  • Công cụ chuyển đổi mức logi
  • Cáp Ethernet (vì lý do thiết lập)

Bước 1: Thiết lập Raspberry Pi

Thiết lập Raspberry Pi
Thiết lập Raspberry Pi
Thiết lập Raspberry Pi
Thiết lập Raspberry Pi

Trước khi làm việc với Rpi, chúng ta sẽ cần một số phần mềm.

  • WinSCP hoặc FilleZilla (tùy chọn nếu bạn muốn chuyển tệp từ máy tính của mình sang Rpi)
  • Đĩa Win32 hoặc Etcher (bạn thích hơn)
  • Putty hoặc MobaXterm (bạn thích hơn)
  • Hình ảnh Raspbian với máy tính để bàn

Trước khi bắt đầu, tôi muốn đề cập rằng khi thực hiện hướng dẫn này, khi tôi chọn một chương trình hơn chương trình khác, KHÔNG có nghĩa là tôi đề xuất nó. Ví dụ, tôi thích sử dụng etcher vì thân thiện với người dùng hơn nhưng Win32 có tùy chọn tạo bản sao lưu. Bây giờ điều đó nằm ngoài hệ thống của tôi, hãy bắt đầu.

Nếu bạn đã có Rpi được kết nối với mạng wifi của mình, hãy chuyển sang bước 3.

Đầu tiên, chúng tôi sẽ sử dụng Etcher để đưa hình ảnh Raspbian vào thẻ sd của bạn. Bây giờ trước khi rút thẻ sd ra, chúng ta sẽ thay đổi một số "thứ" trong tệp cmdline.txt, có thể được tìm thấy trong hình ảnh. Mở tệp.txt -> Thêm dòng này "ip = 169.254.10.1" (không có dấu ngoặc kép) vào cuối dòng (tất cả trên 1 dòng) -> Lưu tệp

Thứ hai, tạo một thư mục trống có tên "ssh" trong phân vùng khởi động (không có dấu ngoặc kép).

Sau đó, bạn có thể tháo Microsd ra một cách an toàn và đặt nó vào Rpi.

Lý do cho IP tĩnh được mã hóa cứng là để kết nối với Rpi dễ dàng hơn. Nếu vì lý do nào đó mà Rpi không có ip với DHCP thì bạn dễ dàng sử dụng ip tĩnh.

Bước 2: Tạo kết nối và kết nối Rpi không dây với mạng cục bộ của bạn

Tạo kết nối và kết nối Rpi không dây với mạng cục bộ của bạn
Tạo kết nối và kết nối Rpi không dây với mạng cục bộ của bạn
Tạo kết nối và kết nối Rpi không dây với mạng cục bộ của bạn
Tạo kết nối và kết nối Rpi không dây với mạng cục bộ của bạn
Tạo kết nối và kết nối Rpi không dây với mạng cục bộ của bạn
Tạo kết nối và kết nối Rpi không dây với mạng cục bộ của bạn
Tạo kết nối và kết nối Rpi không dây với mạng cục bộ của bạn
Tạo kết nối và kết nối Rpi không dây với mạng cục bộ của bạn

Chúng ta sẽ khởi động Rpi -> kết nối cáp ethernet giữa máy tính và Rpi.

  1. Bắt đầu Putty và điền vào đây:

    • Tên máy chủ (hoặc địa chỉ IP): 169.254.10.1
    • Cảng: 22
  2. Một thiết bị đầu cuối bật lên và bạn nhập tên người dùng và mật khẩu mặc định:

    • Tên người dùng: pi
    • Mật khẩu: mâm xôi

Bây giờ chúng tôi đã kết nối cục bộ với rpi, chúng tôi muốn Rpi có kết nối với wifi của bạn.

  1. Thêm: nhập "sudo raspi-config"
  2. Tại đây, bạn sẽ cần thay đổi mật khẩu cho người dùng pi (lý do an toàn)
  3. Sau đó, vào Tùy chọn bản địa hóa -> Thay đổi thời gian (chọn đúng) -> Sau đó vào Quốc gia Wifi -> chọn quốc gia.
  4. Đóng raspi-config và khởi động lại.
  5. Khi đã đăng nhập, hãy tạm thời tạo cho mình người dùng root -> sudo -i
  6. Viết lệnh này để thêm mạng của bạn vào Rpi (mã bên dưới danh sách)

    • password = "password" (có dấu ngoặc kép)
    • Tên mạng = "SSID"
    • Hãy nhớ sử dụng double >>! Important!

echo "mật khẩu" | wpa_passphrase "SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Bây giờ khởi động lại một lần nữa

Khi kết nối lại, hãy kiểm tra ip của bạn bằng cách gõ:

ifconfig

và kiểm tra wlan0, bên cạnh inet.

Bây giờ chúng ta có kết nối internet, hãy thực hiện cập nhật "nhanh chóng".

cập nhật apt sudo

sudo apt dist-upgrade -y

Điều này có thể mất một thời gian.

Bước 3: Cảm biến DS18B20 (nhiệt độ) - 1 dây

Cảm biến DS18B20 (nhiệt độ) - 1 dây
Cảm biến DS18B20 (nhiệt độ) - 1 dây
Cảm biến DS18B20 (nhiệt độ) - 1 dây
Cảm biến DS18B20 (nhiệt độ) - 1 dây

Với mọi dự án, luôn có điều gì đó đặc biệt phải được thực hiện nếu không nó sẽ không hoạt động trong giây lát.

Lần này chúng tôi có nó với cảm biến nhiệt độ DS18B20 yêu cầu 1 dây mà tôi sẽ không giải thích tại sao nhưng tôi sẽ giải thích cách làm cho nó hoạt động ít nhất.

Đối với điều này, chúng ta phải quay lại cấu hình raspi trên Rpi, màn hình màu xanh lam đẹp.

  1. Chuyển đến tùy chọn Interfacing
  2. Chọn 1-Wire và chọn bật.

Xong…

Chỉ đùa thôi.

Bây giờ chúng ta sẽ cần điều chỉnh /boot/config.txt

sudo nano /boot/config.txt

Thêm dòng này ở dưới cùng.

# Bật onewire

dtoverlay = w1-gpio

Bây giờ sudo khởi động lại thứ đó và bây giờ chúng ta đã hoàn tất.

Để kiểm tra xem nó có hoạt động hay không, hãy kết nối cảm biến với Rpi sau đó quay lại thiết bị đầu cuối và nhập mã này (Xem bước tiếp theo Phần cứng về cách kết nối cảm biến nhiệt độ).

cd / sys / bus / w1 / devices / w1_bus_master1

ls

Bạn sẽ thấy thứ gì đó có số và chữ cái màu xanh đậm ở trên cùng bên trái, hãy nhớ viết phần thông tin này để sau này khi chúng ta làm việc với mã từ github.

Nếu vì lý do nào đó mà nó không hoạt động, hãy kiểm tra liên kết này để đi sâu hơn vào nó.

Bước 4: MCP3008 - Cảm biến tương tự

MCP3008 - Cảm biến tương tự
MCP3008 - Cảm biến tương tự
MCP3008 - Cảm biến tương tự
MCP3008 - Cảm biến tương tự

Khi chúng tôi thực hiện thay đổi cho cảm biến nhiệt độ, chúng tôi cũng cần thực hiện một số thay đổi cho các cảm biến khác vì chúng cần đọc trong dữ liệu tương tự. Điều này giúp MCP3008 có ích, chúng ta cũng cần thay đổi giao diện SPI.

sudo raspi-config

Vào Tùy chọn Giao diện -> Chọn SPI -> bật.

Sau đó Kết thúc.

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

Chúng tôi không hoàn toàn thực hiện với Rpi nhưng đủ để chúng tôi có thể bắt đầu xây dựng và kết hợp phần cứng lại với nhau.

Một số lời khuyên là hãy kiểm tra kỹ lưỡng các kết nối của bạn khi xây dựng để đảm bảo rằng bạn không… làm nổ Rpi.

Ngoài ra, trong Schematic, bạn sẽ nhận thấy một số thành phần chỉ nằm trên nó một lần mặc dù chúng ta sẽ làm việc với nhiều hơn 1 thành phần giống nhau. Nó chỉ có nghĩa là bạn phải lặp lại quá trình xây dựng 1 thành phần tương tự. Có 1 ngoại lệ nhỏ, các cảm biến mq-x không cần thêm bộ chuyển đổi mức hoặc MCP3008. Chỉ cần thêm một cáp màu xanh lá cây bổ sung (bằng pdf) vào bộ chuyển đổi mức và MCP3008.

Chỉnh sửa bổ sung: Các quạt cần sử dụng bóng bán dẫn làm công tắc. Tôi sử dụng một bóng bán dẫn 2n2222A cho 1 quạt, vì 2 quạt có thể là tải nặng.

Nếu bạn có một bóng bán dẫn có thể xử lý dòng điện lớn hơn thì tốt, hãy bỏ qua phần cuối cùng của bước này.

Nếu bạn không có một cái giống như tôi, thì bạn sẽ cần phải làm như thế này, 1 quạt = 1 bóng bán dẫn, 2 quạt = 2 bóng bán dẫn, v.v. (mỗi quạt là bóng bán dẫn + diode riêng như trong pdf).

Bạn cũng sẽ cần thêm một số mã vào app.py trong backend_project sau này ở Bước 7: Mã Git….

Bước 6: Tạo cơ sở dữ liệu Mariadb

Tạo một cơ sở dữ liệu Mariadb
Tạo một cơ sở dữ liệu Mariadb

Như tiêu đề của nó, chúng tôi sẽ tạo một cơ sở dữ liệu để chúng tôi có nơi lưu trữ dữ liệu cảm biến của mình.

Trước tiên, hãy tải xuống Mariadb trên Rpi.

sudo apt-get install mariadb-server

Sau khi cài đặt, chúng ta hãy sử dụng nó.

gốc mysql -u

Mật khẩu trống, vì vậy không có gì để nhập. Nhấn nút Enter.

Hãy tạo một người dùng ngay bây giờ.

TẠO NGƯỜI DÙNG 'người dùng' @ '%' ĐƯỢC XÁC ĐỊNH BỞI 'userdb';

CẤP TẤT CẢ CÁC QUYỀN RIÊNG TƯ BẬT *. * CHO 'người dùng' @ '%' VỚI TÙY CHỌN CẤP;

QUYỀN RIÊNG TƯ CỦA FLUSH;

Nhấn Ctrl + C để thoát và khởi động lại nhanh dịch vụ:

khởi động lại dịch vụ sudo mysql

Đăng nhập bằng tên người dùng: user & password: userdb:

mysql -u người dùng -p

Đã đến lúc tạo cơ sở dữ liệu.

TẠO CƠ SỞ DỮ LIỆU project_db BỘ ĐẶC TRƯNG ĐỊNH MỨC utf8;

SỬ DỤNG project_db

Tạo một bảng "historiek" (có nghĩa là lịch sử).

TẠO BẢNG NẾU KHÔNG TỒN TẠI `historiek` (` id` INT NOT NULL AUTO_INCREMENT, `sensorID` VARCHAR (5) NOT NULL,` datum` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `waarde` FLOAT (4) NULL DEFAULT 0, PRIMARY KEY (` id`)) ENGINE = InnoDB;

Và thì đấy, cơ sở dữ liệu đã được tạo ra.

Bước 7: Mã Github và Kiểm tra

Mã Github và Thử nghiệm
Mã Github và Thử nghiệm

Chúng tôi sắp kết thúc dự án của mình.

Trước khi chúng tôi nhận được mã, chúng tôi sẽ cần nhập một số mô-đun vào Rpi:

pip3 cài đặt Flask_MySQL

pip3 cài đặt flask-socketio

pip3 cài đặt -U bình-cors

pip3 cài đặt spidev

Bây giờ chúng ta cần mã để làm cho nó hoạt động, hãy nhập vào thiết bị đầu cuối:

git clone

Kiểm tra xem thư mục có ở đó với:

ls

Bây giờ bạn sẽ cần 2 thiết bị đầu cuối, vì vậy sẽ rất tiện khi nhấp chuột phải vào thiết bị đầu cuối và nhấp vào Phiên bản sao:

Đi tới backend_project và nhiệt độ bằng lệnh cd.

Bây giờ trước khi chúng tôi khởi động các chương trình cho mục đích thử nghiệm. Bạn có còn nhớ Bước 3 với cảm biến 1 dây nơi bạn cần viết ra một số con số không? Đừng lo lắng nếu bạn có, chỉ cần xem nhanh bước 3 một lần nữa.

Chúng tôi sẽ thêm những con số này vào mã vì nó sẽ cần biết cảm biến chính xác khi sử dụng nó.

Đầu cuối với thư mục nhiệt độ, bạn sẽ tìm thấy app.py. Chúng tôi sẽ mở nó.

sudo nano app.py

Hãy tìm hàm có tên "def temperatuur ():", ở đó bạn sẽ phải thay thế "**" bằng các số bạn đã viết lên. Trong trường hợp của tôi, tôi sẽ lấy nó dòng mã này (mỗi số là duy nhất).

sensor_file_name = '/ sys / devices / w1_bus_master1 / 28-0316a4be59ff / w1_slave

Thời gian thử nghiệm. Cả hai thiết bị đầu cuối trong cả backend_project và thư mục nhiệt độ, hãy nhập:

python3 app.py

Bây giờ hãy nhớ bước 5: phần cứng nơi bạn cần thêm mã nếu bạn đang sử dụng nhiều quạt và bóng bán dẫn?

Tốt, nếu không quay lại bước 5.

Bây giờ chúng ta cần thêm mã như tôi đã đề cập vào app.py trong backend_project. Để làm cho nó dễ dàng hơn, tôi đã làm một ví dụ về điều này trong mã. Mỗi dòng mã nhận xét có "fan1" trong đó, bỏ ghi chú những dòng đó và thì đấy, bây giờ bạn có thể sử dụng 2 quạt.

Nếu bạn muốn sử dụng nhiều hơn thì chỉ cần 2 quạt, sao chép và dán cùng một mã bên dưới nó nhưng với một số khác. Bất lợi của việc này là bạn phải làm việc cá nhân nhiều hơn và ít gpio.pins hơn. Không có lợi thế nào cho điều này mà tôi biết.

Bước 8: Chạy mã khi khởi động

Chạy mã khi khởi động
Chạy mã khi khởi động

Chúng tôi muốn 2 tập lệnh python này chạy ngay khi Rpi của chúng tôi khởi động và trong trường hợp tập lệnh gặp sự cố, nó sẽ tự khởi động lại. Để làm điều này, chúng tôi sẽ thực hiện 2 dịch vụ.

Để làm điều này, hãy nhập:

sudo nano /etc/systemd/system/tempeosystem.service

Sao chép và dán cái này cho một nhiệt độ.service:

[Đơn vị] Mô tả = Dịch vụ Nhiệt độ Sau khi = multi-user.target

[email protected]

[Dịch vụ] Loại = đơn giản

ExecStart = / usr / bin / python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/tempeosystem/app.py

StandardInput = tty-force

Khởi động lại = khi không thành công

RestartSec = 60 giây

[Cài đặt]

WantedBy = multi-user.target

Đóng và làm lại nhưng sau đó đối với backend_project.service:

Văn bản mở đầu tiên:

sudo nano /etc/systemd/system/backend_project.service

Sau đó, một lần nữa sao chép và dán:

[Unit] Description = backend_project Service

After = multi-user.target

[Dịch vụ]

Loại = đơn giản

ExecStart = / usr / bin / python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/backend_project/app.py

StandardInput = tty-force

Khởi động lại = khi không thành công

RestartSec = 60 giây

[Cài đặt]

WantedBy = multi-user.target

Lưu và đóng.

Phần cuối cùng là gõ cái này:

sudo systemctl daemon-tải lại

sudo systemctl kích hoạt nhiệt độ.service sudo khởi động lại

Bây giờ 2 tập lệnh python của chúng tôi sẽ tự động chạy khi khởi động.

Bước 9: Thiết lập trang web

Khi bạn tải xuống kho lưu trữ, bạn cũng nên có một thư mục được gọi là front. Đây là nơi chứa nội dung của trang web.

Đầu tiên chúng ta cần apache trước khi có thể sử dụng thư mục. Làm theo hướng dẫn trên liên kết này cho apache.

Khi bạn sẵn sàng. Đi tới vị trí của thư mục phía trước:

cd / Documents / nmct-s2-project-1-TheryBrian

Sau đó gõ:

sudo mv front / var / www / html

Khi điều đó hoàn tất, hãy chuyển đến thư mục html, chuẩn bị cho một số công việc tẻ nhạt (lỗi của tôi).

cd / var / www / html /

sau đó vào thư mục phía trước và bắt đầu di chuyển mọi thứ sang thư mục html.

thí dụ:

sudo mv css / var / www / html

Sau đó xóa thư mục phía trước.

Và chúng tôi đã hoàn thành mọi thứ.

Chúc may mắn:).

Bước 10: Tùy chọn - Nguyên mẫu thu nhỏ

Tùy chọn - Nguyên mẫu thu nhỏ
Tùy chọn - Nguyên mẫu thu nhỏ
Tùy chọn - Nguyên mẫu thu nhỏ
Tùy chọn - Nguyên mẫu thu nhỏ

Vì lý do thử nghiệm, tôi đã tạo một nguyên mẫu chỉ của một chiếc hộp với tất cả phần cứng bên trong để tôi có thể xem mọi thứ có hoạt động theo đơn đặt hàng hay không.

Thông thường, dự án này sẽ được thực hiện với quy mô lớn hơn. Ví dụ: một căn phòng, một ngôi nhà, một nhà máy, một cửa hàng, v.v.

Nhưng rõ ràng là trước khi chúng ta bắt đầu tạo lỗ trên tường (vần đẹp). Đầu tiên chúng tôi muốn xem liệu nó có hoạt động không. Bạn không thực sự cần phải làm một chiếc hộp để thử nghiệm, nhưng luôn thú vị khi thực hiện một số chế tác.

Đây là ví dụ của tôi.

Đề xuất: