Xây dựng Trạm thời tiết Raspberry Pi của riêng bạn

Build Your Own Raspberry Pi Weather Station



Raspberry Pi Sense Hat là một bo mạch bổ trợ có thể được sử dụng với các máy tính một bo mạch Raspberry Pi. Raspberry Pi Sense Hat có màn hình LED 8 × 8 và cần điều khiển 5 nút, và nó được trang bị các cảm biến sau:

  1. Con quay hồi chuyển
  2. Gia tốc kế
  3. Từ kế
  4. Nhiệt độ
  5. Áp suất khí quyển
  6. Độ ẩm

Trong bài viết này, tôi sẽ chỉ cho bạn cách tạo ứng dụng web trạm thời tiết dựa trên API Python bằng cách sử dụng nhiệt độ , áp suất khí quyển , và độ ẩm cảm biến của Raspberry Pi Sense Hat. Để làm theo bài viết này, bạn sẽ cần những thứ sau:







  1. Raspberry Pi 3 hoặc Raspberry Pi 4 có kết nối mạng.
  2. Một mô-đun Raspberry Pi Sense Hat.
  3. Bộ chuyển đổi nguồn micro-USB (Raspberry Pi 3) hoặc USB Type-C (Raspberry Pi 4).
  4. Thẻ nhớ microSD 16 GB hoặc 32 GB với Hệ điều hành Raspberry Pi.
  5. Máy tính xách tay hoặc máy tính để bàn để truy cập máy tính để bàn từ xa VNC hoặc truy cập SSH vào Raspberry Pi.

GHI CHÚ: Trong bài viết này, chúng tôi sẽ kết nối với Raspberry Pi từ xa thông qua VNC hoặc SSH bằng cách sử dụng thiết lập không cần đầu của Raspberry Pi. Nếu bạn không muốn truy cập Raspberry Pi của mình từ xa thông qua SSH hoặc VNC, bạn sẽ cần kết nối màn hình, bàn phím và chuột với Raspberry Pi của mình.



Để tìm hiểu cách flash hình ảnh Hệ điều hành Raspberry Pi vào thẻ nhớ microSD, vui lòng tham khảo Cách cài đặt và sử dụng Raspberry Pi Imager. Nếu bạn cần trợ giúp cài đặt Hệ điều hành Raspberry Pi trên Raspberry Pi của mình, hãy đọc Cách cài đặt hệ điều hành Raspberry Pi trên Raspberry Pi 4 . Nếu bạn cần trợ giúp với thiết lập không cần đầu của Raspberry Pi, hãy xem Cách cài đặt và cấu hình hệ điều hành Raspberry Pi trên Raspberry Pi 4 mà không cần màn hình ngoài.



Kết nối Raspberry Pi Sense Hat với Raspberry Pi

Bộ dụng cụ Raspberry Pi Sense Hat đi kèm với bo mạch bổ sung Raspberry Pi Sense Hat, một đầu cắm nam-nữ 40 chân, cùng một số vít và miếng đệm.





Trước khi có thể gắn bảng Sense Hat vào Raspberry Pi, bạn phải kết nối đầu cắm 40 chân với Sense Hat. Kết nối các chân nam của đầu cắm nam-nữ 40 chân vào Mũ cảm ứng như trong các hình ảnh bên dưới.



Máy tính bảng đơn Raspberry Pi có 4 lỗ có thể được sử dụng để gắn các bảng bổ trợ hoặc một hộp đựng. Để gắn bảng bổ trợ, hãy lắp các vít từ mặt sau của Raspberry Pi, như thể hiện trong các hình ảnh bên dưới.

Sau đó, kết nối một miếng đệm với vít.

Sau khi bạn thêm tất cả bốn vít và miếng đệm, Raspberry Pi của bạn sẽ trông giống như được hiển thị trong hình dưới đây.

Kết nối Raspberry Pi Sense Hat với đầu cắm nam GPIO 40 chân của Raspberry Pi, như thể hiện trong các hình ảnh bên dưới.

GHI CHÚ: Hãy cẩn thận khi ngắt kết nối Raspberry Pi Sense Hat khỏi đầu cắm GPIO 40 chân của Raspberry Pi để tránh làm cong các chân của Raspberry Pi GPIO.

Với bốn ốc vít còn lại, hãy vặn chặt Raspberry Pi Sense Hat, như thể hiện trong các hình ảnh bên dưới.

Cung cấp năng lượng cho Raspberry Pi

Giờ đây, Raspberry Pi Sense Hat đã được kết nối với Raspberry Pi, hãy cắm thẻ nhớ microSD với Hệ điều hành Raspberry Pi vào khe cắm thẻ nhớ microSD của Raspberry Pi, kết nối cáp nguồn với Raspberry Pi và bật nguồn.

Cài đặt Thư viện Python Raspberry Pi Sense Hat

Để sử dụng Raspberry Pi Sense Hat trên Raspberry Pi, mũ giác quan Thư viện Python phải được cài đặt trên Hệ điều hành Raspberry Pi. Các mũ giác quan thư viện có sẵn trong kho gói chính thức của Hệ điều hành Raspberry Pi.

Để cài đặt Raspberry Pi mũ giác quan Thư viện Python trên Hệ điều hành Raspberry Pi, trước tiên hãy cập nhật bộ nhớ cache của kho lưu trữ gói APT bằng lệnh sau:

Cập nhật $ sudo apt

Sau đó, chạy lệnh sau:

$ sudo apt install sense-hat -y

Cài đặt Thư viện Python của Flask Micro Web Framework

Chúng tôi sẽ sử dụng khung Flask Python để tạo ứng dụng thời tiết của chúng tôi. Bạn có thể cài đặt Flask từ kho gói chính thức của Raspberry Pi OS bằng lệnh sau:

$ sudo apt cài đặt python3-flask -y

Tạo thư mục dự án

Bạn nên tạo một thư mục dự án để tổ chức các tệp dự án của bạn. Để tạo một thư mục dự án ~ / công việc , sử dụng lệnh sau:

$ mkdir ~ / công việc

Khi thư mục dự án được tạo, hãy điều hướng đến thư mục dự án như sau:

$ cd ~ / công việc

Thử nghiệm Mũ cảm giác Raspberry Pi

Để kiểm tra xem Raspberry Pi Sense Hat có hoạt động hay không, chúng ta có thể viết một đoạn script Python thử nghiệm đơn giản. Bạn có thể tạo một tập lệnh Python mới có tên test.py với nano trình soạn thảo văn bản như sau:

$ nano test.py

Nhập mã sau vào test.py tập tin. Nhập dòng 1 SenseHat từ sense_hat mô-đun, dòng 3 tạo ra một SenseHat đối tượng và lưu trữ một tham chiếu trong giác quan và các dòng 5–6 đặt màu của tất cả các đèn LED 8 × 8 thành màu đỏ. Khi bạn đã hoàn tất, hãy nhấn + NS theo dõi bởi .

Bạn có thể chạy test.py Tập lệnh Python với lệnh sau:

$ python3 test.py

Ma trận LED 8 × 8 sẽ phát sáng màu đỏ như trong hình dưới đây.

Để tắt đèn LED của Sense Hat, hãy chạy sạch() phương thức không có bất kỳ giá trị màu nào trong test.py Tập lệnh Python, như được hiển thị trong ảnh chụp màn hình bên dưới và chạy test.py Tập lệnh Python một lần nữa.

Đèn LED của Sense Hat bây giờ sẽ được tắt, như thể hiện trong hình dưới đây.

Nếu Sense Hat hoạt động bình thường, hãy chuyển sang phần tiếp theo.

Nhận dữ liệu thời tiết từ Sense Hat

Bạn có thể lấy dữ liệu cảm biến từ Sense Hat rất dễ dàng bằng cách sử dụng mũ giác quan Thư viện Python. Để truy xuất dữ liệu cảm biến từ Sense Hat, bạn có thể tạo một tập lệnh Python mới read_sensor_data.py như sau:

$ nano read_sensor_data.py

Nhập mã sau vào read_sensor_data.py Tệp Python.

từsense_hatnhập khẩuSenseHat
từ thời gian nhập khẩungủ
giác quan=SenseHat()
giác quan.sạch()
trong khi Thật:
tempC=giác quan.get_tempether()
tempF=tempC *(9/5)+32
sức ép=giác quan.get_pressure()
độ ẩm=giác quan.get_humidity()

in('Nhiệt độ:% .2f ° C /%. 2f ° F '%(tempC,tempF))
in('Áp suất:% .2f mb '%(sức ép))
in('Độ ẩm:% .2f %% '%(độ ẩm))
ngủ(5)

Khi bạn đã hoàn tất, hãy nhấn + NS theo dõi bởi .

Trong đoạn mã trên, dòng 1 và 2 nhập tất cả các thư viện bắt buộc, dòng 4 tạo SenseHat đối tượng và dòng 5 tắt tất cả đèn LED của Mũ cảm ứng bằng cách sử dụng sạch() phương pháp. Vòng lặp while ở dòng 7 là vòng lặp vô hạn sẽ chạy mã ở dòng 8–16 mãi mãi.

Trong dòng 8, get_tempether () được sử dụng để đọc dữ liệu nhiệt độ (tính bằng độ C) từ cảm biến độ ẩm của Sense Hat. Trong dòng 9, dữ liệu nhiệt độ được chuyển đổi từ độ C sang độ F. Trong dòng 10, get_pressure () được sử dụng để đọc dữ liệu áp suất không khí (tính bằng milibar) từ cảm biến áp suất của Sense Hat. Trong dòng 11, get_humidity () được sử dụng để đọc dữ liệu độ ẩm (tính bằng%) từ cảm biến độ ẩm của Sense Hat.

Dòng 13–15 được sử dụng để in dữ liệu cảm biến ra bảng điều khiển và dòng 16 được sử dụng để đợi 5 giây trước khi đọc lại dữ liệu cảm biến.

Bạn có thể chạy read_sensor_data.py Tập lệnh Python như sau:

$ python3 read_sensor_data.py

Khi tập lệnh được chạy, dữ liệu cảm biến sẽ được in ra bảng điều khiển.

Bây giờ chúng ta có thể đọc dữ liệu cảm biến từ Sense Hat, hãy nhấn + NS để dừng chương trình.

Tạo ứng dụng web Trạm thời tiết

Trong phần này, chúng tôi sẽ hướng dẫn bạn cách sử dụng khung web Python Flask để tạo API thời tiết và ứng dụng thời tiết. Ứng dụng thời tiết sẽ truy cập API dữ liệu thời tiết và hiển thị dữ liệu thời tiết trong thời gian thực. Tất cả mã được thảo luận trong phần này có sẵn trên GitHub tại shovon8 / raspberry-pi-sense-hat-weather-app .

Đầu tiên, hãy tạo một server.py Tập lệnh Python trong thư mục dự án như sau:

$ nano server.py

Nhập mã sau vào server.py Tệp Python.

từbình giữ nhiệtnhập khẩuBình giữ nhiệt
từbình giữ nhiệtnhập khẩujsonify
từbình giữ nhiệtnhập khẩurender_template
từbình giữ nhiệtnhập khẩuurl_for
từsense_hatnhập khẩuSenseHat
ứng dụng=Bình giữ nhiệt(__Tên__)
ứng dụng.cấu hình['SEND_FILE_MAX_AGE_DEFAULT'] = 0
giác quan=SenseHat()
giác quan.sạch()
vớiứng dụng.test_request_context():
url_for('tĩnh',tên tập tin='style.css')
url_for('tĩnh',tên tập tin='app.js')
@ứng dụng.tuyến đường('/Cháy')
phản đốiCháy():
tempC=giác quan.get_tempether()
tempF=tempC *(9/5)+32
sức ép=giác quan.get_pressure()
áp lực=sức ép *0,0145038
áp lựcP=sức ép *100
độ ẩm=giác quan.get_humidity()

trở lạijsonify({
'nhiệt độ':{ 'NS': tempC, 'NS': tempF},
'sức ép':{ 'mb': sức ép, 'hPa': sức ép,
'psi': pressurePsi, 'P': ápP},
'độ ẩm': độ ẩm
})
@ứng dụng.tuyến đường('/')
phản đốiTrang Chủ():
trở lạirender_template('./home.html')

Sau đó nhấn + NS theo dõi bởi để cứu server.py Tập lệnh Python.

Trong đoạn mã trên, dòng 1–5 nhập tất cả các thư viện bắt buộc, dòng 7 tạo ứng dụng Flask, dòng 11 tạo đối tượng SenseHat và dòng 12 tắt tất cả các đèn LED của Sense Hat. Dòng 8 tắt bộ nhớ đệm web cho ứng dụng Flask. Vì ứng dụng này nhẹ nên không cần bộ nhớ đệm. Nếu bạn muốn sửa đổi ứng dụng, thì việc tắt bộ nhớ đệm web sẽ giúp việc kiểm tra dễ dàng hơn nhiều.

Dòng 18–31 đọc dữ liệu cảm biến từ Sense Hat và trả về dữ liệu API ở định dạng JSON theo yêu cầu HTTP GET trong /Cháy điểm cuối của máy chủ web. Dòng 37–39 trả về trang chủ ứng dụng web thời tiết trên / điểm cuối của máy chủ web. Trang chủ được hiển thị từ home.html tệp, phải nằm trong mẫu / thư mục của thư mục dự án.

Các dòng 14–16 được sử dụng để cho phép truy cập vào style.cssapp.js tệp tĩnh. Các tệp này phải nằm trong tĩnh / thư mục của thư mục dự án. Các style.css tệp được sử dụng để tạo kiểu cho home.html trang chủ và app.js tệp được sử dụng để yêu cầu dữ liệu API từ /Cháy điểm cuối và cập nhật dữ liệu thời tiết trên home.html trang 5 giây một lần.

Tạo tĩnh /mẫu / thư mục trong thư mục dự án như sau:

$ mkdir -v {tĩnh, các mẫu}

Tạo một home.html tập tin trong mẫu / thư mục như sau:

$ nano mẫu / home.html

Nhập mã sau vào home.html tập tin.


< html >
< cái đầu >
< meta Tên='khung nhìn' Nội dung='width = device-width, initial-scale = 1.0'>
< chức vụ >Trạm thời tiết Raspberry Pi</ chức vụ >
< liên kết quan hệ='bảng định kiểu' kiểu='text / css'
href='{{url_for (' static ', filename =' style.css ')}}'/>
</ cái đầu >
< cơ thể người >
< div Tôi='Nội dung'>
< h1 >Trạm thời tiết Raspberry Pi</ h1 >

< div lớp='dữ liệu-nội dung'>
< h2 >Nhiệt độ</ h2 >
< div lớp='data-row'>
< div lớp='ô dữ liệu' Tôi='tempC'>
...
</ div >
< div lớp='ô dữ liệu' Tôi='tempF'>
...
</ div >
</ div >
</ div >

< div lớp='dữ liệu-nội dung'>
< h2 >Sức ép</ h2 >
< div lớp='data-row'>
< div lớp='ô dữ liệu' Tôi='áp suấtMb'>
...
</ div >
< div lớp='ô dữ liệu' Tôi='áp lựcPsi'>
...
</ div >
</ div >
< div lớp='data-row'>
< div lớp='ô dữ liệu' Tôi='áp lựcHpa'>
...
</ div >
< div lớp='ô dữ liệu' Tôi='áp lựcP'>
...
</ div >
</ div >
</ div >

< div lớp='dữ liệu-nội dung'>
< h2 >Độ ẩm</ h2 >
< div lớp='data-row'>
< div lớp='ô dữ liệu' Tôi='độ ẩm'>
...
</ div >
</ div >
</ div >
</ div >

< kịch bản kiểu='text / javascript' src='{{url_for (' static ', filename =' app.js ')}}'></ kịch bản >
</ cơ thể người >
</ html >

Sau đó nhấn + NS theo dõi bởi để cứu home.html tập tin.

Tạo một style.css tập tin trong tĩnh / thư mục như sau:

$ nano static / style.css

Nhập các mã sau vào style.css tập tin.

@nhập khẩu url('https://fonts.googleapis.com/css2?family=Roboto&display=swap');
* {
đệm lót: 0;
lề: 0;
font-family: 'Người máy', sans serif;
}
cơ thể người{
lai lịch: # 737373;
}
h1{
trưng bày: khối;
màu sắc: # 79DC7B;
căn chỉnh văn bản: Trung tâm;
font-weight: 400;
lai lịch: # 000;
đệm lót: 0,5em 0;
}
h2{
trưng bày: khối;
lai lịch: # 000;
màu sắc: #fff;
căn chỉnh văn bản: Trung tâm;
font-weight: 400;
cỡ chữ: 1em;
}
.data-content {
lề: 10px;
biên giới: 2px chất rắn màu đen;
bán kính biên giới: 5px;
màu nền: # 79DC7B;
}
.data-row {
trưng bày:uốn cong;
hướng uốn:hàng ngang;
}
.data-cell {
chiều rộng: 100%;
Chiều cao: 80px;
trưng bày:uốn cong;
căn chỉnh các mặt hàng: Trung tâm;
biện minh-nội dung: Trung tâm;
font-weight: in đậm;
cỡ chữ: 1,5em;
màu sắc: # 006902;
}
.data-cell:bay lượn {
lai lịch: # FFE891;
màu sắc: # AA8600;
con trỏ: con trỏ;
}

Sau đó nhấn + NS theo dõi bởi để cứu style.css tập tin.

Tạo ra một app.js tập tin trong tĩnh / thư mục như sau:

$ nano static / app.js

Nhập mã sau vào app.js tập tin.

cửa sổ.addEventListener('trọng tải',chủ chốt);
hàm sốchủ chốt() {
hàm sốgetAPIData() {
ở đâuhttp= MớiXMLHttpRequest();

http.onreadystatechange = hàm số() {
nếu như(cái này.readyState === 4 && cái này.trạng thái === 200) {
cập nhật(JSON.phân tích cú pháp(cái này.responseText));
}
}

http.mở ra('HIỂU ĐƯỢC', '/Cháy', thật);
http.gửi();
}


hàm sốcập nhật(apiData) {
ở đâutempC=tài liệu.getElementById('tempC');
ở đâutempF=tài liệu.getElementById('tempF');
ở đâuáp suấtMb=tài liệu.getElementById('áp suấtMb');
ở đâuáp lực=tài liệu.getElementById('áp lựcPsi');
ở đâuáp lực=tài liệu.getElementById('áp lựcHpa');
ở đâuáp lựcP=tài liệu.getElementById('áp lựcP');
ở đâuđộ ẩm=tài liệu.getElementById('độ ẩm');

tempC.bên trongHTML =parseFloat(apiData.nhiệt độ.NS).toFixed(2) + '° C';
tempF.bên trongHTML =parseFloat(apiData.nhiệt độ.NS).toFixed(2) + '° F';

áp suấtMb.bên trongHTML =parseFloat(apiData.sức ép.mb).toFixed(2) + 'mb';
áp lựcPsi.bên trongHTML =parseFloat(apiData.sức ép.psi).toFixed(2) + 'psi';
áp suấtHpa.bên trongHTML =parseFloat(apiData.sức ép.hPa).toFixed(2) + 'hPa';
áp lựcP.bên trongHTML =parseFloat(apiData.sức ép.P).toFixed(2) + ' P';

độ ẩm.bên trongHTML =parseFloat(apiData.độ ẩm).toFixed(2) + '%';
}


hàm sốứng dụng() {
cửa sổ.setInterval(hàm số() {
getAPIData();
}, 5000);
}

ứng dụng();
}

Sau đó nhấn + NS theo dõi bởi để cứu app.js tập tin.

Ở đây, dòng 1 chạy chủ chốt() hoạt động khi trang web tải xong. bên trong chủ chốt() chức năng, getAPIData () hàm tìm nạp dữ liệu API thời tiết bằng AJAX và gọi cập nhật() (ở dòng 10) khi dữ liệu đã được tìm nạp thành công. Các cập nhật() chức năng cập nhật phần tử trang web bằng cách sử dụng dữ liệu API.

Trong dòng 20, document.getElementById () được sử dụng để lấy tham chiếu của phần tử trang web với id tempC . Dòng 28 được sử dụng để thay thế nội dung của phần tử trang web có id tempC với nhiệt độ (tính bằng độ C) từ API. Theo cách tương tự, nội dung của tất cả các phần tử web (dòng 21–26) được thay thế bằng dữ liệu API tương ứng của chúng.

bên trong ứng dụng() chức năng, getAPIData () được gọi sau mỗi 5 giây (5000 mili giây) để giữ cho dữ liệu thời tiết được cập nhật trong ứng dụng thời tiết. Cuối cùng, trong dòng 46, ứng dụng() chức năng được thực thi.

Để kiểm tra ứng dụng web, hãy nhập lệnh sau:

$ FLASK_APP = server.py chạy bình --host = 0.0.0.0

Ứng dụng thời tiết sẽ chạy trên cổng 5000 (theo mặc định).

Để kiểm tra xem API thời tiết có hoạt động hay không, hãy chạy lệnh sau:

$ curl -s http: // localhost: 5000 / api | json_pp

Như bạn có thể thấy, dữ liệu API thời tiết được in ra bảng điều khiển. Do đó, API đang hoạt động.

Để kiểm tra ứng dụng Thời tiết, hãy truy cập http: // localhost: 5000 từ trình duyệt web Chromium. Ứng dụng Thời tiết sẽ được tải trên trình duyệt web, nhưng không có dữ liệu thời tiết nào được hiển thị lúc đầu.

Sau một vài giây, ứng dụng thời tiết sẽ hoàn tất việc tìm nạp dữ liệu thời tiết từ API và hiển thị nó.

Tại bất kỳ thời điểm nào, bạn có thể nhấn + NS để dừng máy chủ web.

Tạo dịch vụ Systemd cho ứng dụng web thời tiết

Trong phần này, chúng tôi sẽ hướng dẫn bạn cách tạo tệp dịch vụ systemd cho ứng dụng thời tiết để nó tự động khởi động khi khởi động.

Đầu tiên, hãy tạo một Weather-station.service tệp trong thư mục dự án của bạn như sau:

$ nano weather-station.service

Nhập các dòng mã sau vào Weather-station.service tập tin.

[Đơn vị]
Description = Ứng dụng web Raspberry Pi Weather Station sử dụng Raspberry Pi Sense Hat
After = network.target

[Dịch vụ]
WorkingDirectory = / home / pi / work
Môi trường = FLASK_APP = server.py
Môi trường = FLASK_ENV = sản xuất
ExecStart = / usr / bin / flask run --host = 0.0.0.0
StandardOutput = kế thừa
StandardError = inherit
Khởi động lại = luôn luôn
Người dùng = pi

[Cài đặt]
WantedBy = multi-user.target

Sau đó nhấn + NS theo dõi bởi để cứu Weather-station.service tập tin.

Sao chép Weather-station.service nộp vào / etc / systemd / system / thư mục bằng lệnh sau:

$ sudo cp -v weather-station.service / etc / systemd / system /

Tải lại các daemon systemd để các thay đổi có hiệu lực như sau:

$ sudo systemctl daemon-tải lại

Các trạm thời tiết dịch vụ systemd hiện không hoạt động, như thể hiện trong ảnh chụp màn hình bên dưới.

$ sudo systemctl status weather-station.service

Bắt đầu trạm thời tiết dịch vụ với lệnh sau:

$ sudo systemctl start weather-station.service

Như bạn có thể thấy, trạm thời tiết dịch vụ hiện đang chạy.

$ sudo systemctl status weather-station.service

Bây giờ trạm thời tiết dịch vụ đang hoạt động, bạn có thể thêm nó vào phần khởi động hệ thống của Raspberry Pi OS bằng lệnh sau:

$ sudo systemctl kích hoạt weather-station.service

Khởi động lại Raspberry Pi của bạn bằng lệnh sau:

$ sudo khởi động lại

Sau khi Raspberry Pi của bạn khởi động, trạm thời tiết dịch vụ sẽ được chạy, như được hiển thị trong ảnh chụp màn hình bên dưới.

$ sudo systemctl status weather-station.service

Truy cập ứng dụng Thời tiết từ các thiết bị khác

Để truy cập ứng dụng thời tiết từ các thiết bị khác trong mạng gia đình, bạn cần biết địa chỉ IP của Raspberry Pi. Bạn có thể tìm thấy địa chỉ IP của Raspberry Pi 4 từ giao diện quản lý web của bộ định tuyến tại nhà. Trong trường hợp của chúng tôi, địa chỉ IP là 192.168.0.103, nhưng địa chỉ này sẽ khác đối với bạn, vì vậy hãy đảm bảo thay thế địa chỉ này bằng địa chỉ của bạn trong tất cả các bước tiếp theo.

Nếu bạn có quyền truy cập vào bảng điều khiển Raspberry Pi, bạn cũng có thể chạy lệnh sau để tìm địa chỉ IP.

$ hostname -Tôi

Sau khi biết địa chỉ IP của Raspberry Pi, bạn có thể truy cập địa chỉ này từ bất kỳ thiết bị nào trong mạng gia đình của mình. Như trong ảnh chụp màn hình bên dưới, chúng tôi đã truy cập ứng dụng thời tiết từ điện thoại thông minh Android.

Phần kết luận

Trong bài viết này, chúng tôi đã hướng dẫn bạn cách sử dụng Raspberry Pi Sense Hat để xây dựng trạm thời tiết Raspberry Pi. Chúng tôi đã sử dụng mũ giác quan Thư viện Python để trích xuất dữ liệu thời tiết từ Raspberry Pi Sense Hat. Sau đó, chúng tôi sử dụng khuôn khổ web vi mô Flask Python để tạo API thời tiết và ứng dụng web. Ứng dụng web lấy dữ liệu thời tiết từ API thời tiết cứ sau 5 giây để giúp ứng dụng web luôn cập nhật dữ liệu thời tiết mới nhất.