Mục lục:

Màn hình chất lượng không khí IoT chi phí thấp dựa trên RaspberryPi 4: 15 bước (có hình ảnh)
Màn hình chất lượng không khí IoT chi phí thấp dựa trên RaspberryPi 4: 15 bước (có hình ảnh)

Video: Màn hình chất lượng không khí IoT chi phí thấp dựa trên RaspberryPi 4: 15 bước (có hình ảnh)

Video: Màn hình chất lượng không khí IoT chi phí thấp dựa trên RaspberryPi 4: 15 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 bảy
Anonim
Màn hình chất lượng không khí IoT chi phí thấp dựa trên RaspberryPi 4
Màn hình chất lượng không khí IoT chi phí thấp dựa trên RaspberryPi 4
Màn hình chất lượng không khí IoT chi phí thấp dựa trên RaspberryPi 4
Màn hình chất lượng không khí IoT chi phí thấp dựa trên RaspberryPi 4
Màn hình chất lượng không khí IoT chi phí thấp dựa trên RaspberryPi 4
Màn hình chất lượng không khí IoT chi phí thấp dựa trên RaspberryPi 4
Màn hình chất lượng không khí IoT chi phí thấp dựa trên RaspberryPi 4
Màn hình chất lượng không khí IoT chi phí thấp dựa trên RaspberryPi 4

Santiago, Chile trong thời gian khẩn cấp về môi trường mùa đông có đặc quyền sống ở một trong những quốc gia đẹp nhất thế giới, nhưng thật không may, đó không phải tất cả đều là hoa hồng. Chile trong mùa đông bị ô nhiễm không khí rất nhiều, chủ yếu là do các vật liệu dạng hạt như bụi và khói.

Do thời tiết lạnh giá nên ở miền Nam, không khí bị ô nhiễm chủ yếu là do các loại vật liệu làm từ gỗ và ở Santiago (thủ đô chính ở trung tâm đất nước) được trộn lẫn từ các ngành công nghiệp, ô tô, và hoàn cảnh địa lý độc đáo giữa 2 dãy núi khổng lồ.

Ngày nay, ô nhiễm không khí đang là một vấn đề lớn trên toàn thế giới và trong bài viết này, chúng ta sẽ khám phá cách phát triển một màn hình Chất lượng không khí tự chế đắt tiền, dựa trên Raspberry Pi. Nếu bạn muốn hiểu thêm về chất lượng không khí, vui lòng truy cập Dự án “Chỉ số Chất lượng Không khí Thế giới”.

Quân nhu

  • Raspberry Pi 4
  • 1SDS011 - Cảm biến phát hiện chất lượng không khí pm2.5 bằng laser có độ chính xác cao
  • Hộp nhựa

Bước 1: Vật chất dạng hạt (PM): Nó là gì? Làm thế nào để nó bay vào không khí?

Vật chất hạt (PM): Nó là gì? Làm thế nào để nó bay vào không khí?
Vật chất hạt (PM): Nó là gì? Làm thế nào để nó bay vào không khí?

Vì vậy, để hiểu về ô nhiễm hoặc ô nhiễm không khí, chúng ta phải nghiên cứu các hạt có liên quan đến nó, còn được gọi là vật chất hạt. Nhìn vào đồ thị ở phần trước, chúng ta có thể thấy rằng chúng đã đề cập đến PM2.5 và PM10. Hãy trình bày tổng quan nhanh về điều đó.

PM là viết tắt của hạt vật chất (còn gọi là ô nhiễm hạt): thuật ngữ chỉ hỗn hợp các hạt rắn và các giọt chất lỏng được tìm thấy trong không khí. Một số hạt, chẳng hạn như bụi, đất, bồ hóng hoặc khói, đủ lớn hoặc tối để có thể nhìn thấy bằng mắt thường. Những cái khác rất nhỏ nên chúng chỉ có thể được phát hiện bằng kính hiển vi điện tử. Các hạt có nhiều kích cỡ. Các hạt có đường kính nhỏ hơn hoặc bằng 10 micromet rất nhỏ nên chúng có thể xâm nhập vào phổi, có khả năng gây ra các vấn đề sức khỏe nghiêm trọng. Mười micromet nhỏ hơn chiều rộng của một sợi tóc người.

Ô nhiễm dạng hạt bao gồm các hạt bụi thô (PM10): các hạt có thể hít phải, có đường kính thường là 10 micromet và nhỏ hơn. Các nguồn bao gồm hoạt động nghiền hoặc nghiền và bụi do các phương tiện giao thông trên đường vận chuyển. Hạt mịn (PM2.5): các hạt mịn có thể hít vào được, có đường kính thường là 2,5 micromet và nhỏ hơn. Các hạt mịn được tạo ra từ tất cả các loại chất đốt, bao gồm xe cơ giới, nhà máy điện, đốt gỗ dân dụng, cháy rừng, đốt nông nghiệp và một số quy trình công nghiệp, bạn có thể tìm thêm về chất hạt trên trang EPA: Cơ quan Bảo vệ Môi trường Hoa Kỳ

Bước 2: Tại sao lại quan trọng đến các vấn đề hạt đó?

Tại sao điều quan trọng là phải quan tâm đến các vấn đề hạt đó?
Tại sao điều quan trọng là phải quan tâm đến các vấn đề hạt đó?

Theo mô tả của GERARDO ALVARADO Z. trong công trình của ông tại Đại học Chile, các nghiên cứu về các đợt ô nhiễm không khí cao ở Thung lũng Meuse (Bỉ) vào năm 1930, Donora (Pennsylvania) vào năm 1948 và London vào năm 1952 là những nguồn tài liệu đầu tiên liên quan đến tỷ lệ tử vong với sự nhiễm bẩn hạt (Préndez, 1993). Những tiến bộ trong việc điều tra tác động của ô nhiễm không khí đối với sức khỏe con người đã xác định rằng các nguy cơ sức khỏe là do các hạt có thể hít phải, tùy thuộc vào sự xâm nhập và lắng đọng của chúng trong các bộ phận khác nhau của hệ hô hấp và phản ứng sinh học đối với các vật liệu lắng đọng.

Các hạt dày nhất, khoảng 5 μm, được lọc bởi hoạt động chung của lông mao của đường mũi và niêm mạc bao phủ khoang mũi và khí quản. Các hạt có đường kính từ 0,5 đến 5 μm có thể lắng đọng trong phế quản và thậm chí trong phế nang phổi, tuy nhiên, chúng sẽ bị đào thải bởi lông mao của phế quản và tiểu phế quản sau vài giờ. Các hạt nhỏ hơn 0,5 μm có thể xâm nhập sâu cho đến khi lắng đọng trong phế nang phổi, tồn tại hàng tuần đến hàng năm do không có cơ chế vận chuyển chất nhầy tạo điều kiện cho quá trình đào thải. Hình dưới đây cho thấy sự xâm nhập của các phần tử trong hệ hô hấp tùy thuộc vào kích thước của chúng.

Vì vậy, để phát hiện cả hai loại hạt (PM2.5 và PM10) là rất quan trọng và tin tốt là cả hai đều có thể đọc được bằng một cảm biến đơn giản và không đắt tiền, SDS011.

Bước 3: Cảm biến hạt - SDS011

Cảm biến hạt - SDS011
Cảm biến hạt - SDS011
Cảm biến hạt - SDS011
Cảm biến hạt - SDS011

Giám sát chất lượng không khí là ngành khoa học nổi tiếng và được thiết lập bắt đầu từ những năm 80. Vào thời điểm đó, công nghệ còn khá hạn chế và giải pháp định lượng ô nhiễm không khí rất phức tạp, cồng kềnh và thực sự tốn kém.

May mắn thay, ngày nay, với những công nghệ hiện đại và mới nhất, các giải pháp được sử dụng để giám sát Chất lượng không khí không chỉ trở nên chính xác hơn mà còn nhanh hơn trong việc đo lường. Các thiết bị ngày càng trở nên nhỏ hơn và có giá thành phải chăng hơn bao giờ hết.

Trong bài viết này, chúng tôi sẽ tập trung vào một cảm biến hạt, có thể phát hiện lượng bụi trong không khí. Trong khi thế hệ đầu tiên chỉ có thể phát hiện lượng độ mờ, các cảm biến gần đây nhất là SDS011 của INOVAFIT, một sản phẩm phụ của Đại học Tế Nam (ở Sơn Đông), hiện có thể phát hiện PM2.5 và PM10.

Với kích thước của nó, SDS011 có lẽ là một trong những cảm biến tốt nhất về độ chính xác và giá cả (dưới USD40,00).

  • Giá trị đo được: PM2.5, PM10
  • Phạm vi: 0–999,9 μg / m³
  • Điện áp cung cấp: 5V (4,7–5,3V)
  • Công suất tiêu thụ (làm việc): 70mA ± 10mA
  • Công suất tiêu thụ (laser và quạt ở chế độ ngủ): <4mA
  • Nhiệt độ bảo quản: -20 đến + 60C
  • Nhiệt độ làm việc: -10 đến + 50C
  • Độ ẩm (lưu trữ): Max. 90%
  • Độ ẩm (công việc): Max. 70% (hơi nước ngưng tụ làm sai lệch kết quả đọc)
  • Độ chính xác: 70% cho 0,3μm và 98% cho 0,5μm
  • Kích thước: 71x70x23 mm
  • Chứng nhận: CE, FCC, RoHS

SD011 sử dụng PCB như một mặt của vỏ, cho phép giảm giá thành của nó. Diode tiếp nhận được gắn trên mặt PCB (điều này là bắt buộc vì nên tránh mọi nhiễu giữa diode và LNA). Tia laser phát ra được gắn trên hộp nhựa và kết nối với PCB thông qua một dây mềm.

Tóm lại, Nova Fitness SDS011 là một cảm biến bụi laser chuyên nghiệp. Quạt gắn trên cảm biến tự động hút gió. Cảm biến sử dụng nguyên lý tán xạ ánh sáng laser * để đo giá trị của các hạt bụi lơ lửng trong không khí. Cảm biến cung cấp các giá trị PM2.5 và PM10 có độ chính xác cao và đáng tin cậy. Bất kỳ thay đổi nào trong môi trường có thể được quan sát thấy gần như ngay lập tức thời gian phản hồi ngắn dưới 10 giây. Cảm biến ở chế độ tiêu chuẩn báo cáo việc đọc với khoảng thời gian 1 giây.

* Nguyên lý tán xạ tia laze: Sự tán xạ ánh sáng có thể được tạo ra khi các hạt đi qua vùng phát hiện. Ánh sáng tán xạ được biến đổi thành tín hiệu điện và các tín hiệu này sẽ được khuếch đại và xử lý. Số lượng và đường kính của các hạt có thể thu được bằng cách phân tích vì dạng sóng tín hiệu có quan hệ nhất định với đường kính của các hạt.

Bước 4: Nhưng làm thế nào SDS011 có thể chụp được các hạt đó?

Nhưng làm thế nào SDS011 có thể chụp được các hạt đó?
Nhưng làm thế nào SDS011 có thể chụp được các hạt đó?
Nhưng làm thế nào SDS011 có thể chụp được các hạt đó?
Nhưng làm thế nào SDS011 có thể chụp được các hạt đó?

Như đã nhận xét trước đây, nguyên tắc được sử dụng bởi SDS011 là tán xạ ánh sáng hay tốt hơn, Dynamic Light Scattering (DLS), là một kỹ thuật trong vật lý có thể được sử dụng để xác định cấu hình phân bố kích thước của các hạt nhỏ trong huyền phù hoặc polyme trong dung dịch. Trong phạm vi của DLS, dao động thời gian thường được phân tích bằng hàm tự động tương quan cường độ hoặc photon (còn được gọi là quang phổ tương quan photon hoặc tán xạ ánh sáng bán đàn hồi). Trong phân tích miền thời gian, hàm tự tương quan (ACF) thường phân rã bắt đầu từ thời gian trễ bằng 0, và động lực học nhanh hơn do các hạt nhỏ hơn dẫn đến sự tương quan nhanh hơn của vết cường độ phân tán. Nó đã được chứng minh rằng cường độ ACF là biến đổi Fourier của phổ công suất, và do đó các phép đo DLS có thể được thực hiện tốt như nhau trong miền phổ.

