สารบัญ:

Raspberry PI LED Weather Station: 8 ขั้นตอน
Raspberry PI LED Weather Station: 8 ขั้นตอน

วีดีโอ: Raspberry PI LED Weather Station: 8 ขั้นตอน

วีดีโอ: Raspberry PI LED Weather Station: 8 ขั้นตอน
วีดีโอ: Raspberry pi 5 inch HDMI Screen Installation | #Shorts 2024, กรกฎาคม
Anonim
Raspberry PI LED Weather Station
Raspberry PI LED Weather Station

เราสร้างสถานี LED สภาพอากาศ Raspberry PI โดยจะบอกผู้ใช้ว่าเมืองร้อนและเย็นเพียงใดโดยการให้แสงสว่างและหรี่ไฟ LED นอกจากนี้ยังมีการบอกพวกเขาว่าฝนตกในเมืองที่พวกเขาพิมพ์หรือไม่

สร้างโดย Michael Andrews และ Tio Marello

เสบียง

เครื่องมือ

  1. หัวแร้ง
  2. เดรเมล
  3. เลื่อย

วัสดุ

  1. Raspberry Pi 3 B+ ~40 ดอลลาร์ ~ 30 ดอลลาร์
  2. สายจัมเปอร์หญิงกับชาย ~7 ดอลลาร์
  3. ไดโอด LED สีน้ำเงิน 3 ดวงและสีแดง 2 ดวง ~ 11 ดอลลาร์
  4. ตัวต้านทาน 100 โอห์ม ~ 13 ดอลลาร์
  5. 4 x 4 x 1/4 ไม้กระดาน ~ 5 ดอลลาร์
  6. ประสาน ~ 10 ดอลลาร์
  7. ลวดทองแดง ~ 5 ดอลลาร์

ขั้นตอนที่ 1: การเข้ารหัสเพื่อแก้ปัญหา

การเข้ารหัสคือการแก้ปัญหา

ในโครงการของเรา ปัญหาของเราคืออะไร? ปัญหาของเราคือการรับข้อมูลสภาพอากาศแล้วใช้ข้อมูลนั้นเพื่อบอก LEDS ของเราว่าปิดหรือเปิดอยู่ นี่เลยแยกปัญหาของเราออกเป็นสามส่วน

1. รับข้อมูลสภาพอากาศ

2. การใช้ข้อมูลนั้น

3. การใช้ LEDS

อย่างไรก็ตาม ภาษาที่เราใช้สำหรับโปรเจ็กต์นี้ Python และฮาร์ดแวร์ที่ทำงานอยู่ Python ทำให้เรามีวิธีง่ายๆ ในการบรรลุเป้าหมายเหล่านี้

เรามาเริ่มกันที่ปัญหาแรกกัน การรับข้อมูลสภาพอากาศ

ขั้นตอนที่ 2: การเข้ารหัส: รับข้อมูลสภาพอากาศ

Python เองไม่สามารถรับข้อมูลสภาพอากาศได้ เราต้องนำเข้าเครื่องมือสองอย่าง เช่นเดียวกับบริการภายนอก เพื่อรับข้อมูลสภาพอากาศ ในการทำเช่นนี้ เราใช้เครื่องมือสามอย่าง

1. คำขอ โมดูลหลามที่อนุญาตให้ใช้เว็บสแครป

2. Json เป็นโมดูลหลามที่ช่วยให้เราใช้รูปแบบไฟล์ JSON

3. OpenWeather เว็บไซต์ที่สามารถให้ข้อมูลสภาพอากาศกับเราได้

ดังนั้นเราจึงนำทั้งสองโมดูลมาโดยการเขียนโค้ดนี้ที่ด้านบนสุดของสคริปต์ python ของเรา

คำขอนำเข้า

นำเข้า json

ก่อนที่เราจะใช้เครื่องมือเหล่านี้ เราจำเป็นต้องใช้ Openweather ในการนั้น เราต้องสร้างบัญชีบนเว็บไซต์ของพวกเขา และรับคีย์ API ทำตามคำแนะนำบนเว็บไซต์ของพวกเขาแล้วคุณจะได้รับชุดตัวอักษรและตัวเลขซึ่งจะทำให้เราสามารถใช้บริการได้ ยังไง?

openweather_api_key = "260a23f27f5324ef2ae763c779c32d7e" # คีย์ API ของเรา (ไม่ใช่ของจริง)

base_call = "https://api.openweathermap.org/data/2.5/weather?q=" #OpenWeather Call #ที่นี่เราได้รับเมืองของผู้ใช้ในรูปแบบข้อความพิมพ์ ("พิมพ์ในเมือง!") city_name = อินพุต () #ที่นี่เรารวบรวมที่อยู่ที่เราจะเสียบเข้าไปที่ request.get เพื่อรับข้อมูลสภาพอากาศ full_call = base_call+city_name+"&appid="+openweather_api_key #สุดท้ายเราเรียก request.get ด้วยที่อยู่ของเรา จากนั้นเราจะแปลงเป็นไฟล์ json ไฟล์ Response = Request.get(full_call) WeatherData = Response.json() #JSON มีตัวแปรต่างๆ ที่เราสามารถเข้าถึงได้โดยใช้ไวยากรณ์นี้ #ที่นี่เราได้รับรหัสสภาพอากาศและอุณหภูมิในเคลวินของเมืองที่ผู้ใช้พิมพ์ใน WeatherID = WeatherData ["weather"][0]["id"] City_TemperatureK = WeatherData["main"]["temp"]

ที่นี่เรามีรหัสที่ทำให้เราได้รับข้อมูลสภาพอากาศของเรา คำขอ ในรูปแบบของ Request.get จะใช้ที่อยู่เว็บไซต์และให้ไฟล์จากเว็บไซต์นั้นกลับมา OpenWeather ให้ที่อยู่เพื่อโทรหาเราเพื่อให้ข้อมูลสภาพอากาศในรูปแบบของ json เรารวบรวมที่อยู่ที่เราเชื่อมต่อกับคำขอและรับไฟล์ json กลับมา จากนั้นเราสร้างสองตัวแปรและกำหนดให้กับอุณหภูมิและสภาพอากาศของเมืองของผู้ใช้

ตอนนี้ ด้วยรหัสนี้ เรามีสองตัวแปร เรามี weatherID และอุณหภูมิในเคลวิน

ขั้นตอนที่ 3: การเข้ารหัส: การใช้ข้อมูลนั้น

ตอนนี้เรามีตัวแปรสองตัวนี้แล้ว เราต้องเตรียมพวกมันให้พร้อมสำหรับใช้กับ LEDS ของเรา สำหรับแง่มุมนี้ เราไม่ต้องนำเข้าโมดูลใดๆ สำหรับสิ่งนี้

ขั้นแรก เราแปลงเคลวินเป็นฟาเรนไฮต์

เราทำสิ่งนี้โดยการสร้างตัวแปรด้วยไวยากรณ์นี้

City_TemperatureF = (City_TemperatureK - 273)*1.8 + 32

ซึ่งแปลงจากเคลวินเป็นฟาเรนไฮต์ (ซึ่งจริงๆแล้วแปลงจาก K -> C -> F)

ต่อไปคือ weatherID ของเรา weatherID เป็น ID ที่ Openweather ให้มา ซึ่งจะบอกเราเกี่ยวกับสภาพอากาศของเมือง

openweathermap.org/weather-conditions นี่คือรายการของพวกเขา

เราสังเกตเห็นว่าทุกอย่างที่ต่ำกว่า 700 เป็นปริมาณฝน ดังนั้นเราเพิ่งตรวจสอบว่ารหัสต่ำกว่า 700 เพื่อดูว่าฝนตกหรือไม่

def CheckRain(IdCode): if IdCode < 700: return True else: return False

ด้วยเหตุนี้ เราจึงมีตัวแปรสองตัวที่เตรียมไว้สำหรับใช้กับพิน Raspberry PI และไดโอด LED

ขั้นตอนที่ 4: การเข้ารหัส: การใช้ RPi. GPIO และ LED Diodes

การเข้ารหัส: การใช้ RPi. GPIO และ LED Diodes
การเข้ารหัส: การใช้ RPi. GPIO และ LED Diodes

RaspberryPi มาพร้อมกับชุดหมุดตัวผู้ที่เราสามารถใช้สื่อสารกับอุปกรณ์ไฟฟ้าต่างๆ ซึ่งในกรณีนี้คือ LED Diodes; มันคล้ายกับ Arduino และระบบของมัน อย่างไรก็ตาม Raspberry PI เป็นคอมพิวเตอร์เอนกประสงค์ ซึ่งต่างจากไมโครคอนโทรลเลอร์อย่าง Arduino ดังนั้น เราต้องทำงานเพิ่มอีกเล็กน้อยเพื่อใช้มัน ประกอบด้วยการตั้งค่าพินบน Raspberry Pi เราทำสิ่งนี้โดยใช้รหัสนี้

นำเข้า RPi. GPIO เป็น GPIO #เรานำเข้าโมดูลเพื่อให้ใช้งานได้

#ตั้งค่าพินGPIO.setmode(GPIO. BCM) GPIO.setwarnings(เท็จ)

#หมุดที่ LED เสียบอยู่ สิ่งเหล่านี้อาจแตกต่างกันหากคุณสร้าง ดังนั้นโปรดเปรียบเทียบและเปลี่ยนแปลงเมื่อจำเป็น

Extreme_Hot_LED_PIN = 26 Hot_LED_PIN = 16

Extreme_Cold_LED_PIN = 5

Cold_LED_PIN = 6

Rain_LED_PIN = 23

#เราตรวจสอบทุกพิน โดยใช้คำสั่ง.setup ใส่หมายเลขแล้วตั้งค่าเป็นพินเอาต์พุต

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_PIN)

อย่างไรก็ตาม รหัสนี้จะให้เราใช้สองสถานะกับ led เท่านั้น นั่นคือ เปิดและปิด อย่างไรก็ตาม เราต้องการให้มันหรี่ไฟได้ ในการทำเช่นนี้ เราใช้การปรับความกว้างพัลส์

การใช้การปรับความกว้างพัลส์

การปรับความกว้างของพัลส์ช่วยให้เราส่งสัญญาณแอนะล็อกโดยใช้พินดิจิตอล โดยพื้นฐานแล้ว จะเปิดและปิดแหล่งสัญญาณในอัตราที่สูง ซึ่งค่าเฉลี่ยออกมาที่แรงดันไฟฟ้าที่แน่นอน RPi. GPIO ช่วยให้เราใช้สิ่งนี้ได้ แม้ว่าจะมีโค้ดพิเศษอยู่บ้าง

#เราสร้างวัตถุสี่พินโดยใช้คำสั่ง GPIO. PWM ซึ่งรับหมายเลขช่องสัญญาณ

#ตัวเลขที่สองคือจำนวนครั้งที่อัปเดตต่อวินาที

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)

สำหรับขั้นตอนต่อไป คุณจะต้องทราบวิธีที่เราอัปเดตหมุดเหล่านี้

เราอัปเดตพินโดยใช้คำสั่ง

ExtremeColdLED.start(x)ColdLED.start(x) สุดขีด

ExtremeHotLED.start(x)

HotLED.start(x)

x ในกรณีนี้จะเป็นวัฏจักรหน้าที่ซึ่งกำหนดว่าชีพจรจะดับลงเท่าใด มีค่าตั้งแต่ 0-100 ดังนั้นเราต้องตั้งรหัสถัดไปจากข้อเท็จจริงนั้น

ขั้นตอนที่ 5: การเข้ารหัส: รับความสว่าง LED

การเข้ารหัส: รับความสว่าง LED
การเข้ารหัส: รับความสว่าง LED

เนื่องจากเรามีไฟ LED ที่แตกต่างกันสี่ดวง เราจึงต้องการจุดไฟโดยขึ้นอยู่กับวิธีการ เย็นหรือร้อนอยู่ที่เมืองของผู้ใช้ เราตัดสินใจที่จะมีสี่ขั้นตอนสำหรับผู้นำ

#ฟังก์ชั่น

def getmiddleleftledintensity(TemperatureinF): #Left Equation: y=-(50/20)x + 175 #Right Equation: y = (50/20)x - 75 return -(50/20)*อุณหภูมิในF + 175

def getmiddlerightledintensity(TemperatureinF):

#สมการซ้าย: y=-(50/20)x + 175 #สมการขวา: y = (50/20)x - 75 return (50/20)*อุณหภูมิในF - 75

def getextremeleftledintensity (อุณหภูมิในF):

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

กลับ -(100/30)*อุณหภูมิในF + 200

def getextremerightledintensity (อุณหภูมิในF):

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

ผลตอบแทน (100/30)*อุณหภูมิในF - (400/3)

#การตั้งค่าไฟ LED

def GetLEDBrightness (ชั่วคราว):

ถ้าอุณหภูมิ <= 0: extremecoldled = 100 coldled = 100 hotled = 0 extremehotled = 0

พิมพ์ ("ไฟ LED เย็นมาก:" + str (สุดขั้ว))

print("Cold led:" + str(coldled)) print("Extreme hot led" + str(extremehotled)) print("Hot led:" + str(hotled))

ExtremeColdLED.start (สุดขั้ว)

ColdLED.start (เย็น)

ExtremeHotLED.start (สุดขีด)

HotLED.start(hotled) elif temp >= 100: extremecoldled = 0 coldled = 0 hotled = 100 extremehotled = 100

พิมพ์ ("ไฟ LED เย็นมาก:" + str (สุดขั้ว))

print("Cold led:" + str(coldled)) print("Extreme hot led" + str(extremehotled)) print("Hot led:" + str(hotled))

ExtremeColdLED.start (สุดขั้ว)

ColdLED.start (เย็น)

ExtremeHotLED.start (สุดขีด)

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

พิมพ์ ("ไฟ LED เย็นมาก:" + str (สุดขั้ว))

print("Cold led:" + str(coldled)) print("Extreme hot led" + str(extremehotled)) print("Hot led:" + str(hotled))

ExtremeColdLED.start (สุดขั้ว)

ColdLED.start (เย็น)

ExtremeHotLED.start (สุดขีด)

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

พิมพ์ ("ไฟ LED เย็นมาก:" + str (สุดขั้ว))

print("Cold led:" + str(coldled)) print("Extreme hot led" + str(extremehotled)) print("Hot led:" + str(hotled))

ExtremeColdLED.start (สุดขั้ว)

ColdLED.start (เย็น)

ExtremeHotLED.start (สุดขีด)

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

พิมพ์ ("ไฟ LED เย็นมาก:" + str (สุดขั้ว))

print("Cold led:" + str(coldled)) print("Extreme hot led" + str(extremehotled)) print("Hot led:" + str(hotled))

ExtremeColdLED.start (สุดขั้ว)

ColdLED.start (เย็น)

ExtremeHotLED.start (สุดขีด)

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

เย็นชา = 100 - ร้อนจัด

หนาวมาก = 0

พิมพ์ ("ไฟ LED เย็นมาก:" + str (สุดขั้ว))

print("Cold led:" + str(coldled)) print("Extreme hot led" + str(extremehotled)) print("Hot led:" + str(hotled))

ExtremeColdLED.start (สุดขั้ว)

ColdLED.start (เย็น)

ExtremeHotLED.start (สุดขีด)

HotLED.start(hotled) elif temp == 50: extremecoldled = 0 coldled = 50 hotled = 50 extremehotled = 0

พิมพ์ ("ไฟ LED เย็นมาก:" + str (สุดขั้ว))

print("Cold led:" + str(coldled)) print("Extreme hot led" + str(extremehotled)) print("Hot led:" + str(hotled))

ExtremeColdLED.start (สุดขั้ว)

ColdLED.start (เย็น)

ExtremeHotLED.start (สุดขีด)

HotLED.start (ร้อน)

เอาล่ะ รหัสส่วนนี้ยาวมาก มันค่อนข้างยากที่จะอธิบายเช่นกัน โดยพื้นฐานแล้ว โค้ดด้านบนจะดูที่อุณหภูมิในหน่วยฟาเรนไฮต์ และกำหนดว่าอยู่ในชุดของช่วงหรือไม่ ขึ้นอยู่กับช่วง จะให้ตัวเลขสำหรับแต่ละ led และความสว่าง จากนั้นตั้งค่าความสว่างโดยการเรียกคำสั่ง start() นั่นคือคำอธิบายอย่างรวดเร็ว หากพอเพียง ฉันแนะนำให้คุณไปยังขั้นตอนถัดไป แต่ถ้าคุณต้องการดูคำอธิบายที่ยาวและน่าเบื่อ ให้อ่านต่อไป

เมื่อเราตั้งโปรแกรม เราตัดสินใจว่าวิธีที่ง่ายที่สุดในการรับค่าจากอุณหภูมิอยู่ในรูปแบบของฟังก์ชันทางคณิตศาสตร์ ดังนั้นเราจึงสร้างกราฟใน GeoGebra เพื่อแสดงถึงความสัมพันธ์ระหว่างอุณหภูมิของเรากับความสว่างที่นำของเรา เหตุผลที่มันสูงกว่า 100 ก็คือส่วนพิเศษจะเข้าสู่กลุ่มที่สอง อย่างไรก็ตาม เราพบปัญหาในการรับฟังก์ชันเดียวเพื่อจับคู่จุดเหล่านี้ทั้งหมดกับฟังก์ชันเดียว เราคิดว่าเราสามารถใช้พาราโบลาได้ แต่เราตัดสินใจใช้ชุดคำสั่ง if โดยพื้นฐานแล้ว โค้ดทั้งหมดนี้เป็นฟังก์ชันแบบแยกส่วน

ฟังก์ชันที่อยู่ด้านบนสุดคือสมการของเส้นตรงตามลำดับ เมื่อเรากำหนดได้ว่าอุณหภูมิอยู่ที่ใดบนกราฟ เราจะเรียกใช้ผ่านฟังก์ชันนั้น รับความสว่าง และส่งผ่านไปยังไฟ LED

ขั้นตอนที่ 6: การเข้ารหัส: ขั้นตอนสุดท้าย

สุดท้าย เราเพิ่มคำสั่งนี้ในตอนท้าย

ลอง:

while(True): GetLEDBrightness(City_TemperatureF) GetRainLED(WeatherID) time.sleep(10) ยกเว้น KeyboardInterrupt: quit()

คำสั่งพยายามและยกเว้นช่วยให้เราสามารถออกจากโค้ดโดยใช้แป้นพิมพ์ลัด อย่างใดเราจะต้องปิด Raspberry Pi เพื่อรีสตาร์ทรหัส จากนั้นเราก็มีลูปในขณะที่ทำงานตลอดไป เราอัปเดตไฟ LED เช่นเดียวกับอัปเดต LED ฝน เราหยุดเป็นเวลาสิบวินาที OpenWeather อนุญาตเพียง 60 โทรสำหรับข้อมูลต่อนาทีและ 10 วินาทีมีการอัปเดตมากมาย

และด้วยเหตุนี้รหัสของเราจึงเสร็จสิ้น ด้านล่างเป็นรหัสสำเร็จรูป

RaspberryPIWeatherStation.py

คำขอนำเข้า
นำเข้าRPi. GPIOasGPIO
นำเข้า
เวลานำเข้า
#รหัส Openweather น้อยกว่า 700 เป็นปริมาณน้ำฝนทั้งหมด
defCheckRain (IdCode):
ifIdCode<700:
กลับTrue
อื่น:
returnFalse
defgetmiddleleftledintensity(TemperatureinF):
#สมการทางซ้าย: y=-(50/20)x + 175
#สมการขวา: y = (50/20)x - 75
กลับ-(50/20)*อุณหภูมิในF+175
defgetmiddlerightledintensity(อุณหภูมิในF):
#สมการทางซ้าย: y=-(50/20)x + 175
#สมการขวา: y = (50/20)x - 75
ผลตอบแทน (50/20)*อุณหภูมิในF-75
defgetextremeleftledintensity (อุณหภูมิในF):
#LeftEquation: y = -(100/30)x + 200
#สมการขวา: y = (100/30)x - (400/3)
กลับ-(100/30)*อุณหภูมิในF+200
defgetextremerightledintensity (อุณหภูมิในF):
# LeftEquation: y = -(100/30)x + 200
# สมการขวา: y = (100/30) x - (400/3)
ผลตอบแทน (100/30)*อุณหภูมิในF- (400/3)
#GPIO ตั้งค่า
GPIO.setmode(GPIO. BCM)
GPIO.setwarnings(เท็จ)
#พิน
Extreme_Hot_LED_PIN=26
Hot_LED_PIN=16
Extreme_Cold_LED_PIN=5
เย็น_LED_PIN=6
Rain_LED_PIN=23
#ปักหมุดตั้งค่า
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(ชั่วคราว):
iftemp<=0:
หนาวมาก=100
เย็นชา=100
hotled=0
extremehotled=0
พิมพ์ ("ไฟ LED เย็นมาก:" + str (สุดขั้ว))
print("นำเย็น:"+str(เย็น))
พิมพ์ ("ไฟ LED ร้อนแรงมาก" + str (สุดขีด))
print("Hot led:"+str(hotled))
ExtremeColdLED.start (สุดขั้ว)
ColdLED.start (เย็น)
ExtremeHotLED.start (สุดขีด)
HotLED.start (ร้อน)
ลิฟต์>=100:
หนาวมาก=0
เย็นชา=0
hotled=100
สุดขีด=100
print("ไฟ led เย็นมาก:"+str(extremecoldled))
print("นำเย็น:"+str(เย็น))
พิมพ์ ("ไฟ LED ร้อนแรงมาก" + str (สุดขีด))
print("Hot led:"+str(hotled))
ExtremeColdLED.start (สุดขั้ว)
ColdLED.start (เย็น)
ExtremeHotLED.start (สุดขีด)
HotLED.start (ร้อน)
elif0<ชั่วคราว<=30:
extremecoldled=gettextremeleftledintensity(ชั่วคราว) -100
เย็นชา=100
hotled=0
extremehotled=0
print("ไฟ led เย็นมาก:"+str(extremecoldled))
print("นำเย็น:"+str(เย็น))
พิมพ์ ("ไฟ LED ร้อนแรงมาก" + str (สุดขีด))
print("Hot led:"+str(hotled))
ExtremeColdLED.start (สุดขั้ว)
ColdLED.start (เย็น)
ExtremeHotLED.start (สุดขีด)
HotLED.start (ร้อน)
elif100>อุณหภูมิ>=70:
หนาวมาก=0
เย็นชา=0
hotled=100
extremehotled=getextremerightledintensity(temp) -100
print("ไฟ led เย็นมาก:"+str(extremecoldled))
print("นำเย็น:"+str(เย็น))
พิมพ์ ("ไฟ LED ร้อนแรงมาก" + str (สุดขีด))
print("Hot led:"+str(hotled))
ExtremeColdLED.start (สุดขั้ว)
ColdLED.start (เย็น)
ExtremeHotLED.start (สุดขีด)
HotLED.start (ร้อน)
elif30<ชั่วคราว<50:
หนาวมาก=0
coldled=getmiddleleftledintensity(ชั่วคราว)
hotled=100-เย็น
extremehotled=0
พิมพ์ ("ไฟ LED เย็นมาก:" + str (สุดขั้ว))
print("นำเย็น:"+str(เย็น))
พิมพ์ ("ไฟ LED ร้อนแรงมาก" + str (สุดขีด))
print("Hot led:"+str(hotled))
ExtremeColdLED.start (สุดขั้ว)
ColdLED.start (เย็น)
ExtremeHotLED.start (สุดขีด)
HotLED.start (ร้อน)
elif50<อุณหภูมิ<70:
hotled=getmiddlerightledintensity(ชั่วคราว)
Extremehotled=0
coldled=100-hotled
หนาวมาก=0
พิมพ์ ("ไฟ LED เย็นมาก:" + str (สุดขั้ว))
print("นำเย็น:"+str(เย็น))
พิมพ์ ("ไฟ LED ร้อนแรงมาก" + str (สุดขีด))
print("Hot led:"+str(hotled))
ExtremeColdLED.start (สุดขั้ว)
ColdLED.start (เย็น)
ExtremeHotLED.start (สุดขีด)
HotLED.start (ร้อน)
ลิฟต์==50:
หนาวมาก=0
เย็นชา=50
hotled=50
extremehotled=0
print("ไฟ led เย็นมาก:"+str(extremecoldled))
print("นำเย็น:"+str(เย็น))
พิมพ์ ("ไฟ LED ร้อนแรงมาก" + str (สุดขีด))
print("Hot led:"+str(hotled))
ExtremeColdLED.start (สุดขั้ว)
ColdLED.start (เย็น)
ExtremeHotLED.start (สุดขีด)
HotLED.start (ร้อน)
defGetRainLED(idCode):
ifCheckRain(idCode):
GPIO.output(Rain_LED_PIN, GPIO.สูง)
อื่น:
GPIO.output(Rain_LED_PIN, GPIO. LOW)
ข้อมูล #Api: แทนที่คีย์ API ด้วยคีย์ oepnweather api ของคุณ
openweather_api_key="460a23f27ff324ef9ae743c7e9c32d7e"
base_call="https://api.openweathermap.org/data/2.5/weather?q="
print("พิมพ์ชื่อเมือง!")
city_name=input()
full_call=base_call+city_name+"&appid="+openweather_api_key
#การรับข้อมูลสภาพอากาศ
ตอบกลับ=requests.get(full_call)
WeatherData=Response.json()
WeatherID=WeatherData["weather"][0]["id"]
City_TemperatureK=ข้อมูลสภาพอากาศ["main"]["temp"]
City_TemperatureF= (City_TemperatureK-273)*1.8+32#แปลงเป็นฟาเรนไฮต์
#สิ่งของ LED/GPIO
พิมพ์("K:"+str(City_TemperatureK))
พิมพ์("F:"+str(City_TemperatureF))
พิมพ์ (WeatherID)
ลอง:
ในขณะที่ (จริง):
รับความสว่าง (City_TemperatureF)
GetRainLED (WeatherID)
เวลานอน(10)
ยกเว้นแป้นพิมพ์ขัดจังหวะ:
ล้มเลิก()

ดู rawRaspberryPIWeatherStation.py โฮสต์ด้วย ❤ โดย GitHub

ขั้นตอนที่ 7: การสร้างและการเดินสาย

ว้าว! หลังจากเขียนโค้ดทั้งหมดแล้ว เราก็ไปที่อาคาร ซึ่งง่ายกว่ามากเนื่องจากโคโรนาต้องอยู่บ้านตามคำสั่ง เราจึงไม่สามารถใช้เครื่องมือหลายอย่างที่เราคาดว่าจะมีที่โรงเรียนได้ ดังนั้น ส่วนนี้จึงง่ายกว่าที่เราตั้งใจไว้เล็กน้อย ข้อมูลเฉพาะก็มีความยืดหยุ่นเช่นกัน ก่อนอื่นเราวาดรูปสี่เหลี่ยมผืนผ้าบนแผ่นไม้ ขนาดเฉพาะนั้นไม่สำคัญมากนัก เนื่องจากเป็นเพียงแพลตฟอร์มสำหรับใส่ไฟ LED และอุปกรณ์อิเล็กทรอนิกส์

จากนั้นเราเจาะรู 1/8 ห้ารูในชิ้นไม้ของเรา

จากนั้นเราตัดสี่เหลี่ยมออกจากแผ่นกระดานเพื่อใช้เป็นแท่นสำหรับอุปกรณ์อิเล็กทรอนิกส์ของเรา

(นี่คือตอนที่เราเริ่ม เราพบเลื่อยที่ใหญ่กว่า!)

จากนั้นเราดันหมุดขั้วบวกและขั้วลบของตัวนำเข้าไปในรู ไฟ LED ควรวางอยู่บนยอดหลอดไฟยื่นออกมา ติดตามว่าขาใดยาวและสั้นกว่า จากนั้นเราก็เริ่มบัดกรีสายไฟเข้าด้วยกัน ก่อนอื่นเราประสานตัวต้านทานกับขาแอโนดของ LED (ขาที่ยาวกว่า)

จากนั้น เราประสานขาแคโทดของ LED กับลวดทองแดงเส้นเดียวที่เราจะใช้เป็นกราวด์ ควรมีลักษณะเช่นนี้

หลังจากที่เราทำอย่างนั้น เราประสานปลายสายจัมเปอร์ตัวผู้กับสายจัมเปอร์ตัวผู้กับปลายของตัวต้านทานแต่ละตัวและสายกราวด์ทองแดง เมื่อเราทำเช่นนั้น เราสามารถเริ่มเสียบสายไฟเข้ากับพินราสเบอร์รี่ PI GPIO นี่คือแผนภาพ! อย่างไรก็ตาม โปรดทราบว่าหมุดเป็นหมุดในรหัสที่สัมผัสก่อนหน้านี้

เมื่อคุณมีสายทั้งหมดแล้ว ตอนนี้สิ่งที่คุณต้องทำคือนำไฟล์ Python มาไว้บน Raspberry Pi และเปิดเทอร์มินัล เรียกใช้ "python3 RaspberryPIWeatherStation.py" จากนั้นทำตามที่แสดง

ขั้นตอนที่ 8: การสาธิตและสรุปผล

ขอบคุณที่อ่านจนจบ! ฉันจะแนบสคริปต์หลามด้านล่าง! ถ้ามีของที่เราเพิ่มได้ก็คงจะเป็น…

1. รองรับการป้อนข้อมูลประเภทต่างๆ (เมือง จุดทางภูมิศาสตร์ ฯลฯ)

2. รองรับข้อมูลสภาพอากาศเพิ่มเติม

3. เพิ่มหน้าจอเล็กๆ เพื่อแสดงข้อมูล

แจ้งให้เราทราบความคิดของคุณ! นี่เป็นโครงการที่สนุกในการสร้าง เราเรียนรู้มากมายเกี่ยวกับคำขอและการรับเอกสารทางอินเทอร์เน็ตโดยใช้ python และเรายังได้เรียนรู้มากมายเกี่ยวกับการใช้การบัดกรี

แนะนำ: