สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: การเข้ารหัสเพื่อแก้ปัญหา
- ขั้นตอนที่ 2: การเข้ารหัส: รับข้อมูลสภาพอากาศ
- ขั้นตอนที่ 3: การเข้ารหัส: การใช้ข้อมูลนั้น
- ขั้นตอนที่ 4: การเข้ารหัส: การใช้ RPi.GPIO และ LED Diodes
- ขั้นตอนที่ 5: การเข้ารหัส: รับความสว่าง LED
- ขั้นตอนที่ 6: การเข้ารหัส: ขั้นตอนสุดท้าย
- ขั้นตอนที่ 7: การสร้างและการเดินสาย
- ขั้นตอนที่ 8: การสาธิตและสรุปผล
วีดีโอ: Raspberry PI LED Weather Station: 8 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
เราสร้างสถานี LED สภาพอากาศ Raspberry PI โดยจะบอกผู้ใช้ว่าเมืองร้อนและเย็นเพียงใดโดยการให้แสงสว่างและหรี่ไฟ LED นอกจากนี้ยังมีการบอกพวกเขาว่าฝนตกในเมืองที่พวกเขาพิมพ์หรือไม่
สร้างโดย Michael Andrews และ Tio Marello
เสบียง
เครื่องมือ
- หัวแร้ง
- เดรเมล
- เลื่อย
วัสดุ
- Raspberry Pi 3 B+ ~40 ดอลลาร์ ~ 30 ดอลลาร์
- สายจัมเปอร์หญิงกับชาย ~7 ดอลลาร์
- ไดโอด LED สีน้ำเงิน 3 ดวงและสีแดง 2 ดวง ~ 11 ดอลลาร์
- ตัวต้านทาน 100 โอห์ม ~ 13 ดอลลาร์
- 4 x 4 x 1/4 ไม้กระดาน ~ 5 ดอลลาร์
- ประสาน ~ 10 ดอลลาร์
- ลวดทองแดง ~ 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
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 ที่แตกต่างกันสี่ดวง เราจึงต้องการจุดไฟโดยขึ้นอยู่กับวิธีการ เย็นหรือร้อนอยู่ที่เมืองของผู้ใช้ เราตัดสินใจที่จะมีสี่ขั้นตอนสำหรับผู้นำ
#ฟังก์ชั่น
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 และเรายังได้เรียนรู้มากมายเกี่ยวกับการใช้การบัดกรี
แนะนำ:
Raspberry Pi Internet Weather Station: 5 ขั้นตอน (พร้อมรูปภาพ)
Raspberry Pi Internet Weather Station: *** อัปเดต *** คำแนะนำนี้ล้าสมัย บริการสภาพอากาศสำหรับข้อมูลสภาพอากาศที่ใช้ในคำแนะนำนี้ใช้งานไม่ได้อีกต่อไป อย่างไรก็ตาม มีโครงการทางเลือกที่ทำสิ่งเดียวกันโดยพื้นฐาน (ดีกว่าเท่านั้น - คำสั่งนี้
DIY Weather Station & WiFi Sensor Station: 7 ขั้นตอน (พร้อมรูปภาพ)
DIY Weather Station & WiFi Sensor Station: ในโครงการนี้ ฉันจะแสดงวิธีสร้างสถานีตรวจอากาศพร้อมกับสถานีเซ็นเซอร์ WiFi สถานีเซ็นเซอร์จะวัดอุณหภูมิและความชื้นในพื้นที่ และส่งผ่าน WiFi ไปยังสถานีตรวจอากาศ จากนั้นสถานีตรวจอากาศจะแสดงเ
ทำ DIY Raspberry Pi Weather Station ด้วยซอฟต์แวร์: 7 ขั้นตอน (พร้อมรูปภาพ)
ทำ DIY Raspberry Pi Weather Station ให้สมบูรณ์ด้วยซอฟต์แวร์: ย้อนกลับไปเมื่อปลายเดือนกุมภาพันธ์ฉันเห็นโพสต์นี้ในไซต์ Raspberry Pi http://www.raspberrypi.org/school-weather-station-…พวกเขาได้สร้างสถานีตรวจอากาศ Raspberry Pi สำหรับโรงเรียน ฉันต้องการอย่างใดอย่างหนึ่ง! แต่ในขณะนั้น (และฉันยังเชื่อว่าในขณะที่เขียน
Raspberry PI การบันทึกอุณหภูมิและความชื้น, Cloud Weather Station, Wifi และสถิติมือถือ: 6 ขั้นตอน
Raspberry PI Temperature and Humidity Logging, Cloud Weather Station, Wifi and Mobile Stats: ด้วยอุปกรณ์ Raspberry PI คุณสามารถบันทึกข้อมูลอุณหภูมิและความชื้นภายนอก ในห้อง เรือนกระจก ห้องปฏิบัติการ ห้องเย็น หรือสถานที่อื่น ๆ ได้ฟรี ตัวอย่างนี้เราจะใช้บันทึกอุณหภูมิและความชื้น อุปกรณ์จะเชื่อมต่อกับอินเทอร์เน็ต v
Raspberry Pi Solar Weather Station: 7 ขั้นตอน (พร้อมรูปภาพ)
Raspberry Pi Solar Weather Station: จากความสำเร็จของสองโครงการก่อนหน้าของฉัน นั่นคือ Compact Camera และ Portable Games Console ฉันต้องการค้นหาความท้าทายใหม่ ความก้าวหน้าตามธรรมชาติคือระบบรีโมทกลางแจ้ง… ฉันต้องการสร้างสถานีตรวจอากาศ Raspberry Pi ที่