Trên giả thuyết sự tán xạ ánh sáng động của hai mẫu: Các hạt lớn hơn (như PM10) ở phía trên và các hạt nhỏ hơn (như PM2.5) ở phía dưới. Và nhìn vào bên trong cảm biến của chúng ta, chúng ta có thể thấy nguyên tắc phân tán ánh sáng được thực hiện như thế nào.

Tín hiệu điện thu được trên diode đi đến Bộ khuếch đại tiếng ồn thấp và từ đó được chuyển đổi thành tín hiệu kỹ thuật số thông qua ADC và ra bên ngoài thông qua UART.

Để biết thêm về SDS011 trên trải nghiệm khoa học thực tế, vui lòng xem công trình năm 2018 của Konstantinos và cộng sự, Phát triển và Thử nghiệm tại hiện trường Hệ thống Di động Chi phí thấp để Giám sát Nồng độ PM2.5.

Bước 5: Thời gian chiếu

Giờ chiếu!
Giờ chiếu!
Giờ chiếu!
Giờ chiếu!

Hãy tạm dừng tất cả lý thuyết này và tập trung vào cách đo các hạt vật chất bằng Raspberry Pi và cảm biến SDS011

Kết nối HW trên thực tế rất đơn giản. Cảm biến được bán kèm với bộ chuyển đổi USB để giao tiếp dữ liệu đầu ra từ 7 chân UART của nó với một trong các đầu nối USB tiêu chuẩn của RPi.

Sơ đồ chân SDS011:

  • Pin 1 - không được kết nối
  • Chân 2 - PM2.5: 0–999μg / m³; Đầu ra PWM
  • Pin 3–5V
  • Chân 4 - PM10: 0–999 μg / m³; Đầu ra PWM
  • Pin 5 - GND
  • Chân 6 - RX UART (TTL) 3.3V
  • Chân 7 - TX UART (TTL) 3.3V

Đối với hướng dẫn này, tôi đang sử dụng lần đầu tiên Raspberry-Pi 4. Nhưng tất nhiên, bất kỳ mô hình nào trước đó cũng sẽ hoạt động tốt.

Ngay sau khi bạn kết nối cảm biến trên một trong các cổng USB RPi, bạn sẽ tự động bắt đầu lắng nghe âm thanh của quạt. Tiếng ồn hơi khó chịu một chút, vì vậy có lẽ bạn nên rút phích cắm của nó và đợi cho đến khi bạn đã thiết lập xong với SW.

Giao tiếp giữa cảm biến và RPi sẽ thông qua một giao thức nối tiếp. Thông tin chi tiết về giao thức này có thể được tìm thấy tại đây: Giao thức điều khiển cảm biến bụi bằng laser V1.3. Nhưng đối với dự án này, tốt nhất là sử dụng giao diện python để đơn giản hóa mã được phát triển. Bạn có thể tạo giao diện của riêng mình hoặc sử dụng một số giao diện có sẵn trên internet, như Frank Heuer’s hoặc Ivan Kalchev’s. Chúng tôi sẽ sử dụng cái cuối cùng, rất đơn giản và hoạt động tốt (bạn có thể tải xuống tập lệnh sds011.py từ GitHub của nó hoặc của tôi).

Tệp sds011.py phải ở cùng thư mục nơi bạn tạo tập lệnh của mình.

Trong giai đoạn phát triển, tôi sẽ sử dụng Máy tính xách tay Jupyter, nhưng bạn có thể sử dụng bất kỳ IDE nào mà bạn thích (Ví dụ: Thonny hoặc Geany, đều là một phần của gói Raspberry Pi Debian đều rất tốt).

Bắt đầu nhập sds011 và tạo phiên bản cảm biến của bạn. SDS011 cung cấp phương pháp đọc từ cảm biến bằng UART.

từ nhập sds011 *

cảm biến = SDS011 ("/ dev / ttyUSB0")

Bạn có thể bật hoặc tắt cảm biến của mình bằng lệnh sleep:

pmt_2_5, pmt_10 = sensor.query ()

Chờ ít nhất 10 giây để ổn định trước khi đo và ít nhất 2 giây để bắt đầu đo mới (xem mã ở trên).

Và đây là tất cả những gì bạn cần biết về SW để sử dụng cảm biến. Nhưng chúng ta hãy đi sâu hơn về Kiểm soát chất lượng không khí! Ở phần đầu của bài viết này, nếu bạn đã khám phá các trang web cung cấp thông tin về việc không khí tốt hay xấu, bạn nên nhận ra rằng màu sắc gắn liền với những giá trị đó. Mỗi màu là một Chỉ số. Chỉ số được biết đến nhiều nhất là AQI (Chỉ số Chất lượng Không khí), được sử dụng ở Mỹ và một số quốc gia khác.

Bước 6: Chỉ số chất lượng không khí - AQI

Chỉ số chất lượng không khí - AQI
Chỉ số chất lượng không khí - AQI
Chỉ số chất lượng không khí - AQI
Chỉ số chất lượng không khí - AQI
Chỉ số chất lượng không khí - AQI
Chỉ số chất lượng không khí - AQI

AQI là một chỉ số để báo cáo chất lượng không khí hàng ngày. Nó cho bạn biết không khí của bạn sạch hay ô nhiễm như thế nào, và những ảnh hưởng liên quan đến sức khỏe có thể là mối quan tâm của bạn. AQI tập trung vào những ảnh hưởng đến sức khỏe mà bạn có thể gặp phải trong vòng vài giờ hoặc vài ngày sau khi hít thở không khí ô nhiễm.

Ví dụ, EPA (Cơ quan Bảo vệ Môi trường Hoa Kỳ) tính toán AQI không chỉ cho ô nhiễm hạt (PM2.5 và PM10) mà còn cho các chất ô nhiễm không khí chính khác được quy định bởi Đạo luật Không khí Sạch: ôzôn ở tầng mặt đất, carbon monoxide, lưu huỳnh đioxit và nitơ đioxit. Đối với mỗi chất ô nhiễm này, EPA đã thiết lập các tiêu chuẩn chất lượng không khí quốc gia để bảo vệ sức khỏe cộng đồng. Xem hình trên với các giá trị AQI, màu sắc và thông báo sức khỏe được liên kết.

Như đã nhận xét trước đó, các giá trị và màu sắc AQI đó có liên quan đến từng tác nhân gây ô nhiễm, nhưng làm thế nào để liên kết các giá trị do cảm biến tạo ra với chúng? Một bảng bổ sung kết nối tất cả chúng như được hiển thị ở trên.

Nhưng tất nhiên, nó không có ý nghĩa gì khi tận dụng một chiếc bàn như vậy. Cuối cùng, nó là một thuật toán toán học đơn giản để thực hiện phép tính. Vì vậy, chúng tôi sẽ nhập thư viện để chuyển đổi giữa giá trị AQI và nồng độ chất ô nhiễm (µg / m³): python-aqi.

Cài đặt thư viện bằng PIP và thực hiện kiểm tra (xem mã ở trên)

pip cài đặt python-aqi

Còn Chile thì sao?

Ở Chile, một chỉ số tương tự cũng được sử dụng, ICAP: Chỉ số chất lượng không khí cho các hạt có thể thở được. Nghị định tối cao số 59 ngày 16 tháng 3 năm 1998 của Bộ Tổng thư ký của Phủ Tổng thống Cộng hòa, quy định tại điều 1, chữ g) của nó rằng các cấp xác định ICA cho Vật liệu dạng hạt có thể thở được, ICAP.

Các giá trị sẽ thay đổi tuyến tính giữa các phần, giá trị 500 sẽ tương ứng với giá trị giới hạn mà ở đó sẽ có nguy cơ cho quần thể khi tiếp xúc với các nồng độ này. Theo các giá trị ICAP, các danh mục đã được thiết lập để xác định mức độ tập trung của MP10 mà mọi người đã tiếp xúc.

Bước 7: Ghi dữ liệu cục bộ

Ghi nhật ký dữ liệu cục bộ
Ghi nhật ký dữ liệu cục bộ
Ghi nhật ký dữ liệu cục bộ
Ghi nhật ký dữ liệu cục bộ
Ghi nhật ký dữ liệu cục bộ
Ghi nhật ký dữ liệu cục bộ

Tại thời điểm này, chúng tôi có tất cả các công cụ để thu thập dữ liệu từ cảm biến và cũng chuyển đổi chúng để có “giá trị dễ đọc” hơn, đó là chỉ số AQI.

Hãy tạo một chức năng để nắm bắt những giá trị đó. Chúng tôi sẽ nắm bắt 3 giá trị theo trình tự lấy giá trị trung bình trong số đó:

def get_data (n = 3):

sensor.sleep (sleep = False) pmt_2_5 = 0 pmt_10 = 0 time.sleep (10) cho tôi trong phạm vi (n): x = sensor.query () pmt_2_5 = pmt_2_5 + x [0] pmt_10 = pmt_10 + x [1] time.sleep (2) pmt_2_5 = round (pmt_2_5 / n, 1) pmt_10 = round (pmt_10 / n, 1) sensor.sleep (sleep = True) time.sleep (2) return pmt_2_5, pmt_10 Ở trên bạn có thể xem kết quả thử nghiệm. Cũng hãy thực hiện một chức năng để chuyển đổi các giá trị số của PM trong chỉ mục AQI

def ob_aqi (pmt_2_5, pmt_10):

aqi_2_5 = aqi.to_iaqi (aqi. POLLUTANT_PM25, str (pmt_2_5)) aqi_10 = aqi.to_iaqi (aqi. POLLUTANT_PM10, str (pmt_10)) trả về aqi_2_5, aqi_10 trên kết quả của một bài kiểm tra với cả hai chức năng. Nhưng phải làm gì với chúng? Câu trả lời đơn giản nhất là tạo một hàm để lưu dữ liệu đã chụp, lưu chúng vào một tệp cục bộ

def save_log ():

mở ("ĐƯỜNG LỐI CỦA BẠN TẠI ĐÂY / air_quality.csv", "a") dưới dạng log: dt = datetime.now () log.write ("{}, {}, {}, {}, {} n". format (dt, pmt_2_5, aqi_2_5, pmt_10, aqi_10)) log.close () Với một vòng lặp duy nhất, bạn có thể ghi dữ liệu tại các cơ sở thông thường trong tệp cục bộ của mình, chẳng hạn như mỗi phút

while (Đúng):

pmt_2_5, pmt_10 = get_data () aqi_2_5, aqi_10 = convert_aqi (pmt_2_5, pmt_10) hãy thử: save_log () ngoại trừ: print ("[INFO] Không ghi được dữ liệu") time.sleep (60) Cứ sau 60 giây, dấu thời gian cộng với dữ liệu sẽ được “nối thêm” vào tệp này, như chúng ta có thể thấy ở trên.

Bước 8: Gửi dữ liệu tới Dịch vụ đám mây

Gửi dữ liệu tới dịch vụ đám mây
Gửi dữ liệu tới dịch vụ đám mây

Tại thời điểm này, chúng tôi đã học cách thu thập dữ liệu từ cảm biến, lưu chúng vào tệp CSV cục bộ. Bây giờ, đã đến lúc xem cách gửi những dữ liệu đó đến nền tảng IoT. Trong hướng dẫn này, chúng tôi sẽ sử dụng ThingSpeak.com.

“ThingSpeak là một ứng dụng Internet of Things (IoT) mã nguồn mở để lưu trữ và truy xuất dữ liệu từ mọi thứ, sử dụng các API REST và MQTT. ThingSpeak cho phép tạo ra các ứng dụng ghi nhật ký cảm biến, ứng dụng theo dõi vị trí và mạng xã hội về mọi thứ với các cập nhật trạng thái”.

Đầu tiên, bạn phải có một tài khoản tại ThinkSpeak.com. Tiếp theo, hãy làm theo hướng dẫn để tạo Kênh, lưu ý ID kênh và Ghi khóa API.

Khi tạo kênh, bạn cũng phải xác định thông tin nào sẽ được tải lên mỗi một trong 8 trường, như được hiển thị ở trên (trong trường hợp của chúng tôi, chỉ 4 trường trong số đó sẽ được sử dụng).

Bước 9: Giao thức MQTT và kết nối ThingSpeak

Giao thức MQTT và Kết nối ThingSpeak
Giao thức MQTT và Kết nối ThingSpeak

MQTT là một kiến trúc xuất bản / đăng ký được phát triển chủ yếu để kết nối băng thông và các thiết bị hạn chế năng lượng qua mạng không dây. Nó là một giao thức đơn giản và nhẹ, chạy qua các ổ cắm TCP / IP hoặc WebSockets. MQTT qua WebSockets có thể được bảo mật bằng SSL. Kiến trúc xuất bản / đăng ký cho phép thông báo được đẩy đến các thiết bị khách mà thiết bị không cần liên tục thăm dò ý kiến của máy chủ.

Nhà môi giới MQTT là đầu mối giao tiếp trung tâm và có nhiệm vụ gửi tất cả các thông điệp giữa người gửi và người nhận hợp pháp. Máy khách là bất kỳ thiết bị nào kết nối với nhà môi giới và có thể xuất bản hoặc đăng ký các chủ đề để truy cập thông tin. Một chủ đề chứa thông tin định tuyến cho nhà môi giới. Mỗi khách hàng muốn gửi tin nhắn sẽ xuất bản chúng theo một chủ đề nhất định và mỗi khách hàng muốn nhận tin nhắn đăng ký một chủ đề nhất định. Nhà môi giới gửi tất cả các thông điệp với chủ đề phù hợp cho các khách hàng thích hợp.

ThingSpeak ™ có nhà môi giới MQTT tại URL mqtt.thingspeak.com và cổng 1883. Nhà môi giới ThingSpeak hỗ trợ cả xuất bản MQTT và đăng ký MQTT.

Trong trường hợp của chúng tôi, chúng tôi sẽ sử dụng MQTT Publish.

Bước 10: Xuất bản MQTT

Xuất bản MQTT
Xuất bản MQTT

Để bắt đầu, hãy cài đặt thư viện máy khách Eclipse Paho MQTT Python, thực hiện các phiên bản 3.1 và 3.1.1 của giao thức MQTT

sudo pip cài đặt paho-mqtt

Tiếp theo, hãy nhập thư viện paho:

nhập paho.mqtt.publish dưới dạng xuất bản

và khởi tạo kênh Thingspeak và giao thức MQTT. Phương thức kết nối này là đơn giản nhất và yêu cầu ít tài nguyên hệ thống nhất:

channelID = "ID KÊNH CỦA BẠN"

apiKey = "KHÓA VIẾT CỦA BẠN" topic = "channel /" + channelID + "/ xuất bản /" + apiKey mqttHost = "mqtt.thingspeak.com" Bây giờ chúng ta phải xác định "tải trọng" của chúng ta

tPayload = "field1 =" + str (pmt_2_5) + "& field2 =" + str (aqi_2_5) + "& field3 =" + str (pmt_10) + "& field4 =" + str (aqi_10)

Và thế là xong! chúng tôi đã sẵn sàng để bắt đầu gửi dữ liệu lên đám mây! Hãy viết lại hàm vòng lặp trước đó để bao gồm cả phần ThingSpeak của nó.

# Gửi tất cả dữ liệu tới ThingSpeak cứ sau 1 phút

while (True): pmt_2_5, pmt_10 = get_data () aqi_2_5, aqi_10 = var_aqi (pmt_2_5, pmt_10) tPayload = "field1 =" + str (pmt_2_5) + "& field2 =" + str (aqi_2_5) + "& field3 =" + str (pmt_10) + "& field4 =" + str (aqi_10) try: Publishing.single (topic, payload = tPayload, hostname = mqttHost, port = tPort, tls = tTLS, transport = tTransport) save_log () ngoại trừ: print ("[INFO] Không gửi được dữ liệu ") time.sleep (60) Nếu mọi thứ đều ổn, bạn phải thấy dữ liệu cũng xuất hiện trên kênh của mình tại thingspeak.com như hình trên.

Bước 11: Kịch bản cuối cùng

Điều quan trọng cần lưu ý là Jupyter Notebook là một công cụ rất tốt để phát triển và báo cáo, nhưng không phải để tạo mã để đưa vào sản xuất. Những gì bạn nên làm bây giờ là lấy phần có liên quan của mã và tạo một tập lệnh.py và chạy nó trên thiết bị đầu cuối của bạn.

Ví dụ: “ts_air_quality_logger.py”, mà bạn nên chạy bằng lệnh:

python 3 ts_air_quality_logger.py

Tập lệnh này cũng như Sổ tay Jupyter và sds011.py có thể được tìm thấy trong kho lưu trữ của tôi tại RPi_Air_Quality_Sensor.

Lưu ý rằng tập lệnh này chỉ khả thi để thử nghiệm. Tốt nhất là không sử dụng độ trễ bên trong vòng lặp cuối cùng (đặt mã ở trạng thái "tạm dừng"), thay vào đó hãy sử dụng bộ định thời. Hoặc đối với một ứng dụng thực, cách tốt nhất là không sử dụng vòng lặp, để Linux được lập trình để thực thi tập lệnh một cách thường xuyên với crontab.

Bước 12: Đưa màn hình ra ngoài

Đưa màn hình ra ngoài
Đưa màn hình ra ngoài
Đưa màn hình ra ngoài
Đưa màn hình ra ngoài
Đưa màn hình ra ngoài
Đưa màn hình ra ngoài
Đưa màn hình ra ngoài
Đưa màn hình ra ngoài

Khi màn hình Chất lượng không khí Raspberry Pi của tôi hoạt động, tôi đã lắp ráp RPi vào bên trong một hộp nhựa, giữ cảm biến bên ngoài và đặt nó bên ngoài nhà của tôi.

Hai kinh nghiệm đã được thực hiện.

Bước 13: Đốt cháy động cơ xăng

Đốt động cơ xăng
Đốt động cơ xăng
Đốt động cơ xăng
Đốt động cơ xăng

Cảm biến được đặt cách ống dẫn khí của Lambretta khoảng 1m, và động cơ của nó đã bật. Động cơ đã chạy trong vài phút và tắt. Từ tệp nhật ký ở trên, kết quả mà tôi nhận được. Thật thú vị khi xác nhận rằng PM2.5 là hạt nguy hiểm nhất sinh ra từ động cơ.

Bước 14: Đốt gỗ

Cháy rừng
Cháy rừng
Cháy rừng
Cháy rừng

Nhìn vào tệp nhật ký, chúng tôi nhận thấy rằng dữ liệu cảm biến tạm thời "nằm ngoài phạm vi" và không được Thư viện chuyển đổi AQI nắm bắt tốt, vì vậy tôi thay đổi mã trước đó để xử lý:

def ob_aqi (pmt_2_5, pmt_10):

try: aqi_2_5 = aqi.to_iaqi (aqi. POLLUTANT_PM25, str (pmt_2_5)) aqi_10 = aqi.to_iaqi (aqi. POLLUTANT_PM10, str (pmt_10)) trả về aqi_2_5, aqi_10 ngoại trừ: return 600, 600 Tình huống này có thể xảy ra trên thực địa, điều này không sao cả. Hãy nhớ rằng trên thực tế, bạn nên sử dụng đường trung bình để thực sự có được AQI (ít nhất là hàng giờ, nhưng thường là hàng ngày).

Bước 15: Kết luận

Phần kết luận
Phần kết luận

Như mọi khi, tôi hy vọng dự án này có thể giúp những người khác tìm đường vào thế giới thú vị của Khoa học Dữ liệu và Điện tử!

Để biết chi tiết và mã cuối cùng, vui lòng truy cập kho lưu ký GitHub của tôi: RPi_Air_Quality_Sensor.

Saludos từ phía nam của thế giới!

Hẹn gặp bạn ở hướng dẫn tiếp theo của tôi!

Cảm ơn bạn, Marcelo

Đề xuất: