Mục lục:
- Quân nhu
- Bước 1: Mã hóa dưới dạng giải quyết vấn đề
- Bước 2: Mã hóa: Nhận dữ liệu thời tiết
- Bước 3: Mã hóa: Sử dụng dữ liệu đó
- Bước 4: Mã hóa: Sử dụng RPi.GPIO và điốt LED
- Bước 5: Mã hóa: Nhận độ sáng của đèn LED
- Bước 6: Mã hóa: Các bước cuối cùng
- Bước 7: Xây dựng và nối dây
- Bước 8: Trình diễn và Kết luận
Video: Trạm thời tiết Raspberry PI LED: 8 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
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ụ
- Sắt hàn
- Dremel
- Nhìn thấy
Vật liệu
- Raspberry Pi 3 B + ~ 40 đô la ~ 30 đô la
- Dây nhảy từ nữ đến nam ~ 7 đô la
- 3 Điốt LED màu xanh lam và 2 màu đỏ ~ 11 đô la
- Điện trở 100 Ohm ~ 13 đô la
- Ván gỗ 4 x 4 x 1/4 ~ 5 đô la
- Hàn ~ 10 đô la
- 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
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
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:
Trạm thời tiết Internet Raspberry Pi: 5 bước (có hình ảnh)
Trạm Thời tiết Internet Raspberry Pi: *** Cập nhật *** Có thể hướng dẫn này đã lỗi thời. Các dịch vụ thời tiết cho dữ liệu thời tiết, được sử dụng trong Có thể hướng dẫn này, không còn hoạt động. TUY NHIÊN, có một dự án thay thế về cơ bản làm điều tương tự (chỉ tốt hơn - Hướng dẫn này
Trạm thời tiết NaTaLia: Trạm thời tiết sử dụng năng lượng mặt trời Arduino Đã thực hiện đúng cách: 8 bước (có hình ảnh)
Trạm thời tiết NaTaLia: Trạm thời tiết sử dụng năng lượng mặt trời Arduino Đã hoàn thành đúng cách: Sau 1 năm hoạt động thành công trên 2 địa điểm khác nhau, tôi đang chia sẻ kế hoạch dự án trạm thời tiết sử dụng năng lượng mặt trời của mình và giải thích cách nó phát triển thành một hệ thống thực sự có thể tồn tại trong thời gian dài thời kỳ từ năng lượng mặt trời. Nếu bạn theo dõi
Trạm thời tiết DIY & Trạm cảm biến WiFi: 7 bước (có hình ảnh)
DIY Weather Station & WiFi Sensor Station: Trong dự án này, tôi sẽ hướng dẫn bạn cách tạo một trạm thời tiết cùng với một trạm cảm biến WiFi. Trạm cảm biến đo dữ liệu nhiệt độ và độ ẩm cục bộ và gửi dữ liệu đó qua WiFi đến trạm thời tiết. Sau đó, trạm thời tiết hiển thị t
Nến thời tiết - Xem nhanh thời tiết và nhiệt độ: 8 bước
Nến thời tiết - Xem nhanh thời tiết và nhiệt độ: Sử dụng ngọn nến kỳ diệu này, bạn có thể cho biết nhiệt độ hiện tại và điều kiện bên ngoài ngay lập tức
Acurite 5 trong 1 Trạm thời tiết sử dụng Raspberry Pi và Weewx (các trạm thời tiết khác tương thích): 5 bước (có Hình ảnh)
Trạm thời tiết Acurite 5 trong 1 Sử dụng Raspberry Pi và Weewx (các Trạm thời tiết khác Tương thích): Khi tôi mua trạm thời tiết Acurite 5 trong 1, tôi muốn có thể kiểm tra thời tiết tại nhà của mình khi tôi đi vắng. Khi tôi về nhà và thiết lập nó, tôi nhận ra rằng tôi phải có màn hình kết nối với máy tính hoặc mua trung tâm thông minh của họ,