সুচিপত্র:

রাস্পবেরিপিআই ফটো ক্যামেরা - ম্যাজিকবক্স: 13 টি ধাপ (ছবি সহ)
রাস্পবেরিপিআই ফটো ক্যামেরা - ম্যাজিকবক্স: 13 টি ধাপ (ছবি সহ)

ভিডিও: রাস্পবেরিপিআই ফটো ক্যামেরা - ম্যাজিকবক্স: 13 টি ধাপ (ছবি সহ)

ভিডিও: রাস্পবেরিপিআই ফটো ক্যামেরা - ম্যাজিকবক্স: 13 টি ধাপ (ছবি সহ)
ভিডিও: Instant Framed Camera - a custom-built instant camera 2024, নভেম্বর
Anonim
Image
Image
নির্মাণ
নির্মাণ

কিছুক্ষণ আগে, রাস্পবেরি পিআই থেকে একটি ফটোগ্রাফিক মেশিন তৈরি করার জন্য আমার এই উন্মাদ ধারণা ছিল। আমার শহরে, একটা ছোট্ট অনুষ্ঠান ছিল যেখানে মানুষ গিয়ে দেখাবে যে তারা কি তৈরি করছে বা ইলেকট্রনিক্স, কম্পিউটার ইত্যাদি ব্যবহার করে তৈরি করছে … আমি একজন দরিদ্র লোকের মেকার ফায়ারের মত ছিলাম, কিন্তু স্থানীয় পরিসরে।

একজন আসছিল, এবং, আমার স্ত্রীর সাথে, আমরা এই জিনিসটি তৈরি করি।

এটা কিভাবে কাজ করে ?

আপনি নীল বোতাম টিপুন - এটি জ্বলতে শুরু করে - এবং 3 সেকেন্ড পরে একটি ছবি তোলা হয়। ক্যামেরার অন্য পাশে একটি মনিটর রয়েছে যা একটি কাউন্টডাউন দেখাচ্ছে এবং ছবি তোলার পরে, ছবির পূর্বরূপ।

আপনি এখন এটি টুইটার এবং ফেসবুকে পাঠাতে বা বাতিল করে আবার চেষ্টা করতে পারেন। এটা যে সহজ।

পাইথনে সবকিছু প্রোগ্রাম করা হয়, পিআই ফ্রেমবফার ব্যবহার করে - কোন জর্জ, কোন জিইউআই ব্যবহার করা হয় না।

প্রকল্পের কাজ করার একটি ভিডিও এখানে

সরবরাহ

  • রাস্পবেরি পিআই (আমি সংস্করণ 2 ব্যবহার করছি)
  • রাস্পবেরি পিআই ক্যামেরা (সংস্করণ 1 ব্যবহার করে)
  • 3x বিগ গম্বুজ পুশ বোতাম
  • ভিজিএ/এইচডিএমআই সহ টিএফটি/এলসিডি মনিটর
  • MDF
  • ধাতব কবজা, স্ক্রু ইত্যাদি
  • শক্তি সরঞ্জাম
  • অতিরিক্ত সময় এবং প্রচুর মজা

ধাপ 1: নির্মাণ

নির্মাণ
নির্মাণ
নির্মাণ
নির্মাণ

এটি নির্মাণ করা মজাদার ছিল। অনেক কাটিং, পেইন্টিং এবং ড্রিলিং।

আমি ক্যামেরার মৌলিক কাঠামো তৈরির জন্য MDF প্যানেল ব্যবহার করেছি। এগুলি হালকা এবং কাজ করা সহজ। এছাড়াও, এটি স্থানীয় ফ্যাবল্যাবের লেজার মেশিনটি এক ধরণের কাঠ কাটতে সক্ষম ছিল।

ভিতরে তারের অ্যাক্সেস মনিটরের পাশ দিয়ে তৈরি করা হয়েছিল, হাইড্রোলিক হিংস ব্যবহার করে যাতে তারা মনিটর তুলতে সাহায্য করতে পারে।

ধাপ 2: ক্যামেরা

ক্যামেরা
ক্যামেরা
ক্যামেরা
ক্যামেরা
ক্যামেরা
ক্যামেরা

ক্যামেরা

ক্যামেরাটি নিম্নোক্ত মাত্রার একটি বাক্স: 60 সেমি x 40 সেমি x 30 সেমি আপনার ছোট, বড় হতে পারে, এটি আপনার উপর নির্ভর করে। আপনি যে মনিটরটি ব্যবহার করতে যাচ্ছেন তার জন্য শুধু প্রয়োজন। MDF প্যানেলগুলি স্থানীয় ফ্যাবলাবে লেজার কাটা ছিল। পিছনে 3 টি গর্তের প্রয়োজন - দুটি বড় গম্বুজ পুশ বোতাম এবং একটি মনিটরের জন্য। সামনে, 2 টি ছিদ্র - একটি বড় গম্বুজ পুশ বোতামের জন্য এবং অন্যটি ছোট - রাস্পবেরি পিআই ক্যামেরার জন্য। আমার নির্দিষ্ট পরিমাপ নেই - শুধু একটি ক্যামেরা কল্পনা করুন এবং এটি ব্যবহার করুন।

ধাপ 3: মনিটর

মনিটর
মনিটর
মনিটর
মনিটর
মনিটর
মনিটর

মনিটর

মনিটর সাপোর্টটি কাঠের ছোট ছোট টুকরো যোগ করে তৈরি করা হয়েছে যাতে এটি এর মাত্রার মধ্যে থাকে।

এটি প্লাস্টিকের হাউজিং থেকে ফালা এবং স্ক্রু দিয়ে জায়গায় সুরক্ষিত ছিল। এটি তুলতে সাহায্য করার জন্য, দুটি জলবাহী কব্জা (ব্যবহৃত) ব্যবহার করা হয়েছিল।

ধাপ 4: শোভাকর

সাজসজ্জা
সাজসজ্জা
সাজসজ্জা
সাজসজ্জা
সাজসজ্জা
সাজসজ্জা
সাজসজ্জা
সাজসজ্জা

যেহেতু আমি আমার ফুজি এক্স-টি 30 এর স্টাইলটি পছন্দ করি, তাই আমরা গিয়েছিলাম এবং অনুরূপ কিছু করেছি।

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

লেন্স অনুকরণ করার জন্য, আমরা শুধু একটি বৃত্তাকার টুপারওয়্যার ব্যবহার করেছি, রাস্পবেরি পিআই ক্যামেরা মডিউল বসার জন্য আমরা একটি ছোট গর্ত করেছি।

ধাপ 5: প্রোগ্রামিং

ক্যামেরা প্রোগ্রাম করা একটি চ্যালেঞ্জ ছিল, কিন্তু এটি ছিল খুবই মজার।

কোন GUI নেই - এটি CLI তে চলে এবং এটি পাইথন সংস্করণ 3 এ চলে।

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

আমি একটি ধাঁধা মত যে সব সঙ্গে আরামদায়ক ছিল পরে, আমি একসঙ্গে সব টুকরা একত্রিত। এখানে, আমরা একই প্রক্রিয়ার সাথে যাচ্ছি। ধীর এবং ছোট শুরু করুন এবং দ্রুত এবং বড় যান।

প্রথমে, রাস্পবেরি পিআই কনফিগার করে শুরু করা যাক

ধাপ 6: রাস্পবেরি পিআই প্রস্তুত করা

রাস্পবেরি পিআই প্রস্তুত করা হচ্ছে
রাস্পবেরি পিআই প্রস্তুত করা হচ্ছে
রাস্পবেরি পিআই প্রস্তুত করা হচ্ছে
রাস্পবেরি পিআই প্রস্তুত করা হচ্ছে
রাস্পবেরি পিআই প্রস্তুত করা হচ্ছে
রাস্পবেরি পিআই প্রস্তুত করা হচ্ছে

রাস্পবেরি পিআই -তে রাস্পবিয়ান কীভাবে ইনস্টল করবেন তা আমি ব্যাখ্যা করতে যাচ্ছি না - রাস্পবেরি পিআই অফিসিয়াল ওয়েবসাইটেও প্রচুর টিউটোরিয়াল রয়েছে।

আপনার কেবল এসএসএইচ অ্যাক্সেস থাকতে হবে, অথবা এটি একটি মনিটরে প্লাগ করুন এবং একটি কীবোর্ড এবং মাউস লাগান।

দ্রষ্টব্য: রাস্পবেরি পিআই ক্যামেরা দিয়ে শুরু করার সময়, আপনাকে এটি একটি মনিটরে প্লাগ ইন করতে হবে। সেখানে পর্যন্ত, সমস্ত পদক্ষেপ SSH ব্যবহার করে তৈরি করা যেতে পারে।

আপনার রাস্পবেরি পিআইতে বুট করার পরে, আমাদের রাস্পবেরি পিআই ক্যামেরা সক্ষম করতে হবে। এর জন্য raspi-config টুল ব্যবহার করা যাক।

sudo raspi-config

  1. বিকল্প 5 নির্বাচন করুন - ইন্টারফেসিং বিকল্প
  2. P1 নির্বাচন করুন - রাস্পবেরি PI ক্যামেরার সাথে সংযোগ সক্ষম/অক্ষম করুন
  3. হ্যাঁ বলুন
  4. ঠিক আছে জন্য
  5. সমাপ্তি নির্বাচন করুন
  6. এখন রিবুট করার জন্য হ্যাঁ নির্বাচন করুন

রিবুট করার পরে, আমরা এগিয়ে যেতে পারি

ধাপ 7: সফটওয়্যার

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

প্রথমে পাইথন 3 কে ডিফল্ট হিসেবে সেট করা যাক। কিভাবে সিস্টেম ওয়াইড সেট আপ করবেন তা জানতে এই লিঙ্কটি অনুসরণ করুন

লাইব্রেরি:

  • python-pil.imagetk ইমেজ ম্যানিপুলেট করতে
  • GPIO PINS অ্যাক্সেস করতে python-rpi.gpio
  • রাস্পবেরি পিআই ক্যামেরা অ্যাক্সেস করতে পাইথন-পিকামেরা
  • টুইটারে ছবি শেয়ার করতে টুইপি
  • ফেসবুক-এসডিকে একটি ফেসবুক পেজে শেয়ার করতে হবে

sudo apt-get python3-pil.imagetk python3-rpi.gpio python3-picamera python3-tweepy python3-pip ইনস্টল করুন

ফেসবুক-এসডিকে ইনস্টল করতে পাইথন পিপ ব্যবহার করুন

sudo pip3 ফেসবুক-এসডিকে ইনস্টল করুন

ধাপ 8: প্রোগ্রামিং - ক্যামেরা প্রিভিউ

Image
Image
প্রোগ্রামিং - ক্যামেরা প্রিভিউ
প্রোগ্রামিং - ক্যামেরা প্রিভিউ
প্রোগ্রামিং - ক্যামেরা প্রিভিউ
প্রোগ্রামিং - ক্যামেরা প্রিভিউ

এই প্রকল্পের জন্য আমি যে শর্তাবলী সেট করেছি তার মধ্যে একটি হল এই প্রোগ্রামটি CLI মোডে চালানো হবে। সুতরাং, আমাদের কনসোলে ক্যামেরা ইমেজ প্রদর্শন করতে হবে। এর জন্য আসুন পাইথন পিকামেরা ব্যবহার করি। তারপরে, ক্যামেরা প্রিভিউয়ের উপরে একটি ওভারলে প্রদর্শন করার জন্য pil.imagetk ব্যবহার করা যাক

আমাদের ছোট প্রোগ্রাম (আমরা শেষ পর্যন্ত একটি বড় না হওয়া পর্যন্ত ছোট প্রোগ্রাম তৈরি করতে যাচ্ছি) ক্যামেরা প্রিভিউ প্রদর্শন করবে।

#!/usr/bin/env পাইথন

আমদানি সময় আমদানি পিকামেরা থেকে সময় আমদানি করুন স্লিপ ক্যামেরা = পিকামেরা।) ছাড়া (KeyboardInterrupt, SystemExit): print ("Exiting…") camera.stop_preview ()

এটি চেষ্টা করার জন্য এটি চালান

পাইথন ক্যামেরা Preview.py

উপরে ছবি সহ ক্যামেরার প্রিভিউ করুন

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

একটি পিএনজি ইমেজ তৈরি করুন (অথবা সেগুলি এখানে ব্যবহার করুন - সেগুলিকে স্ক্রিপ্টের সেভ ডিরেক্টরিতে সংরক্ষণ করুন) - এবং পটভূমি স্বচ্ছ সেট করুন। আমি 256x512 পিক্সেলের রেজুলেশন সহ 1 নাম্বার দিয়ে একটি-p.webp" />

নিচের কোডটি 1-p.webp

PIC আমদানি থেকে PIL আমদানি করুন ছবিটি আমদানি করুন পিকামার দিয়ে ঘুম আমদানি করুন। ') # create pad = Image.new (' RGB ', (((img.size [0] + 31) // 32) * 32, ((img.size [1] + 15) // 16) * 16,)) প্যাড।

চেষ্টা করে দেখুন:

পাইথন imageOverlay.py

আসুন এখন ওভারলে ইমেজ দিয়ে একটি কাউন্টডাউন তৈরি করি। যেমন আপনি 1-p.webp

এর পরে, কেবল নিম্নলিখিত কোডটি ব্যবহার করুন:

পিকামেরা আমদানি করুন

পিআইএল আমদানি থেকে ছবি পিকামেরা দিয়ে ঘুম আমদানি করে। পিক্যামেরা () ক্যামেরা হিসাবে: ক্যামেরা। রেজোলিউশন = (1280, 1024) ক্যামেরা। ফ্রেমারেট = 24 ক্যামেরা।) img2 = Image.open ('2.png') img3 = Image.open ('1.png') # create pad = Image.new ('RGB', '(((img1.size [0] + 31) / / 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) pad.paste (img1, (0, 0)) o = camera.add_overlay (pad.tobytes (), সাইজ = img1.size) o.alpha = 128 o.layer = 3 ঘুম (2) #আগের ওভারলে ক্যামেরা সরান।রেমোভ_ওভারলে (ও) প্যাড। টবাইটস (), সাইজ = img2.size) o.alpha = 128 o.layer = 3 ঘুম (2) # আগের ওভারলে ক্যামেরা সরান। add_overlay (pad.tobytes (), size = img3.size) o.alpha = 128 o.layer = 3 sleep (2)

এখন এটি চালান:

python imageOverlayCounter.py

এবং কাউন্টডাউন দেখুন

বাহ - বেশ কিছু কোড এবং কোন ছবি তোলা হয়নি… আসুন সবগুলো একত্রিত করে সমাধান করি - প্রিভিউ ক্যামেরা, কাউন্টডাউন এবং একটি ছবি তুলুন

আমদানি করুন picamerafrom PIL আমদানি ইমেজ সময় থেকে আমদানি করুন ঘুম def def overlayCounter (): # load image img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1।-p.webp

চেষ্টা করে দেখুন:

পাইথন ছবি উইথ টাইমার

এবং এখানে আমরা Yoda আছে

ধাপ 9: প্রোগ্রামিং - বড় গম্বুজ পুশ বোতাম

প্রোগ্রামিং - বড় গম্বুজ পুশ বোতাম
প্রোগ্রামিং - বড় গম্বুজ পুশ বোতাম
প্রোগ্রামিং - বড় গম্বুজ পুশ বোতাম
প্রোগ্রামিং - বড় গম্বুজ পুশ বোতাম

বড় গম্বুজ ধাক্কা বোতাম একটি বড় বৃত্তাকার বোতাম - একটি ছোট LED সহ প্রায় 100 মিমি ব্যাস। এটি বলে যে এটি 12V এ কাজ করে, কিন্তু রাস্পবেরি PI এর 3.3v এটি আলোকিত করার জন্য যথেষ্ট

পরীক্ষার জন্য পরিকল্পিত ব্যবহার করুন

কোড:

RPi আমদানি GPIO থেকে

takeButton = 17 ledButton = 27 GPIO.setmode (GPIO. BCM) GPIO.setup (takeButton, GPIO. IN, GPIO. PUD_UP) GPIO.setup (ledButton, GPIO. OUT) #লাইট নেতৃত্বাধীন GPIO.output (ledButton, True) # GPIO.wait_for_edge ফাংশন ব্লক করা

কোডের কিছু ব্যাখ্যা GPIOS থেকে মান পাওয়ার একটি ফর্ম হল ইন্টারাপ্টের মাধ্যমে (অন্যটি হচ্ছে পোলিং) - এজ ডিটেকশন।

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

লাইন

GPIO.setup (takeButton, GPIO. IN, GPIO. PUD_UP)

যে পিনটি ঠিক তা করতে কনফিগার করে - টানুন

কেন টানবেন? ঠিক আছে, বড় গম্বুজ পুশ বোতামে 2 টি পিন রয়েছে - ধাক্কা বা ভাঙ্গার জন্য ধাক্কা (ঠিক যেমন ছোট পুশ বোতামগুলি যা প্রায়শই আরডুইনো/রাস্পবেরি পিআই কিটগুলির সাথে আসে)। আমি এটিকে বোতামটির "পিন টু মেক" পিনে সংযুক্ত করেছি। চাপলে সার্কিট বন্ধ হয়ে যায় এবং বিদ্যুৎ চলে যায় (সাধারণত খোলা থাকে)।

লাইন

GPIO.wait_for_edge (takeButton, GPIO. FALLING)

পিনের পতন শনাক্ত না হওয়া পর্যন্ত (কার্যকরভাবে স্ক্রিপ্টের কার্যকারিতা স্থগিত করা) অপেক্ষা করবে - বোতামটি ছেড়ে দিলে বিদ্যুতের প্রবাহ হ্রাস পাবে এবং পিন 3.3v থেকে 0v এ যাবে

LED পিনটি কেবল বাটনে LED জ্বালানোর জন্য

আরডুইনো টিউটোরিয়াল থেকে পুশ সুইচ সম্পর্কে আরও তথ্য, উইকিপিডিয়া ধাক্কা তৈরি করতে বা ধাক্কা দিতে এবং GPIO বিঘ্ন ঘটায়

এখন, ক্যামেরার সাথে একটি পুশ বাটন একত্রিত করা যাক - বাটন চাপলেই কেবল একটি ছবি তুলুন

RPi থেকে সময় আমদানি পিকামেফার আমদানি করুন PIL আমদানি GPIO থেকে আমদানি করুন চিত্র # নোট: এটি মূল প্রোগ্রামের বাতিল বোতাম হবে # আমি ভিডিওটি স্পষ্টতার জন্য এখানে ব্যবহার করছি takeButton = 24 ledCancel = 5 GPIO.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) # ফাংশন ওভারলে ইমেজ ডিফ overlayCounter (): #load images img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # একটি ওভারলে তৈরি করুন # img1 দিয়ে ব্যবহার করা হয়েছে কারণ সবগুলো একই সাইজের প্যাড = Image.new ('RGB', (((img1.size [0] + 31) // 32)) * 32, ((img1.size [1] + 15) // 16) * 16,)) # ওভারলে পেস্ট করুন - 3 প্যাড। পেস্ট (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), সাইজ = img1.size) ov.alpha = 200 # লেয়ার 3 কারণ ক্যামেরা প্রিভিউ লেয়ার 2 ov.layer = 3 ঘুম (1) camera.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) camera.remove_overlay (ov) # ওভারলে পেস্ট করুন - 1 প্যাড। স্তর 2 ov.layer = 3 ঘুম (1) camera.remove_overlay (ov) ক্যামেরা = picamera. PiCamera () camera.resolution = (1280, 1024) camera.framerate = 24 camera.start_preview () GPIO.wait_for_edge (takeButton, GPIO. FALLING) onLeds () overlayCounter () camera.capture ('pushTesting.jpg') camera.stop_preview () offLeds () GPIO.cleanup ()

কোড ব্যাখ্যা একটি বিট

এটি ক্যামেরা প্রিভিউ শুরু করে এবং একটি বোতাম না চাপানো পর্যন্ত সেখানে অপেক্ষা করে। বোতামটি চাপার পরে, LED আলো জ্বলে এবং কাউন্টডাউন শুরু হয়। শেষ পর্যন্ত পৌঁছানোর সময়, ছবি তোলা হয় এবং LED বন্ধ থাকে

ধাপ 10: টুইটারে পোস্ট করুন

টুইটারে পোস্ট করুন
টুইটারে পোস্ট করুন
টুইটারে পোস্ট করুন
টুইটারে পোস্ট করুন
টুইটারে পোস্ট করুন
টুইটারে পোস্ট করুন

এখন, আমরা পাইথন ব্যবহার করতে যাচ্ছি এবং একটি টুইট টুইট করব!:) পোস্ট করার জন্য আপনার একটি ছবি লাগবে - বিজ্ঞতার সাথে নির্বাচন করুন।

প্রথমে আমাদের টুইটার এপিআই ব্যবহার করতে হবে এবং এর জন্য আমাদের একটি অ্যাপ তৈরি করতে হবে। Https://apps.twitter.com এ যান একটি নতুন অ্যাপ্লিকেশন তৈরি করুন।

আপনাকে একটি ডেভেলপার অ্যাকাউন্টের জন্য আবেদন করতে হবে - কিছু প্রশ্ন পূরণ করুন এবং আপনার ইমেল ঠিকানা নিশ্চিত করুন। এর পরে, আপনি একটি নতুন অ্যাপ্লিকেশন তৈরি করতে সক্ষম হবেন।

এপিপি তৈরির পরে, কী এবং টোকেনগুলিতে নেভিগেট করুন এবং একটি অ্যাক্সেস টোকেন এবং অ্যাক্সেস টোকেন সিক্রেট তৈরি করুন। একটি উইন্ডো কেবল একবার কীগুলির সাথে দেখানো হবে - সেগুলি অনুলিপি করুন এবং পরে সেগুলি সংরক্ষণ করুন।

আপনার টুইটার অ্যাকাউন্টে একটি ছবি পাঠাতে নিম্নলিখিত কোডটি ব্যবহার করুন। পূরণ করতে ভুলবেন না:

  • ভোক্তা_কি
  • ভোক্তা_ গোপন
  • access_token
  • access_token_secret

টুইটার বার্তা হল টুইটে পাঠানোর পাঠ্য।

jpg_foto_to_send হল একটি ছবি যা টুইটের সাথে সংযুক্ত থাকবে। অনুগ্রহ করে পাইথন স্ক্রিপ্টের একই ডিরেক্টরিতে কিছু ছবি রাখুন এবং কোডে নাম পরিবর্তন করুন।

আমদানি tweey # টুইটার সেটিংস 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) # টুইটারে পাঠান def পাঠান cfg) # স্ট্যাটাস মেসেজ টুইট = "টুইটার মেসেজ" স্ট্যাটাস = api.update_with_media ("jpg_foto_to_Send", টুইট) sendToTwitter ()

আপনার টুইটারের জন্য আপনার টুইটার ফিড দেখুন।

এই হল টুইট

অথবা নীচে:

#রাস্পবেরিপিআই ম্যাজিকবক্স। ছবি তুলুন, সেগুলি পর্যালোচনা করুন এবং টুইটার এবং ফেসবুকে পাঠাতে বেছে নিন। রাস্পবেরি পিআই দ্বারা চালিত। @@ Raspberry_Pi#RaspberryPI#RaspberryPIProject

- ব্রুনো রিকার্ডো সান্তোস (@feiticeir0) ফেব্রুয়ারি 29, 2020

ধাপ 11: কিছু উপাদান সমন্বয়

কিছু উপাদানের সংমিশ্রণ
কিছু উপাদানের সংমিশ্রণ
কিছু উপাদানের সংমিশ্রণ
কিছু উপাদানের সংমিশ্রণ

আসুন এখন বিগ গম্বুজ পুশ বোতামটি একত্রিত করি, এটি টিপুন, গণনা করুন, একটি ছবি তুলুন, এটি টুইটারে পাঠাবেন কি না তা নির্ধারণ করুন।

আমরা আরেকটি ওভারলে ইমেজ যোগ করব এবং তিনটি পুশ বোতাম ব্যবহার করব। ছবিটি তোলা হলে, 3 টি বোতামের এলইডি জ্বলবে।

আমরা আরেকটি ছবি যোগ করি, যা সামাজিক নেটওয়ার্কগুলিতে পোস্ট করার জন্য আইকনগুলি দেখায়

SelectOption-p.webp

Aenviar-p.webp

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

আপনি চাইলে কোড সংযুক্ত করা হয়

এটি মূল প্রোগ্রামের আগে চূড়ান্ত পরীক্ষার কোড।

# কোডিং = utf-8 আমদানি পিকামেরা আমদানি _ থ্রেড আমদানি সাবপ্রসেস হিসাবে এসপি থেকে সময় আমদানি ঘুম RPi থেকে আমদানি করুন GPIO থেকে PIL আমদানি ইমেজ আমদানি থ্রেডিং # টুইটার আমদানি টুইপি # ফেসবুক আমদানি ফেসবুক # ছবি তোলার বোতাম takeButton = 17 # SocialNetwork Button socialNetworkButton = 23 # ছবি বাতিল করুন বাতিল করুন বাটন = 24 # ছবি নিন বাটন LED takePicButtonLed = 27 # সোশ্যাল নেটওয়ার্ক বাটনে পোস্ট করুন LED পোস্ট এসএনএলইডি = 22 # বাতিল বোতাম LED বাতিল বাটনলিড = 5 GPIO.setmode (GPIO. BCM) GPIO.setup (takeButton, GPIO. IN, GPIO । GPIO.setup (cancelButtonLed, GPIO. OUT) # Twitter settings def_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) # টুইটারে পাঠান ডিফ পাঠান 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'] #to পেজ হিসাবে পোস্ট করুন। আপনি যদি নিজের মত পোস্ট করতে চান তাহলে আপনি নিম্নলিখিত # টি এড়িয়ে যেতে পারেন। }, "access_token": ""} api = get_api_facebook (cfg) ক্যাপশন = "ছবির ক্যাপশন" albumid = "" api.put_photo (image = open ("pushTesting.jpg", "rb"), ক্যাপশন = "ছবির ক্যাপশন ") # Light only TakePicButtonLed def onlyTakePicLed (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, False) GPIO.output (cancelButtonLed, False) # Light only Cancel and SocialNetwork button defancePostLEDS (): O.output (takePicButtonLed, False) GPIO.output (postSNLed, True) GPIO.output (cancelButtonLed, True) # Blink take LED LED while count down def countTimerPicture (): GPIO.output (takePicButtonLed, True) ঘুম (0.5) GPIO.output (takePicButtonLed, False) ঘুম (0.5) GPIO.output (takePicButtonLed, True) ঘুম (0.5) GPIO.output (takePicButtonLed,মিথ্যা) ঘুম (0.5) GPIO.output (takePicButtonLed, True) ঘুম (0.5) GPIO.output (takePicButtonLed, False) # Blink postSNLed যখন সোশ্যাল নেটওয়ার্কে পোস্ট করার সময় blinkPosting (stop_event): # শুরু করার সময় (stop_event.is_set () নয়): প্রিন্ট ("অফ") GPIO.output (postSNLed, False) ঘুম (0.5) প্রিন্ট ("on") GPIO.output (postSNLed, True) ঘুম (0.5) def timer (): GPIO.output (takePicButtonLed, True) ঘুম (1) GPIO.output (postSNLed, True) ঘুম (1) GPIO.output (বাতিল বাটন লেড, সত্য) ঘুম (1) def showAllLeds (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, True) GPIO.output (cancelButtonLed, True) # লেয়ার 1 ডিফ ডিসপ্লেতে একটি প্রিভিউ প্রদর্শন করুন প্রিভিউ (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 ডিএফ ডিসপ্লে প্রিভিউ 3 (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.alpha = 150 ov.layer = 3 return ov # Function overlaySocialNetwork def overlaysn (): imgsn = Image.open ('SelectOption.png') # তৈরি করুন ওভারলে প্যাড = Image.new ('RGB', (((imgsn.size [0] + 31) // 32) * 32, ((imgsn.size [1] + 15) // 16) * 16,)) # ওভারলে প্যাড আটকে দিন। image def overlayCounter (): #load images img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # একটি ওভারলে তৈরি করুন # Img1 এর সাথে ব্যবহার করা হয়েছে কারণ সবগুলো একই সাইজের প্যাড = Image.new ('RGB', (((img1.size [0] + 31) // 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) # ওভারলে পেস্ট করুন - 3 প্যাড। ov.alpha = 200 # স্তর 3 কারণ ক্যামেরা প্রিভিউ স্তর 2 ov.layer = 3 ঘুম (1) camera.remove_overlay (ov) # ওভারলে পেস্ট করুন - 2 প্যাড।পেস্ট (img2, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img2.size) ov.alpha = 200 # স্তর 3 কারণ ক্যামেরা প্রিভিউ স্তর 2 ov.layer = 3 sleep (1) camera.remove_overlay (ov) # paste ওভারলে - 1 প্যাড। ov.layer = 3 ঘুম (1) camera.remove_overlay (ov) # প্রধান ফাংশন # পরিষ্কার স্ক্রিন যাতে বুট বার্তাগুলি উপস্থিত না থাকে # সম্ভবত এটি bash tmp = sp.call ('clear', এ করা ভাল। শেল = সত্য) ক্যামেরা = পিকামেরা।পি ক্যামেরা () ক্যামেরা। এমপেন্সেশন = 0 #ক্যামেরা। ছবি GPIO.wait_for_edge (takeButton, GPIO. FALLING) # LEDs দিয়ে গণনা করার জন্য একটি থ্রেড শুরু করুন যখন ছবিগুলি দেখানো হয় # সম্ভবত ওভারলেকাউন্টার ফাংশনে ব্যবহার করা যেতে পারে, # কারণ এতে ছবি দেখানোর জন্য টাইমারও আছে, কিন্তু নেতৃত্বাধীন প্রভাব # একই _thread.start_new_thread (countTimerPicture, ()) হবে না # ক্যামেরা পিকচার ওভারলে কাউন্টারে ছবি ওভারলে দেখান stop_preview () #display image displayPreview ('pushTesting.jpg') # Overlay oo = overlaysn () # দেখানোর জন্য LEDs দেখান বাতিল করুন অথবা সামাজিক নেটওয়ার্কগুলিতে পোস্ট করুন বাতিল করুন PostLEDS () GPIO.add_event_detect (socialNetworkButton, GPIO. FALLINGD_Devent_Devent_Devent_Devent_Go, GPIO. FALLING) while (True): if GPIO.event_detecte d (socialNetworkButton): camera.remove_overlay (oo) GPIO.output (cancelButtonLed, False) o = displayPreview3 ('Aenviar.png') #print "Social Networks Button" sendToTwitter () sendToFacebook () camera.remove_overlay (o) বিরতি হলে জিপিআইও। "প্রস্থান …") #offLeds () GPIO.cleanup ()

ধাপ 12: তারের

Image
Image
তারের
তারের
তারের
তারের

ওয়্যারিংটি কেবল রাস্পবেরি পিআই -তে বিগ ডোম পুশ বোতামগুলি সংযুক্ত করছে।

শুধু Fritzing স্কিম্যাটিক অনুসরণ করুন।

সংযোগগুলি হল:

সংযোগ RPI GPIO PIN GND Green Push ButtonGND (#3) GND Yellow Push ButtonGND (#9) GND Blue Push ButtonGND (#39) ছবি তুলুন (ব্লু পুশ বাটন "পুশ টু মেক") 17 (BCM) সোশ্যাল নেটওয়ার্কে পোস্ট করুন (গ্রিন পুশ) বাটন "পুশ করতে"

তাপ সঙ্কুচিত হয় রঙ কোডেড

  • কালো হল GND সংযোগ
  • হলুদ হল "পুশ টু মেক" সংযোগ
  • নীল হল LED সংযোগ

GPIO. BCM নম্বর বনাম GPIO. BOARD সংযোগ

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

প্রধান পার্থক্য হল কিভাবে আপনি GPIO PIN গুলি উল্লেখ করেন, যা পরিবর্তে আপনি কিভাবে সংযোগ করবেন তা চালাবে। GPIO.board ইন্টারনেটে যেকোন GPIO লেআউটে মুদ্রিত নম্বর দ্বারা পিনগুলি উল্লেখ করবে।

GPIO. BCM পিন নম্বরগুলি উল্লেখ করে কারণ ব্রডকম এসওসি তাদের দেখে। এটি রাস্পবেরি পিআই এর নতুন সংস্করণগুলির সাথে পরিবর্তিত হতে পারে।

Pinout.xyz সাইটে, বোর্ডের সংখ্যাগুলি পিনের ঠিক পাশেই থাকে এবং BCM এর মত উল্লেখ করা হয় - BCM X (যেখানে X হল সংখ্যা)

ধাপ 13: ম্যাজিকবক্স

এই ধাপে সংযুক্ত কোডটি চূড়ান্ত।

আপনি লগইন করার প্রয়োজন ছাড়াই রাস্পবেরি পিআই বুটে এটি চালাতে পারেন। এটি করার জন্য, আপনি যে কোডটি রেখেছেন সেই ডিরেক্টরিতে এই ছোট স্ক্রিপ্টটি তৈরি করুন - সেই অনুযায়ী পথ পরিবর্তন করুন

#!/বিন/ব্যাশ

cd/home/pi/magicbox পাইথন MagicBox.py

এটি এক্সিকিউটেবল করুন

chmod +x start_magicbox.sh

এখন, প্রস্থান 0 প্রবর্তনের ঠিক আগে /etc/rc.local এ কল করুন

sudo vi /etc/rc.local

/home/pi/magicbox/start_magicbox.sh &

সংরক্ষণ করুন এবং ছেড়ে দিন।

এখন, প্রতিটি রিবুট দিয়ে, পাইথন প্রোগ্রামটি কার্যকর হবে

দ্রষ্টব্য: সমস্ত চিত্র ফাইলগুলি স্ক্রিপ্টের মতো একই ডিরেক্টরিতে থাকতে হবে। তোমার থাকা দরকার:

  • 1. পিএনজি
  • 2. পিএনজি
  • 3. পিএনজি
  • Aenviar.png
  • SelectOption.png

আপনি এই সমস্ত ফাইলগুলি ম্যাজিকবক্সের গিথুব থেকে পেতে পারেন।

প্রস্তাবিত: