ዝርዝር ሁኔታ:

Raspberry PI LED የአየር ሁኔታ ጣቢያ: 8 ደረጃዎች
Raspberry PI LED የአየር ሁኔታ ጣቢያ: 8 ደረጃዎች

ቪዲዮ: Raspberry PI LED የአየር ሁኔታ ጣቢያ: 8 ደረጃዎች

ቪዲዮ: Raspberry PI LED የአየር ሁኔታ ጣቢያ: 8 ደረጃዎች
ቪዲዮ: MKS Monster8 - Basics 2024, ሀምሌ
Anonim
Raspberry PI LED የአየር ሁኔታ ጣቢያ
Raspberry PI LED የአየር ሁኔታ ጣቢያ

እኛ Raspberry PI Weather LED ጣቢያ ፈጠርን። አንድ ከተማ በማብራት ፣ እና በማደብዘዝ ፣ በመመራት ምን ያህል ሞቃት እና ቀዝቃዛ እንደሆነ ለተጠቃሚው ይነግረዋል። እነሱ በጻፉበት ከተማ ውስጥ ያለው ዝናብ ወይም አለመሆኑን የሚነግራቸው መሪም አለው።

በሚካኤል አንድሪውስ እና በቲዮ ማሬሎሎ የተፈጠረ።

አቅርቦቶች

መሣሪያዎች

  1. የብረታ ብረት
  2. ድሬሜል
  3. አየ

ቁሳቁሶች

  1. Raspberry Pi 3 B+ ~ 40 ዶላር ~ 30 ዶላር
  2. ከሴት ወደ ወንድ ዝላይ ሽቦዎች ~ 7 ዶላር
  3. 3 ሰማያዊ እና 2 ቀይ የ LED ዳዮዶች ~ 11 ዶላር
  4. 100 Ohm Resistors ~ 13 ዶላር
  5. 4 x 4 x 1/4 የእንጨት ፕላንክ ~ 5 ዶላር
  6. ሻጭ ~ 10 ዶላር
  7. የመዳብ ሽቦ ~ 5 ዶላር

ደረጃ 1 ኮድ እንደ ችግር መፍታት

ኮድ መስጠት ችግርን መፍታት ነው

ስለዚህ በፕሮጀክታችን ውስጥ የእኛ ችግር ምንድነው? ችግራችን የአየር ሁኔታ መረጃን ማግኘት እና ከዚያ ያንን ውሂብ በመጠቀም የእኛን ኤልኢዲኤስ ጠፍተው ወይም ጠፍተው እንደሆነ መንገር ነው። ስለዚህ ይህ ችግራችንን በሦስት ዘርፎች ከፍሎታል።

1. የአየር ሁኔታ መረጃን ማግኘት

2. ያንን ውሂብ መጠቀም

3. LEDS ን መጠቀም

ሆኖም ፣ ለዚህ ፕሮጀክት የምንጠቀምበት ቋንቋ ፣ ፓይዘን ፣ እና እየሄደበት ያለው ሃርድዌር ፣ ፓይቶን ፣ እነዚህን ግቦች ለማሳካት ቀላል መንገድ ይሰጠናል።

ስለዚህ ፣ የአየር ሁኔታን መረጃ በማግኘት ከመጀመሪያው ችግር እንጀምር።

ደረጃ 2 ኮድ መስጠት - የአየር ሁኔታ መረጃን ማግኘት

Python በራሱ የአየር ሁኔታ መረጃን ማግኘት አይችልም። የአየር ሁኔታ መረጃን ለማግኘት ሁለት መሳሪያዎችን ፣ እንዲሁም የውጭ አገልግሎትን ማስመጣት አለብን። ይህንን ለማድረግ ሶስት መሳሪያዎችን እንጠቀማለን።

1. ጥያቄዎች ፣ ድርጣቢያዎችን የሚፈቅድ የፓይዘን ሞዱል

2. ጄሰን ፣ የፒኤንኤን ሞዱል የ JSON ፋይል ቅርጸት እንድንጠቀም ያስችለናል

3. OpenWeather ፣ የአየር ሁኔታ መረጃ ሊሰጠን የሚችል ድር ጣቢያ

ስለዚህ ፣ ይህንን ኮድ በእኛ የፓይዘን ስክሪፕት አናት ላይ በመፃፍ ሁለቱን ሞጁሎች እናመጣለን።

የማስመጣት ጥያቄዎች

ማስመጣት json

እነዚህን መሣሪያዎች ከመጠቀማችን በፊት ግን Openweather ን መጠቀም አለብን። ለዚያ ፣ በጣቢያቸው ላይ መለያ መፍጠር እና የኤፒአይ ቁልፍ ማግኘት አለብን። በድር ጣቢያቸው ላይ ያሉትን መመሪያዎች ይከተሉ እና አገልግሎታቸውን እንድንጠቀም የሚያስችሉን የደብዳቤዎች እና የቁጥሮች ሕብረቁምፊ ያገኛሉ። እንዴት?

openweather_api_key = "260a23f27f5324ef2ae763c779c32d7e" #የእኛ ኤፒአይ ቁልፍ (እውነተኛ አይደለም)

base_call = "http () #እዚህ እኛ ወደ ጥያቄዎች የምናስገባውን አድራሻ ሰብስበናል። የአየር ሁኔታ መረጃን ሙሉ_ክፍል = ቤዝ_ክሌል+የከተማ_ስም+ለመቀበል & appid = "+openweather_api_key #በመጨረሻ እኛ ጥያቄዎችን እንደውላለን። በአድራሻችን እንቀይራለን ፣ ከዚያ ወደ json ፋይል እንለውጠዋለን። ምላሽ = ጥያቄዎች። ["የአየር ሁኔታ"] [0] ["id"] City_TemperatureK = WeatherData ["ዋና"] ["temp"]

የእኛን የአየር ሁኔታ መረጃ የሚያገኝን ኮድ እዚህ አለን። ጥያቄዎች ፣ በ request.get መልክ ፣ የድር ጣቢያ አድራሻ ይወስዳል እና ከዚያ ድር ጣቢያ ፋይል መልሶ ይሰጠናል። የአየር ሁኔታ መረጃን በ json መልክ ለእኛ ለመስጠት OpenWeather ለመደወል አድራሻ ይሰጠናል። እኛ በጥያቄዎች ውስጥ የምንሰካበትን አድራሻ እንሰበስባለን እና የ json ፋይልን መልሰን እናገኛለን። ከዚያ ሁለት ተለዋዋጮችን እንፈጥራለን እና ለተጠቃሚው ከተማ የሙቀት መጠን እና የአየር ሁኔታ እንመድባቸዋለን።

ስለዚህ አሁን በዚህ ኮድ ሁለት ተለዋዋጮች አሉን። በኬልቪን ውስጥ የአየር ሁኔታ እና የሙቀት መጠን አለን።

ደረጃ 3 ኮድ መስጠት - ያንን ውሂብ መጠቀም

አሁን እነዚህ ሁለት ተለዋዋጮች ስላሉን ፣ ለኤልኢዲኤስ እንዲጠቀሙ አስቀድመን ማዘጋጀት አለብን። ለዚህ ገጽታ ፣ ለዚህ ምንም ሞጁሎችን ማስመጣት የለብንም።

በመጀመሪያ ፣ ኬልቪንን ወደ ፋራናይት እንለውጣለን።

ከዚህ አገባብ ጋር ተለዋዋጭ በመፍጠር ይህንን እናደርጋለን

የከተማ_ሙቀት F = (City_TemperatureK - 273)*1.8 + 32

ከኬልቪን ወደ ፋራናይት (ማለትም ከ K -> C -> F) የሚለወጠው።

ቀጣዩ የእኛ የአየር ሁኔታ መታወቂያ ነው። የአየር ሁኔታ መታወቂያ ስለ ከተማ የአየር ሁኔታ ሁኔታ የሚነግረን Openweather የሚሰጠው መታወቂያ ነው።

openweathermap.org/weather-conditions የእነርሱ ዝርዝር ይኸውና።

ከ 700 ቁጥር በታች ያለው ነገር ሁሉ የዝናብ ዓይነት መሆኑን አስተውለናል ፣ ስለዚህ ኮዱ ዝናብ መሆኑን ለማየት ከ 700 በታች መሆኑን መርምረናል።

def CheckRain (IdCode): IdCode <700: ተመለስ እውነት ሌላ: ሐሰት ይመልሱ

በዚያ ፣ በእኛ Raspberry PI ፒኖች እና በ LED ዳዮዶች ለመጠቀም ሁለታችን ተለዋዋጮች አሉን።

ደረጃ 4 ኮድ መስጠት - RPi. GPIO እና LED Diodes ን በመጠቀም

ኮድ መስጠት - RPi. GPIO እና LED Diodes ን በመጠቀም
ኮድ መስጠት - RPi. GPIO እና LED Diodes ን በመጠቀም

