विषयसूची:
- आपूर्ति
- चरण 1: बिल्ड
- चरण 2: कैमरा
- चरण 3: मॉनिटर
- चरण 4: सजा
- चरण 5: प्रोग्रामिंग
- चरण 6: रास्पबेरी पीआई तैयार करना
- चरण 7: सॉफ्टवेयर
- चरण 8: प्रोग्रामिंग - कैमरा पूर्वावलोकन
- चरण 9: प्रोग्रामिंग - बिग डोम पुश बटन
- चरण 10: ट्विटर पर पोस्ट करें
- चरण 11: कुछ तत्वों का मेल
- चरण 12: वायरिंग
- चरण 13: मैजिकबॉक्स
वीडियो: रास्पबेरीपीआई फोटो कैमरा - मैजिकबॉक्स: 13 चरण (चित्रों के साथ)
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-31 10:20
कुछ समय पहले, मेरे पास रास्पबेरी पीआई से एक फोटोग्राफिक मशीन बनाने का यह पागल विचार था। मेरे शहर में, एक छोटा सा शो था जहां लोग जाते थे और दिखाते थे कि वे क्या बना रहे थे या इलेक्ट्रॉनिक्स, कंप्यूटर आदि का उपयोग कर बना रहे थे … मैं एक गरीब आदमी के निर्माता की तरह था, लेकिन एक स्थानीय दायरे में।
एक आ रहा था, और, मेरी पत्नी के साथ, हम इस चीज़ का निर्माण करते हैं।
यह कैसे काम करता है ?
आप नीला बटन दबाते हैं - यह झपकने लगता है - और 3 सेकंड के बाद एक तस्वीर ली जाती है। कैमरे के दूसरी तरफ एक मॉनिटर है जो उलटी गिनती दिखा रहा है और तस्वीर लेने के बाद, फोटो का पूर्वावलोकन।
अब आप इसे ट्विटर और फेसबुक पर भेजने या रद्द करने और पुनः प्रयास करने का विकल्प चुन सकते हैं। यह इतना आसान है।
सब कुछ पायथन में क्रमादेशित है, पीआई फ्रेमबफर का उपयोग करते हुए - नो एक्सर्ग, कोई जीयूआई का उपयोग नहीं किया जाता है।
यहाँ परियोजना का एक वीडियो काम कर रहा है
आपूर्ति
- रास्पबेरी पीआई (मैं संस्करण 2 का उपयोग कर रहा हूँ)
- रास्पबेरी पीआई कैमरा (संस्करण 1 का उपयोग करना)
- 3x बिग डोम पुश बटन
- वीजीए/एचडीएमआई के साथ टीएफटी/एलसीडी मॉनिटर
- एमडीएफ
- धातु टिका, शिकंजा, आदि।
- पॉवर उपकरण
- खाली समय और ढेर सारी मस्ती
चरण 1: बिल्ड
इसे बनाना मजेदार था। बहुत सारी कटिंग, पेंटिंग और ड्रिलिंग।
मैंने कैमरे की बुनियादी संरचना के निर्माण के लिए एमडीएफ पैनल का इस्तेमाल किया। वे हल्के और काम करने में आसान हैं। इसके अलावा, यह एक प्रकार की लकड़ी थी जिसे स्थानीय फैबलैब में लेजर मशीन काटने में सक्षम थी।
अंदर की वायरिंग तक पहुंच हाइड्रोलिक हिंगों का उपयोग करके मॉनिटर की ओर से की गई थी ताकि वे मॉनिटर को उठाने में मदद कर सकें।
चरण 2: कैमरा
कैमरा
कैमरा निम्न आयामों वाला एक बॉक्स है: 60cm x 40cm x 30cm आपका छोटा, बड़ा हो सकता है, यह आप पर निर्भर है। बस उस मॉनिटर के लिए समायोजित करने की आवश्यकता है जिसका आप उपयोग करने जा रहे हैं। एमडीएफ पैनल स्थानीय फैबलैब में लेजर कट थे। पीठ में 3 छेद की जरूरत है - दो बड़े गुंबद पुश बटन और एक मॉनिटर के लिए। सामने, 2 छेद - एक बड़े गुंबद पुश बटन के लिए और दूसरा - छोटा - रास्पबेरी पीआई कैमरे के लिए। मेरे पास विशिष्ट माप नहीं हैं - बस एक कैमरे की कल्पना करें और उसका उपयोग करें।
चरण 3: मॉनिटर
मॉनिटर
इसके आयामों के भीतर लकड़ी के छोटे-छोटे टुकड़ों को जोड़कर मॉनिटर सपोर्ट बनाया गया था।
यह प्लास्टिक के आवास से पट्टी थी और शिकंजा के साथ सुरक्षित थी। इसे उठाने में मदद के लिए, दो हाइड्रोलिक टिका (प्रयुक्त) का उपयोग किया गया था।
चरण 4: सजा
चूँकि मुझे अपने फ़ूजी X-T30 की शैली बहुत पसंद है, इसलिए हमने जाकर कुछ ऐसा ही किया।
सबसे पहले, हमने इसे फोम से ढक दिया और फिर हमने इसे काला रंग दिया। पेंट के बाद, हमने सिल्वर पार्ट्स के लिए एल्युमिनियम फॉयल मिलाया और उसमें लपेट दिया
लेंस का अनुकरण करने के लिए, हमने सिर्फ एक गोल टपरवेयर का उपयोग किया था, हमने रास्पबेरी पीआई कैमरा मॉड्यूल के बैठने के लिए एक छोटा सा छेद किया था।
चरण 5: प्रोग्रामिंग
कैमरा प्रोग्रामिंग एक चुनौती थी, लेकिन यह बहुत मजेदार था।
कोई GUI नहीं है - यह CLI पर चलता है और यह Python संस्करण 3 पर चलता है।
मैंने पहले बटनों का परीक्षण और प्रोग्रामिंग करके शुरुआत की, अगला पहले से प्रदान किए गए टूल और पायथन एपीआई का उपयोग करके तस्वीरें ले रहा था। इसके बाद मैं कैमरा आउटपुट (उलटी गिनती के लिए) में चित्रों को ओवरले करने और ट्विटर और फेसबुक के साथ बातचीत करने के लिए आगे बढ़ा।
उस सब में सहज होने के बाद, एक पहेली की तरह, मैंने सभी टुकड़ों को एक साथ इकट्ठा किया। यहां हम उसी प्रक्रिया के साथ जा रहे हैं। धीमी और छोटी शुरुआत करें और तेज और बड़े पर जाएं।
सबसे पहले, रास्पबेरी पीआई को कॉन्फ़िगर करके शुरू करते हैं
चरण 6: रास्पबेरी पीआई तैयार करना
मैं रास्पबेरी पीआई पर रास्पियन को स्थापित करने का तरीका नहीं बताऊंगा - रास्पबेरी पीआई आधिकारिक वेबसाइट पर भी बहुत सारे ट्यूटोरियल हैं।
आपको बस उस तक एसएसएच एक्सेस की आवश्यकता है, या इसे मॉनिटर पर प्लग करें और कीबोर्ड और माउस में प्लग करें।
नोट: रास्पबेरी पीआई कैमरे से शुरू करते समय, आपको इसे मॉनिटर में प्लग इन करना होगा। वहां तक, SSH का उपयोग करके सभी चरण किए जा सकते हैं।
आपके रास्पबेरी पीआई में बूट करने के बाद, हमें रास्पबेरी पीआई कैमरा सक्षम करने की आवश्यकता है। आइए उसके लिए raspi-config टूल का उपयोग करें।
सुडो रास्पि-कॉन्फ़िगरेशन
- विकल्प 5 चुनें - इंटरफेसिंग विकल्प
- P1 चुनें - रास्पबेरी पीआई कैमरे से कनेक्शन सक्षम/अक्षम करें
- हाँ कहें
- ओके. के लिए
- समाप्त चुनें
- अभी रीबूट करने के लिए हाँ चुनें
रिबूट के बाद, हम आगे बढ़ सकते हैं
चरण 7: सॉफ्टवेयर
हमें स्थापित करने के लिए कुछ पायथन पुस्तकालयों की आवश्यकता होगी। इसे नवीनतम रास्पियन संस्करण के लिए अद्यतन किया गया है - बस्टर
सबसे पहले, पायथन 3 को डिफ़ॉल्ट के रूप में सेट करते हैं। इसे सिस्टम वाइड कैसे सेट करें, यह जानने के लिए इस लिंक का अनुसरण करें
पुस्तकालय:
- छवियों में हेरफेर करने के लिए python-pil.imagetk
- python-rpi.gpio GPIO PINS तक पहुँचने के लिए
- रास्पबेरी पीआई कैमरा तक पहुंचने के लिए पायथन-पिकमेरा
- ट्विटर पर फोटो साझा करने के लिए ट्वीट करें
- फेसबुक पेज पर साझा करने के लिए facebook-sdk
sudo apt-python3-pil.imagetk स्थापित करें python3-rpi.gpio python3-picamera python3-tweepy python3-pip
facebook-sdk. स्थापित करने के लिए पायथन पाइप का प्रयोग करें
sudo pip3 facebook-sdk. स्थापित करें
चरण 8: प्रोग्रामिंग - कैमरा पूर्वावलोकन
इस परियोजना के लिए मैंने जिन आवश्यकताओं को निर्धारित किया था उनमें से एक यह थी कि यह कार्यक्रम सीएलआई मोड में चलाना था। इसलिए, हमें कंसोल पर कैमरा इमेज प्रदर्शित करने की आवश्यकता है। इसके लिए चलिए Python Picamera का उपयोग करते हैं। उसके बाद, कैमरा पूर्वावलोकन के शीर्ष पर एक ओवरले प्रदर्शित करने के लिए pil.imagetk का उपयोग करें
हमारा छोटा कार्यक्रम (हम अंत में एक बड़े कार्यक्रम तक छोटे कार्यक्रम विकसित करने जा रहे हैं) कैमरा पूर्वावलोकन प्रदर्शित करेगा।
#!/usr/bin/env python
इंपोर्ट टाइम इंपोर्ट पिकामेरा फ्रॉम टाइम इंपोर्ट स्लीप कैमरा = पिकामेरा। पाइकैमरा () # वह रिज़ॉल्यूशन सेट करें जो आप चाहते हैं कैमरा। रिज़ॉल्यूशन = (1280, 1024) कैमरा। फ्रैमरेट = 24 कैमरा। स्टार्ट_प्रीव्यू () कोशिश करें: जबकि (ट्रू): स्लीप (1) को छोड़कर (कीबोर्डइंटरप्ट, सिस्टमएक्सिट): प्रिंट ("बाहर निकल रहा है …") कैमरा.स्टॉप_प्रीव्यू ()
इसे आज़माने के लिए बस इसे निष्पादित करें
अजगर कैमरापूर्वावलोकन.py
शीर्ष पर छवियों के साथ कैमरे का पूर्वावलोकन करें
चूँकि मैं चित्र लेने से पहले एक उलटी गिनती प्रदर्शित करना चाहता था, मुझे कैमरा पूर्वावलोकन को ओवरलैप करने वाली छवियों की आवश्यकता थी।
एक पीएनजी छवि बनाएं (या यहां वाले लोगों का उपयोग करें - उन्हें स्क्रिप्ट की सेव निर्देशिका में सहेजें) - और पृष्ठभूमि को पारदर्शी सेट करें। मैंने 256x512 पिक्सल के संकल्प के साथ नंबर 1 के साथ एक पीएनजी छवि बनाई है। मैंने इसे 1-p.webp" />
निम्न कोड कैमरा पूर्वावलोकन के साथ 1-p.webp
पीआईएल से पिकामेरा आयात करें समय से छवि आयात करें पिकामेरा के साथ नींद को आयात करें। ') # पैड बनाएं = Image.new('RGB', (((img.size[0] + 31) // 32) * 32, ((img.size[1] + 15) // 16) * 16,)) पैड.पेस्ट (img, (0, 0)) o = कैमरा.add_overlay(pad.tobytes(), size=img.size) o.alpha = 128 o.layer = 3 जबकि ट्रू: स्लीप(1)
इसे अजमाएं:
अजगर imageOverlay.py
आइए अब ओवरले छवियों के साथ उलटी गिनती बनाएं। जैसे आपने 1-p.webp
उसके बाद, बस निम्नलिखित कोड का उपयोग करें:
पिकामेरा आयात करें
पीआईएल आयात से छवि समय से आयात करें पिकामेरा के साथ नींद।) img2 = Image.open('2.png') img3 = Image.open('1.png') # पैड बनाएं = Image.new('RGB', ((img1.size[0] + 31) / / 32) * 32, ((img1.size[1] + 15) // 16) * 16,)) पैड.पेस्ट (img1, (0, 0)) ओ = कैमरा.एड_ओवरले (पैड.टोबाइट्स (),) size=img1.size) o.alpha = 128 o.layer = 3 स्लीप(2) #पिछला ओवरले कैमरा हटाएं।remove_overlay(o) pad.paste(img2, (0, 0)) o = camera.add_overlay(pad. tobytes(), size=img2.size) o.alpha = 128 o.layer = 3 स्लीप(2) # पिछले ओवरले कैमरा को हटा दें।remove_overlay(o) pad.paste(img3, (0, 0)) o = camera. add_overlay(pad.tobytes(), size=img3.size) o.alpha = 128 o.layer = 3 स्लीप(2)
अब इसे निष्पादित करें:
अजगर छविOverlayCounter.py
और उलटी गिनती देखें
वाह - कुछ अधिक कोड और कोई तस्वीर नहीं ली गई … आइए सभी को एक साथ जोड़कर हल करें - पूर्वावलोकन कैमरा, उलटी गिनती और एक तस्वीर लें
पीआईएल आयात से पिकामेरा आयात करें समय से छवि आयात करें नींद डीईएफ़ ओवरले काउंटर (): # लोड छवि img1 = Image.open('3.png') img2 = Image.open('2.png') img3 = Image.open('1. png') # पैड बनाएं = Image.new('RGB', (((img1.size[0] + 31) // 32) * 32, ((img1.size[1] + 15) // 16) * १६,)) # ओवरले पेस्ट करें - ३ पैड.पेस्ट(img1, (0, 0)) o = कैमरा.add_overlay(pad.tobytes(), size=img1.size) o.alpha = १२८ ओ.लेयर = ३ स्लीप(1) # पिछला ओवरले कैमरा निकालें। हटाएँ_ओवरले (ओ) # ओवरले पेस्ट करें - 2 पैड। पेस्ट (img2, (0, 0)) ओ = कैमरा। एड_ओवरले (पैड। टोबाइट्स (), आकार = img2.size) o.alpha = १२८ ओ.लेयर = ३ स्लीप(1) #पिछला ओवरले कैमरा हटा दें।remove_overlay(o) # ओवरले पेस्ट करें - ३ पैड.पेस्ट (img3, (0, 0)) o = कैमरा.add_overlay(pad. tobytes(), size=img3.size) o.alpha = 128 o.layer = 3 स्लीप(1) कैमरा.remove_overlay(o) कैमरा = picamera. PiCamera() camera.resolution = (1280, 1024) camera.framerate = 24 कैमरा.स्टार्ट_प्रीव्यू () ओवरले काउंटर () कैमरा.कैप्चर ('टेस्टिंग काउंटर.जेपीजी') कैमरा.स्टॉप_प्रीव्यू ()
इसे अजमाएं:
अजगर तस्वीर WithTimer.py
और यहाँ हमारे पास Yoda. है
चरण 9: प्रोग्रामिंग - बिग डोम पुश बटन
बड़ा गुंबद वाला पुश बटन एक बड़ा गोल बटन है - एक छोटे एलईडी के साथ लगभग 100 मिमी व्यास के साथ। यह कहता है कि यह 12V पर काम करता है, लेकिन रास्पबेरी PI का 3.3v इसे हल्का करने के लिए पर्याप्त है
परीक्षण के लिए योजनाबद्ध का प्रयोग करें
कोड:
आरपीआई आयात GPIO से
टेकबटन = 17 एलईडीबटन = 27 जीपीआईओ। ब्लॉकिंग फ़ंक्शन GPIO.wait_for_edge(takeButton, GPIO. FALLING) प्रिंट ("बटन दबाया गया") GPIO.output(ledButton, False) GPIO.cleanup()
कोड की कुछ व्याख्या GPIOS से मान प्राप्त करने के रूपों में से एक इंटरप्ट के माध्यम से है (दूसरा मतदान है) - किनारे का पता लगाना।
किनारा उच्च से निम्न (गिरते किनारे) या निम्न से उच्च (बढ़ते किनारे) में संक्रमण का नाम है। जब पिन किसी भी चीज़ से कनेक्ट नहीं होता है, तो कोई भी रीड अपरिभाषित हो जाएगा। उक्त पिन में एक पुल अप/डाउन रेसिस्टर होना एक वर्कअराउंड है। रास्पबेरी पीआई सॉफ्टवेयर के माध्यम से पुल अप/डाउन प्रतिरोधों को कॉन्फ़िगर करने की अनुमति देता है।
रेखा
GPIO.setup(takeButton, GPIO. IN, GPIO. PUD_UP)
बस ऐसा करने के लिए उस पिन को कॉन्फ़िगर करता है - ऊपर खींचो
ऊपर क्यों खींचे? खैर, बड़े गुंबद वाले पुश बटन में 2 पिन होते हैं - पुश टू ब्रेक या पुश टू मेक (ठीक उसी तरह जैसे छोटे पुश बटन जो अक्सर Arduino/Raspberry PI किट के साथ आते हैं)। मैंने इसे बटन के "पुश टू मेक" पिन से वायर कर दिया है। जब दबाया जाता है, तो सर्किट बंद हो जाता है और बिजली गुजरती है (सामान्य रूप से खुली)।
रेखा
GPIO.wait_for_edge (टेकबटन, GPIO. FALLING)
पिन के गिरने का पता लगाने तक प्रतीक्षा करेगा (स्क्रिप्ट के निष्पादन को प्रभावी रूप से निलंबित करना) - बटन को छोड़ने से बिजली का प्रवाह कट जाएगा और पिन 3.3v से 0v तक चला जाएगा
एलईडी पिन सिर्फ बटन पर एलईडी को रोशन करने के लिए है
Arduino Tutorials से पुश स्विच के बारे में अधिक जानकारी, बनाने या पुश करने के लिए पुश पर विकिपीडिया और GPIO इंटरप्ट करता है
अब, कैमरे के साथ एक पुश बटन को मिलाते हैं - बटन दबाए जाने पर ही तस्वीर लें
समय से पिकामेरा आयात करें आरपीआई से आयात नींद पीआईएल आयात से जीपीआईओ आयात करें छवि # नोट: यह मुख्य कार्यक्रम में रद्द बटन होगा # मैं इसे यहां वीडियो में स्पष्टता के लिए उपयोग कर रहा हूं टेकबटन = 24 एलईडी रद्द करें = 5 जीपीआईओ.setmode(GPIO. BCM) GPIO.setup(takeButton, GPIO. IN, GPIO. PUD_UP) GPIO.setup(ledCancel, GPIO. OUT) def onLeds(): GPIO.output(ledCancel, True) sleep(1) def offLEds (): GPIO.output(ledCancel, False) # छवि को ओवरले करने के लिए फ़ंक्शन ओवरले काउंटर (): # लोड इमेज img1 = Image.open('3.png') img2 = Image.open('2.png') img3 = Image.open('1.png') # एक ओवरले बनाएं # img1 के साथ प्रयोग किया जाता है क्योंकि सभी एक ही आकार के पैड हैं = Image.new('RGB', (((img1.size[0] + 31) // 32) * ३२, ((img1.size[1] + १५) // १६) * १६,)) # ओवरले पेस्ट करें - ३ पैड। पेस्ट (img1, (0, 0)) ओव = कैमरा। एड_ओवरले (पैड.टोबाइट्स) (), size=img1.size) ov.alpha = २०० # परत ३ है क्योंकि कैमरा पूर्वावलोकन परत २ ov.परत = ३ नींद पर है(1) कैमरा.remove_overlay(ov) # ओवरले पेस्ट करें - २ पैड.पेस्ट(img2, (0, 0)) ov = camera.add_overlay(pad.tobytes(), size=img2.size) ov.alpha = 200 # परत 3 है क्योंकि कैमरा पूर्वावलोकन परत 2 ov.परत = 3 नींद(1) कैमरा.remove_overlay(ov) पर है) # ओवरले पेस्ट करें - 1 पैड.पेस्ट (img3, (0, 0)) ov = कैमरा.add_overlay(pad.tobytes(), size=img3.size) ov.alpha = 200 # परत 3 है क्योंकि कैमरा पूर्वावलोकन है परत पर 2 ov.परत = 3 नींद(1) कैमरा.remove_overlay(ov) कैमरा = picamera. PiCamera() कैमरा.संकल्प = (1280, 1024) कैमरा.फ्रेमरेट = 24 कैमरा.स्टार्ट_प्रीव्यू() GPIO.wait_for_edge(takeButton, GPIO. FALLING) onLeds() overlayCounter() camera.capture('pushTesting.jpg') camera.stop_preview() offLeds() GPIO.cleanup()
थोड़ा सा कोड स्पष्टीकरण
यह कैमरा पूर्वावलोकन शुरू करता है और एक बटन दबाए जाने तक वहां प्रतीक्षा करता है। बटन दबाने के बाद, एलईडी रोशनी करती है और उलटी गिनती शुरू होती है। अंत तक पहुँचने पर, चित्र लिया जाता है और LED को बंद कर दिया जाता है
चरण 10: ट्विटर पर पोस्ट करें
अब, हम पायथन का उपयोग करने जा रहे हैं और एक ट्वीट ट्वीट करेंगे!:) पोस्ट करने के लिए आपको एक छवि की आवश्यकता होगी - बुद्धिमानी से चुनें।
सबसे पहले, हमें ट्विटर एपीआई तक पहुंचने की जरूरत है और इसके लिए हमें एक एपीपी बनाने की जरूरत है। एक नया एप्लिकेशन बनाने के लिए https://apps.twitter.com पर जाएं।
आपको एक डेवलपर खाते के लिए आवेदन करना होगा - कुछ प्रश्न भरें और अपने ईमेल पते की पुष्टि करें। उसके बाद, आप एक नया एपीपी बना सकेंगे।
एपीपी बनाने के बाद, कुंजी और टोकन पर नेविगेट करें और एक एक्सेस टोकन और एक्सेस टोकन सीक्रेट जेनरेट करें। केवल एक बार चाबियों के साथ एक विंडो दिखाई जाएगी - उन्हें कॉपी करें और बाद में उन्हें सहेजें।
अपने ट्विटर अकाउंट पर एक तस्वीर भेजने के लिए निम्नलिखित कोड का प्रयोग करें। भरना न भूलें:
- उपभोक्ता कुंजी
- उपभोक्ता_गुप्त
- एक्सेस टोकन
- access_token_secret
ट्विटर संदेश ट्वीट में भेजने के लिए पाठ है।
jpg_foto_to_send एक तस्वीर है जिसे ट्वीट से जोड़ा जाएगा। कृपया पायथन लिपि के समान निर्देशिका में कुछ चित्र रखें और कोड में नाम बदलें।
इंपोर्ट ट्वीपी # ट्विटर सेटिंग्स def get_api(cfg): auth = tweepy. OAuthHandler(cfg['consumer_key'], cfg['consumer_secret']) auth.set_access_token(cfg['access_token'], cfg['access_token_secret']) tweepy. API(auth) # ट्विटर पर भेजें भेजेंToTwitter(): cfg = {"consumer_key": "", "consumer_secret": "", "access_token": "", "access_token_secret": "" } api = get_api(cfg) # स्थिति संदेश ट्वीट = "ट्विटर संदेश" स्थिति = api.update_with_media ("jpg_foto_to_Send", ट्वीट) SendToTwitter ()
अपने ट्वीट के लिए अपना ट्विटर फीड देखें।
ये रहा ट्वीट
या बोलो:
#रास्पबेरीपीआई मैजिकबॉक्स। तस्वीरें लें, उनकी समीक्षा करें और उन्हें ट्विटर और फेसबुक पर भेजना चुनें। रास्पबेरी पीआई द्वारा संचालित। @@Raspberry_Pi#RaspberryPI#RaspberryPIProjectpic.twitter.com/cCL33Zjb8p
- ब्रूनो रिकार्डो सैंटोस (@feiticeir0) 29 फरवरी, 2020
चरण 11: कुछ तत्वों का मेल
आइए अब बिग डोम पुश बटन को मिलाएं, इसे दबाकर, उलटी गिनती करें, एक तस्वीर लें, तय करें कि इसे ट्विटर पर भेजना है या नहीं।
हम एक और ओवरले छवि जोड़ेंगे और तीनों पुश बटन का उपयोग करेंगे। जब चित्र लिया जाता है, तो सभी 3 बटन एल ई डी जलेंगे।
हम एक और तस्वीर जोड़ते हैं, जो सामाजिक नेटवर्क पर पोस्ट करने के लिए आइकन दिखाती है
SelectOption-p.webp
Aenviar-p.webp
वीडियो में ब्लू पुश बटन (कैमरे के सामने) नहीं दिखाया गया है, लेकिन एलईडी चालू है और इसे दबाते ही यह झपकने लगता है।
यदि आप चाहें तो कोड संलग्न है
यह मुख्य कार्यक्रम से पहले अंतिम परीक्षण कोड है।
# कोडिंग = utf-8 इंपोर्ट पिकामेरा इंपोर्ट _थ्रेड इंपोर्ट सबप्रोसेस एसपी फ्रॉम टाइम इंपोर्ट स्लीप आरपीआई इम्पोर्ट जीपीआईओ फ्रॉम पीआईएल इंपोर्ट इमेज इंपोर्ट थ्रेडिंग # ट्विटर इंपोर्ट ट्वीपी # फेसबुक इंपोर्ट फेसबुक # तस्वीर लेने के लिए बटन बटन = 17 # सोशल नेटवर्क बटन सोशल नेटवर्क बटन = 23 # कैंसिल पिक्चर कैंसिलबटन = 24 # पिक्चर बटन लें एलईडी टेकबटन लेड = 27 # सोशल नेटवर्क बटन पर पोस्ट करें एलईडी पोस्टएसएनएलईडी = 22 # कैंसिल बटन एलईडी कैंसिल बटन एलईडी = 5 GPIO.setmode (GPIO. BCM) GPIO.setup (टेकबटन, GPIO. IN, GPIO). PUD_UP) GPIO.setup(socialNetworkButton, GPIO. IN, GPIO. PUD_UP) GPIO.setup(cancelButton, GPIO. IN, GPIO. PUD_UP) GPIO.setup(takePicButtonLed, GPIO. OUT) GPIO.setup(postSNLed, GPIO. OUT)) GPIO.setup(cancelButtonLed, GPIO. OUT) # Twitter सेटिंग्स def get_api(cfg): auth = tweepy. OAuthHandler(cfg['consumer_key'], cfg['consumer_secret']) auth.set_access_token(cfg['access_token'], cfg ['access_token_secret']) ट्वीपी लौटाएं। एपीआई (प्रमाणीकरण) # ट्विटर को भेजें def SendToTwitter (): cfg = { "con sumer_key": "", "consumer_secret": "", "access_token": "", "access_token_secret": "" } api = get_api (cfg) # स्टेटस मैसेज ट्वीट = "मैजिकबॉक्स इंस्ट्रक्शनल टेस्टिंग। #MagicBox #RaspberryPI #Raspberry #Instructables" status = api.update_with_media("pushTesting.jpg", ट्वीट) # Facebook AOth def get_api_facebook(cfg): graph = facebook. GraphAPI(cfg['access_token']) # इसके लिए पेज टोकन प्राप्त करें पृष्ठ के रूप में पोस्ट करें। यदि आप स्वयं के रूप में पोस्ट करना चाहते हैं तो आप # निम्नलिखित को छोड़ सकते हैं।] == cfg ['पेज_आईडी']: पेज_एक्सेस_टोकन = पेज ['एक्सेस_टोकन'] ग्राफ = फेसबुक। ग्राफएपीआई (पेज_एक्सेस_टोकन) रिटर्न ग्राफ, "access_token": ""} api = get_api_facebook (cfg) कैप्शन = "कैप्शन द इमेज" एल्ब्यूमिड = "" api.put_photo (इमेज = ओपन ("pushTesting.jpg", "rb"), कैप्शन = "इमेज को कैप्शन दें ") # लाइट ओनली TakePicButtonLed def onlyTakePicLed (): GPIO.output(takePicButtonLed, True) GPIO.output(postSNLed, False) GPIO.output(cancelButtonLed, False) # लाइट ओनली कैंसिल और सोशल नेटवर्क बटन डिफ कैंसिलपोस्टलेड (): GPI O.output(takePicButtonLed, False) GPIO.output(postSNLed, True) GPIO.output(cancelButtonLed, True) # ब्लिंक पिक्चर एलईडी काउंट डाउन डिफ काउंटिंग टाइमर पिक्चर (): GPIO.output(takePicButtonLed, True) स्लीप (0.5) GPIO.output(takePicButtonLed, False) sleep(0.5) GPIO.output(takePicButtonLed, True) sleep(0.5) GPIO.output(takePicButtonLed,झूठी) नींद(0.5) GPIO.output(takePicButtonLed, True) नींद(0.5) GPIO.output(takePicButtonLed, False) # सोशल नेटवर्क पर पोस्ट करते समय ब्लिंक पोस्टSNLed blinkPosting(stop_event): # प्रारंभ करते समय (stop_event.is_set() नहीं)): प्रिंट ("ऑफ") GPIO.output(postSNLed, False) स्लीप (0.5) प्रिंट ("ऑन") GPIO.output(postSNLed, True) स्लीप (0.5) def टाइमर (): GPIO.output(takePicButtonLed, True) नींद(1) GPIO.output(postSNLed, True) नींद(1) GPIO.output(cancelButtonLed, True) sleep(1) def showAllLeds(): GPIO.output(takePicButtonLed, True) GPIO.output(postSNLed, True) GPIO.output(cancelButtonLed, True) # परत 1 def displayPreview(imgName) पर एक पूर्वावलोकन प्रदर्शित करें: # चूंकि जनहित याचिका छवि शो एक बकवास है # हम प्रदर्शित करने के लिए कैमरे से ओवरले का उपयोग करते हैं # पूर्वावलोकन img = Image.open(imgName)) पैडिंग = Image.new ('RGB', (((img.size[0] + 31) // 32) * 32, ((img.size[1] + 15) // 16) * 16,)) padding.paste(img, (0, 0)) ov = camera.add_overlay(padding.tobytes(), size=img.size) ov.layer = 1 # परत पर एक पूर्वावलोकन प्रदर्शित करें 3 def displayPreview3(imgName): # चूंकि जनहित याचिका छवि शो एक बकवास है # हम प्रदर्शित करने के लिए कैमरे से ओवरले का उपयोग करते हैं # पूर्वावलोकन img = Image.open(imgName) padding = Image.new('RGB', (((img.size[0] + 31) // 32) * 32, ((img.size[1] + 15) // 16) * 16,)) padding.paste(img, (0, 0)) ov = camera.add_overlay(padding.tobytes(), size=img.size) ov.alpha = 150 ov.layer = 3 रिटर्न ov # फंक्शन ओवरलेसामाजिक नेटवर्क def overlaysn(): imgsn = Image.open('SelectOption.png') # बनाएँ ओवरले पैड = Image.new ('RGB', (((imgsn.size[0] + 31) // 32) * 32, ((imgsn.size[1] + 15) // 16) * 16,)) # ओवरले पैड पेस्ट करें। इमेज डेफ़ ओवरले काउंटर (): # लोड इमेज img1 = इमेज.ओपन ('3.png') img2 = इमेज.ओपन ('2.png') img3 = इमेज.ओपन ('1.png') # ओवरले बनाएं # Img1 के साथ प्रयोग किया जाता है क्योंकि सभी एक ही आकार के पैड हैं = Image.new('RGB', (((img1.size[0] + 31) // 32) * 32, ((img1.size[1] + 15) // 16) * 16,)) # ओवरले पेस्ट करें - 3 पैड। पेस्ट (img1, (0, 0)) ओव = कैमरा। एड_ओवरले (पैड। टोबाइट्स (), आकार = img1.size) ov.alpha = 200 # परत 3 है क्योंकि कैमरा पूर्वावलोकन परत 2 पर है ov.परत = 3 नींद(1) कैमरा.remove_overlay(ov) # ओवरले पेस्ट करें - 2 पैड.पेस्ट (img2, (0, 0)) ov = camera.add_overlay(pad.tobytes(), size=img2.size) ov.alpha = 200 # लेयर 3 है क्योंकि कैमरा प्रीव्यू लेयर 2 ov.layer = 3 स्लीप(1) कैमरा.remove_overlay(ov) # पेस्ट पर है ओवरले - 1 पैड.पेस्ट(img3, (0, 0)) ov = camera.add_overlay(pad.tobytes(), size=img3.size) ov.alpha = 200 # परत 3 है क्योंकि कैमरा पूर्वावलोकन परत 2 पर है ov.layer = 3 sleep(1) camera.remove_overlay(ov) # मेन फंक्शन # क्लियर स्क्रीन ताकि बूट मैसेज मौजूद न हो # शायद बैश tmp = sp.call('clear', शेल = ट्रू) कैमरा = पिकामेरा। पाइकैमरा () कैमरा। रिज़ॉल्यूशन = (1280, 1024) कैमरा। फ्रैमरेट = 24 कैमरा। ब्राइटनेस = 55 कैमरा। शार्पनेस = 0 कैमरा। कॉन्ट्रास्ट = 0 # कैमरा। एक्सपोजर_को mpensation = 0 #camera.exposure_mode = 'ऑटो' #camera.meter_mode = 'औसत' # यहां परीक्षण करने का प्रयास करें: जबकि (True): camera.start_preview() # केवल तस्वीर लेने के लिए एलईडी दिखाएंTakePicLed() # बटन लेने के लिए प्रतीक्षा करें चित्र GPIO.wait_for_edge(takeButton, GPIO. FALLING) # छवियों को दिखाने के दौरान एलईडी के साथ गिनने के लिए एक धागा शुरू करें # संभवतः ओवरले काउंटर फ़ंक्शन में उपयोग किया जा सकता है, # क्योंकि इसमें चित्रों को दिखाने के लिए टाइमर भी हैं, लेकिन एलईडी प्रभाव # समान नहीं होगा _thread.start_new_thread (countingTimerPicture, ()) # कैमरे के चित्र ओवरले में चित्र ओवरले दिखाएं काउंटर () # चित्र लेते समय सभी LEDS दिखाएं AllLeds() camera.capture('pushTesting.jpg') कैमरा। stop_preview() #डिस्प्ले इमेज डिस्प्लेप्रीव्यू('pushTesting.jpg') # ओवरले दिखाएँ oo = overlaysn() # रद्द करने या सामाजिक नेटवर्क पर पोस्ट करने के लिए LED दिखाएँ रद्दपोस्टएलडीएस() GPIO.add_event_detect(socialNetworkButton, GPIO. FALLING) GPIO.add_event_detect(cancelButton), GPIO. FALLING) जबकि (सत्य): यदि GPIO.event_detecte d(सोशलनेटवर्कबटन): camera.remove_overlay(oo) GPIO.output(cancelButtonLed, False) o = displayPreview3('Aenviar.png') #print "Social Networks Button" sendToTwitter() sendToFacebook() camera.remove_overlay(o) ब्रेक अगर GPIO.event_detected(cancelButton): #प्रिंट "रद्द" कैमरा.remove_overlay(oo) ब्रेक # रीसेट GPIOS GPIO.remove_event_detect(socialNetworkButton) GPIO.remove_event_detect(cancelButton) GPIO.remove_event_detect(takeButton) कैमरा। "बाहर निकल गया…") #offLeds() GPIO.cleanup()
चरण 12: वायरिंग
वायरिंग सिर्फ रास्पबेरी पीआई के लिए बिग डोम पुश बटन को तार कर रही है।
बस फ्रिटिंग योजनाबद्ध का पालन करें।
कनेक्शन हैं:
कनेक्शनआरपीआई जीपीआईओ पिन जीएनडी ग्रीन पुश बटनजीएनडी (#3) जीएनडी पीला पुश बटनजीएनडी (#9)जीएनडी ब्लू पुश बटनजीएनडी(#39) तस्वीर लें(ब्लू पुश बटन "पुश टू मेक")17 (बीसीएम) सोशल नेटवर्क पर पोस्ट करें (ग्रीन पुश बटन "पुश टू मेक")23 (बीसीएम) कैंसल (पीला पुश बटन "पुश टू मेक")24 (बीसीएम) ब्लू पुश बटन एलईडी27 (बीसीएम) ग्रीन पुश बटन एलईडी22 (बीसीएम) पीला पुश बटन एलईडी5 (बीसीएम)
गर्मी हटना भी रंग कोडित है
- काला GND कनेक्शन है
- पीले "पुश टू मेक" कनेक्शन हैं
- नीले एलईडी कनेक्शन हैं
GPIO. BCM नंबर बनाम GPIO. BOARD कनेक्शन
चूंकि मेरे कनेक्शन बीसीएम हैं, मुझे लगता है कि अब इसके बारे में और बीसीएम और बोर्ड के बीच के अंतर के बारे में बात करने का एक अच्छा समय है।
मुख्य अंतर यह है कि आप GPIO पिन का संदर्भ कैसे लेते हैं, जो बदले में आपके कनेक्शन करने के तरीके को संचालित करेगा। GPIO.board इंटरनेट पर किसी भी GPIO लेआउट पर छपे नंबर से पिन को संदर्भित करेगा।
GPIO. BCM पिन नंबरों को संदर्भित करता है क्योंकि ब्रॉडकॉम SOC उन्हें देखता है। यह रास्पबेरी पीआई के नए संस्करणों के साथ बदलने की संभावना है।
Pinout.xyz साइट पर, पिन के ठीक बगल में बोर्ड नंबर होते हैं और BCM को इस तरह रेफर किया जाता है - BCM X (जहाँ X नंबर है)
चरण 13: मैजिकबॉक्स
इस चरण में संलग्न कोड अंतिम है।
आप इसे रास्पबेरी पीआई बूट पर चला सकते हैं, यहां तक कि लॉगिन करने की भी आवश्यकता नहीं है। ऐसा करने के लिए, बस इस छोटी सी स्क्रिप्ट को उस निर्देशिका में बनाएं जिसे आपने कोड रखा है - तदनुसार पथ बदलें
#!/बिन/बैश
cd /home/pi/magicbox python MagicBox.py
इसे निष्पादन योग्य बनाएं
chmod +x start_magicbox.sh
अब, इसे /etc/rc.local में कॉल करें, एग्जिट 0 इंस्ट्रक्शन से ठीक पहले
sudo vi /etc/rc.local
/home/pi/magicbox/start_magicbox.sh &
सेव करके छोड़ो।
अब, प्रत्येक रिबूट के साथ, पायथन प्रोग्राम निष्पादित होगा
नोट: सभी छवि फ़ाइलें स्क्रिप्ट के समान निर्देशिका में होनी चाहिए। आपके पास होना चाहिए:
- 1.png
- 2.png
- 3.png
- ऐनवीयर.png
- SelectOption.png
आप इन सभी फाइलों को मैजिकबॉक्स के जीथब पर प्राप्त कर सकते हैं।
सिफारिश की:
Google फ़ोटो घड़ी: 7 चरण (चित्रों के साथ)
गूगल फोटो क्लॉक: यह इंस्ट्रक्शंस दिखाता है कि ईएसपी 32 और एलसीडी का उपयोग कैसे करें ताकि हर मिनट बैकग्राउंड में रैंडमाइज फोटो डिस्प्ले वाली डिजिटल घड़ी बनाई जा सके। फ़ोटो आपके द्वारा साझा किए गए Google फ़ोटो एल्बम से आए हैं, बस शेयर लिंक दर्ज करें ESP32 काम करेगा;>
NodeMCU + पुराने लैपटॉप के कैमरा मॉड्यूल के साथ सीसीटीवी कैमरा (Blynk के साथ और बिना): 5 कदम
NodeMCU + पुराने लैपटॉप के कैमरा मॉड्यूल के साथ सीसीटीवी कैमरा (Blynk के साथ और बिना): नमस्कार दोस्तों! इस निर्देश में, मैं आपको दिखाने जा रहा हूँ कि कैसे मैंने एक पुराने लैपटॉप के कैमरा मॉड्यूल और नोडएमसीयू का उपयोग सीसीटीवी के समान कुछ बनाने के लिए किया
Picasa के साथ त्वरित और बढ़िया फ़ोटो संपादन: 10 चरण (चित्रों के साथ)
पिकासा के साथ त्वरित और शानदार फोटो संपादन: एक महान डिजिटल कैमरे के साथ हजारों तस्वीरों को प्रबंधित करने की बड़ी जिम्मेदारी आती है। यह एक दर्द हो सकता है, खासकर यदि आप उन्हें इंस्ट्रक्शंस के लिए एक प्रक्रिया का दस्तावेजीकरण करने के लिए उपयोग करना चाहते हैं। मैं फ़ोटोशॉप के आसपास अपना रास्ता जानता हूं, लेकिन अक्सर मैं जी की ओर मुड़ता हूं
यूनिकॉर्न कैमरा - रास्पबेरी पाई जीरो डब्ल्यू नोआईआर 8एमपी कैमरा बिल्ड: 7 कदम (चित्रों के साथ)
UNICORN CAMERA - रास्पबेरी पाई ज़ीरो W NoIR 8MP कैमरा बिल्ड: पाई ज़ीरो W NoIR 8MP कैमरा बिल्ड . यह सबसे किफायती और विन्यास योग्य
फ़्लिकर फ़ोटो सीधे फ़ेसबुक फ़ोटो एल्बम पर अपलोड करें: 7 कदम
फ़्लिकर फ़ोटो सीधे फ़ेसबुक फ़ोटो एल्बम पर अपलोड करें: यह निर्देश आपको दिखाता है कि फ़्लिकर फ़ोटो सीधे अपने फ़ेसबुक फ़ोटो एल्बम पर कैसे अपलोड करें। कई फेसबुक एप्लिकेशन हैं जो आपको अपने फ़्लिकर फोटोस्ट्रीम को फेसबुक पर आयात करने देते हैं, लेकिन तस्वीरें आपके प्रोफाइल पर एक अलग बॉक्स में दिखाई देती हैं