Мазмуну:
- Жабдуулар
- 1 -кадам: куруу
- 2 -кадам: Камера
- 3 -кадам: Монитор
- 4 -кадам: Декорация
- 5 -кадам: Программалоо
- 6 -кадам: Raspberry PIди даярдоо
- 7 -кадам: Программалык камсыздоо
- 8 -кадам: Программалоо - Камераны алдын ала көрүү
- 9 -кадам: Программалоо - Big Dome Push Button
- 10 -кадам: Twitterге пост жазыңыз
- 11 -кадам: Кээ бир элементтерди бириктирүү
- 12 -кадам: Зымдарды өткөрүү
- 13 -кадам: MagicBox
Video: RaspberryPI фотокамерасы - MagicBox: 13 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:39
Бир аз мурун, менде Raspberry PIден фотографиялык машина жасоо жөнүндө ушул жинди ой пайда болду. Менин шаарымда кичинекей шоу болду, анда элдер барып, эмнени жасашканын же электрониканы, компьютерди ж.б. колдонуп көрсөтүштү … Мен кедейдин Жаратуучу Фэйрине окшош болчумун, бирок жергиликтүү масштабда.
Бирөө келе жаткан, жана аялым менен бирге бул нерсени курабыз.
Бул кантип иштейт ?
Сиз көк баскычты басасыз - ал ирмеле баштайт - жана 3 секунддан кийин сүрөт тартылат. Камеранын башка жагында артка саноону көрсөтүүчү монитор бар жана сүрөт тартылгандан кийин, сүрөттүн алдын ала көрүнүшү.
Эми аны Twitter жана Facebookка жөнөтүүнү же жокко чыгарып, кайра аракет кылууну тандай аласыз. Бул жөнөкөй.
Бардыгы Pythonдо программаланган, PI фреймбуферди колдонуу менен - Xorg жок, GUI колдонулбайт.
Бул жерде долбоордун иштеп жаткан видеосу
Жабдуулар
- Raspberry PI (мен 2 версиясын колдонуп жатам)
- Raspberry PI Камерасы (1 версиясын колдонуу менен)
- 3x Big Dome баскычтары
- VGA/HDMI менен TFT/LCD монитор
- MDF
- Металл топсолор, бурамалар ж.
- Power Tools
- Бош убакыт жана көп кызыктуу
1 -кадам: куруу
Аны куруу кызыктуу болду. Көп кесүү, сырдоо жана бургулоо.
Мен камеранын негизги структурасын куруу үчүн MDF панелдерди колдондум. Алар жеңил жана алар менен иштөө оңой. Ошондой эле, бул жергиликтүү Фаблабдагы Лазердик машина жыгачтын бир түрү болгон.
Монитордун көтөрүлүшүнө жардам берүү үчүн ичиндеги электр өткөргүчтөрүнө гидравликалык топсолорду колдонуу менен монитор тарап тарабынан жасалган.
2 -кадам: Камера
Камера
Камера - бул төмөнкүдөй өлчөмдөгү кутуча: 60см x 40см х 30см Сиздики кичине, чоңураак болушу мүмкүн, бул сизге байланыштуу. Жөн гана сиз колдоно турган мониторго ылайыкташыңыз керек. MDF панелдери жергиликтүү Fablabте лазер менен кесилген. Арткы жагында 3 тешик керек - эки чоң купол баскычтары жана бири монитор үчүн. Алдыңкы жагында, 2 тешик - бири чоң купол баскычына, экинчиси - кичине - Raspberry PI камерасы үчүн. Менде конкреттүү өлчөөлөр жок - жөн гана камераны элестетип, аны колдонуңуз.
3 -кадам: Монитор
Monitor
Монитордун колдоосу анын өлчөмдөрүндө колдоо үчүн кичинекей жыгачтан жасалган.
Бул пластикалык корпустун тилкеси жана бурамалар менен бекитилген. Аны көтөрүүгө жардам берүү үчүн эки гидравликалык илгич (колдонулган) колдонулган.
4 -кадам: Декорация
Мага Fuji X-T30дун стили абдан жаккандыктан, биз дагы барып, окшош нерсени кылдык.
Биринчиден, аны көбүк менен жаап, андан кийин аны кара түскө боёдук. Буядан кийин күмүш бөлүктөргө алюминий фольга кошуп, аны ороп койдук
Линзаны окшоштуруу үчүн, биз Raspberry PI камера модулуна отуруу үчүн кичинекей тешик кылганда, тегерек Tupperware колдондук.
5 -кадам: Программалоо
Камераны программалоо кыйынга турду, бирок бул абдан кызыктуу болду.
GUI жок - бул CLIде иштейт жана Python 3 версиясында иштейт.
Мен биринчи жолу баскычтарды тестирлөө жана программалоо менен баштадым, кийинкиси буга чейин берилген инструменттерди жана Python APIнин жардамы менен сүрөт тартуу. Мен андан кийин камера өндүрүшүндөгү сүрөттөрдү жабууга өттүм (артка саноо үчүн) жана кийинкиде Twitter жана Facebook менен иштешүү.
Мунун баарына ыңгайлуу болгондон кийин, табышмак сыяктуу, мен бардык бөлүктөрдү чогулттум. Бул жерде биз ошол эле процесс менен бара жатабыз. Жай жана кичинеден баштап, тез жана чоңго өтүңүз.
Биринчиден, Raspberry PI конфигурациясынан баштайлы
6 -кадам: Raspberry PIди даярдоо
Мен Raspberry PIге кантип Raspbian орнотууну түшүндүрбөйм - ал жерде көптөгөн үйрөткүчтөр бар, ал тургай Raspberry PI расмий сайтында.
Сиз жөн гана ага SSH мүмкүнчүлүгүнө ээ болушуңуз керек, же аны мониторго туташтырып, клавиатура менен чычканды туташтырыңыз.
ЭСКЕРТҮҮ: Raspberry PI камерасы менен баштаганда, аны мониторго туташтыруу керек. Ага чейин бардык кадамдарды SSH аркылуу жасаса болот.
Сиздин Raspberry PI жүктөлгөндөн кийин, биз Raspberry PI камерасын иштетишибиз керек. Ал үчүн raspi-config куралын колдонолу.
sudo raspi-config
- 5 -вариантты тандаңыз - Интерфейс опциялары
- P1 тандаңыз - Raspberry PI камерасына туташууну иштетүү/өчүрүү
- Ооба деп айт
- OK үчүн
- Finish тандаңыз
- Азыр кайра жүктөө үчүн Ооба тандаңыз
Кайра жүктөөдөн кийин, биз уланта алабыз
7 -кадам: Программалык камсыздоо
Орнотуу үчүн бизге Python китепканалары керек болот. Бул акыркы Raspbian версиясы үчүн жаңыртылды - Buster
Биринчиден, Python 3ту демейки катары коюуга мүмкүнчүлүк берели. SYSTEM WIDEди кантип орнотууну билүү үчүн бул шилтемени басыңыз
Китепканалар:
- python-pil.imagetk сүрөттөрдү иштетүү
- python-rpi.gpio GPIO PINS кирүү үчүн
- python-picamera Raspberry PI Камерасына кирүү үчүн
- Твиттерде сүрөттү бөлүшүү үчүн Tweepy
- facebook-sdk фейсбук баракчасына бөлүшүү үчүн
sudo apt-get python3-pil.imagetk python3-rpi.gpio python3-picamera python3-tweepy python3-pip орнотуу
Facebook-sdk орнотуу үчүн Python пипин колдонуңуз
sudo pip3 facebook-sdk орнотуңуз
8 -кадам: Программалоо - Камераны алдын ала көрүү
Мен бул долбоорго койгон талаптардын бири бул программа CLI режиминде иштөө болчу. Ошентип, биз камеранын сүрөтүн консолго көрсөтүшүбүз керек. Бул үчүн, Python Picamera колдонолу. Андан кийин, келгиле pil.imagetk камеранын алдын ала көрүү үстүнө катмарын көрсөтүү үчүн
Биздин кичинекей программа (биз аягында бир чоңго чейин кичинекей программаларды иштеп чыгабыз) камеранын алдын ала көрүнүшүн көрсөтөт.
#!/usr/bin/env python
импорттоо убактысын импорттоо пикамерасын импорттоо) (KeyboardInterrupt, SystemExit) башка: басып чыгаруу ("Exiting…") camera.stop_preview ()
Аны сынап көрүү үчүн аны аткарыңыз
python cameraPreview.py
Үстүндө сүрөттөрү бар камераны алдын ала карап көрүңүз
Мен сүрөткө тартылардан мурун артка саноону көрсөтүүнү каалагандыктан, камеранын алдын ала кароосуна дал келген сүрөттөр керек болчу.
Төмөнкү код камеранын алдын ала көрүнүшү менен 1-p.webp
PIL импорттоо PIL импорттоо Сүрөт picamera. PiCamera () менен камера катары импорттоо укугунан тартып: camera.resolution = (1920, 1080) camera.framerate = 24 camera.start_preview () # load image img = Image.open ('1-p.webp
Байкап көрүңүз:
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 sleep (2) #мурунку кабатталган камераны алып салуу.remove_overlay (o) pad.paste (img2, (0, 0)) o = camera.add_overlay (pad. tobytes (), size = img2.size) o.alpha = 128 o.layer = 3 sleep (2) # мурунку кабатталган камераны алып салуу.pove_overlay (o) pad.paste (img3, (0, 0)) o = камера. add_overlay (pad.tobytes (), size = img3.size) o.alpha = 128 o.layer = 3 sleep (2)
Эми аны аткарыңыз:
python imageOverlayCounter.py
Жана саноону көрүңүз
Wow - Бир топ код жана эч кандай сүрөт тартылган эмес … Келгиле, муну биригип чечели - камераны алдын ала карап, артка саноо жана сүрөткө тартуу
PIL импорттоо сүрөтү-p.webp
Байкап көрүңүз:
python pictureWithTimer.py
Ал эми бул жерде бизде Yoda бар
9 -кадам: Программалоо - Big Dome Push Button
Чоң куполдун баскычы чоң тегерек баскычы - диаметри 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.output (ledButton, True) # Бөгөттөө функциясы GPIO.wait_for_edge (takeButton, GPIO. FALLING) басып чыгаруу ("Баскыч басылды") GPIO.output (ledButton, False) GPIO.cleanup ()
Кээ бир коддорду түшүндүрүү GPIOSтон баалуулуктарды алуунун бир түрү - үзгүлтүккө учуроо (башка сурамжылоо) - edge Detection.
Чети - ЖОГОРУдан ТӨМӨНГӨ (түшүүчү чекке) же ТӨМӨНГӨ ЖОГОРУГА (көтөрүлүүчү четине) өтүүнүн аты. ПИН эч нерсеге туташпаганда, кандайдыр бир окуу аныкталбайт. Чечим - бул PINде өйдө/ылдый каршылыктын болушу. Raspberry PI программалык камсыздоо аркылуу өйдө/ылдый каршылыгын конфигурациялоого мүмкүндүк берет.
Сызык
GPIO.setup (takeButton, GPIO. IN, GPIO. PUD_UP)
ПИНди дал ушуну конфигурациялайт - өйдө тарт
Эмнеге өйдө тартат? Ооба, чоң куполдун баскычында 2 PIN бар - сындырууга же жасоого түртүү (көбүнчө Arduino/Raspberry PI комплекттери менен келген кичинекей баскычтар сыяктуу). Мен аны баскычтын "жасоого түрткү берүүчү" PINге туташтырдым. Басканда, схема жабылып, электр өтөт (кадимкидей ачык).
Сызык
GPIO.wait_for_edge (takeButton, GPIO. FALLING)
ПИНдин түшүп кеткенин аныктаганга чейин күтөт (сценарийдин аткарылышын эффективдүү токтотот) - баскычты кое берүү электр энергиясынын агымын кыскартат жана PIN 3.3vдан 0vге чейин барат
LED PIN - бул баскычтагы LEDди күйгүзүү
Ардуино үйрөткүчтөрүнүн баскычтары жөнүндө көбүрөөк маалымат, Уикипедияны бузуу же басуу боюнча жана GPIO үзгүлтүктөрү
Эми, баскычты камера менен бириктирели - Баскыч басылганда гана сүрөткө тартыңыз
PIL импорттоо GPOдон GPO импорттоо укугунан импорттоо сүрөтү # ЭСКЕРТҮҮ: Бул негизги программанын жокко чыгаруу баскычы кандай болот # Мен муну видеонун ачык болушу үчүн колдонуп жатамButton = 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) # Function overlay over 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 pad.paste (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img1.size) ov.alpha = 200 # катмар 3 болот, анткени камеранын алдын ала көрүнүшү 2 -кабатта. ov.layer = 3 уктоо (1) camera.remove_overlay (ov) # үстүнкү кат - 2 pad.paste (img2, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img2.size) ov.alpha = 200 # катмар 3, анткени камеранын алдын ала көрүнүшү 2 -кабатта. катмар = 3 уйку (1) camera.remove_overlay (ov)) # катмарын кой - 1 pad.paste (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) camera = 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 -кадам: Twitterге пост жазыңыз
Эми биз Python колдонуп, твит жазабыз!:) Жарыялоо үчүн сизге сүрөт керек болот - акылдуулук менен тандаңыз.
Биринчиден, биз Twitter APIге киришибиз керек жана ал үчүн APP түзүшүбүз керек. Https://apps.twitter.com дарегине өтүп, жаңы колдонмо түзүңүз.
Сиз иштеп чыгуучунун эсебине кайрылууга туура келет - кээ бир суроолорду толтуруп, электрондук почтаңызды ырастаңыз. Андан кийин, сиз жаңы APP түзө аласыз.
Колдонмону түзгөндөн кийин, Баскычтарга жана Токендерге өтүңүз жана Кирүү Токенин жана Мүмкүнчүлүк Токенинин Сырын түзүңүз. Ачкычтар менен бир гана терезе көрсөтүлөт - БУЛАРДЫ КӨЧҮРҮП, КИЙИНКИ САКТАҢЫЗ.
Твиттер эсебиңизге сүрөт жөнөтүү үчүн төмөнкү кодду колдонуңуз. Толтурууну унутпаңыз:
- Consumer_key
- Consumer_secret
- access_token
- access_token_secret
twitter билдирүүсү - бул твитке жөнөтүлүүчү текст.
jpg_foto_to_send - бул твитке тиркеле турган сүрөт. Сураныч, Python скрипти менен бир каталогдо кандайдыр бир сүрөт бар жана коддогу атын өзгөртүңүз.
импорт tweepy # Twitter орнотуулары 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 = {"Consumer_key": "", "Consumer_secret": "", "access_token": "", "access_token_secret": ""}} api = get_api (cfg) # Status Message tweet = "Twitter билдирүүсү" status = api.update_with_media ("jpg_foto_to_Send", твит) sendToTwitter ()
Сиздин твиттер үчүн Twitter түрмөгүңүздү текшериңиз.
Мына Твит
Же төмөндө:
#RaspberryPI MagicBox. Сүрөткө тартып, аларды карап чыгып, твиттер менен фейсбукка жөнөтүүнү тандаңыз. Powered by Raspberry PI. @@ Raspberry_Pi#RaspberryPI#RaspberryPIProjectpic.twitter.com/cCL33Zjb8p
- Бруно Рикардо Сантос (@feiticeir0) 29 -февраль, 2020 -жыл
11 -кадам: Кээ бир элементтерди бириктирүү
Келгиле, эми Big Dome Push баскычын бириктирип, аны басуу, кайра эсептөө, сүрөткө тартуу, аны twitterге жөнөтүү же жөнөтпөө жөнүндө чечим кабыл алалы.
Биз дагы бир кошумча сүрөттү кошуп, үч баскычты колдонобуз. Сүрөт тартылганда, бардык 3 баскычтын диоддору күйөт.
Биз дагы бир сүрөттү кошобуз, ал социалдык тармактарга жайгаштыруу үчүн сүрөтчөлөрдү көрсөтөт
SelectOption-p.webp
Aenviar-p.webp
Видеодо көк басуу баскычы (камеранын маңдайы) көрсөтүлгөн эмес, бирок LED күйүп турат жана ал басылгандан кийин эле жаркырай баштайт.
Кааласаңыз, код тиркелет
Бул негизги программанын алдындагы акыркы тестирлөө коду.
# коддоо = utf-8 импорттук пикамеранын импорту _thread импорттук подпроцессинин убактысынан RPi импортунун GPIOсунан импорттон PIL импортунан импорттун сүрөтү # Twitterдин импорттук твити # Facebookтун импорттук фейсбуку # Сүрөткө тартуу үчүн баскыч = 17 # SocialNetwork Button socialNetworkButton = 23 # Сүрөттү жокко чыгарууButton = 24 # Сүрөт тартуу баскычы LED takePicButtonLed = 27 # Коомдук тармакка басуу LED постуSNLed = 22 # Жокко чыгаруу баскычы LED жок кылуу ButtonLed = 5 GPIO.setmode (GPIO. BCM) GPIO.setup (takeButton, GPIO. IN, GPIO GPU.support) GPIO.setup (bekorButtonLed, GPIO. OUT) # Twitter орнотуулары 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) кайтаруу графиги # Фейсбукка жөнөтүү def sendToFacebook (): # Кирүү үчүн баалуулуктар cfg = {"page_id": "", "access_token": ""} api = get_api_facebook (cfg) caption = "Сүрөттү жазуу" albumid = "" api.put_photo (image = open ("pushTesting.jpg", "rb"), caption = "Сүрөткө жазуу ") # Light гана TakePicButtonLed def ганаTakePicLed (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, False) GPIO.output (bekorButtonLed, False) # Light гана Cancel жана SocialNetwork баскычы defPostLEDS (): GPI O.output (takePicButtonLed, False) GPIO.output (postSNLed, True) GPIO.output (жок кылууButtonLed, True) # Blink blist take LED back Count 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 def blinkPosting (stop_event): # Start while (not_ stop_event.is_set ()): 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, Чын) уйку (1) def showAllLeds (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, True) GPIO.output (bekorButtonLed, True) # 1 -катмарда алдын ала көрүүнү көрсөтүү Def displayPreview (imgName): # PIL сүрөтү шоу - бул # биз камеранын үстүнөн жабууну колдонобуз # алдын ала көрүү 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): # PIL сүрөттөрүнүн көргөзмөсү - бул # биз камеранын үстүнөн жабууну колдонобуз. 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') # Түзүү Overlay pad = Image.new ('RGB', (((imgsn.size [0] + 31) // 32) * 32, ((imgsn.size [1] + 15) // 16) * 16,)) # Overlay pad.paste (imgsn, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = imgsn.size) ov.alpha = 100 ov.layer = 3 return ov # Function overlay image def overlayCounter (): # жүктөө сүрөттөрү 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 pad.paste (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img1.size) ov.alpha = 200 # катмар 3, анткени камеранын алдын ала көрүнүшү 2 -кабатта. ov.layer = 3 уйку (1) camera.remove_overlay (ov) # кабатты чаптоо - 2 pad.paste (img2, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img2.size) ov.alpha = 200 # катмар 3, анткени камеранын алдын ала көрүнүшү 2 -кабатта. катмар = 3 уйку (1) camera.remove_overlay (ov) # чаптоо каптоо - 1 pad.paste (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) # Негизги функция # Тазалоо экраны, андыктан жүктөөчү билдирүүлөр жок # балким муну bash tmp = sp.call ('clear', shell = True) camera = picamera. PiCamera () camera.resolution = (1280, 1024) camera.framerate = 24 camera.brightness = 55 camera.sharpness = 0 camera.contrast = 0 #camera.exposure_co mpensation = 0 #camera.exposure_mode = 'auto' #camera.meter_mode = 'average' #Бул жерде сынап көрүңүз: while (True): camera.start_preview () #LEDди көрсөтүү гана сүрөт тартуу үчүнTakePicLed () #Баскычтын түшүшүн күтө туруңуз. Сүрөт GPIO.wait_for_edge (takeButton, GPIO. FALLING) # Сүрөттөр көрсөтүлүп жатканда светодиоддор менен эсептөө үчүн теманы баштаңыз # Мүмкүн overlayCounter функциясында колдонулушу мүмкүн, # анткени анда сүрөттөрдү көрсөтүүгө таймерлер да бар, бирок алып келген эффекттер # бирдей болмок эмес _thread.start_new_thread (countingTimerPicture, ()) # Камерадагы сүрөттөрдүн үстүнкү катмарын көрсөтүүCounter () # ShowAllLeds () camera.capture ('pushTesting.jpg') камерасын тартып жатканда бардык LEDSти көрсөтүү. 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 (bekor кылуу) "Чыгып кетти …") #offLeds () GPIO.cleanup ()
12 -кадам: Зымдарды өткөрүү
Зымдар Big Dome Push баскычтарын Raspberry PIге туташтырып жатат.
Жөн гана Fritzing схемасын аткарыңыз.
Байланыштар төмөнкүлөр:
ConnectionRPI GPIO PIN GND Жашыл басуу баскычыGND (#3) GND Сары басуу баскычыGND (#9) GND Көк басуу баскычыGND (#39) Сүрөткө тартуу (Көк баскыч "Жасоо үчүн басуу") 17 (BCM) Коомдук тармактарга жарыялоо (Жашыл басуу) Баскыч "Жасоо үчүн басуу") 23 (BCM) Жокко чыгаруу (Yellow басуу баскычы "Push to make") 24 (BCM) Blue Push button LED27 (BCM) Green Push button LED22 (BCM) Yellow Push button LED5 (BCM)
Жылуулуктун кыскарышы да түстүү коддолгон
- Кара - GND байланыштары
- Сары түстөр "жасоого түрткү берет"
- Көк - бул LED туташуулары
GPIO. BCM номерлери vs GPIO. BOARD байланыштары
Менин байланыштарым BCM болгондуктан, азыр бул жөнүндө жана BCM менен BOARDдин айырмасы жөнүндө сүйлөшүүгө ылайыктуу убакыт деп ойлойм.
Негизги айырмачылык - бул GPIO PIN -лерине кантип кайрылууңуз, бул өз кезегинде туташууларды кантип жасооңузга түрткү болот. GPIO.board PIN -коддорду интернеттеги 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
Эми, /etc/rc.local деп чалыңыз, 0 индукциясынан мурун
sudo vi /etc/rc.local
/home/pi/magicbox/start_magicbox.sh &
сактоо жана таштоо.
Эми, ар бир кайра жүктөө менен, Python программасы аткарылат
ЭСКЕРТҮҮ: Бардык сүрөт файлдары скрипт менен бир каталогдо болушу керек. Сизде болушу керек:
- 1.png
- 2.png
- 3.png
- Aenviar.png
- SelectOption.png
Сиз бул файлдардын бардыгын MagicBoxтун github'унан ала аласыз.
Сунушталууда:
RaspberryPi Ислам тиленүүлөрү Watch & Ойготкуч: 15 кадам (сүрөттөр менен)
RaspberryPi Ислам тиленүүлөрү Watch & Alarm: Дүйнө жүзүндөгү мусулмандар күн сайын беш маал намаз окушат жана ар бир намаз күндүн белгилүү бир убагында болушу керек. планетабыз эллиптикалык ыкма менен күндүн айланасында айланып жүргөндүктөн, күндүн чыгышын жана түшүү убактысын жыл бою айырмалап турат
Howto: Rpi-imager жана сүрөттөр менен Raspberry PI 4 Headless (VNC) орнотуу: 7 кадам (Сүрөттөр менен)
Howto: Rpi-imager жана сүрөттөр менен Raspberry PI 4 Headless (VNC) орнотуу: Мен бул блогумда кызыктуу долбоорлордун топтомунда бул Rapsberry PI колдонууну пландап жатам. Аны текшерүүдөн тартынбаңыз. Мен Raspberry PIди колдонууну каалагам, бирок жаңы жерде клавиатура же чычкан жок болчу. Мен Raspberry орнотконума бир топ убакыт болду
IoT базалык платформасы RaspberryPi, WIZ850io менен: Платформа түзмөгүнүн драйвери: 5 кадам (сүрөттөр менен)
IoT базалык платформасы RaspberryPi, WIZ850io менен: Платформа түзмөгүнүн драйвери: IoT үчүн RaspberryPi платформасын билем. Жакында WIZ850io WIZnet тарабынан жарыяланган. Ошентип, Ethernet SW модификациясы менен RaspberryPi тиркемесин ишке киргиздим, анткени мен баштапкы кодду оңой башкара алам. Сиз платформа түзмөгүнүн драйверин RaspberryPi аркылуу текшере аласыз
Bluetooth LE жана RaspberryPi менен температураны көзөмөлдөө жана жаздыруу: 9 кадам (сүрөттөр менен)
Bluetooth LE жана RaspberryPi менен температураны көзөмөлдөп жана жаздырыңыз: Бул көрсөтмө Blue Lios (BLEHome) жана RaspberryPi 3B Bluetooth LE сенсорунун катасы менен көп түйүндүү температураны көзөмөлдөө тутумун кантип чогултуу жөнүндө. Bluetooth LE стандартынын өнүгүшүнө рахмат. азыр жеткиликтүү
Жөнөкөй кадамдар жана сүрөттөр менен компьютерди кантип ажыратуу керек: 13 кадам (сүрөттөр менен)
Жөнөкөй кадамдар жана сүрөттөр менен компьютерди кантип ажыратуу керек: Бул компьютерди кантип ажыратуу керектиги жөнүндө көрсөтмө. Негизги компоненттердин көбү модулдук жана оңой эле алынып салынат. Ошентсе да, бул боюнча уюштуруу маанилүү. Бул сизди бөлүктөрдү жоготпоого, ошондой эле кайра чогултууга жардам берет