RaspberryPi ከኤሌክትሪክ አካላት አስተናጋጅ ጋር ለመገናኘት ልንጠቀምበት ከሚችሉት የወንድ ካስማዎች ስብስብ ጋር ይመጣል ፣ በዚህ ሁኔታ ውስጥ ፣ LED Diodes ነው። እሱ ከአርዱዲኖ እና ከስርዓቱ ጋር ተመሳሳይ ነው። ሆኖም Raspberry PI እንደ አርዱዲኖ ካለው ማይክሮ መቆጣጠሪያ በተቃራኒ አጠቃላይ ዓላማ ኮምፒተር ነው። ስለዚህ ፣ እነሱን ለመጠቀም ትንሽ ተጨማሪ ሥራ መሥራት አለብን። ይህ በ Raspberry Pi ላይ ያሉትን ፒኖች ማቀናበርን ያካትታል። ይህንን የምናደርገው ይህንን ኮድ በመጠቀም ነው።

RPi. GPIO ን እንደ GPIO አስመጣ #እኛ እንድንጠቀምበት ሞጁሉን እናስመጣለን

#ፒፒዎቹን ያዘጋጁ GPIO.setmode (GPIO. BCM) GPIO.setwarnings (ሐሰት)

#ኤልዲዎቹ (ፒዲዎቹ) ተሰክተዋል። እርስዎ ከገነቡ እነዚህ ሊለዩ ይችላሉ ፣ ስለሆነም ማወዳደር እና አስፈላጊ ሆኖ ሲገኝ መለወጥዎን ያረጋግጡ

Extreme_Hot_LED_PIN = 26 Hot_LED_PIN = 16

Extreme_Cold_LED_PIN = 5

ቀዝቃዛ_LED_PIN = 6

ዝናብ_ኤልዲ_ፒን = 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.

ሆኖም ፣ ይህ ኮድ ከመሪዎቹ ጋር ሁለት ግዛቶችን ብቻ እንድንጠቀም ይፈቅድልናል ፣ ማለትም ፣ አብራ እና አጥፋ። ሆኖም ፣ መብራቶቹን ማደብዘዝ እንድንችል ያስፈልገናል። ይህንን ለማድረግ የ Pulse Width Modulation ን እንጠቀማለን።

Pulse Width Modulation ን በመጠቀም

Pulse Width Modulation ዲጂታል ፒን በመጠቀም የአናሎግ ምልክት እንድናወጣ ያስችለናል። በዋናነት ፣ የምልክት ምንጩን በከፍተኛ ፍጥነት ያበራል እና ያጠፋል ፣ ይህም ለተወሰነ ቮልቴጅ አማካይ ነው። 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 ብሩህነትን ማግኘት

አራት የተለያዩ ሊዶች ስላሉን ፣ እንዴት እንደሚወሰን ላይ ማብራት እንፈልጋለን። ቀዝቃዛ ወይም ሞቃት እሱ በተጠቃሚው ከተማ ላይ ነው። ለአመራሩ አራት ደረጃዎች እንዲኖረን ወስነናል።

#ተግባራት

def getmiddleleftledensensity (TemperatureinF): #ግራ ቀመር: y = -(50/20) x + 175 #ትክክለኛ ቀመር y = (50/20) x -75 መመለስ -(50/20)*የሙቀት መጠን በ F + 175

def getmiddlerightledensensity (TemperatureinF) ፦

#የግራ ቀመር: y = - (50/20) x + 175 #ትክክለኛ ቀመር: y = (50/20) x - 75 መመለስ (50/20)*ሙቀት በኤፍ - 75

def getextremeleftledensensity (TemperatureinF) ፦

#የግራEquation y = - (100/30) x + 200 #ትክክለኛው እኩልነት y = (100/30) x - (400/3)

ተመላሽ -(100/30)*የሙቀት መጠን በ F + 200

def getextremerightledintensity (TemperatureinF) ፦

# የግራ እኩልነት: y = - (100/30) x + 200 # የቀኝ እኩልነት: y = (100/30) x - (400/3)

ተመላሽ (100/30)*የሙቀት መጠንF - (400/3)

#የ LED መብራቶችን ማቀናበር

def GetLEDBrightness (temp):

temp ከሆነ <= 0: extremcoldled = 100 coldled = 100 hotled = 0 extremhotled = 0

ማተም (“እጅግ በጣም ቀዝቃዛ መሪ”: + str (እጅግ በጣም የታሸገ))

ማተም ("ቀዝቃዛ መሪ:" + str (የቀዘቀዘ)) ህትመት ("እጅግ በጣም ሞቃት መሪ" + str (እጅግ በጣም ፈጣን)) ህትመት ("ትኩስ መሪ:" + str (hotled))

ExtremeColdLED.start (እጅግ በጣም የታሸገ)

ColdLED. ጀምር (የቀዘቀዘ)

ExtremeHotLED.start (እጅግ በጣም የተቀረጸ)

HotLED.start (hotled) elif temp> = 100: extremcoldled = 0 coldled = 0 hotled = 100 extremhotled = 100

ማተም (“እጅግ በጣም ቀዝቃዛ መሪ”: + str (እጅግ በጣም የታሸገ))

ማተም ("ቀዝቃዛ መሪ:" + str (የቀዘቀዘ)) ህትመት ("እጅግ በጣም ሞቃት መሪ" + str (እጅግ በጣም ፈጣን)) ህትመት ("ትኩስ መሪ:" + str (hotled))

ExtremeColdLED.start (እጅግ በጣም የታሸገ)

ColdLED. ጀምር (የቀዘቀዘ)

ExtremeHotLED.start (እጅግ በጣም የተቀረጸ)

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

ማተም (“እጅግ በጣም ቀዝቃዛ መሪ”: + str (እጅግ በጣም የታሸገ))

ማተም ("ቀዝቃዛ መሪ:" + str (የቀዘቀዘ)) ህትመት ("እጅግ በጣም ሞቃት መሪ" + str (እጅግ በጣም ፈጣን)) ህትመት ("ትኩስ መሪ:" + str (hotled))

ExtremeColdLED.start (እጅግ በጣም የታሸገ)

ColdLED. ጀምር (የቀዘቀዘ)

ExtremeHotLED.start (እጅግ በጣም የተቀረጸ)

HotLED.

ማተም (“እጅግ በጣም ቀዝቃዛ መሪ”: + str (እጅግ በጣም የታሸገ))

ማተም ("ቀዝቃዛ መሪ:" + str (የቀዘቀዘ)) ህትመት ("እጅግ በጣም ሞቃት መሪ" + str (እጅግ በጣም ፈጣን)) ህትመት ("ትኩስ መሪ:" + str (hotled))

ExtremeColdLED.start (እጅግ በጣም የታሸገ)

ColdLED. ጀምር (የቀዘቀዘ)

ExtremeHotLED.start (እጅግ በጣም የተቀረጸ)

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

ማተም (“እጅግ በጣም ቀዝቃዛ መሪ”: + str (እጅግ በጣም የታሸገ))

ማተም ("ቀዝቃዛ መሪ:" + str (የቀዘቀዘ)) ህትመት ("እጅግ በጣም ሞቃት መሪ" + str (እጅግ በጣም ፈጣን)) ህትመት ("ትኩስ መሪ:" + str (hotled))

ExtremeColdLED.start (እጅግ በጣም የታሸገ)

ColdLED. ጀምር (የቀዘቀዘ)

ExtremeHotLED.start (እጅግ በጣም የተቀረጸ)

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

የቀዘቀዘ = 100 - ትኩስ

እጅግ በጣም ተሸፍኗል = 0

ማተም (“እጅግ በጣም ቀዝቃዛ መሪ”: + str (እጅግ በጣም የታሸገ))

ማተም ("ቀዝቃዛ መሪ:" + str (የቀዘቀዘ)) ህትመት ("እጅግ በጣም ሞቃት መሪ" + str (እጅግ በጣም ፈጣን)) ህትመት ("ትኩስ መሪ:" + str (hotled))

ExtremeColdLED.start (እጅግ በጣም የታሸገ)

ColdLED. ጀምር (የቀዘቀዘ)

ExtremeHotLED.start (እጅግ በጣም የተቀረጸ)

HotLED.start (hotled) elif temp == 50: extremcoldled = 0 coldled = 50 hotled = 50 extremhotled = 0

ማተም (“እጅግ በጣም ቀዝቃዛ መሪ”: + str (እጅግ በጣም የታሸገ))

ማተም ("ቀዝቃዛ መሪ:" + str (የቀዘቀዘ)) ህትመት ("እጅግ በጣም ሞቃት መሪ" + str (እጅግ በጣም ፈጣን)) ህትመት ("ትኩስ መሪ:" + str (hotled))

ExtremeColdLED.start (እጅግ በጣም የታሸገ)

ColdLED. ጀምር (የቀዘቀዘ)

ExtremeHotLED.start (እጅግ በጣም የተቀረጸ)

HotLED.start (ትኩስ)

ደህና ፣ ይህ የኮድ ክፍል በእውነት ረጅም ነው። እንዲሁም ለማብራራት በጣም ከባድ ነው። በዋናነት ፣ ከላይ ያለው ኮድ በፋራናይት ውስጥ ያለውን የሙቀት መጠን ይመለከታል ፣ እና በክልሎች ስብስብ ውስጥ መሆኑን ይወስናል። በክልሎች ላይ በመመስረት ለእያንዳንዱ መሪ ቁጥር እና ብሩህነቱን ይሰጣል እና ከዚያ የመነሻ () ትዕዛዙን በመጥራት ብሩህነቱን ያዘጋጃል። ያ ፈጣን ማብራሪያ ነው። በቂ ከሆነ ፣ ወደሚቀጥለው ደረጃ እንዲሄዱ እመክራለሁ ፣ ግን ረጅሙን እና አድካሚውን ማብራሪያ ማየት ከፈለጉ ፣ ማንበብዎን ይቀጥሉ።

እኛ ፕሮግራም ስናደርግ ፣ ከሙቀት ዋጋን ለማግኘት ቀላሉ መንገድ በሂሳብ ተግባር መልክ ነበር። ስለዚህ ፣ በእኛ የሙቀት መጠን እና በእኛ መሪ ብሩህነት መካከል ያለውን ግንኙነት ለመወከል በጂኦግራብራ ውስጥ ግራፍ ፈጠርን ፣ ከ 100 በላይ የሚሄድበት ምክንያት ተጨማሪው ወደ ሁለተኛው መሪ ስለሚገባ ነው። ሆኖም ፣ እነዚህን ሁሉ ነጥቦች ወደ አንድ ተግባር ለማቀናጀት አንድ ነጠላ ተግባር የማግኘት ጉዳይ ውስጥ ገባን። እኛ ፓራቦላ መጠቀም እንደምንችል አስበን ነበር ፣ ግን እኛ ተከታታይ የአረፍተ -ነገር መግለጫዎችን ለመጠቀም ዝም ለማለት ወሰንን። በመሰረቱ ፣ ይህ አጠቃላይ ኮድ የቁራጭ ተግባር ነው።

ከላይ ያሉት ተግባራት የመስመሮች እኩልነት ናቸው። በግራፉ ላይ ያለው የሙቀት መጠን የት እንደ ሆነ ከወሰንን ፣ ያንን ተግባር እናካሂዳለን ፣ ብሩህነቱን እናገኛለን እና ወደ ሌዲዎቹ ላይ እናስተላልፋለን።

ደረጃ 6 ኮድ መስጠት የመጨረሻ ደረጃዎች

በመጨረሻም ፣ ይህንን መግለጫ በመጨረሻው ላይ እንጨምራለን።

ሞክር

ሳለ (እውነት) ፦ GetLEDBrightness (City_TemperatureF) GetRainLED (WeatherID) time. መተኛት (10) ከቁልፍ ሰሌዳ በስተቀር ተቋርጦ - ተወው ()

ሙከራው እና መግለጫዎች በስተቀር የቁልፍ ሰሌዳ አቋራጭ በመጠቀም ኮዱን ለመውጣት ያስችለናል። በተመሳሳይም ኮዱን እንደገና ለማስጀመር Raspberry Pi ን መዝጋት አለብን። ከዚያ እኛ ለዘላለም የሚሄድ ትንሽ ዙር አለን። እኛ ሌዶቹን እናዘምነዋለን ፣ እንዲሁም የዝናብ LED ን እናዘምነዋለን። ለአሥር ሰከንዶች ቆም ብለን እናቆማለን; OpenWeather በደቂቃ 60 ጥሪዎችን ብቻ ይፈቅዳል ፣ እና 10 ሰከንዶች ብዙ ዝመናዎች ናቸው።

እናም በዚህ ፣ የእኛ ኮድ ተጠናቅቋል። ከዚህ በታች የተጠናቀቀው ኮድ ነው።

RaspberryPIWeatherStation.py

ከውጭ የሚመጡ ጥያቄዎች
importRPi. GPIOasGPIO
importjson
የማስመጣት ጊዜ
#ከ 700 በታች የሆኑ #የአየር ሁኔታ መታወቂያ ኮዶች ሁሉም ዝናብ ናቸው
defCheckRain (IdCode) ፦
ifIdCode <700:
እውነት ተመለስ
ሌላ
መመለስ ሐሰት
ደካማነት - ቀላል - ዝቅተኛነት (የሙቀት መጠን በ ኤፍ)
#የግራ ቀመር y =-(50/20) x + 175
#ትክክለኛ ቀመር y = (50/20) x - 75
ተመላሽ- (50/20)*የሙቀት መጠን በ F+175
የማራገፍ / የማሳየት / የማሳየት (የሙቀት መጠን በ ኤፍ)
#የግራ ቀመር y =-(50/20) x + 175
#ትክክለኛ ቀመር y = (50/20) x - 75
ተመላሽ (50/20)*የሙቀት መጠን በ F-75
እጅግ በጣም ከፍተኛ የስህተት መጠን (የሙቀት መጠን በ ኤፍ)
#የግራ ቀመር y = -(100/30) x + 200
#ትክክለኛ ትክክለኛነት - y = (100/30) x - (400/3)
ተመላሽ- (100/30)*የሙቀት መጠን በ F+200
ከመጠን በላይ የመረዳት ችሎታ (የሙቀት መጠን በ ኤፍ)
# የግራ እኩልነት -y = -(100/30) x + 200
# የቀኝ እኩልነት - y = (100/30) x - (400/3)
ተመላሽ (100/30)*የሙቀት መጠንF- (400/3)
#ጂፒኦ ማዋቀር
GPIO.setmode (GPIO. BCM)
GPIO. ማስጠንቀቂያዎች (ሐሰት)
#ፒኖች
Extreme_Hot_LED_PIN = 26
ሙቅ_LED_PIN = 16
Extreme_Cold_LED_PIN = 5
ቀዝቃዛ_LED_PIN = 6
ዝናብ_ኤልዲ_ፒን = 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)
defGetLED ብሩህነት (የሙቀት መጠን)
iftemp <= 0:
እጅግ በጣም የተሸከመ = 100
የቀዘቀዘ = 100
ትኩስ = 0
እጅግ በጣም ፈጣን = 0
ማተም (“እጅግ በጣም ቀዝቃዛ መሪ”:+str (እጅግ በጣም የታሸገ))
ማተም ("ቀዝቃዛ መርቷል"+str (የቀዘቀዘ))
ማተም (“እጅግ በጣም ሞቃት መሪ”+str (እጅግ በጣም የተቀረፀ))
ማተም ("ትኩስ መሪ:"+str (ትኩስ))
ExtremeColdLED.start (እጅግ በጣም የታሸገ)
ColdLED. ጀምር (የቀዘቀዘ)
ExtremeHotLED.start (እጅግ በጣም የተቀረጸ)
HotLED.start (hotled)
eliftemp> = 100:
እጅግ በጣም ተሸፍኗል = 0
ቀዝቀዝ = 0
ትኩስ = 100
እጅግ በጣም ፈጣን = 100
ማተም (“እጅግ በጣም ቀዝቃዛ መሪ”:+str (እጅግ በጣም የታሸገ))
ማተም ("ቀዝቃዛ መርቷል"+str (የቀዘቀዘ))
ማተም (“እጅግ በጣም ሞቃት መሪ”+str (እጅግ በጣም የተቀረፀ))
ማተም ("ትኩስ መሪ:"+str (ትኩስ))
ExtremeColdLED.start (እጅግ በጣም የታሸገ)
ColdLED. ጀምር (የቀዘቀዘ)
ExtremeHotLED.start (እጅግ በጣም የተቀረጸ)
HotLED.start (hotled)
elif0 <temp <= 30:
extremcoldled = getextremeleftledintensity (temp) -100
የቀዘቀዘ = 100
ትኩስ = 0
እጅግ በጣም ፈጣን = 0
ማተም (“እጅግ በጣም ቀዝቃዛ መሪ”:+str (እጅግ በጣም የታሸገ))
ማተም ("ቀዝቃዛ መርቷል"+str (የቀዘቀዘ))
ማተም (“እጅግ በጣም ሞቃት መሪ”+str (እጅግ በጣም የተቀረፀ))
ማተም ("ትኩስ መሪ:"+str (ትኩስ))
ExtremeColdLED.start (እጅግ በጣም የታሸገ)
ColdLED. ጀምር (የቀዘቀዘ)
ExtremeHotLED.start (እጅግ በጣም የተቀረጸ)
HotLED.start (ትኩስ)
elif100> temp> = 70:
እጅግ በጣም ተደራጅቷል = 0
ቀዝቀዝ = 0
ትኩስ = 100
extremhotled = getextremerightledintensity (temp) -100
ማተም (“እጅግ በጣም ቀዝቃዛ መሪ”:+str (እጅግ በጣም የታሸገ))
ማተም ("ቀዝቃዛ መርቷል"+str (የቀዘቀዘ))
ማተም (“እጅግ በጣም ሞቃት መሪ”+str (እጅግ በጣም የተቀረፀ))
ማተም ("ትኩስ መሪ:"+str (ትኩስ))
ExtremeColdLED.start (እጅግ በጣም የታሸገ)
ColdLED. ጀምር (የቀዘቀዘ)
ExtremeHotLED.start (እጅግ በጣም የተቀረጸ)
HotLED.start (hotled)
elif30 <temp <50:
እጅግ በጣም ተደራጅቷል = 0
የቀዘቀዘ = የማግኘት ችሎታ
ትኩስ = 100-ቅዝቃዜ
እጅግ በጣም ፈጣን = 0
ማተም (“እጅግ በጣም ቀዝቃዛ መሪ”:+str (እጅግ በጣም የታሸገ))
ማተም ("ቀዝቃዛ መርቷል"+str (የቀዘቀዘ))
ማተም (“እጅግ በጣም ሞቃት መሪ”+str (እጅግ በጣም የተቀረፀ))
ማተም ("ትኩስ መሪ:"+str (ትኩስ))
ExtremeColdLED.start (እጅግ በጣም የታሸገ)
ColdLED. ጀምር (የቀዘቀዘ)
ExtremeHotLED.start (እጅግ በጣም የተቀረጸ)
HotLED.start (hotled)
elif50 <temp <70:
ሞቅ ያለ = getmiddlerightledintensity (temp)
እጅግ በጣም ፈጣን = 0
የቀዘቀዘ = 100-ሆቴል
እጅግ በጣም ተደራጅቷል = 0
ማተም (“እጅግ በጣም ቀዝቃዛ መሪ”:+str (እጅግ በጣም የታሸገ))
ማተም ("ቀዝቃዛ መርቷል"+str (የቀዘቀዘ))
ማተም (“እጅግ በጣም ሞቃት መሪ”+str (እጅግ በጣም የተቀረፀ))
ማተም ("ትኩስ መሪ:"+str (ትኩስ))
ExtremeColdLED.start (እጅግ በጣም የታሸገ)
ColdLED. ጀምር (የቀዘቀዘ)
ExtremeHotLED.start (እጅግ በጣም የተቀረጸ)
HotLED.start (hotled)
eliftemp == 50:
እጅግ በጣም ተሸፍኗል = 0
የቀዘቀዘ = 50
ትኩስ = 50
እጅግ በጣም ፈጣን = 0
ማተም (“እጅግ በጣም ቀዝቃዛ መሪ”:+str (እጅግ በጣም የታሸገ))
ማተም ("ቀዝቃዛ መርቷል"+str (የቀዘቀዘ))
ማተም (“እጅግ በጣም ሞቃት መሪ”+str (እጅግ በጣም የተቀረፀ))
ማተም ("ትኩስ መሪ:"+str (ትኩስ))
ExtremeColdLED.start (እጅግ በጣም የታሸገ)
ColdLED. ጀምር (የቀዘቀዘ)
ExtremeHotLED.start (እጅግ በጣም የተቀረጸ)
HotLED.start (ትኩስ)
defGetRainLED (idCode) ፦
ifCheckRain (idCode):
GPIO.output (ዝናብ_LED_PIN ፣ GPIO. HIGH)
ሌላ
GPIO.output (ዝናብ_LED_PIN ፣ GPIO. LOW)
#የአፒ መረጃ -የኤፒአይ ቁልፍን በ oepnweather api ቁልፍዎ ይተኩ
openweather_api_key = "460a23f27ff324ef9ae743c7e9c32d7e"
base_call = "https://api.openweathermap.org/data/2.5/weather?q="
ማተም ("በከተማ ውስጥ ይተይቡ!")
የከተማ_ስም = ግብዓት ()
full_call = base_call+city_name+"& appid ="+openweather_api_key
#የአየር ሁኔታ መረጃን ማግኘት
ምላሽ = ጥያቄዎች.ጌት (ሙሉ_ጥሪ)
WeatherData = Response.json ()
WeatherID = WeatherData ["የአየር ሁኔታ"] [0] ["መታወቂያ"]
City_TemperatureK = WeatherData ["ዋና"] ["ሙቀት"]
የከተማ_ሙቀት F = (የከተማ_ሙቀት ኬ -273)*1.8+32#ወደ ፋራናይት
#LED/GPIO ነገሮች
ማተም ("K:"+str (የከተማ_ሙቀት ኬ))
ማተም ("ኤፍ:"+str (የከተማ_ሙቀት ሙቀት ኤፍ))
አትም (WeatherID)
ሞክር
(እውነት):
GetLEDBrightness (የከተማ_ሙቀት ሙቀት ኤፍ)
GetRainLED (WeatherID)
ጊዜ። እንቅልፍ (10)
ከቁልፍ ሰሌዳ በስተቀር።
ተወው ()

በ GitHub የተስተናገደ ጥሬRaspberryPIWeatherStation.py ን ይመልከቱ

ደረጃ 7 ግንባታ እና ሽቦ ማደግ

ዋው! ከዚያ ሁሉ ኮድ በኋላ ፣ ወደ ሕንፃው እንሄዳለን ፣ ይህም በጣም ቀላል ነው።ኮሮና በቤት ትዕዛዞች በመቆየቱ ፣ በትምህርት ቤት ይኖረናል ብለን ወደምንጠብቃቸው ብዙ መሣሪያዎች መድረስ አልቻልንም። ስለዚህ ፣ ይህ ክፍል እኛ ካሰብነው ትንሽ ቀለል ያለ ነው። ዝርዝሮቹ እራሳቸው እንዲሁ ተለዋዋጭ ናቸው። በመጀመሪያ በእንጨት ጣውላ ላይ አራት ማእዘን አደረግን። ሌድ እና ኤሌክትሮኒክስን ለመልበስ እንደ መድረክ ሆኖ ስለሚያገለግል የተወሰነ መጠን በእውነቱ በጣም ትልቅ አይደለም።

ከዚያ በእንጨት ቁርጥራችን ውስጥ አምስት 1/8 ኛ ጉድጓዶችን ቆፍረናል።

ከዚያ ለኤሌክትሮኒክስ መሣሪያችን እንደ መድረክ ለመጠቀም አራት ማዕዘን ቅርፁን ከእንጨት ላይ ቆርጠን አውጥተናል።

(ይህ እኛ ስንጀምር ነበር ፣ ትልቅ መጋዝ አገኘን!)

ከዚያም ወደ ቀዳዳዎቹ የተመራውን አኖድ እና ካቶድ ፒን እንገፋለን። አምፖሎቹ በላያቸው ላይ መቀመጥ አለባቸው ፣ አምፖሎቻቸው ተጣብቀው ፣ የትኛው እግር ረጅምና አጭር እንደሆነ ይከታተሉ። ከዚያ እኛ ሽቦዎችን በአንድ ላይ ማገናኘት ለመጀመር ተዘጋጀን። በመጀመሪያ ተከላካዮቹን ወደ የ LED (ረጅሙ እግር) አንኖድ እግር እንሸጣለን።

ከዚያ እኛ የኤልዲዎቹን ካቶድ እግሮች እንደ መሬት የምንጠቀምበትን ወደ አንድ የመዳብ ሽቦ እንሸጣለን። ይህን መምሰል አለበት።

ያንን ካደረግን በኋላ የእያንዳንዱን ተቃዋሚ እና የመዳብ መሬት ሽቦን ጫፎች ከሴት-ወንድ ዝላይ ኬብሎች የወንድ ጫፎችን እንሸጣለን። ያንን ካደረግን በኋላ ሽቦዎቹን ወደ ራፕቤሪ PI GPIO ፒኖች መሰካት መጀመር እንችላለን። ሥዕላዊ መግለጫ ይኸውልዎት! ሆኖም ፣ ልብ ይበሉ ፣ ካስማዎቹ ቀደም ሲል በተነካው ኮድ ውስጥ ያሉት ናቸው።

አንዴ ያ ሁሉ ገመድ ካለዎት ፣ አሁን ማድረግ ያለብዎት የ Python ፋይልን ወደ እንጆሪ ፒ ላይ ማግኘት እና ተርሚናሉን መክፈት ነው። "python3 RaspberryPIWeatherStation.py" ን ያሂዱ እና ከዚያ እንደሚያሳየው ያድርጉ።

ደረጃ 8 - ማሳያ እና መደምደሚያ

እስከመጨረሻው በማንበብዎ እናመሰግናለን! ከዚህ በታች የፓይዘን ስክሪፕቱን አያያለሁ! ልንጨምራቸው የምንችላቸው ነገሮች ካሉ ፣ ምናልባት ሊሆን ይችላል…

1. ለተለያዩ የግብዓት ዓይነቶች ድጋፍ (ከተሞች ፣ ጂኦግራፊያዊ ነጥቦች ፣ ወዘተ)

2. ለተጨማሪ የአየር ሁኔታ መረጃ ድጋፍ

3. መረጃን ለማሳየት ትንሽ ማያ ገጽ ያክሉ

ሀሳቦችዎን ያሳውቁን! ይህ ለመገንባት አስደሳች ፕሮጀክት ነበር። ፓይዘን በመጠቀም ስለ ጥያቄዎች እና የበይነመረብ ሰነዶችን ማግኘት ብዙ ተምረናል ፣ እንዲሁም ብየዳውን ስለመጠቀም ብዙ ተምረናል።

የሚመከር: