विषयसूची:

Inky_pHAT मौसम स्टेशन: 5 कदम
Inky_pHAT मौसम स्टेशन: 5 कदम

वीडियो: Inky_pHAT मौसम स्टेशन: 5 कदम

वीडियो: Inky_pHAT मौसम स्टेशन: 5 कदम
वीडियो: Weather Monitor - Raspberry Pi Zero W with InkypHAT 2024, जुलाई
Anonim
Inky_pHAT मौसम स्टेशन
Inky_pHAT मौसम स्टेशन
Inky_pHAT मौसम स्टेशन
Inky_pHAT मौसम स्टेशन
Inky_pHAT मौसम स्टेशन
Inky_pHAT मौसम स्टेशन
Inky_pHAT मौसम स्टेशन
Inky_pHAT मौसम स्टेशन

मैं यहां एक बहुत ही सरल और कॉम्पैक्ट, रास्पबेरी पाई ज़ीरो-आधारित मौसम स्टेशन का वर्णन करना चाहता हूं, जो एक पिमोरोनी इंकी पीएचएटी ई-पेपर/ई-इंक डिस्प्ले पर बीएमई280 तापमान/दबाव/आर्द्रता सेंसर द्वारा मापा गया मान प्रदर्शित करता है। पीआई के जीपीआईओ से सेंसर और पीएचएटी के कनेक्शन की अनुमति देने के लिए मैंने जीपीआईओ और डिस्प्ले के बीच संलग्न दो मादा हेडर के साथ एक पिमोरिनी पिको एचएटी हैकर रखा। डिवाइस का उपयोग कई सेंसर संलग्न करने के लिए किया गया है, इसलिए यहां वर्णित BME280 संस्करण केवल एक उदाहरण है।

एलसीडी डिस्प्ले के विपरीत, ई-इंक डिस्प्ले छवि को बनाए रखता है, भले ही बिजली बंद कर दी गई हो। इसलिए यदि आप समय-समय पर अद्यतन की जाने वाली जानकारी प्रदर्शित करना चाहते हैं, विशेष रूप से कम ऊर्जा उपकरणों के निर्माण के लिए वे एक बहुत अच्छा समाधान हैं। इंकी पीएचएटी के मोनोक्रोम/ब्लैक संस्करण का प्रमुख लाभ यह है कि डिस्प्ले को अपडेट करने में तीन-रंग वाले संस्करणों के लिए आवश्यक दस से पंद्रह सेकंड के बजाय लगभग एक सेकंड का समय लगता है। मूवी देखें।

एडफ्रूट की ब्लिंका लाइब्रेरी रास्पबेरी पाई पर सर्किट पायथन कोड चलाने की अनुमति देती है, और विभिन्न प्रकार के सेंसर के लिए सर्किट पायथन नमूने एडफ्रूट से उपलब्ध हैं। एडफ्रूट वेबसाइट पर ब्लिंका और सर्किट पायथन कोड को स्थापित करने का एक विस्तृत विवरण पाया जा सकता है। जिन पुस्तकालयों का मैंने अब तक परीक्षण किया है (बीएमपी२८०, बीएमई२८०, टीएसएल२५९१, टीसीएस३४७८५, वीईएमएल७०६५,…)

BME280 तापमान, आर्द्रता और वायुमंडलीय दबाव को मापने के लिए एक सेंसर है। BMP280 ब्रेकआउट Adafruit सहित कई विक्रेताओं से उपलब्ध हैं, लेकिन मैं यहाँ एक सस्ते चीनी संस्करण का उपयोग कर रहा था। कृपया ध्यान रखें कि ये विभिन्न i2c पतों का उपयोग कर रहे हैं (Adafruit: 0x77, अन्य: 0x76)।

ब्रेकआउट i2c द्वारा पाई से जुड़ा है, और लाइब्रेरी और उदाहरण कोड का उपयोग करके सेंसर को पढ़ना बहुत सरल है।

चरण 1: प्रयुक्त सामग्री

उपयोग किया गया सामन
उपयोग किया गया सामन
उपयोग किया गया सामन
उपयोग किया गया सामन
उपयोग किया गया सामन
उपयोग किया गया सामन
उपयोग किया गया सामन
उपयोग किया गया सामन

एक रास्पबेरी पाई ज़ीरो, जिसमें एक पुरुष हेडर जुड़ा हुआ है। लेकिन कोई भी रास्पबेरी पाई संस्करण करेगा।

पिमोरोनी में एक पिमोरोनी इंकी पीएचएटी, ब्लैक/मोनोक्रोम संस्करण, 25€|22£|20US$।

एक पिमोरोनी पिको हैट हैकर, 2.50€|2£, जिसमें दो महिला हेडर संलग्न हैं, उनमें से एक लंबे पिन के साथ बूस्टर हेडर है। मैंने दो अलग-अलग संस्करण बनाए हैं, नीचे विवरण देखें।

एक BME280 ब्रेकआउट, AZ डिलीवरी Amazon.de @ 7.50 € के माध्यम से, हेडर संलग्न के साथ।

बढ़ाव जम्पर केबल

वैकल्पिक:

मोबाइल अनुप्रयोगों के लिए एक यूएसबी पावर पैक

पाई या डिवाइस के लिए एक आवास (यहां नहीं दिखाया गया है)

चरण 2: विधानसभा

सभा
सभा
सभा
सभा
सभा
सभा
  • महिला हेडर को पिको हैट हैकर से मिलाएं। टांका लगाने से पहले, सही अभिविन्यास की जांच करें। मैंने इसके दो संस्करण अलग-अलग उद्देश्यों के लिए बनाए हैं। एक नीचे की ओर वाला बूस्टर हेडर आगे की पंक्ति में रखा गया है और एक सामान्य, ऊपर/पीछे की ओर वाला हेडर पीछे की पंक्ति में है, और एक संस्करण जिसमें पिछली पंक्ति में नीचे की ओर बूस्टर हेडर है, और सामने की पंक्ति में एक समकोण महिला हेडर है. चित्र देखें। पहला संस्करण सेंसर और केबल्स को संलग्न और विनिमय करने की अनुमति देता है, जबकि अंदरूनी तरफ वाले हेडर वाला संस्करण आवास में पीआई, सेंसर और इंकी पीएचएटी को संलग्न करने की अनुमति देता है। वैकल्पिक रूप से आप GPIO और सेंसर को सीधे Pico HAT हैकर से जोड़ने वाले केबल और/या Pico HAT हैकर को सीधे GPIO पिन से मिला सकते हैं। किसी भी मामले में आवश्यक सोल्डर की न्यूनतम मात्रा का उपयोग करें।
  • यदि आवश्यक हो तो हेडर को सेंसर से मिलाएं।
  • Pi पर संशोधित Pico HAT हैकर यूनिट को स्टैक करें, फिर Inky pHAT जोड़ें। यदि आवश्यक हो, तो कुछ समर्थन डालें, उदा। इंकी पीएचएटी के लिए फोम ब्लॉक या स्टैंड-ऑफ।
  • 3V, GND, SDA और SCL पोर्ट का उपयोग करके केबल और सेंसर संलग्न करें। सभी सेंसर 5V नहीं टिकेंगे, इसलिए कृपया उन्हें 5V पोर्ट से कनेक्ट करने से पहले जांच लें।
  • ब्लिंका पुस्तकालय स्थापित करें, फिर Adafruit से सर्किट पायथन BME280 पुस्तकालय स्थापित करें।
  • पिमोरोनी से इंकी पीएचएटी पुस्तकालय स्थापित करें।
  • बाद के चरण में वर्णित उदाहरण पायथन कोड को स्थापित करें और इस निर्देश के साथ संलग्न करें।
  • कोड चलाएँ।

चरण 3: डिवाइस का उपयोग करना

डिवाइस का उपयोग करना
डिवाइस का उपयोग करना

डिवाइस का उपयोग करने के लिए दो विकल्प हैं।

यहां दिखाया गया कोड संलग्न स्क्रीन का उपयोग करके शुरू किया जाएगा, लेकिन फिर बिना चल सकता है।

कोड में मामूली संशोधन के साथ आप परिभाषित समय बिंदुओं पर माप करने के लिए crontab का उपयोग कर सकते हैं। इससे बिजली की खपत और भी कम हो सकेगी। क्रोंटैब का उपयोग करने का उत्कृष्ट विवरण अन्यत्र पाया जा सकता है।

पावर पैक के संयोजन में आप एक मोबाइल डिवाइस बना सकते हैं और इसका उपयोग अंदर या बाहर की स्थितियों को मापने के लिए, फ्रिज में, सौना में, अपने ह्यूमिडोर, वाइन सेलर, एक विमान में,…।

शून्य W का उपयोग करके आप न केवल डिस्प्ले पर मान प्रदर्शित कर सकते हैं, बल्कि उन्हें WLAN के माध्यम से किसी सर्वर या अपनी वेबसाइट पर भी भेज सकते हैं, जैसा कि कहीं और बताया गया है।

चरण 4: BME280 स्क्रिप्ट

BME280 स्क्रिप्ट
BME280 स्क्रिप्ट

जैसा कि पहले उल्लेख किया गया है, आपको एडफ्रूट ब्लिंका और सर्किट पायथन बीएमई२८० पुस्तकालयों के साथ-साथ पिमोरोनी इंकी पीएचएटी पुस्तकालय को स्थापित करने की आवश्यकता है।

कोड पहले सेंसर और इंकी पीएचएटी को प्रारंभ करता है, फिर सेंसर से तापमान, दबाव और आर्द्रता मान पढ़ता है और उन्हें स्क्रीन और ई-इंक डिस्प्ले पर प्रदर्शित करता है। Time.sleep() कमांड का उपयोग करके, हर मिनट माप लिया जाता है। आवश्यकतानुसार समायोजित करें। भाषा पैरामीटर सेट करके, आप परिणाम प्रदर्शित करने के लिए उपयोग की जाने वाली भाषा बदल सकते हैं।

इंकी पीएचएटी ई-इंक डिस्प्ले का उपयोग करके, आप पहले छवि को मेमोरी में प्रदर्शित करने के लिए बनाते हैं, इससे पहले कि अंत में इसे inkyphat.show() कमांड का उपयोग करके स्क्रीन पर स्थानांतरित किया जाता है। इंकी पीएचएटी पुस्तकालय प्रक्रिया को सरल बना रहा है, पाठ, रेखाओं, आयतों, मंडलियों को खींचने और प्रारूपित करने या पृष्ठभूमि छवियों का उपयोग करने के लिए आदेश प्रदान करता है।

मापा मूल्यों के अलावा, माप का समय भी प्रदर्शित होता है।

कृपया ध्यान रखें कि स्क्रिप्ट और साथ ही पुस्तकालय पायथन 3 में लिखे गए हैं, इसलिए Py3 IDLE या समकक्ष का उपयोग करके खोलें और चलाएं।

# bme280 तापमान/दबाव/आर्द्रता सेंसर (गैर-एडफ्रूट संस्करण)# और इंकी पीएचएटी के लिए एक स्क्रिप्ट - काला संस्करण # # संस्करण दिसंबर 01 2018, डॉ एच # # एडफ्रूट ब्लिंका और सर्किट पायथन बीएमई280 पुस्तकालयों की आवश्यकता है # और पिमोरोनी इंकी पीएचएटी पुस्तकालय आयात समय आयात डेटाटाइम आयात बोर्ड adafruit_bme280 से आयात आयात Adafruit_BME280 adafruit_bme280 आयात Adafruit_BME280_I2C जनहित याचिका से आयात inkyphat आयात sys ImageFont inkyphat.set_colour ('काला') # b/w inky phat inkyphat.set_ बारी प्रदर्शन के लिए # बारी प्रदर्शन 180° font1 = ImageFont.truetype(inkyphat.fonts. FredokaOne, 27) # मानक फ़ॉन्ट का चयन करें font2 = ImageFont.truetype(inkyphat.fonts. FredokaOne, 19) # मानक फ़ॉन्ट डेटा चुनें # lang = "DE" # भाषा पैरामीटर सेट करें, डिफ़ॉल्ट ("") -> english lang ="EN" i2c = busio. I2C(board. SCL, Board. SDA) bmp = Adafruit_BME280_I2C(i2c, पता = 0x76) # डिफ़ॉल्ट i2c पता (Adafruit BMP280 के लिए) 0x77 (डिफ़ॉल्ट), 0x76 चीनी ब्रेकआउट के लिए) #सेट संदर्भ दबाव # अल के लिए आवश्यक शीर्षक गणना, कृपया समायोजित करें। मानक मान 1013.25 hPa # मैन्युअल इनपुट: #reference_hPa = इनपुट ("hPa में संदर्भ दबाव दर्ज करें:") # या # संदर्भ के रूप में प्रारंभ समय पर दबाव सेट करें, उदा. सापेक्ष ऊंचाई माप के लिए समय। नींद (1) # 1 माप से पहले एक सेकंड प्रतीक्षा करें j= 0 pres_norm_sum = 0 जबकि j रेंज में (5): # संदर्भ मान को परिभाषित करने के लिए पांच माप लें pres_norm_sum = pres_norm_sum + bmp. दबाव j= j+ 1 समय। नींद (1) संदर्भ_एचपीए = (pres_norm_sum/j) # ऊंचाई माप को सक्षम करने के लिए संदर्भ बिंदु के रूप में प्रारंभिक माप सेट करें bmp.sea_level_ दबाव = फ्लोट (संदर्भ_hPa) प्रिंट () जबकि सच: # हमेशा के लिए चलता है, crontab-संस्करण # मापा के लिए संशोधित करें मान t=bmp.temperature p=bmp.दबाव h=bmp.humidity a=bmp.altitude # एडफ्रूट लाइब्रेरी द्वारा दबाव से परिकलित #timestamp ts = datetime.datetime.now() # टाइमस्टैम्प ts0_EN ='{:%Y-% m-%d}'.format(ts) # टाइमस्टैम्प - दिनांक, EN प्रारूप ts0_DE ='{:%d.%m.%Y}'.format(ts) # टाइमस्टैम्प - दिनांक, जर्मन प्रारूप ts1='{: %H:%M:%S}'.format(ts) # टाइमस्टैम्प - टाइम tmp = "{0:0.1f}".format(t) pre = "{0:0.1f}".format(p) hyg = "{0:0.1f}".format(h) alt="{0:0.1f}".format(a) tText = "Temp.:" pText_EN = "दबाव:" pText_DE = "Luftdruck:" h Text_EN = "आर्द्रता:" hText_DE = "rel. LF: " aText_EN = "ऊंचाई:" aText_DE = "होहे üNN:" # सटीक: ü। NHN, über सामान्य होहेन नल अगर (लैंग == "DE"): ts0 = ts0_DE aText = aText_DE pText = pText_DE hText = hText_DE अन्य: # डिफ़ॉल्ट अंग्रेजी ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # प्रिंट मान प्रदर्शित करने के लिए प्रिंट (ts) प्रिंट (tText, tmp, "°C") प्रिंट (pText, pre, "hPa") प्रिंट (hText, hyg, "%") प्रिंट (aText, alt, "m") प्रिंट () # Inky pHAT t1 = 5 # टैब 1, फ्रिस्ट कॉलम में प्रिंट मान, लेआउट के अनुकूलन को सरल करता है t2 = 110 # टैब 2, दूसरा कॉलम inkyphat। clear() inkyphat.text((t1, 0), ts0, inkyphat. BLACK, font2) # टाइमस्टैम्प दिनांक लिखें ((t1, 25, 207, 25), 1, 3) # एक रेखा बनाएं "°C"), inkyphat. BLACK, font2) inkyphat.text((t1, 55), pText, inkyphat. BLACK, font2) inkyphat.text((t2, 55), (pre + "hPa"), inkyphat। काला, फ़ॉन्ट 2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text((t2, 80), (hyg + "%"), inkyphat. BLACK, font2) # वैकल्पिक रूप से परिकलित ऊंचाई # inkyphat.text((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text((t2, 80), (alt + "m"), inkyphat. BLACK, font2) inkyphat.show() time.sleep(51) # अगले माप से पहले कुछ सेकंड प्रतीक्षा करें, +19 सेकंड प्रति चक्र inkyphat.clear() # खाली इंकी पीएचएटी प्रदर्शन प्रक्रिया, inkyphat.show() # crontab-संस्करण के लिए मौन

चरण 5: BMP280 स्क्रिप्ट

BMP280 BME280 सेंसर से काफी मिलता-जुलता है, लेकिन केवल तापमान और दबाव को मापता है। स्क्रिप्ट बहुत समान हैं, लेकिन आपको विभिन्न सर्किट पायथन पुस्तकालयों की आवश्यकता है। यहां आर्द्रता के बजाय संदर्भ दबाव के आधार पर गणना की गई ऊंचाई प्रदर्शित की जाती है।

संलग्न आप स्क्रिप्ट पाते हैं।

सिफारिश की: