Mục lục:

Trạm thời tiết Raspberry PI LED: 8 bước
Trạm thời tiết Raspberry PI LED: 8 bước

Video: Trạm thời tiết Raspberry PI LED: 8 bước

Video: Trạm thời tiết Raspberry PI LED: 8 bước
Video: 01-Cài đặt RaspberryPi OS, điều khiển LED 3 đèn giao thông 2024, Tháng bảy
Anonim
Trạm thời tiết Raspberry PI LED
Trạm thời tiết Raspberry PI LED

Chúng tôi đã tạo Trạm LED thời tiết Raspberry PI. Nó cho người dùng biết mức độ nóng và lạnh của một thành phố bằng cách thắp sáng và làm mờ, đèn led. Nó cũng có một hướng dẫn để cho họ biết có hay không mưa ở thành phố mà họ đã nhập.

Được tạo bởi Michael Andrews và Tio Marello.

Quân nhu

Công cụ

  1. Sắt hàn
  2. Dremel
  3. Nhìn thấy

Vật liệu

  1. Raspberry Pi 3 B + ~ 40 đô la ~ 30 đô la
  2. Dây nhảy từ nữ đến nam ~ 7 đô la
  3. 3 Điốt LED màu xanh lam và 2 màu đỏ ~ 11 đô la
  4. Điện trở 100 Ohm ~ 13 đô la
  5. Ván gỗ 4 x 4 x 1/4 ~ 5 đô la
  6. Hàn ~ 10 đô la
  7. Dây đồng ~ 5 đô la

Bước 1: Mã hóa dưới dạng giải quyết vấn đề

Lập trình là giải quyết vấn đề

Vì vậy, trong dự án của chúng tôi, vấn đề của chúng tôi là gì? Vấn đề của chúng tôi là lấy dữ liệu thời tiết và sau đó sử dụng dữ liệu đó để cho các đèn LED của chúng tôi biết chúng đang tắt hay bật. Vì vậy, điều này chia vấn đề của chúng ta thành ba lĩnh vực.

1. Nhận dữ liệu thời tiết

2. Sử dụng dữ liệu đó

3. Sử dụng LEDS

Tuy nhiên, ngôn ngữ mà chúng tôi đã sử dụng cho dự án này, Python và phần cứng mà nó đang chạy, Python, cung cấp cho chúng tôi một cách dễ dàng để đạt được những mục tiêu này.

Vì vậy, chúng ta sẽ bắt đầu với vấn đề đầu tiên, lấy dữ liệu thời tiết.

Bước 2: Mã hóa: Nhận dữ liệu thời tiết

Python tự nó không thể lấy dữ liệu thời tiết. Chúng tôi phải nhập hai công cụ, cũng như một dịch vụ bên ngoài, để lấy dữ liệu thời tiết. Để làm điều này, chúng tôi sử dụng ba công cụ.

1. Yêu cầu, một mô-đun python cho phép thiết kế web

2. Json, một mô-đun python cho phép chúng tôi sử dụng định dạng tệp JSON

3. OpenWeather, một trang web có thể cung cấp cho chúng tôi dữ liệu thời tiết

Vì vậy, chúng tôi đưa hai mô-đun bằng cách viết mã này ở đầu tập lệnh python của chúng tôi.

yêu cầu nhập khẩu

nhập json

Tuy nhiên, trước khi sử dụng các công cụ này, chúng ta cần sử dụng Openweather. Để làm được điều đó, chúng tôi phải tạo tài khoản trên trang web của họ và lấy khóa API. Làm theo hướng dẫn trên trang web của họ và bạn sẽ nhận được một chuỗi các chữ cái và số cho phép chúng tôi sử dụng dịch vụ của họ. Thế nào?

openweather_api_key = "260a23f27f5324ef2ae763c779c32d7e" # Khoá API của chúng tôi (Không có thật)

base_call = "https://api.openweathermap.org/data/2.5/weather?q=" #OpenWeather Call # Ở đây chúng tôi lấy thành phố của người dùng dưới dạng bản in văn bản ("Nhập thành phố!") city_name = input () # Ở đây chúng tôi đã tập hợp địa chỉ mà chúng tôi sẽ cắm vào các request.get để nhận dữ liệu thời tiết full_call = base_call + city_name + "& appid =" + openweather_api_key # Cuối cùng, chúng tôi gọi request.get bằng địa chỉ của chúng tôi, sau đó chúng tôi chuyển nó thành tệp json Đáp ứng = request.get (full_call) Tệp WeatherData = Response.json () #JSON chứa các biến khác nhau mà chúng tôi có thể truy cập bằng cú pháp này # Ở đây chúng tôi nhận được ID thời tiết và nhiệt độ ở Kelvin của thành phố mà người dùng đã nhập vào WeatherID = WeatherData ["weather"] [0] ["id"] City_TempetherK = WeatherData ["main"] ["temp"]

Ở đây chúng tôi có mã nhận dữ liệu thời tiết của chúng tôi. Yêu cầu, ở dạng request.get, lấy một địa chỉ trang web và cung cấp cho chúng tôi một tệp từ trang web đó trở lại. OpenWeather cung cấp cho chúng tôi một địa chỉ để gọi để cung cấp cho chúng tôi dữ liệu thời tiết dưới dạng json. Chúng tôi tập hợp một địa chỉ mà chúng tôi đưa vào các yêu cầu và lấy lại tệp json. Sau đó, chúng tôi tạo hai biến và gán chúng cho nhiệt độ và thời tiết của thành phố của người dùng.

Vì vậy, bây giờ, với mã này, chúng ta có hai biến. Chúng tôi có ID thời tiết và nhiệt độ ở Kelvin

Bước 3: Mã hóa: Sử dụng dữ liệu đó

Bây giờ chúng ta có hai biến này, chúng ta phải chuẩn bị chúng để sử dụng cho LEDS của chúng ta. Đối với khía cạnh này, chúng tôi không phải nhập bất kỳ mô-đun nào cho việc này.

Đầu tiên, chúng tôi chuyển đổi kelvin thành Fahrenheit.

Chúng tôi thực hiện việc này bằng cách tạo một biến với cú pháp này

Nhiệt độ Thành phốF = (Nhiệt độ Thành phốK - 273) * 1.8 + 32

chuyển đổi từ Kelvin sang Fahrenheit (thực sự chuyển đổi từ K -> C -> F)

Tiếp theo là thời tiết của chúng tôi. WeatherID là một ID mà Openweather cung cấp, nó cho chúng ta biết về điều kiện thời tiết của một thành phố.

openweathermap.org/weather-conditions Đây là danh sách chúng.

Chúng tôi nhận thấy rằng mọi thứ dưới con số 700 là một số loại mưa, vì vậy chúng tôi chỉ cần kiểm tra xem mã có dưới 700 hay không để xem liệu trời có mưa hay không.

def CheckRain (IdCode): nếu IdCode <700: trả về Đúng khác: trả về Sai

Với điều đó, chúng tôi có hai biến sẵn sàng để sử dụng với các chân Raspberry PI và Điốt LED.

Bước 4: Mã hóa: Sử dụng RPi. GPIO và điốt LED

Mã hóa: Sử dụng RPi. GPIO và điốt LED
Mã hóa: Sử dụng RPi. GPIO và điốt LED

RaspberryPi đi kèm với một bộ chân cắm nam mà chúng ta có thể sử dụng để giao tiếp với một loạt các thành phần điện, trong trường hợp này là Điốt LED; nó giống với Arduino và hệ thống của nó. Tuy nhiên, Raspberry PI là một máy tính đa năng, trái ngược với một bộ vi điều khiển như Arduino. Vì vậy, chúng ta phải làm nhiều việc hơn một chút để sử dụng chúng. Điều này bao gồm việc thiết lập các chân trên Raspberry Pi. Chúng tôi làm điều này bằng cách sử dụng mã này.

nhập RPi. GPIO dưới dạng GPIO #Chúng tôi nhập mô-đun để có thể sử dụng

# Thiết lập các chânGPIO.setmode (GPIO. BCM) GPIO.setwarnings (Sai)

# Các chân của đèn LED được cắm vào. Những điều này có thể khác nếu bạn xây dựng nó, vì vậy hãy đảm bảo so sánh và thay đổi khi cần thiết

Extreme_Hot_LED_PIN = 26 Hot_LED_PIN = 16

Extreme_Cold_LED_PIN = 5

Cold_LED_PIN = 6

Rain_LED_PIN = 23

# Chúng tôi đi qua từng chân, sử dụng lệnh.setup, nhập số của nó và đặt nó làm chân đầu ra

GPIO.setup (Rain_LED_PIN, GPIO. OUT) GPIO.setup (Extreme_Cold_LED_PIN, GPIO. OUT) GPIO.setup (Cold_LED_PIN, GPIO. OUT) GPIO.setup (Hot_LED_PIN, GPIO. OUT) GPIO.setup (Extreme_Hot_LED_PIN, GPIO. OUT)

Tuy nhiên, mã này sẽ chỉ cho phép chúng tôi sử dụng hai trạng thái với đèn led, đó là bật và tắt. Tuy nhiên, chúng ta cần nó để có thể làm mờ đèn. Để làm điều này, chúng tôi sử dụng Điều chế độ rộng xung.

Sử dụng điều chế độ rộng xung

Điều chế độ rộng xung cho phép chúng tôi xuất tín hiệu tương tự bằng cách sử dụng chân kỹ thuật số. Về cơ bản, nó bật và tắt nguồn tín hiệu ở tốc độ cao, trung bình ở mức điện áp nhất định. RPi. GPIO cho phép chúng tôi sử dụng điều này, mặc dù có thêm một số mã.

# Chúng tôi tạo bốn đối tượng pin bằng lệnh GPIO. PWM, lấy số kênh

# Con số thứ hai là số lần nó cập nhật mỗi giây

ExtremeHotLED = GPIO. PWM (Extreme_Hot_LED_PIN, 100) HotLED = GPIO. PWM (Hot_LED_PIN, 100)

ExtremeColdLED = GPIO. PWM (Extreme_Cold_LED_PIN, 100)

ColdLED = GPIO. PWM (Cold_LED_PIN, 100)

Đối với bước tiếp theo, bạn sẽ phải biết cách chúng tôi cập nhật các ghim này.

Chúng tôi cập nhật các chân bằng lệnh

ExtremeColdLED.start (x) ColdLED.start (x)

ExtremeHotLED.start (x)

HotLED.start (x)

x trong trường hợp này sẽ là chu kỳ nhiệm vụ, xác định mức độ xung của nó. Nó nằm trong khoảng từ 0-100, vì vậy chúng tôi phải căn cứ mã tiếp theo của chúng tôi dựa trên thực tế đó.

Bước 5: Mã hóa: Nhận độ sáng của đèn LED

Mã hóa: Nhận độ sáng của đèn LED
Mã hóa: Nhận độ sáng của đèn LED

Bởi vì chúng tôi có bốn đèn led khác nhau, chúng tôi muốn làm sáng chúng tùy thuộc vào cách thức. lạnh hay nóng nó là ở thành phố của người dùng. Chúng tôi quyết định có bốn giai đoạn dẫn đầu.

#Chức năng

def getmiddleleftledintensity (TemperatureinF): #Left Equation: y = - (50/20) x + 175 #Right Equation: y = (50/20) x - 75 return - (50/20) * TemperatureinF + 175

def getmiddlerightledintensity (TemperatureinF):

# Phương trình bên trái: y = - (50/20) x + 175 # Phương trình bên phải: y = (50/20) x - 75 trả về (50/20) * Nhiệt độF - 75

def getextremeleftledintensity (TemperatureinF):

#LeftEquation: y = - (100/30) x + 200 #RightEquation: y = (100/30) x - (400/3)

trở lại - (100/30) * Nhiệt độF + 200

def getextremerightledintensity (TemperatureinF):

# Câu lệnh bên trái: y = - (100/30) x + 200 # Câu lệnh bên phải: y = (100/30) x - (400/3)

trở lại (100/30) * Nhiệt độinF - (400/3)

# Đặt Đèn LED

def GetLEDBrightness (tạm thời):

nếu nhiệt độ <= 0: Extremecoldled = 100 coldled = 100 hotled = 0 Extremehotled = 0

print ("Đèn led cực lạnh:" + str (cực nét))

print ("LED lạnh:" + str (lạnh)) print ("LED cực nóng" + str (cực nóng)) print ("LED nóng:" + str (nóng))

ExtremeColdLED.start (cực gấp)

ColdLED.start (nguội lạnh)

ExtremeHotLED.start (ảnh cực đoan)

HotLED.start (hotled) nhiệt độ elif> = 100: Extremecoldled = 0 coldled = 0 hotled = 100 Extremehotled = 100

print ("Đèn led cực lạnh:" + str (cực nét))

print ("LED lạnh:" + str (lạnh)) print ("LED cực nóng" + str (cực nóng)) print ("LED nóng:" + str (nóng))

ExtremeColdLED.start (cực gấp)

ColdLED.start (nguội lạnh)

ExtremeHotLED.start (ảnh cực đoan)

HotLED.start (hotled) elif 0 <temp <= 30: Extremecoldled = getextremeleftledintensity (temp) - 100 coldled = 100 hotled = 0 Extremehotled = 0

print ("Đèn led cực lạnh:" + str (cực đậm))

print ("LED lạnh:" + str (lạnh)) print ("LED cực nóng" + str (cực nóng)) print ("LED nóng:" + str (nóng))

ExtremeColdLED.start (cực gấp)

ColdLED.start (nguội lạnh)

ExtremeHotLED.start (ảnh cực đoan)

HotLED.start (hotled) elif 100> temp> = 70: Extremecoldled = 0 coldled = 0 hotled = 100 Extremehotled = getextremerightledintensity (temp) - 100

print ("Đèn led cực lạnh:" + str (cực đậm))

print ("LED lạnh:" + str (lạnh)) print ("LED cực nóng" + str (cực nóng)) print ("LED nóng:" + str (nóng))

ExtremeColdLED.start (cực gấp)

ColdLED.start (nguội)

ExtremeHotLED.start (ảnh cực đoan)

HotLED.start (hotled) elif 30 <temp <50: Extremecoldled = 0 coldled = getmiddleleftledintensity (temp) hotled = 100 - coldled Extremehotled = 0

print ("Đèn led cực lạnh:" + str (cực nét))

print ("LED lạnh:" + str (lạnh)) print ("LED cực nóng" + str (cực nóng)) print ("LED nóng:" + str (nóng))

ExtremeColdLED.start (cực gấp)

ColdLED.start (nguội lạnh)

ExtremeHotLED.start (ảnh cực đoan)

HotLED.start (hotled) elif 50 <temp <70: hotled = getmiddlerightledintensity (temp) Extremehotled = 0

coldled = 100 - hotled

cực đoan = 0

print ("Đèn led cực lạnh:" + str (cực nét))

print ("LED lạnh:" + str (lạnh)) print ("LED cực nóng" + str (cực nóng)) print ("LED nóng:" + str (nóng))

ExtremeColdLED.start (cực gấp)

ColdLED.start (nguội)

ExtremeHotLED.start (ảnh cực đoan)

HotLED.start (hotled) elif temp == 50: Extremecoldled = 0 coldled = 50 hotled = 50 Extremehotled = 0

print ("Đèn led cực lạnh:" + str (cực đậm))

print ("LED lạnh:" + str (lạnh)) print ("LED cực nóng" + str (cực nóng)) print ("LED nóng:" + str (nóng))

ExtremeColdLED.start (cực gấp)

ColdLED.start (nguội lạnh)

ExtremeHotLED.start (ảnh cực đoan)

HotLED.start (hotled)

Được rồi, đoạn mã này rất dài. Nó cũng khá khó để giải thích. Về cơ bản, đoạn mã ở trên xem xét nhiệt độ ở độ F và xác định xem nó có nằm trong một tập hợp các dải không. Tùy thuộc vào phạm vi, nó đưa ra một số cho mỗi đèn led và độ sáng của nó, sau đó đặt độ sáng bằng cách gọi lệnh start (). Đó là lời giải thích nhanh chóng. Nếu nó đủ, tôi khuyên bạn nên chuyển sang bước tiếp theo, nhưng nếu bạn muốn xem lời giải thích dài và tẻ nhạt, hãy tiếp tục đọc.

Khi chúng tôi lập trình, chúng tôi quyết định cách dễ nhất để nhận giá trị từ nhiệt độ là ở dạng một hàm toán học. Vì vậy, chúng tôi đã tạo một biểu đồ trong GeoGebra để biểu thị mối quan hệ giữa nhiệt độ và độ sáng đèn led của chúng tôi; lý do nó vượt quá 100 là do phần phụ sẽ đi vào dẫn thứ hai. Tuy nhiên, chúng tôi gặp phải vấn đề nhận được một hàm duy nhất để ánh xạ tất cả các điểm này thành một hàm duy nhất. Chúng tôi nghĩ rằng chúng tôi có thể sử dụng một parabol, nhưng chúng tôi quyết định chỉ sử dụng một loạt các câu lệnh if. Về bản chất, toàn bộ mã này là một hàm từng mảnh.

Các hàm ở trên cùng là phương trình tương ứng của các đường. Khi chúng tôi xác định được nhiệt độ ở đâu trên biểu đồ, chúng tôi chạy nó qua chức năng đó, lấy độ sáng và truyền nó vào các đèn led.

Bước 6: Mã hóa: Các bước cuối cùng

Cuối cùng, chúng tôi thêm câu lệnh này vào cuối.

cố gắng:

while (True): GetLEDBrightness (City_TempeosystemF) GetRainLED (WeatherID) time.sleep (10) ngoại trừ KeyboardInterrupt: bỏ ()

Các câu lệnh thử và ngoại trừ cho phép chúng ta thoát mã bằng cách sử dụng một phím tắt; nếu không, chúng tôi sẽ phải tắt Raspberry Pi để khởi động lại mã. Sau đó, chúng ta có một vòng lặp while chạy mãi mãi. Chúng tôi cập nhật các loại đèn led, cũng như cập nhật đèn led gạt mưa. Chúng tôi tạm dừng trong mười giây; OpenWeather chỉ cho phép 60 cuộc gọi dữ liệu mỗi phút và 10 giây là rất nhiều cập nhật.

Và với điều đó, mã của chúng tôi đã hoàn thành. Dưới đây là mã đã hoàn thành.

RaspberryPIWeatherStation.py

yêu cầu nhập khẩu
importRPi. GPIOasGPIO
importjson
thời gian nhập khẩu
#Openweather id Các mã nhỏ hơn 700 đều là lượng mưa
defCheckRain (IdCode):
ifIdCode <700:
returnTrue
khác:
returnFalse
defgetmiddleleftledintensity (TemperatureinF):
#Left Equation: y = - (50/20) x + 175
# Phương trình phải: y = (50/20) x - 75
return- (50/20) * Nhiệt độF + 175
defgetmiddlerightledintensity (TemperatureinF):
#Left Equation: y = - (50/20) x + 175
# Phương trình đúng: y = (50/20) x - 75
trở lại (50/20) * Nhiệt độF-75
defgetextremeleftledintensity (TemperatureinF):
#LeftEquation: y = - (100/30) x + 200
#RightEquation: y = (100/30) x - (400/3)
return- (100/30) * Nhiệt độF + 200
defgetextremerightledintensity (TemperatureinF):
# LeftEquation: y = - (100/30) x + 200
# RightEquation: y = (100/30) x - (400/3)
trở lại (100/30) * Nhiệt độF- (400/3)
# Thiết lậpGPIO
GPIO.setmode (GPIO. BCM)
GPIO.setwarnings (Sai)
#Pins
Extreme_Hot_LED_PIN = 26
Hot_LED_PIN = 16
Extreme_Cold_LED_PIN = 5
Cold_LED_PIN = 6
Rain_LED_PIN = 23
#Pin Thiết lập
GPIO.setup (Rain_LED_PIN, GPIO. OUT)
GPIO.setup (Extreme_Cold_LED_PIN, GPIO. OUT)
GPIO.setup (Cold_LED_PIN, GPIO. OUT)
GPIO.setup (Hot_LED_PIN, GPIO. OUT)
GPIO.setup (Extreme_Hot_LED_PIN, GPIO. OUT)
ExtremeHotLED = GPIO. PWM (Extreme_Hot_LED_PIN, 100)
HotLED = GPIO. PWM (Hot_LED_PIN, 100)
ExtremeColdLED = GPIO. PWM (Extreme_Cold_LED_PIN, 100)
ColdLED = GPIO. PWM (Cold_LED_PIN, 100)
defGetLEDBrightness (tạm thời):
iftemp <= 0:
cực đoan = 100
nguội lạnh = 100
hotled = 0
Extremehotled = 0
print ("Đèn led cực lạnh:" + str (cực đậm))
print ("Cold led:" + str (coldled))
print ("Đèn led cực nóng" + str (cực nóng))
print ("Hot led:" + str (hotled))
ExtremeColdLED.start (cực gấp)
ColdLED.start (nguội lạnh)
ExtremeHotLED.start (ảnh cực đoan)
HotLED.start (hotled)
eliftemp> = 100:
cực đoan = 0
nguội lạnh = 0
hotled = 100
Extremehotled = 100
print ("Đèn led cực lạnh:" + str (cực đậm))
print ("Cold led:" + str (coldled))
print ("Đèn led cực nóng" + str (cực nóng))
print ("Hot led:" + str (hotled))
ExtremeColdLED.start (cực gấp)
ColdLED.start (nguội)
ExtremeHotLED.start (ảnh cực đoan)
HotLED.start (hotled)
elif0 <temp <= 30:
Extremecoldled = getextremeleftledintensity (tạm thời) -100
nguội lạnh = 100
hotled = 0
Extremehotled = 0
print ("Đèn led cực lạnh:" + str (cực nét))
print ("Cold led:" + str (coldled))
print ("Đèn led cực nóng" + str (cực nóng))
print ("Hot led:" + str (hotled))
ExtremeColdLED.start (cực gấp)
ColdLED.start (nguội lạnh)
ExtremeHotLED.start (ảnh cực đoan)
HotLED.start (hotled)
elif100> temp> = 70:
cực đoan = 0
nguội lạnh = 0
hotled = 100
Extremehotled = getextremerightledintensity (temp) -100
print ("Đèn led cực lạnh:" + str (cực nét))
print ("Dẫn nguội:" + str (nguội))
print ("Đèn led cực nóng" + str (cực nóng))
print ("Hot led:" + str (hotled))
ExtremeColdLED.start (cực gấp)
ColdLED.start (nguội)
ExtremeHotLED.start (ảnh cực đoan)
HotLED.start (hotled)
elif30 <temp <50:
cực đoan = 0
coldled = getmiddleleftledintensity (tạm thời)
hotled = 100-coldled
Extremehotled = 0
print ("Đèn led cực lạnh:" + str (cực nét))
print ("Cold led:" + str (coldled))
print ("Đèn led cực nóng" + str (cực nóng))
print ("Hot led:" + str (hotled))
ExtremeColdLED.start (cực gấp)
ColdLED.start (nguội)
ExtremeHotLED.start (ảnh cực đoan)
HotLED.start (hotled)
elif50 <temp <70:
hotled = getmiddlerightledintensity (tạm thời)
Extremehotled = 0
coldled = 100-hotled
cực đoan = 0
print ("Đèn led cực lạnh:" + str (cực nét))
print ("Dẫn nguội:" + str (nguội))
print ("Đèn led cực nóng" + str (cực nóng))
print ("Hot led:" + str (hotled))
ExtremeColdLED.start (cực gấp)
ColdLED.start (nguội lạnh)
ExtremeHotLED.start (ảnh cực đoan)
HotLED.start (hotled)
eliftemp == 50:
cực đoan = 0
nguội lạnh = 50
hotled = 50
Extremehotled = 0
print ("Đèn led cực lạnh:" + str (cực nét))
print ("Dẫn nguội:" + str (nguội))
print ("Đèn led cực nóng" + str (cực nóng))
print ("Hot led:" + str (hotled))
ExtremeColdLED.start (cực gấp)
ColdLED.start (nguội lạnh)
ExtremeHotLED.start (ảnh cực đoan)
HotLED.start (hotled)
defGetRainLED (idCode):
ifCheckRain (idCode):
GPIO.output (Rain_LED_PIN, GPIO. HIGH)
khác:
GPIO.output (Rain_LED_PIN, GPIO. LOW)
Thông tin #Api: Sửa khóa API bằng khóa api oepnweather của bạn
openweather_api_key = "460a23f27ff324ef9ae743c7e9c32d7e"
base_call = "https://api.openweathermap.org/data/2.5/weather?q="
print ("Nhập thành phố!")
city_name = input ()
full_call = base_call + city_name + "& appid =" + openweather_api_key
# Lấy Dữ liệu Thời tiết
Phản hồi = request.get (full_call)
WeatherData = Response.json ()
WeatherID = WeatherData ["weather"] [0] ["id"]
City_TempenticK = WeatherData ["main"] ["temp"]
Thành phố_Thiên độF = (Nhiệt độ Thành phốK-273) * 1.8 + 32 # Chuyển đổi sang độ F
# LED / GPIO Stuff
print ("K:" + str (City_Tempe HeatK))
print ("F:" + str (City_TempeosystemF))
in (WeatherID)
cố gắng:
while (Đúng):
GetLEDBrightness (City_TempeosystemF)
GetRainLED (WeatherID)
time.sleep (10)
ngoại trừKeyboardInterrupt:
từ bỏ()

xem rawRaspberryPIWeatherStation.py được lưu trữ với ❤ bởi GitHub

Bước 7: Xây dựng và nối dây

Chà! Sau tất cả những lần mã hóa đó, chúng tôi đến tòa nhà, dễ dàng hơn đáng kể. Do corona ở nhà theo đơn đặt hàng, chúng tôi không thể nhận được nhiều công cụ mà chúng tôi mong đợi sẽ có ở trường. Vì vậy, phần này đơn giản hơn một chút so với những gì chúng tôi dự định. Bản thân các chi tiết cụ thể cũng rất linh hoạt. Đầu tiên, chúng tôi vẽ một hình chữ nhật trên một tấm ván gỗ. Kích thước cụ thể không thực sự quan trọng quá nhiều, vì nó chỉ đơn giản đóng vai trò như một nền tảng để đặt đèn led và thiết bị điện tử.

Sau đó, chúng tôi khoan 5 1/8 lỗ trên mảnh gỗ của mình.

Sau đó, chúng tôi cắt hình chữ nhật ra khỏi tấm ván để sử dụng làm nền tảng cho thiết bị điện tử của chúng tôi.

(Đây là khi chúng tôi bắt đầu; chúng tôi đã tìm thấy một cái cưa lớn hơn!)

Sau đó chúng ta đẩy các chân cực dương và cực âm của led vào các lỗ; các đèn led sẽ được đặt trên đỉnh, bóng đèn của chúng nhô ra ngoài; theo dõi xem chân nào dài hơn và chân nào ngắn hơn. Sau đó, chúng tôi bắt đầu hàn các dây lại với nhau. Đầu tiên, chúng tôi hàn các điện trở vào chân cực dương của đèn LED (chân dài hơn).

Sau đó, chúng tôi hàn các chân cực âm của đèn LED vào một dây đồng duy nhất mà chúng tôi sẽ sử dụng làm đất. Nó sẽ giống như thế này.

Sau khi làm điều đó, chúng tôi hàn các đầu nam của cáp nhảy cái-nam với các đầu cuối của mỗi điện trở và dây nối đất bằng đồng. Khi chúng tôi làm điều đó, chúng tôi có thể bắt đầu cắm dây vào các chân GPIO của mâm xôi PI. Đây là một sơ đồ! Tuy nhiên, hãy lưu ý, các chân là những chân trong mã đã chạm trước đó.

Khi bạn đã có tất cả mọi thứ, bây giờ tất cả những gì bạn phải làm là tải tệp Python lên raspberry Pi và mở thiết bị đầu cuối. chạy "python3 RaspberryPIWeatherStation.py" và sau đó làm như nó hiển thị.

Bước 8: Trình diễn và Kết luận

Cảm ơn đã đọc tất cả các cách thông qua! Tôi sẽ đính kèm tập lệnh python bên dưới! Nếu có những thứ chúng tôi có thể thêm vào, có lẽ nó sẽ là…

1. Hỗ trợ các loại đầu vào khác nhau (thành phố, điểm địa lý, v.v.)

2. Hỗ trợ để biết thêm thông tin thời tiết

3. Thêm một màn hình nhỏ để hiển thị thông tin

Hãy để chúng tôi biết những suy nghĩ của bạn! Đây là một dự án thú vị để xây dựng. Chúng tôi đã học được rất nhiều về các yêu cầu và nhận tài liệu trên internet bằng python và chúng tôi cũng học được rất nhiều về cách sử dụng hàn.

Đề xuất: