Агуулгын хүснэгт:

RaspberryPI гэрэл зургийн камер - MagicBox: 13 алхам (зурагтай)
RaspberryPI гэрэл зургийн камер - MagicBox: 13 алхам (зурагтай)

Видео: RaspberryPI гэрэл зургийн камер - MagicBox: 13 алхам (зурагтай)

Видео: RaspberryPI гэрэл зургийн камер - MagicBox: 13 алхам (зурагтай)
Видео: Гэрэл зураг яаж дарах вэ ? Үндсэн тохиргоо яаж хийх вэ | Ямар ч аппарат адилхан ! 2024, Арваннэгдүгээр
Anonim
Image
Image
Бүтээх
Бүтээх

Хэсэг хугацааны өмнө надад Raspberry PI -ээс гэрэл зургийн машин бүтээх гэсэн галзуу санаа төрсөн юм. Миний хотод хүмүүс очиж цахилгаан бараа, компьютер гэх мэтийг ашиглан хийж, хийж байсан зүйлээ харуулдаг жижигхэн шоу болдог байсан … Би ядуу хүний үйлдвэрлэгч Фэйр шиг байсан, гэхдээ орон нутгийн хэмжээнд.

Нэг нь гарч ирж байна, эхнэртэйгээ хамт бид энэ зүйлийг барьж байна.

Энэ яаж ажилдаг вэ ?

Та цэнхэр товчлуурыг дарахад тэр анивчиж эхэлдэг бөгөөд 3 секундын дараа зураг авдаг. Камерын нөгөө талд тоолуурыг харуулсан дэлгэц байгаа бөгөөд зураг авсны дараа зургийг урьдчилан харах боломжтой.

Та одоо үүнийг Twitter, Facebook рүү илгээх эсвэл цуцалж, дахин оролдох боломжтой. Ийм л энгийн.

Бүх зүйл Python -д програмчлагдсан бөгөөд PI хүрээ буферийг ашигладаг - Xorg байхгүй, GUI ашиглагддаггүй.

Төслийн ажиллаж буй бичлэгийг энд оруулав

Хангамж

  • Raspberry PI (би 2 -р хувилбарыг ашиглаж байна)
  • Raspberry PI камер (1 -р хувилбарыг ашиглан)
  • 3x Big Dome товчлуур
  • VGA/HDMI бүхий TFT/LCD дэлгэц
  • БСХС
  • Металл нугас, шураг гэх мэт.
  • Цахилгаан хэрэгсэл
  • Чөлөөт цаг, маш их хөгжилтэй

Алхам 1: Бүтээх

Бүтээх
Бүтээх
Бүтээх
Бүтээх

Үүнийг барих нь хөгжилтэй байсан. Маш их хайчлах, будах, өрөмдөх.

Би камерын үндсэн бүтцийг бий болгохын тулд БСХС -ийн хавтанг ашигласан. Тэд хөнгөн бөгөөд ажиллахад хялбар байдаг. Түүнчлэн, энэ бол орон нутгийн Fablab компанийн Лазер машин огтлох боломжтой нэг төрлийн мод байв.

Гидравлик нугас ашиглан дэлгэцийг өргөхөд туслахын тулд дотор талын утас руу нэвтрэх боломжтой.

Алхам 2: Камер

Камер
Камер
Камер
Камер
Камер
Камер

Камер

Камер нь дараах хэмжээтэй хэмжээтэй хайрцаг юм: 60см х 40см х 30см Таных жижиг, том байж болно, энэ нь танд хамаарна. Ашиглах гэж буй дэлгэцээ байрлуулахад л хангалттай. БСХС -ийн хавтангуудыг орон нутгийн Fablab дээр лазераар хайчилж авав. Ар талд 3 нүх хэрэгтэй - хоёр том бөмбөгөр товчлуур, нэг нь дэлгэцийн хувьд. Урд талд нь Raspberry PI камерын хувьд 2 том нүх, нэг том бөмбөгөр товчлуур, нөгөө нь жижиг хэмжээтэй. Надад тодорхой хэмжүүр байхгүй - камерыг төсөөлөөд үүнийг ашигла.

Алхам 3: Хяналт

Хяналт
Хяналт
Хяналт
Хяналт
Хяналт
Хяналт

Хяналт

Хяналтын дэмжлэгийг жижиг модон хэсгүүдийг нэмж, хэмжээг нь тохируулан хийсэн.

Үүнийг хуванцар орон сууцнаас хуулж, боолтоор бэхэлсэн байв. Үүнийг өргөхөд туслахын тулд хоёр гидравлик нугас (ашигласан) ашигласан.

Алхам 4: Чимэглэх

Чимэглэх
Чимэглэх
Чимэглэх
Чимэглэх
Чимэглэх
Чимэглэх
Чимэглэх
Чимэглэх

Би Fuji X-T30 загварынхаа хэв маягт их дуртай болохоор бид очиж ижил төстэй зүйл хийсэн.

Нэгдүгээрт, бид үүнийг хөөсөөр хучиж, дараа нь шүршиж хараар будсан. Будгийн дараа мөнгөн хэсгүүдэд хөнгөн цагаан тугалган цаас нэмж боож өгнө

Линзийг дуурайхын тулд бид Raspberry PI камерын модулийг суулгах жижиг нүх хийсэн бол дугуй хэлбэртэй Tupperware -ийг ашигласан.

Алхам 5: Програмчлал

Камер програмчлах нь хэцүү байсан ч үнэхээр хөгжилтэй байсан.

GUI байхгүй - энэ нь CLI дээр ажилладаг бөгөөд Python 3 хувилбар дээр ажилладаг.

Би эхлээд товчлууруудыг туршиж, програмчилж эхэлсэн бол дараагийнх нь өмнө нь өгсөн хэрэгсэл, Python API ашиглан зураг авах явдал байв. Дараа нь би камерын гаралт дээрх зургуудыг давхар тоолох (тоолох), дараа нь Twitter, Facebook -тэй харилцах ажлыг эхлүүлэв.

Энэ бүхэнд эвтэйхэн байсны дараа би эндүүрэл шиг бүх эд ангиудыг цуглууллаа. Энд бид ижил процессоор явж байна. Аажмаар, багаас эхэлж, хурдан, том руу яв.

Эхлээд Raspberry PI -ийг тохируулж эхэлье

Алхам 6: Raspberry PI бэлтгэх

Raspberry PI бэлтгэх
Raspberry PI бэлтгэх
Raspberry PI бэлтгэх
Raspberry PI бэлтгэх
Raspberry PI бэлтгэх
Raspberry PI бэлтгэх

Би Raspberry PI дээр Raspbian -ийг хэрхэн суулгах талаар тайлбарлахгүй - Raspberry PI албан ёсны вэбсайт дээр ч гэсэн маш олон заавар байдаг.

Та үүнд SSH хандалт хийх эсвэл монитор руу залгаж, гар, хулгана залгах хэрэгтэй.

ТАЙЛБАР: Бөөрөлзгөнө PI камерыг эхлүүлэхдээ түүнийг дэлгэцэнд залгах хэрэгтэй. Тэнд хүртэл бүх алхмуудыг SSH ашиглан хийж болно.

Raspberry PI -ийг ачаалсны дараа бид Raspberry PI камерыг идэвхжүүлэх хэрэгтэй. Үүний тулд raspi-config хэрэгслийг ашиглацгаая.

sudo raspi-config

  1. 5 -р сонголтыг сонгоно уу - Интерфейсийн сонголтууд
  2. P1 - Raspberry PI камертай холболтыг идэвхжүүлэх/идэвхгүй болгохыг сонгоно уу
  3. Тийм гэж хэлэх
  4. OK -ийн хувьд
  5. Finish -ийг сонгоно уу
  6. Одоо дахин ачаалахын тулд Тийм гэж сонгоно уу

Дахин ачаалсны дараа бид үргэлжлүүлж болно

Алхам 7: Програм хангамж

Python -ийн зарим номын санг суулгах шаардлагатай байна. Үүнийг Raspbian -ийн хамгийн сүүлийн хувилбар болох Buster -д зориулж шинэчилсэн болно

Нэгдүгээрт, Python 3 -ийг анхдагчаар тохируулцгаая. SYSTEM WIDE -ийг хэрхэн тохируулах талаар энэ линкээр орж үзнэ үү

Номын сан:

  • python-pil.imagetk нь зургийг удирдах
  • python-rpi.gpio ашиглан GPIO PINS руу нэвтэрнэ үү
  • бөөрөлзгөнө PI камер руу нэвтрэхийн тулд python-picamera
  • Твиттерт зургаа хуваалцахын тулд жиргээч
  • facebook-sdk фэйсбүүк хуудсанд хуваалцах

sudo apt-get install python3-pil.imagetk python3-rpi.gpio python3-picamera python3-tweepy python3-pip

Facebook-sdk-ийг суулгахын тулд Python pip ашиглана уу

sudo pip3 facebook-sdk суулгана уу

Алхам 8: Програмчлал - Камерыг урьдчилан үзэх

Image
Image
Програмчлал - Камерыг урьдчилан үзэх
Програмчлал - Камерыг урьдчилан үзэх
Програмчлал - Камерыг урьдчилан үзэх
Програмчлал - Камерыг урьдчилан үзэх

Энэ төсөлд миний тавьсан нэг шаардлага бол энэ програмыг CLI горимд ажиллуулах явдал байсан. Тиймээс бид камерын дүрсийг консол дээр харуулах хэрэгтэй. Үүний тулд Python Picamera програмыг ашиглацгаая. Үүний дараа pil.imagetk ашиглан камерын урьдчилсан үзлэгийн дээр давхцлыг харуулъя

Манай жижиг програм (бид төгсгөлд нь нэг том болтол жижиг програм боловсруулах болно) камерын урьдчилж харах болно.

#!/usr/bin/env python

цаг импортлох пикамерыг импортлох цаг унтах камер = пикамера) (KeyboardInterrupt, SystemExit) -ээс бусад: хэвлэх ("Exiting…") camera.stop_preview ()

Үүнийг туршиж үзэхийн тулд зүгээр л хэрэгжүүлээрэй

python камерPreview.py

Дээд талд дүрс бүхий камерыг урьдчилан харах

Би зураг авахаасаа өмнө тоолох тоолуурыг харуулахыг хүссэн тул камерын урьдчилж харах давхцаж буй зургууд хэрэгтэй байсан.

Дараах код нь камерыг урьдчилан үзэхэд 1-p.webp

PIC импортоос зураг авах ') # create pad = Image.new (' RGB ', (((зурагны хэмжээ [0] + 31) // 32) * 32, ((зурагны хэмжээ [1] + 15) // 16) * 16,)) pad.paste (img, (0, 0)) o = camera.add_overlay (pad.tobytes (), size = img.size) o.alpha = 128 o.layer = 3 байхад True: унтах (1)

Оролдоод үз:

python imageOverlay.py

Давхардсан зургуудтай одоо тоолж үзье. Та 1-p.webp

Үүний дараа дараах кодыг ашиглана уу.

пикамера импортлох

PIL импортоос Зураг импортлох цагаас эхлэн picamera. PiCamera () камераар унтдаг: camera.resolution = (1280, 1024) camera.framerate = 24 camera.start_preview () # load image img1 = Image.open ('3.png')) 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 (), size = img1.size) o.alpha = 128 o.layer = 3 унтах (2) #өмнөх давхарласан камерыг салгах. over_overlay (o) дэвсгэр. tobytes (), size = img2.size) o.alpha = 128 o.layer = 3 унтах (2) # өмнөх давхарласан камерыг устгах. over_overlay (o) pad.paste (img3, (0, 0)) o = камер. add_overlay (pad.tobytes (), size = img3. size) o.alpha = 128 o.layer = 3 унтах (2)

Одоо үүнийг ажиллуулна уу:

python imageOverlayCounter.py

Мөн тооллогыг үзнэ үү

Хөөх - Маш их код, зураг аваагүй … Бүгдийг нэг дор нэгтгэн шийдье - камер, тоолуур, зураг тоолох

PIL импортлох зураг-p.webp

Оролдоод үз:

python зурагWithTimer.py

Энд бидэнд Yoda байна

Алхам 9: Програмчлал - Big Dome товчлуур

Програмчлал - Big Dome товчлуур
Програмчлал - Big Dome товчлуур
Програмчлал - Big Dome товчлуур
Програмчлал - Big Dome товчлуур

Том бөмбөгөр товчлуур нь том дугуй товчлуур бөгөөд 100 мм орчим диаметртэй, жижиг LED. Энэ нь 12V -т ажилладаг гэж хэлдэг боловч Raspberry 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. гаралт (ledButton, True) # GPIO.wait_for_edge (takeButton, GPIO. FALLING) функцийг хаах ("Товчлуур дарагдсан") GPIO.output (ledButton, False) GPIO.cleanup ()

Кодын зарим тайлбар GPIOS -аас утгыг олж авах хэлбэрүүдийн нэг нь тасалдал (бусад нь санал асуулга) юм.

Ирмэг нь HIGH -аас LOW (унах ирмэг) эсвэл LOW -ээс HIGH (дээшлэх зах) руу шилжих нэр юм. ПИН ямар нэгэн зүйлд холбогдоогүй тохиолдолд ямар ч уншилтыг тодорхойлох боломжгүй болно. Шийдвэр гаргах арга бол энэ PIN дээр дээш/доош татах эсэргүүцэлтэй байх явдал юм. Raspberry PI програм хангамж ашиглан дээш/доош татах эсэргүүцлийг тохируулах боломжийг олгодог.

Шугам

GPIO. тохиргоо (takeButton, GPIO. IN, GPIO. PUD_UP)

Үүнийг хийхийн тулд тэр PIN кодыг тохируулдаг - дээш татна уу

Яагаад дээш татах вэ? Том бөмбөгөр түлхэх товчлуур нь 2 ПИН кодтой - эвдэх эсвэл түлхэх (Arduino/Raspberry PI иж бүрдэл дагалддаг жижиг товчлууруудын нэгэн адил). Би үүнийг товчлуурын "түлхэх" PIN руу залгасан. Дарагдсан үед хэлхээ хаагдаж, цахилгаан дамждаг (ихэвчлэн нээлттэй).

Шугам

GPIO.wait_for_edge (takeButton, GPIO. FALLING)

ПИН унаж байгааг илрүүлэх хүртэл хүлээх болно (скриптийн гүйцэтгэлийг үр дүнтэй түр зогсоох) - товчлуурыг дарах нь цахилгааны урсгалыг бууруулж, ПИН 3.3v -аас 0v хүртэл байх болно.

LED PIN нь товчлуур дээрх LED -ийг асаахад зориулагдсан болно

Arduino Tutorials -ээс түлхэх унтраалга, Википедиа түлхэх, түлхэх, GPIO тасалдах тухай дэлгэрэнгүй мэдээлэл.

Одоо товчлуурыг камертай хослуулцгаая - Зөвхөн товчлуур дарагдсан үед л зураг аваарай

PIL импортлох GPIO -аас RPi -ээс импортлох унтраах хугацаанаас зураг авах # ТАЙЛБАР: Энэ бол үндсэн програмын цуцлах товчлуур байх болно.setmode (GPIO. BCM) GPIO.setup (takeButton, GPIO. IN, GPIO. PUD_UP) GPIO.setup (ledCancel, GPIO. OUT) def onLeds (): GPIO.output (ledCancel, True) унтах (1) def offLeds (): GPIO.output (ledCancel, False) # 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 дэвсгэр.paste (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img1.size) ov.alpha 200 img2, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img2.size) ov.alpha = 200 # давхарга нь 3 байна, учир нь камерын урьдчилсан харах 2 -р давхарга дээр байна ov.layer = 3 унтах (1) камер.) # давхцал наах - 1 дэвсгэр.paste (img3, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img3.size) ov.alpha = 200 # давхарга нь 3 байна, учир нь камерыг урьдчилан үзэх боломжтой. 2 давхарга дээр ov.layer = 3 унтах (1) camera.remove_overlay (ov) камер = пикамера. 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: Твиттерт нийтлэх

Твиттерт нийтлэх
Твиттерт нийтлэх
Твиттерт нийтлэх
Твиттерт нийтлэх
Твиттерт нийтлэх
Твиттерт нийтлэх

Одоо бид Python -ийг ашиглаж, жиргээгээ жиргэх болно!:) Нийтлэхийн тулд танд зураг хэрэгтэй болно - ухаалгаар сонгоорой.

Нэгдүгээрт, бид twitter API -ийг ашиглах ёстой бөгөөд үүний тулд бид APP үүсгэх хэрэгтэй. Https://apps.twitter.com хаягаар орж шинэ програм үүсгээрэй.

Та хөгжүүлэгчийн данс авах хүсэлт гаргах шаардлагатай болно - зарим асуултыг бөглөж, имэйл хаягаа баталгаажуулна уу. Үүний дараа та шинэ APP үүсгэх боломжтой болно.

APP -ийг үүсгэсний дараа Түлхүүр ба Токенс руу очиж хандалтын жетон ба нэвтрэх тэмдгийн нууцыг үүсгэнэ үү. Ганцхан удаа түлхүүрүүдийг агуулсан цонх гарч ирнэ - Түүнийг нь хуулж, дараа нь хадгална.

Дараах кодыг ашиглан зургаа өөрийн твиттер дансанд илгээнэ үү. Бөглөхөө бүү мартаарай:

  • Хэрэглэгчийн_түлхүүр
  • Хэрэглэгчийн нууц
  • access_token
  • хандах_токен_нууц

twitter мессеж гэдэг нь твиттертээ илгээх текст юм.

jpg_foto_to_send бол жиргээнд хавсаргах зураг юм. Python скрипттэй ижил лавлахад хэдэн зураг оруулаад кодын нэрийг өөрчилнө үү.

tweepy # 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'] tweepy. API (auth) # Твиттерт илгээх def sendToTwitter (): cfg = {"Consumer_key": "", "Consumer_secret": "", "access_token": "", "access_token_secret": ""} api = get_api (cfg) # Status Message tweet = "Twitter message" status = api.update_with_media ("jpg_foto_to_Send", жиргэх) sendToTwitter ()

Твиттер хуудсаа өөрийн жиргээнээс шалгаарай.

Энд жиргээ байна

Эсвэл доорх:

#RaspberryPI MagicBox. Зураг авч, хянаж үзээд твиттер, фэйсбүүк рүү илгээхийг сонгоно уу. Raspberry PI -ээр ажилладаг. @@ Raspberry_Pi#RaspberryPI#RaspberryPIProjectpic.twitter.com/cCL33Zjb8p

- Бруно Рикардо Сантос (@feiticeir0) 2020 оны 2 -р сарын 29

Алхам 11: Зарим элементүүдийг нэгтгэх

Зарим элементүүдийг нэгтгэх
Зарим элементүүдийг нэгтгэх
Зарим элементүүдийг нэгтгэх
Зарим элементүүдийг нэгтгэх

Big Dome Push товчлуурыг дарж, тоолж, зураг авч, твиттер рүү илгээх эсэхээ шийдье.

Бид өөр давхардсан зураг нэмж, гурван товчлуурыг ашиглах болно. Зураг авах үед бүх 3 товчлуурын LED гэрэл асах болно.

Бид нийгмийн сүлжээнд байршуулах дүрсийг харуулсан өөр нэг зургийг нэмж оруулав

SelectOption-p.webp

Aenviar-p.webp

Видео бичлэг дээр цэнхэр товчлуурыг (камерын урд талд) харуулаагүй боловч LED асаалттай байгаа бөгөөд түүнийг дармагц анивчиж эхэлнэ.

Хэрэв та хүсвэл кодыг хавсаргасан болно

Энэ бол үндсэн програмын өмнөх туршилтын код юм.

# кодлох = utf-8 импортын пикамер импорт _PIL импортоос RPi импортлох GPIO-ээс импортлох цаг хугацааны импортын импортын дэд процесс Зургийн импорт урсгал # Цуцлах Зураг цуцлахButton = 24 # Зураг авах товчлуур LED авахPicButtonLed = 27 # Нийгмийн сүлжээнд оруулах товч LED постSNLed = 22 # Цуцлах товчлуур LED цуцлахButtonLed = 5 GPIO.setmode (GPIO. BCM) GPIO.setup (takeButton, GPIO. IN, GPIO). PUD_UP) GPIO.setup (socialNetworkButton, GPIO. IN, GPIO. PUD_UP) GPIO.setup (цуцлахButton, GPIO. IN, GPIO. PUD_UP)) GPIO.setup (bekorButtonLed, GPIO. OUT) # Твиттер тохиргоо 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) # twitter рүү илгээнэ үү def sendToTwitter (): cfg = {"con sumer_key ":" "," Consumer_secret ":" "," access_token ":" "," access_token_secret ":" "} api = get_api (cfg) # Status Message tweet =" MagicBox зааварчилгааны тест. #MagicBox #RaspberryPI #Raspberry #Instructables "status = api.update_with_media (" pushTesting.jpg ", tweet) #Facebook AOth def get_api_facebook (cfg): graph = facebook. GraphAPI (cfg ['access_token']) #авах хуудас болгон нийтлэх. Хэрэв та өөрийнхөөрөө нийтлэхийг хүсвэл дараах зүйлсийг # алгасаж болно. resp = graph.get_object ('me/accounts') page_access_token = Resp ['өгөгдөл'] дэх хуудсанд байхгүй байна: if page ['id'] == cfg ['page_id']: page_access_token = page ['access_token'] graph = facebook. GraphAPI (page_access_token) буцах график # facebook рүү илгээх def sendToFacebook (): # Хандалтын үнэ цэнэ cfg = {"page_id": "", "access_token": ""} api = get_api_facebook (cfg) caption = "Зургийн тайлбар" albumid = "" api.put_photo (image = open ("pushTesting.jpg", "rb"), caption = "Зургийн тайлбар ") # Зөвхөн TakePicButtonLed гэрэл зөвхөн DefTakePicLed (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, False) GPIO.output (bekorButtonLed, False) # Зөвхөн гэрлийг цуцлах, SocialNetwork товчлуурыг цуцлах POSTLEDS (): GPI Гарах.output (takePicButtonLed, False) унтах (0.5) GPIO.output (takePicButtonLed, True) унтах (0.5) GPIO.output (takePicButtonLed,Худал) унтах (0.5) GPIO.output (takePicButtonLed, True)): print ("off") GPIO.output (postSNLed, False) sleep (0.5) print ("on") GPIO.output (postSNLed, True) sleep (0.5) def timer (): GPIO.output (takePicButtonLed, True)) унтах (1) GPIO.output (postSNLed, True) унтах (1) GPIO.output (цуцлахButtonLed, True) унтах (1) def showAllLeds (): GPIO.output (takePicButtonLed, Үнэн) GPIO. гаралт (postSNLed, Үнэн) GPIO.output (цуцлахButtonLed, True) # 1 -р давхарга дээр урьдчилан харах дэлгэцийг харуулах Урьдчилан харах (imgName): # PIL зургийн шоу бол новш # учраас бид камераас авсан давхаргыг ашиглан # урьдчилан харах img = Image.open (imgName)) дүүргэлт = Image.new ('RGB', (((зурагны хэмжээ [0] + 31) // 32) * 32, ((зурагны хэмжээ [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): # PIL зургийн шоу бол новш # тул бид камераас авсан давхаргыг ашиглан # урьдчилан харах img = Image.open (imgName) padding = Image.new ('RGB', (((img.size [0] + 31) // 32) * 32, ((зурагны хэмжээ [1] + 15) // 16) * 16,)) дүүргэгч.паст (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') # Create Давхардсан дэвсгэр = Image.new ('RGB', (((imgsn.size [0] + 31) // 32) * 32, ((imgsn.size [1] + 15) // 16) * 16,)) # Давхардсан дэвсгэрийг буулгах image def overlayCounter (): # images img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # Overlay үүсгэх # Img1 -т ашигладаг, учир нь бүгд ижил хэмжээтэй дэвсгэр = Image.new ('RGB', (((img1.size [0] + 31) // 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) # давхаргыг буулгах - 3 pad.paste (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img1.size) ov.alpha = 200 # давхарга нь 3 байна, учир нь камерын урьдчилж үзэх нь 2 -р давхарга дээр байна.өргөн давхарга = 3 унтах (1) камер.хөргөх_хэвлэх (ov) # давхаргыг буулгах - 2 дэвсгэр.paste (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) # оо overlay - 1 pad.paste (img3, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img3.size) ov.alpha = 200 # layer нь 3 байна, учир нь камерын урьдчилж харах 2 -р давхаргад байна ov.layer = 3 унтах (1) camera.remove_overlay (ov) # Үндсэн функц # Дэлгэцийг цэвэрлэх, ингэснээр ачаалах зурвас байхгүй болно # магадгүй bash tmp = sp.call ('тодорхой', бүрхүүл = Үнэн) камер = пикамера. PiCamera () камер.хэмжээ = (1280, 1024) камер. хүрээ = 24 камер. тод байдал = 55 камер. хурц тод байдал = 0 камер mpensation = 0 #camera.exposure_mode = 'auto' #camera.meter_mode = 'дундаж' #Энд туршиж үзээрэй: while (Үнэн): camera.start_preview () #Зөвхөн LED зураг харуулах Зөвхөн TakePicLed () #Товчлуур авахыг хүлээнэ үү. Зураг GPIO.wit_for_edge (takeButton, GPIO. FALLING) # Зургийг үзүүлж байх үед LED -ээр тоолох утас эхлүүлээрэй # ижил биш байх болно _thread.start_new_thread (countingTimerPicture, ()) # Камерын зургийн давхцалд байгаа зургуудыг харуулах Counter () # AllAlLeds () camera.capture ('pushTesting.jpg') камерыг авахдаа бүх LED -ийг харуулах. stop_preview () #display image displayPreview ('pushTesting.jpg') # Давхаргыг харуулах oo = overlaysn () # Цуцлах эсвэл нийгмийн сүлжээнд нийтлэхийн тулд LED харуулах, GPIO. FALLING) while (True): if GPIO.event_detecte d (socialNetworkButton): camera.remove_overlay (oo) GPIO.output (cellButtonLed, False) o = displayPreview3 ('Aenviar.png') #print "Social Network Button" sendToTwitter () sendToFacebook () camera.remove_overlay (o) break GPIO.event_detected (cellButton): #print "Canceled" camera.remove_overlay (oo) break # reset GPIOS GPIO.remove_event_detect (socialNetworkButton) GPIO.remove_event_detect (bekorButton) GPIO. "Гарсан …") #offLeds () GPIO.cleanup ()

Алхам 12: Цахилгааны утас

Image
Image
Цахилгаан утас
Цахилгаан утас
Цахилгаан утас
Цахилгаан утас

Утас нь зүгээр л Big Dome Push товчлууруудыг Raspberry PI руу холбож байна.

Зүгээр л Fritzing схемийг дагаж мөрдөөрэй.

Холболтууд нь:

Холболт RPI GPIO PIN GND Ногоон товчлуур GND (#3) GND Шар түлхэх товчGND (#9) GND цэнхэр товчлуурGND (#39) Зураг авах (Цэнхэр товчлуур "дарах") 17 (BCM) Нийгмийн сүлжээнд оруулах (Ногоон түлхэх) "Push to make" товч) 23 (BCM) Цуцлах (Шар товчлуур "Push to make") 24 (BCM) Цэнхэр товчлуур LED27 (BCM) Ногоон түлхэх товч LED22 (BCM) Шар түлхэх товч LED5 (BCM)

Дулаан багасах нь мөн өнгөөр кодлогдсон байдаг

  • Хар бол GND холболт юм
  • Шар бол холболтыг "хийх" түлхэц юм
  • Цэнхэр бол LED холболт юм

GPIO. BCM дугаарууд ба GPIO. BOARD холболтууд

Миний холболтууд BCM байдаг тул одоо энэ тухай болон BCM ба BOARD -ийн ялгаа юу вэ гэдгийг ярих сайхан үе гэж бодож байна.

Гол ялгаа нь та GPIO PIN -ийг хэрхэн яаж ашиглах вэ гэдэг нь эргээд таны холболтыг хэрхэн хийх болно. GPIO.board нь ПИН кодыг интернет дээрх ямар ч GPIO байршилд хэвлэсэн тоогоор зааж өгөх болно.

GPIO. BCM нь Broadcom SOC -ийн үзэж байгаагаар PIN дугаарыг хэлдэг. Энэ нь Raspberry PI -ийн шинэ хувилбаруудын дагуу өөрчлөгдөж магадгүй юм.

Pinout.xyz сайт дээр самбарын дугаарыг голын хажууд байрлуулсан бөгөөд BCM -ийг ингэж нэрлэдэг - BCM X (энд X нь тоо юм)

Алхам 13: MagicBox

Энэ алхамд хавсаргасан код нь эцсийнх болно.

Та үүнийг бөөрөлзгөнө PI ачаалах үед нэвтрэх шаардлагагүй ч ажиллуулж болно. Үүнийг хийхийн тулд кодыг байрлуулсан лавлах санд энэ жижиг скриптийг үүсгээрэй

#!/bin/bash

cd/home/pi/magicbox python MagicBox.py

Үүнийг гүйцэтгэх боломжтой болгох

chmod +x start_magicbox.sh

Үүнийг 0 индукцийн гарцын өмнөхөн /etc/rc.local руу залгаарай

sudo vi /etc/rc.local

/home/pi/magicbox/start_magicbox.sh &

хадгалж, гарах.

Одоо дахин ачаалах бүрт Python програмыг ажиллуулах болно

ТАЙЛБАР: Бүх зургийн файлууд скрипттэй ижил лавлах санд байх ёстой. Та байх ёстой:

  • 1. png
  • 2. png
  • 3. png
  • Aenviar.png
  • SelectOption.png

Та эдгээр бүх файлыг MagicBox -ийн github дээрээс авах боломжтой.

Зөвлөмж болгож буй: