সুচিপত্র:

রাস্পবেরি PI LED আবহাওয়া স্টেশন: 8 টি ধাপ
রাস্পবেরি PI LED আবহাওয়া স্টেশন: 8 টি ধাপ

ভিডিও: রাস্পবেরি PI LED আবহাওয়া স্টেশন: 8 টি ধাপ

ভিডিও: রাস্পবেরি PI LED আবহাওয়া স্টেশন: 8 টি ধাপ
ভিডিও: ময়মনসিংহে দেশের প্রথম স্টিল আর্চ ব্রিজ | Steel Arch Bridge | Mymensingh News | Somoy TV 2024, নভেম্বর
Anonim
রাস্পবেরি PI LED আবহাওয়া স্টেশন
রাস্পবেরি PI LED আবহাওয়া স্টেশন

আমরা একটি রাস্পবেরি PI ওয়েদার LED স্টেশন তৈরি করেছি। এটি ব্যবহারকারীকে বলে যে একটি শহর কতটা গরম এবং ঠান্ডা, আলো জ্বালিয়ে, এবং ম্লান করে, এলইডি। এটি তাদের টাইপ করা শহরে বৃষ্টি হচ্ছে কি না তা বলারও নেতৃত্ব দিয়েছে।

তৈরি করেছেন মাইকেল অ্যান্ড্রুজ এবং টিও ম্যারেলো।

সরবরাহ

সরঞ্জাম

  1. তাতাল
  2. ড্রেমেল
  3. দেখেছি

উপকরণ

  1. রাস্পবেরি পাই 3 বি+ ~ 40 ডলার ~ 30 ডলার
  2. মহিলা থেকে পুরুষ জাম্পার তার ~ 7 ডলার
  3. 3 নীল এবং 2 লাল LED ডায়োড ~ 11 ডলার
  4. 100 ওহম প্রতিরোধক ~ 13 ডলার
  5. 4 x 4 x 1/4 কাঠের তক্তা ~ 5 ডলার
  6. সোল্ডার ~ 10 ডলার
  7. কপার ওয়্যার ~ 5 ডলার

ধাপ 1: সমস্যা সমাধান হিসাবে কোডিং

কোডিং হল সমস্যা সমাধান

সুতরাং, আমাদের প্রকল্পে, আমাদের সমস্যা কি? আমাদের সমস্যা হল আবহাওয়ার তথ্য পাওয়া এবং তারপর সেই ডেটা ব্যবহার করে আমাদের LEDS কে বলতে হবে যে সেগুলো বন্ধ আছে কিনা। সুতরাং এটি আমাদের সমস্যাটিকে তিনটি ক্ষেত্রে বিভক্ত করে।

1. আবহাওয়ার তথ্য পাওয়া

2. সেই ডেটা ব্যবহার করা

3. LEDS ব্যবহার করা

যাইহোক, আমরা এই প্রকল্পের জন্য যে ভাষা ব্যবহার করেছি, পাইথন, এবং এটি যে হার্ডওয়্যারে চলছে, পাইথন, আমাদের এই লক্ষ্যগুলি অর্জনের একটি সহজ উপায় দেয়।

সুতরাং, আসুন আমরা প্রথম সমস্যা দিয়ে শুরু করি, আবহাওয়ার তথ্য পেয়ে।

ধাপ 2: কোডিং: আবহাওয়ার তথ্য পাওয়া

পাইথন নিজেই আবহাওয়ার তথ্য পেতে পারে না। আবহাওয়ার তথ্য পেতে আমাদের দুটি সরঞ্জাম, পাশাপাশি একটি বাহ্যিক পরিষেবা আমদানি করতে হবে। এটি করার জন্য, আমরা তিনটি সরঞ্জাম ব্যবহার করি।

1. অনুরোধ, একটি পাইথন মডিউল যা ওয়েবস্ক্র্যাপিংয়ের অনুমতি দেয়

2. Json, একটি পাইথন মডিউল যা আমাদের JSON ফাইল ফরম্যাট ব্যবহার করতে দেয়

3. OpenWeather, একটি ওয়েবসাইট যা আমাদের আবহাওয়ার তথ্য দিতে পারে

সুতরাং, আমরা আমাদের পাইথন স্ক্রিপ্টের শীর্ষে এই কোডটি লিখে দুটি মডিউল নিয়ে এসেছি।

আমদানি অনুরোধ

json আমদানি করুন

আমরা এই সরঞ্জামগুলি ব্যবহার করার আগে, তবে, আমাদের Openweather ব্যবহার করতে হবে। তার জন্য, আমাদের তাদের সাইটে একটি অ্যাকাউন্ট তৈরি করতে হবে এবং একটি API কী পেতে হবে। তাদের ওয়েবসাইটে নির্দেশাবলী অনুসরণ করুন এবং আপনি একটি অক্ষর এবং সংখ্যা পাবেন যা আমাদের তাদের পরিষেবা ব্যবহার করতে দেবে। কিভাবে?

openweather_api_key = "260a23f27f5324ef2ae763c779c32d7e" #আমাদের API কী (বাস্তব নয়)

base_call = "https://api.openweathermap.org/data/2.5/weather?q=" #OpenWeather কল #এখানে আমরা টেক্সট প্রিন্টের আকারে ব্যবহারকারীর শহর পাই ("একটি শহরে টাইপ করুন!") city_name = ইনপুট () #এখানে আমরা ঠিকানাগুলি একত্রিত করেছিলাম যা আমরা অনুরোধে প্লাগ করব। Response = request.get (full_call) WeatherData = Response.json () #JSON ফাইলে বিভিন্ন ভেরিয়েবল রয়েছে যা আমরা এই সিনট্যাক্স ব্যবহার করে অ্যাক্সেস করতে পারি #এখানে আমরা আবহাওয়া আইডি এবং শহরের কেলভিনে তাপমাত্রা পাই যা ব্যবহারকারী টাইপ করে WeatherID = WeatherData ["আবহাওয়া"] [0] ["আইডি"] City_TemperatureK = WeatherData ["main"] ["temp"]

এখানে আমাদের কোড আছে যা আমাদের আবহাওয়ার তথ্য পায়। Requests.get আকারে অনুরোধগুলি একটি ওয়েবসাইটের ঠিকানা নেয় এবং সেই ওয়েবসাইট থেকে আমাদের একটি ফাইল দেয়। জেসন আকারে আমাদের আবহাওয়ার তথ্য দিতে ওপেন ওয়েদার আমাদের কল করার জন্য একটি ঠিকানা দেয়। আমরা একটি ঠিকানা একত্র করি যা আমরা অনুরোধে প্লাগ করি এবং একটি json ফাইল ফিরে পাই। তারপরে আমরা দুটি ভেরিয়েবল তৈরি করি এবং সেগুলিকে ব্যবহারকারীর শহরের তাপমাত্রা এবং আবহাওয়ার উপর বরাদ্দ করি।

তাই এখন, এই কোড দিয়ে, আমাদের দুটি ভেরিয়েবল আছে। আমাদের একটি ওয়েদার আইডি এবং কেলভিনে একটি তাপমাত্রা আছে।

ধাপ 3: কোডিং: সেই ডেটা ব্যবহার করা

এখন যেহেতু আমাদের কাছে এই দুটি ভেরিয়েবল রয়েছে, সেগুলি আমাদের LEDS এর জন্য ব্যবহারের জন্য প্রস্তুত করতে হবে। এই দিকটির জন্য, আমাদের এর জন্য কোন মডিউল আমদানি করতে হবে না।

প্রথমে, আমরা কেলভিনকে ফারেনহাইটে রূপান্তর করি।

আমরা এই সিনট্যাক্স দিয়ে একটি ভেরিয়েবল তৈরি করে এটি করি

City_TemperatureF = (City_TemperatureK - 273)*1.8 + 32

যা কেলভিন থেকে ফারেনহাইটে রূপান্তরিত হয় (যা সত্যিই K -> C -> F থেকে রূপান্তরিত হচ্ছে)

পরেরটি হল আমাদের ওয়েদার আইডি। ওয়েদার আইডি হল একটি আইডি যা ওপেনওয়েদার প্রদান করে যা আমাদের একটি শহরের আবহাওয়া সম্পর্কে বলে।

openweathermap.org/weather-conditions এখানে তাদের একটি তালিকা।

আমরা লক্ষ্য করেছি যে 700 নম্বরের নীচে সবকিছুই একধরনের বৃষ্টিপাত ছিল, তাই আমরা দেখেছি যে কোডটি 700 এর নিচে ছিল কিনা তা দেখতে বৃষ্টি হচ্ছে কিনা।

def CheckRain (IdCode): যদি IdCode <700: return true else: return false

এর সাথে, আমাদের রাস্পবেরি পিআই পিন এবং এলইডি ডায়োডের সাথে ব্যবহারের জন্য আমাদের দুটি ভেরিয়েবল প্রস্তুত করা আছে।

ধাপ 4: কোডিং: RPi. GPIO এবং LED ডায়োড ব্যবহার করা

কোডিং: RPi. GPIO এবং LED ডায়োড ব্যবহার করা
কোডিং: RPi. GPIO এবং LED ডায়োড ব্যবহার করা

রাস্পবেরীপি পুরুষ পিনের একটি সেট নিয়ে আসে যা আমরা বৈদ্যুতিক উপাদানগুলির একটি হোস্টের সাথে যোগাযোগ করতে ব্যবহার করতে পারি, যা এই ক্ষেত্রে, LED ডায়োড; এটি Arduino এবং এর সিস্টেমের অনুরূপ। যাইহোক, রাস্পবেরি PI হল একটি সাধারণ উদ্দেশ্য কম্পিউটার, যা Arduino এর মত একটি মাইক্রোকন্ট্রোলারের বিপরীতে। সুতরাং, তাদের ব্যবহার করার জন্য আমাদের একটু বেশি কাজ করতে হবে। এটি রাস্পবেরি পাইতে পিন স্থাপন করা নিয়ে গঠিত। আমরা এই কোডটি ব্যবহার করে এটি করি।

GPIO হিসাবে RPi. GPIO আমদানি করুন #আমরা মডিউল আমদানি করি যাতে আমরা এটি ব্যবহার করতে পারি

#পিন সেট আপ করুন GPIO.setmode (GPIO. BCM) GPIO.setwarnings (মিথ্যা)

#পিনের মধ্যে LEDs প্লাগ করা হয়। আপনি যদি এটি তৈরি করেন তবে এগুলি ভিন্ন হতে পারে, তাই প্রয়োজনে তুলনা করুন এবং পরিবর্তন করুন

Extreme_Hot_LED_PIN = 26 Hot_LED_PIN = 16

চরম_শীতল_এলডি_পিন = ৫

Cold_LED_PIN = 6

বৃষ্টি_ 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. OUTOOT_GOUT_OPTOO_TOUT (GPIO. OUT)

যাইহোক, এই কোডটি কেবল আমাদের নেতৃত্বাধীন দুটি রাষ্ট্র ব্যবহার করতে দেবে, অর্থাৎ চালু এবং বন্ধ। যাইহোক, আমরা লাইট ম্লান করতে সক্ষম হওয়া প্রয়োজন। এটি করার জন্য, আমরা পালস প্রস্থ মডুলেশন ব্যবহার করি।

পালস প্রস্থ মডুলেশন ব্যবহার করে

পালস প্রস্থ মডুলেশন আমাদের একটি ডিজিটাল পিন ব্যবহার করে একটি এনালগ সংকেত আউটপুট করতে দেয়। মূলত, এটি একটি উচ্চ হারে সংকেত উৎস চালু এবং বন্ধ করে, যা নির্দিষ্ট ভোল্টেজের গড়। 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 getmiddleleftledintensity (temperatureinF): #বাম সমীকরণ: y = -(50/20) x + 175 #ডান সমীকরণ: y = (50/20) x -75 রিটার্ন -(50/20)*তাপমাত্রা F + 175

ডিফ getmiddlerightledintensity (temperatureinF):

#বাম সমীকরণ: y = - (50/20) x + 175 #সঠিক সমীকরণ: y = (50/20) x - 75 রিটার্ন (50/20)*তাপমাত্রা F - 75

def getextremeleftledintensity (temperatureinF):

#বাম সমীকরণ: y = - (100/30) x + 200 #সঠিক সমীকরণ: y = (100/30) x - (400/3)

প্রত্যাবর্তন -(100/30)*তাপমাত্রা F + 200

def getextremerightledintensity (temperatureinF):

# বাম সমীকরণ: y = - (100/30) x + 200 # RightEquation: y = (100/30) x - (400/3)

ফেরত (100/30)*তাপমাত্রাএফ - (400/3)

#এলইডি লাইট সেট করা

Def GetLEDBrightness (temp):

যদি temp <= 0: extremecoldled = 100 coldled = 100 hotled = 0 extremehotled = 0

মুদ্রণ ("চরম ঠান্ডা নেতৃত্বে:" + str (চরম ঠান্ডা))

মুদ্রণ ("ঠান্ডা নেতৃত্বাধীন:" + str (ঠান্ডা)) মুদ্রণ ("চরম গরম নেতৃত্বাধীন" + str (চরম গরম)) মুদ্রণ ("গরম নেতৃত্ব:" + str (hotled))

ExtremeColdLED.start (চরম ঠান্ডা)

ColdLED.start (ঠান্ডা)

ExtremeHotLED.start (চরমপন্থী)

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

মুদ্রণ ("চরম ঠান্ডা নেতৃত্বে:" + str (চরম ঠান্ডা))

মুদ্রণ ("ঠান্ডা নেতৃত্ব:" + str (ঠান্ডা)) মুদ্রণ ("চরম গরম নেতৃত্বাধীন" + str (চরম গরম)) মুদ্রণ ("গরম নেতৃত্ব:" + 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

মুদ্রণ ("চরম ঠান্ডা নেতৃত্বে:" + str (চরম ঠান্ডা))

মুদ্রণ ("ঠান্ডা নেতৃত্বাধীন:" + str (ঠান্ডা)) মুদ্রণ ("চরম গরম নেতৃত্বাধীন" + str (চরম গরম)) মুদ্রণ ("গরম নেতৃত্ব:" + 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

মুদ্রণ ("চরম ঠান্ডা নেতৃত্বে:" + str (চরম ঠান্ডা))

মুদ্রণ ("ঠান্ডা নেতৃত্বাধীন:" + str (ঠান্ডা)) মুদ্রণ ("চরম গরম নেতৃত্বাধীন" + str (চরম গরম)) মুদ্রণ ("গরম নেতৃত্ব:" + 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

মুদ্রণ ("চরম ঠান্ডা নেতৃত্বে:" + str (চরম ঠান্ডা))

মুদ্রণ ("ঠান্ডা নেতৃত্বাধীন:" + str (ঠান্ডা)) মুদ্রণ ("চরম গরম নেতৃত্বাধীন" + str (চরম গরম)) মুদ্রণ ("গরম নেতৃত্ব:" + str (hotled))

ExtremeColdLED.start (চরম ঠান্ডা)

ColdLED.start (ঠান্ডা)

ExtremeHotLED.start (চরমপন্থী)

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

ঠান্ডা = 100 - গরম

চরম ঠান্ডা = 0

মুদ্রণ ("চরম ঠান্ডা নেতৃত্বে:" + str (চরম ঠান্ডা))

মুদ্রণ ("ঠান্ডা নেতৃত্ব:" + str (ঠান্ডা)) মুদ্রণ ("চরম গরম নেতৃত্বাধীন" + str (চরম গরম)) মুদ্রণ ("গরম নেতৃত্ব:" + str (hotled))

ExtremeColdLED.start (চরম ঠান্ডা)

ColdLED.start (ঠান্ডা)

ExtremeHotLED.start (চরমপন্থী)

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

মুদ্রণ ("চরম ঠান্ডা নেতৃত্বে:" + str (চরম ঠান্ডা))

মুদ্রণ ("ঠান্ডা নেতৃত্বাধীন:" + str (ঠান্ডা)) মুদ্রণ ("চরম গরম নেতৃত্বাধীন" + str (চরম গরম)) মুদ্রণ ("গরম নেতৃত্ব:" + str (hotled))

ExtremeColdLED.start (চরম ঠান্ডা)

ColdLED.start (ঠান্ডা)

ExtremeHotLED.start (চরমপন্থী)

HotLED.start (hotled)

ঠিক আছে, কোডের এই বিভাগটি সত্যিই দীর্ঘ। এটি ব্যাখ্যা করাও বেশ কঠিন। মূলত, উপরের কোডটি ফারেনহাইটের তাপমাত্রা দেখে, এবং এটি একটি রেঞ্জের সেটে আছে কিনা তা নির্ধারণ করে। রেঞ্জের উপর নির্ভর করে, এটি প্রতিটি নেতৃত্ব এবং তার উজ্জ্বলতার জন্য একটি সংখ্যা দেয় এবং তারপর start () কমান্ডটি কল করে উজ্জ্বলতা সেট করে। এটাই দ্রুত ব্যাখ্যা। যদি এটি যথেষ্ট হয়, আমি আপনাকে পরবর্তী ধাপে যাওয়ার পরামর্শ দিচ্ছি, কিন্তু আপনি যদি দীর্ঘ এবং ক্লান্তিকর ব্যাখ্যা দেখতে চান, তাহলে পড়তে থাকুন।

যখন আমরা প্রোগ্রাম করেছিলাম, তখন আমরা সিদ্ধান্ত নিয়েছিলাম যে একটি তাপমাত্রা থেকে মান পাওয়ার সবচেয়ে সহজ উপায় ছিল একটি গাণিতিক ফাংশন। সুতরাং, আমরা আমাদের তাপমাত্রা এবং আমাদের নেতৃত্বাধীন উজ্জ্বলতার মধ্যে সম্পর্ককে প্রতিনিধিত্ব করার জন্য জিওজেব্রাতে একটি গ্রাফ তৈরি করেছি; এটি 100 এর উপরে যাওয়ার কারণ হল যে অতিরিক্তটি দ্বিতীয় নেতৃত্বে যাবে। যাইহোক, আমরা এই সমস্ত পয়েন্টগুলিকে একটি ফাংশনে ম্যাপ করার জন্য একটি একক ফাংশন পাওয়ার বিষয়ে দৌড়েছি। আমরা ভেবেছিলাম আমরা একটি প্যারাবোলা ব্যবহার করতে পারি, কিন্তু আমরা যদি বিবৃতিগুলির একটি সিরিজ ব্যবহার করে সমাধানের সিদ্ধান্ত নিই। সংক্ষেপে, এই সম্পূর্ণ কোডটি একটি টুকরো ফাংশন।

উপরের ফাংশনগুলো হচ্ছে রেখার নিজ নিজ সমীকরণ। একবার আমরা গ্রাফে তাপমাত্রা কোথায় তা নির্ধারণ করি, আমরা এটিকে সেই ফাংশনের মাধ্যমে চালাই, উজ্জ্বলতা পাই এবং এটি এলইডি -তে পাস করি।

ধাপ 6: কোডিং: চূড়ান্ত পদক্ষেপ

পরিশেষে, আমরা শেষে এই বিবৃতি যোগ করি।

চেষ্টা করুন:

while (True): GetLEDBrightness (City_TemperatureF) GetRainLED (WeatherID) time.sleep (10) কীবোর্ড ছাড়া

চেষ্টা করুন এবং বিবৃতি ছাড়া আমাদের একটি কীবোর্ড শর্টকাট ব্যবহার করে কোড থেকে প্রস্থান করার অনুমতি দেয়; অন্যথায়, কোডটি পুনরায় চালু করতে আমাদের রাস্পবেরি পাই বন্ধ করতে হবে। তারপর আমাদের একটি সময় লুপ আছে যা চিরকাল চলে। আমরা এলইডি আপডেট করি, সেইসাথে রেইন এলইডি আপডেট করি। আমরা দশ সেকেন্ডের জন্য বিরতি; ওপেনওয়েদার প্রতি মিনিটে মাত্র 60 টি কল করার অনুমতি দেয় এবং 10 সেকেন্ডে প্রচুর আপডেট থাকে।

এবং এর সাথে, আমাদের কোড শেষ। নিচে সমাপ্ত কোড।

RaspberryPIWeatherStation.py

আমন্ত্রণ অনুরোধ
importRPi. GPIOasGPIO
importjson
আমদানির সময়
#ওপেনওয়েদার আইডকোড 700 এরও কম বৃষ্টিপাত
defCheckRain (IdCode):
ifIdCode <700:
সত্য
অন্য:
মিথ্যা
defgetmiddleleftledintensity (temperatureinF):
#বাম সমীকরণ: y =-(50/20) x + 175
#সঠিক সমীকরণ: y = (50/20) x - 75
ফেরত- (50/20)*তাপমাত্রা F+175
defgetmiddlerightledintensity (temperatureinF):
#বাম সমীকরণ: y =-(50/20) x + 175
#সঠিক সমীকরণ: y = (50/20) x - 75
ফেরত (50/20)*তাপমাত্রা F-75
defgetextremeleftledintensity (temperatureinF):
#বাম সমীকরণ: y = -(100/30) x + 200
#সঠিক সমীকরণ: y = (100/30) x - (400/3)
ফেরত- (100/30)*তাপমাত্রা F+200
defgetextremerightledintensity (temperatureinF):
# বাম সমীকরণ: y = -(100/30) x + 200
# RightEquation: y = (100/30) x - (400/3)
প্রত্যাবর্তন (100/30)*তাপমাত্রা F- (400/3)
#জিপিআইও সেটআপ
GPIO.setmode (GPIO. BCM)
GPIO.setwarnings (মিথ্যা)
#পিন
চরম_হট_লেড_পিন = 26
Hot_LED_PIN = 16
চরম_শীতল_এলডি_পিন = ৫
ঠান্ডা_ LED_PIN = 6
বৃষ্টি_ 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 (temp):
iftemp <= 0:
চরম ঠান্ডা = 100
ঠান্ডা = 100
গরম = 0
চরম গরম = 0
মুদ্রণ ("চরম ঠান্ডা নেতৃত্বে:"+str (চরম ঠান্ডা))
মুদ্রণ ("ঠান্ডা নেতৃত্বে:"+str (ঠান্ডা))
মুদ্রণ ("চরম গরম নেতৃত্বাধীন"+str (চরম গরম)
মুদ্রণ ("গরম নেতৃত্ব:"+str (hotled))
ExtremeColdLED.start (চরম ঠান্ডা)
ColdLED.start (ঠান্ডা)
ExtremeHotLED.start (চরমপন্থী)
HotLED.start (hotled)
eliftemp> = 100:
চরম ঠান্ডা = 0
ঠান্ডা = 0
গরম = 100
চরম গরম = 100
মুদ্রণ ("চরম ঠান্ডা নেতৃত্বে:"+str (চরম ঠান্ডা))
মুদ্রণ ("ঠান্ডা নেতৃত্বে:"+str (ঠান্ডা))
মুদ্রণ ("চরম গরম নেতৃত্বাধীন"+str (চরম গরম)
মুদ্রণ ("গরম নেতৃত্ব:"+str (hotled))
ExtremeColdLED.start (চরম ঠান্ডা)
ColdLED.start (ঠান্ডা)
ExtremeHotLED.start (চরমপন্থী)
HotLED.start (hotled)
elif0 <temp <= 30:
চরম ঠান্ডা = getextremeleftledintensity (temp) -100
ঠান্ডা = 100
hotled = 0
চরম গরম = 0
মুদ্রণ ("চরম ঠান্ডা নেতৃত্বে:"+str (চরম ঠান্ডা))
মুদ্রণ ("ঠান্ডা নেতৃত্বে:"+str (ঠান্ডা))
মুদ্রণ ("চরম গরম নেতৃত্বাধীন"+str (চরম গরম)
মুদ্রণ ("গরম নেতৃত্ব:"+str (hotled))
ExtremeColdLED.start (চরম ঠান্ডা)
ColdLED.start (ঠান্ডা)
ExtremeHotLED.start (চরমপন্থী)
HotLED.start (hotled)
elif100> temp> = 70:
চরম ঠান্ডা = 0
ঠান্ডা = 0
গরম = 100
চরম গরম = getextremerightledintensity (temp) -100
মুদ্রণ ("চরম ঠান্ডা নেতৃত্বে:"+str (চরম ঠান্ডা))
মুদ্রণ ("ঠান্ডা নেতৃত্বে:"+str (ঠান্ডা))
মুদ্রণ ("চরম গরম নেতৃত্বাধীন"+str (চরম গরম)
মুদ্রণ ("গরম নেতৃত্ব:"+str (hotled))
ExtremeColdLED.start (চরম ঠান্ডা)
ColdLED.start (ঠান্ডা)
ExtremeHotLED.start (চরমপন্থী)
HotLED.start (hotled)
elif30 <temp <50:
চরম ঠান্ডা = 0
coldled = getmiddleleftledintensity (temp)
hotled = 100- ঠান্ডা
চরম গরম = 0
মুদ্রণ ("চরম ঠান্ডা নেতৃত্বে:"+str (চরম ঠান্ডা))
মুদ্রণ ("ঠান্ডা নেতৃত্বে:"+str (ঠান্ডা))
মুদ্রণ ("চরম গরম নেতৃত্বাধীন"+str (চরম গরম)
মুদ্রণ ("গরম নেতৃত্ব:"+str (hotled))
ExtremeColdLED.start (চরম ঠান্ডা)
ColdLED.start (ঠান্ডা)
ExtremeHotLED.start (চরমপন্থী)
HotLED.start (hotled)
elif50 <temp <70:
hotled = getmiddlerightledintensity (temp)
চরম গরম = 0
ঠান্ডা = 100-গরম
চরম ঠান্ডা = 0
মুদ্রণ ("চরম ঠান্ডা নেতৃত্বে:"+str (চরম ঠান্ডা))
মুদ্রণ ("ঠান্ডা নেতৃত্বে:"+str (ঠান্ডা))
মুদ্রণ ("চরম গরম নেতৃত্বাধীন"+str (চরম গরম)
মুদ্রণ ("গরম নেতৃত্ব:"+str (hotled))
ExtremeColdLED.start (চরম ঠান্ডা)
ColdLED.start (ঠান্ডা)
ExtremeHotLED.start (চরমপন্থী)
HotLED.start (hotled)
eliftemp == 50:
চরম ঠান্ডা = 0
ঠান্ডা = 50
গরম = 50
চরম গরম = 0
মুদ্রণ ("চরম ঠান্ডা নেতৃত্বে:"+str (চরম ঠান্ডা))
মুদ্রণ ("ঠান্ডা নেতৃত্বে:"+str (ঠান্ডা))
মুদ্রণ ("চরম গরম নেতৃত্বাধীন"+str (চরম গরম)
মুদ্রণ ("গরম নেতৃত্ব:"+str (hotled))
ExtremeColdLED.start (চরম ঠান্ডা)
ColdLED.start (ঠান্ডা)
ExtremeHotLED.start (চরমপন্থী)
HotLED.start (hotled)
defGetRainLED (idCode):
ifCheckRain (idCode):
GPIO.output (Rain_LED_PIN, GPIO. HIGH)
অন্য:
GPIO.output (Rain_LED_PIN, GPIO. LOW)
#এপিআই তথ্য: আপনার ওপেনওয়েদার এপিআই কী দিয়ে এপিআই কী প্রতিস্থাপন করুন
openweather_api_key = "460a23f27ff324ef9ae743c7e9c32d7e"
base_call = "https://api.openweathermap.org/data/2.5/weather?q="
মুদ্রণ ("একটি শহরে টাইপ করুন!")
city_name = input ()
full_call = base_call+city_name+"& appid ="+openweather_api_key
#আবহাওয়ার তথ্য পাওয়া
প্রতিক্রিয়া = request.get (full_call)
WeatherData = Response.json ()
WeatherID = WeatherData ["weather"] [0] ["id"]
City_TemperatureK = WeatherData ["main"] ["temp"]
City_TemperatureF = (City_TemperatureK-273)*1.8+32#ফারেনহাইটে রূপান্তর
#LED/GPIO স্টাফ
মুদ্রণ ("K:"+str (City_TemperatureK))
মুদ্রণ ("F:"+str (City_TemperatureF))
মুদ্রণ (WeatherID)
চেষ্টা করুন:
যখন (সত্য):
GetLEDBrightness (City_TemperatureF)
GetRainLED (WeatherID)
সময় ঘুম (10)
কীবোর্ড ব্যতীত:
ছেড়ে দিন ()

GitHub দ্বারা raw দিয়ে হোস্ট করা rawRaspberryPIWeatherStation.py দেখুন

ধাপ 7: বিল্ডিং এবং ওয়্যারিং আপ

বাহ! এই সমস্ত কোডিংয়ের পরে, আমরা বিল্ডিংয়ে যাই, যা উল্লেখযোগ্যভাবে সহজ।করোনা বাড়িতে থাকার আদেশের কারণে, আমরা স্কুলে আমাদের প্রত্যাশিত অনেক সরঞ্জাম পেতে পারিনি। সুতরাং, এই অংশটি আমরা যা চেয়েছিলাম তার চেয়ে কিছুটা সহজ। সুনির্দিষ্ট বৈশিষ্ট্যগুলিও নমনীয়। প্রথমে আমরা কাঠের তক্তার উপর একটি আয়তক্ষেত্র আঁকলাম। নির্দিষ্ট আকারটি আসলে খুব বেশি গুরুত্বপূর্ণ নয়, কারণ এটি কেবল একটি প্ল্যাটফর্ম হিসাবে কাজ করে যা এলইডি এবং ইলেকট্রনিক্স চালু করে।

তারপরে আমরা আমাদের কাঠের টুকরোটিতে পাঁচটি 1/8 তম ড্রিল করেছি।

তারপরে আমরা আমাদের ইলেকট্রনিক্সের জন্য আমাদের প্ল্যাটফর্ম হিসাবে ব্যবহার করার জন্য তক্তা থেকে আয়তক্ষেত্রটি কেটে ফেলি।

(এই যখন আমরা শুরু; আমরা একটি বড় করাত পাওয়া!)

আমরা তারপর গর্ত মধ্যে নেতৃত্বের anode এবং ক্যাথোড পিন ধাক্কা; লেডগুলি উপরে রাখা উচিত, তাদের বাল্বগুলি বেরিয়ে আসছে; কোন পা লম্বা এবং খাটো তার উপর নজর রাখুন। তারপরে আমরা একসঙ্গে তারের সোল্ডারিং শুরু করতে সেট করেছি। প্রথমে আমরা প্রতিরোধকগুলিকে এলইডি (দীর্ঘ পা) এর অ্যানোড লেগে বিক্রি করি।

তারপর, আমরা এলইডি এর ক্যাথোড পা একটি একক তামার তারে বিক্রি করি যা আমরা স্থল হিসাবে ব্যবহার করব। এটিকে ঐটির মত দেখতে হবে।

আমরা এটি করার পর, আমরা মহিলা-পুরুষ জাম্পার তারের পুরুষ প্রান্তগুলিকে প্রতিটি প্রতিরোধক এবং তামার স্থল তারের শেষ প্রান্তে বিক্রি করি। একবার আমরা এটি করলে, আমরা রাস্পবেরি পিআই জিপিআইও পিনগুলিতে তারগুলি প্লাগ করা শুরু করতে পারি। এখানে একটি ডায়াগ্রাম! যাইহোক, মনে রাখবেন, পিনগুলি আগে কোডে স্পর্শ করা হয়েছে।

একবার আপনার সবগুলো ওয়্যার্ড হয়ে গেলে, এখন আপনাকে যা করতে হবে তা হল পাইথন ফাইলটি রাস্পবেরি পাইতে নিয়ে টার্মিনাল খুলুন। "python3 RaspberryPIWeatherStation.py" চালান এবং তারপর যেমন দেখায় তেমন করুন।

ধাপ 8: বিক্ষোভ এবং উপসংহার

পুরো পথ পড়ার জন্য ধন্যবাদ! আমি নীচে পাইথন স্ক্রিপ্ট সংযুক্ত করব! যদি এমন কিছু থাকত যা আমরা যোগ করতে পারতাম, এটা সম্ভবত…

1. বিভিন্ন ইনপুট প্রকারের জন্য সমর্থন (শহর, ভৌগোলিক পয়েন্ট, ইত্যাদি)

2. আরো আবহাওয়া তথ্যের জন্য সমর্থন

3. তথ্য দেখানোর জন্য একটু পর্দা যোগ করুন

আপনার চিন্তা চেতনা আমাদের জানতে দিন! এটি নির্মাণের জন্য একটি মজাদার প্রকল্প ছিল। আমরা পাইথন ব্যবহার করে অনুরোধ এবং ইন্টারনেট নথি পাওয়ার বিষয়ে অনেক কিছু শিখেছি, এবং সোল্ডারিং ব্যবহার সম্পর্কে আমরা অনেক কিছু শিখেছি।

প্রস্তাবিত: