Სარჩევი:
- ნაბიჯი 1: წრიული დიაგრამა
- ნაბიჯი 2: ნაწილების სია
- ნაბიჯი 3: თეორია
- ნაბიჯი 4: დიზაინის შენიშვნები
- ნაბიჯი 5: დრო ტალღის ფორმები
- ნაბიჯი 6: ჩარჩო Grabber
- ნაბიჯი 7: პროგრამული უზრუნველყოფა
- ნაბიჯი 8: ფერადი სურათის მიღება
ვიდეო: შექმენით თქვენი საკუთარი კამერა: 8 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:18
ეს ინსტრუქცია განმარტავს, თუ როგორ უნდა შექმნათ მონოქრომული კამერა Omnivision OV7670 გამოსახულების სენსორის, Arduino მიკროკონტროლის, რამდენიმე ჯუმბერის მავთულის და 3 პროგრამული უზრუნველყოფის დამუშავების გამოყენებით.
ასევე წარმოდგენილია ფერადი სურათის მიღების ექსპერიმენტული პროგრამული უზრუნველყოფა.
დააჭირეთ ღილაკს "c" 640*480 პიქსელიანი გამოსახულების გადასაღებად … დააჭირეთ ღილაკს "s" სურათის ფაილში შესანახად. თანმიმდევრული სურათები თანმიმდევრულად არის დანომრილი, თუ გსურთ შექმნათ მოკლე დროში შესული ფილმი.
კამერა არ არის სწრაფი (თითოეულ სკანირებას 6,4 წამი სჭირდება) და შესაფერისია მხოლოდ ფიქსირებული განათებისთვის გამოსაყენებლად.
ღირებულება, თქვენი Arduino- ს და კომპიუტერის გამოკლებით, ნაკლებია, ვიდრე ფინჯანი ყავა.
სურათები
კომპონენტის ნაწილები, ჯუმბერის გაყვანილობის გარეშე, ნაჩვენებია გახსნის ფოტოში.
მეორე ფოტო არის ეკრანის ანაბეჭდი, რომელშიც ნაჩვენებია Arduino კამერის პროგრამული უზრუნველყოფა და Processing 3 ჩარჩოს დამჭერი. ჩანართი გვიჩვენებს, თუ როგორ არის დაკავშირებული კამერა.
ვიდეო გვიჩვენებს კამერის მოქმედებას. როდესაც "c" გადაღების ღილაკს დააწკაპუნებთ, ხდება მოკლე ელვარება, რასაც მოჰყვება აქტივობის ადიდება სურათის სკანირებისას. სკანირების დასრულების შემდეგ სურათი ავტომატურად გამოჩნდება ჩვენების ფანჯარაში. შემდეგ სურათები გამოჩნდება დამუშავების საქაღალდეში "s" ღილაკის თითოეული დაჭერის შემდეგ. ვიდეო მთავრდება სამი ველოსიპედით სწრაფად გადაადგილებით სამი შენახული სურათის მეშვეობით.
ნაბიჯი 1: წრიული დიაგრამა
მიკროსქემის დიაგრამა, ამ კამერის ყველა ვერსიისთვის, ნაჩვენებია ფოტო 1 -ში.
ფოტო 2, 3 გვიჩვენებს, თუ როგორ არის დაკავშირებული მხტუნავები-მავთულები და კომპონენტები.
ალუმინის ფრჩხილის გარეშე სურათები მათ გვერდზე დევს.
გაფრთხილება
დაპროგრამეთ თქვენი Arduino სანამ რომელიმე მავთულის მავთულს OV7670 კამერის ჩიპზე მიამაგრებთ. ეს ხელს შეუშლის წინა პროგრამის 5 ვოლტიანი გამომავალი ქინძისთავების მიერ 3v3 ვოლტიანი OV7670 კამერის ჩიპის განადგურებას.
ნაბიჯი 2: ნაწილების სია
შემდეგი ნაწილები მოპოვებულია
- მხოლოდ 1 OV7670 300KP VGA კამერის მოდული arduino DIY KIT– ისთვის
- მხოლოდ 1 კამერის ფრჩხილი, რომელსაც აქვს თხილი და ჭანჭიკები
- 1 მხოლოდ UNO R3 arduino MEGA328P 100% ორიგინალური ATMEGA16U2 USB კაბელით
შემდეგი ნაწილები იქნა მიღებული ადგილობრივად
- 18 Arduino მამაკაცი ქალი მხტუნავი კაბელი
- მხოლოდ 3 Arduinin ქალი-ქალი jumper კაბელები
- მხოლოდ 1 მინი პურის დაფა
- მხოლოდ 4K7 ohm 1/2 ვატიანი რეზისტორები
- მხოლოდ 1 ჯართი ალუმინის სადგამი.
თქვენ ასევე დაგჭირდებათ შემდეგი მონაცემთა ფურცლები:
- https://web.mit.edu/6.111/www/f2016/tools/OV7670_20…
- https://www.haoyuelectronics.com/Attachment/OV7670%…
ნაბიჯი 3: თეორია
OV7670 კამერის ჩიპი
OV7670 კამერის ჩიპიდან ნაგულისხმევი გამომავალი შეიცავს YUV (4: 2: 2) ვიდეო სიგნალს და 3 დროის ტალღის ფორმას. სხვა გამომავალი ფორმატები შესაძლებელია შიდა რეგისტრების პროგრამირებით I2C თავსებადი ავტობუსის საშუალებით.
YUV (4: 2: 2) ვიდეო სიგნალი (ფოტო 1) არის მონოქრომული (შავი და თეთრი) პიქსელების უწყვეტი თანმიმდევრობა, რომლებიც გამოყოფილია U (ცისფერი განსხვავება) და V (წითელი ფერის სხვაობა) ფერის ინფორმაციას.
ეს გამომავალი ფორმატი ცნობილია როგორც YUV (4: 2: 2), რადგან თითოეული ჯგუფის 4 ბაიტი შეიცავს 2 მონოქრომულ ბაიტს და და 2 ფერად ბაიტს.
მონოქრომული
მონოქრომული სურათის მისაღებად ჩვენ უნდა მოვიყვანოთ მონაცემთა ყოველი მეორე ბაიტი.
Arduino– ს აქვს მხოლოდ 2K შემთხვევითი წვდომის მეხსიერება, მაგრამ თითოეული ჩარჩო შეიცავს 640*2*480 = 307, 200 მონაცემთა ბაიტს. თუ OV7670- ს არ დავამატებთ ჩარჩო-ჩამჭრელს, ყველა მონაცემი უნდა გადაეგზავნოს კომპიუტერს ხაზ-ხაზად დამუშავებისათვის.
არსებობს ორი შესაძლებლობა:
თითოეული 480 ზედიზედ ჩარჩოზე, ჩვენ შეგვიძლია გადავიღოთ ერთი ხაზი Arduino– ზე მაღალი სიჩქარით, სანამ მას კომპიუტერზე გავაგზავნით 1 Mbps– ზე. ასეთი მიდგომა დაინახავს OV7670 მუშაობას სრული სიჩქარით, მაგრამ დასჭირდება დიდი დრო (ერთ წუთზე მეტი).
მიდგომა, რაც მე მივიღე, არის PCLK– ის შენელება 8uS– მდე და თითოეული ნიმუშის გაგზავნა, როგორც ეს მოდის. ეს მიდგომა მნიშვნელოვნად უფრო სწრაფია (6.4 წამი).
ნაბიჯი 4: დიზაინის შენიშვნები
თავსებადობა
OV7670 კამერის ჩიპი არის 3v3 ვოლტიანი მოწყობილობა. მონაცემთა ფურცელი მიუთითებს, რომ 3.5 ვოლტზე მეტი ძაბვა დააზიანებს ჩიპს.
თქვენი 5 ვოლტიანი Arduino– სგან რომ არ გაანადგუროს OV7670 კამერის ჩიპი:
- გარე საათის (XCLK) სიგნალი არდუინოდან უნდა შემცირდეს უსაფრთხო დონეზე ძაბვის გამყოფის საშუალებით.
- შიდა Arduino I2C გამწევ რეზისტორებს 5 ვოლტამდე უნდა გამორთოთ და შეცვალოთ გარე გამწევი რეზისტენტებით 3v3 ვოლტამდე.
- დაპროგრამეთ თქვენი არდუინო სანამ რომელიმე მავთულხლართს მიამაგრებთ, რადგან ზოგიერთი ქინძისთავი შეიძლება მაინც იყოს დაპროგრამებული როგორც ადრეული პროექტის გამომავალი !!! (მე ეს ვისწავლე რთული გზით … საბედნიეროდ შევიძინე ორი, რადგან ისინი ასე იაფი იყო).
გარე საათი
OV7670 კამერის ჩიპი მოითხოვს გარე საათს სიხშირის დიაპაზონში 10Mhz– დან 24MHz– მდე.
ყველაზე მაღალი სიხშირე, რომლის შექმნაც შეგვიძლია 16MHz Arduino– დან არის 8 MHz, მაგრამ ეს, როგორც ჩანს, მუშაობს.
სერიული ბმული
სულ მცირე 10 uS (მიკრო წამი) სჭირდება 1 მონაცემთა ბაიტის გაგზავნას 1Mbps (მილიონი ბიტი წამში) სერიულ ბმულზე. ეს დრო შედგენილია შემდეგნაირად:
- 8 მონაცემთა ბიტი (8us)
- 1 საწყისი ბიტი (1uS)
- 1 გაჩერების ბიტი (1uS)
შიდა საათი
შიდა პიქსელის საათის (PCLK) სიხშირე OV7670– ში არის დადგენილი ბიტებით [5: 0] რეგისტრირებული CLKRC– ში (იხ. ფოტო 1). [1]
თუ ჩვენ დავაყენებთ ბიტებს [5: 0] = B111111 = 63 და გამოვიყენებთ მას ზემოაღნიშნულ ფორმულაზე მაშინ:
- F (შიდა საათი) = F (შეყვანის საათი)/(ბიტი [5: 0} +1)
- = 8000000/(63+1)
- = 125000 ჰერცი ან
- = 8 აშშ დოლარი
ვინაიდან ჩვენ ვიღებთ მხოლოდ მონაცემთა ყოველ მეორე ბაიტს, PCLK 8uS ინტერვალით გამოდის 16uS ნიმუში, რომელიც საკმარისი დროა 1 მონაცემთა ბაიტის (10uS) გადასაცემად, რაც 6uS დამუშავებისათვის.
Კადრების სიხშირე
თითოეული VGA ვიდეო ჩარჩო მოიცავს 784*510 პიქსელს (სურათის ელემენტები), რომელთაგან ნაჩვენებია 640*480 პიქსელი. მას შემდეგ, რაც YUV (4: 2: 2) გამომავალ ფორმატს აქვს საშუალოდ 2 მონაცემთა ბაიტი თითო პიქსელზე, თითოეულ ჩარჩოს დასჭირდება 784*2*510*8 uS = 6.4 წამი.
ეს კამერა არ არის სწრაფი !!!
ჰორიზონტალური განლაგება
სურათი შეიძლება გადავიდეს ჰორიზონტალურად, თუ ჩვენ შევცვლით HSTART და HSTOP მნიშვნელობებს 640 პიქსელის სხვაობის შენარჩუნებისას.
სურათის მარცხნივ გადაადგილებისას შესაძლებელია თქვენი HSTOP მნიშვნელობა იყოს HSTART მნიშვნელობაზე ნაკლები!
არ ინერვიულოთ… ეს ყველაფერი დაკავშირებულია გადაწურვასთან, როგორც ეს განმარტებულია ფოტო 2 -ში.
რეგისტრები
OV7670– ს აქვს 201 რვა ბიტიანი რეგისტრი ისეთი საგნების გასაკონტროლებლად, როგორიცაა მომატება, თეთრი ბალანსი და ექსპოზიცია.
ერთი მონაცემთა ბაიტი იძლევა მხოლოდ 256 მნიშვნელობას დიაპაზონში [0] - [255]. თუ ჩვენ გვჭირდება მეტი კონტროლი, მაშინ ჩვენ უნდა მოვახდინოთ კასკადი რამდენიმე რეგისტრზე. ორი ბაიტი გვაძლევს 65536 შესაძლებლობას … სამი ბაიტი გვაძლევს 16, 777, 216.
ფოტო 3 -ში ნაჩვენები 16 ბიტიანი AEC (ავტომატური ექსპოზიციის კონტროლი) რეგისტრი არის ასეთი მაგალითი და შექმნილია შემდეგი სამი რეგისტრის ნაწილის გაერთიანებით.
- AECHH [5: 0] = AEC [15:10]
- AECH [7: 2] = AEC [9: 2]
- COM1 [1: 0] = AEC [1: 0]
გაფრთხილებთ … რეგისტრაციის მისამართები არ არის დაჯგუფებული ერთად!
Გვერდითი მოვლენები
კადრის შენელება იწვევს უამრავ არასასურველ ეფექტს:
სწორი ექსპოზიციისთვის, OV7670 ელოდება მუშაობას 30 კადრი / წმ სიჩქარით (კადრები წამში). ვინაიდან თითოეულ კადრს 6,4 წამი სჭირდება, ელექტრონული ჩამკეტი ღიაა ჩვეულებრივზე 180-ჯერ მეტხანს, რაც ნიშნავს რომ ყველა სურათი ზედმეტად გამოიფინება, თუ ჩვენ არ შევცვლით რეგისტრის მნიშვნელობებს.
ზედმეტი ექსპოზიციის თავიდან ასაცილებლად მე დავადგინე ყველა AEC (ავტომატური ექსპოზიციის კონტროლი) რეგისტრაციის ბიტი ნულზე. მაშინაც კი, ნეიტრალური სიმკვრივის ფილტრი საჭიროა ობიექტივის წინ, როდესაც განათება ნათელია.
ხანგრძლივი ექსპოზიცია ასევე გავლენას ახდენს UV მონაცემებზე. ვინაიდან მე ჯერ ვერ ვიპოვე სარეგისტრაციო კომბინაციები, რომლებიც აწარმოებენ სწორ ფერებს … ჩათვალეთ, რომ ეს არის სამუშაოები.
შენიშვნა
[1]
მონაცემთა ფურცელში ნაჩვენები ფორმულა (ფოტო 1) სწორია, მაგრამ დიაპაზონი მხოლოდ ბიტებს [4: 0] აჩვენებს?
ნაბიჯი 5: დრო ტალღის ფორმები
ჩანაწერი "VGA ჩარჩოს დრო" დიაგრამის ქვედა მარცხენა კუთხეში (ფოტო 1) ნათქვამია:
YUV/RGB– სთვის, tp = 2 x TPCLK
ფიგურები 1, 2 და 3 ამოწმებენ მონაცემთა ფურცელს (ებს) და ადასტურებენ, რომ Omnivision ყოველ 2 მონაცემთა ბაიტს განიხილავს, როგორც 1 პიქსელის ეკვივალენტს.
Oscilloscope waveforms ასევე ადასტურებს, რომ HREF დაბალი რჩება დაბნევის ინტერვალების დროს.
სურათი 4 ადასტურებს, რომ Arduino– დან XCLK გამომავალი არის 8 MHz. მიზეზი, რის გამოც ჩვენ ვხედავთ სინუსის ტალღას და არა კვადრატულ ტალღას, არის ის, რომ ყველა უცნაური ჰარმონიკა უხილავია ჩემი 20 მჰც -იანი შერჩევის ოსცილოსკოპისთვის.
ნაბიჯი 6: ჩარჩო Grabber
OV7670 კამერის ჩიპში გამოსახულების სენსორი მოიცავს მასივს 656*486 პიქსელიდან, საიდანაც 640*480 პიქსელის ბადე გამოიყენება ფოტოსურათისთვის.
HSTART, HSTOP, HREF და VSTRT, VSTOP, VREF რეგისტრაციის მნიშვნელობები გამოიყენება სურათის სენსორზე დასაყენებლად. თუ სურათი სენსორზე სწორად არ არის განთავსებული, თქვენ იხილავთ შავ ზოლს ერთ ან მეტ კიდეზე, როგორც ეს განმარტებულია "დიზაინის შენიშვნები" განყოფილებაში.
OV7670 სკანირებს სურათის თითოეულ სტრიქონს ერთი პიქსელით, რომელიც იწყება ზედა მარცხენა კუთხიდან, სანამ არ მიაღწევს ქვედა მარჯვენა პიქსელს. Arduino უბრალოდ გადასცემს ამ პიქსელებს კომპიუტერს სერიული ბმულის საშუალებით, როგორც ეს ნაჩვენებია ფოტო 1 -ში.
ჩარჩოების მიმდევრების ამოცანაა თითოეული ამ 640*480 = 307200 პიქსელის გადაღება და შინაარსის ჩვენება "გამოსახულების" ფანჯარაში
დამუშავება 3 აღწევს ამას კოდის შემდეგი ოთხი ხაზის გამოყენებით !!
კოდის ხაზი 1:
ბაიტი byteBuffer = ახალი ბაიტი [maxBytes+1]; // სადაც maxBytes = 307200
ამ განცხადების ძირითადი კოდი ქმნის:
- 307201 ბაიტი მასივი სახელწოდებით "byteBuffer [307201]"
- დამატებითი ბაიტი არის შეწყვეტის (linefeed) ხასიათისთვის.
კოდის ხაზი 2:
ზომა (640, 480);
ამ განცხადების ძირითადი კოდი ქმნის:
- ცვლადი სახელწოდებით "width = 640;"
- ცვლადი სახელწოდებით "სიმაღლე = 480";
- 307200 პიქსელიანი მასივი სახელწოდებით "პიქსელი [307200]"
- 640*480 პიქსელიანი „გამოსახულების“ფანჯარა, რომელშიც ნაჩვენებია პიქსელების მასივის შინაარსი. ეს "სურათის" ფანჯარა განუწყვეტლივ განახლდება 60 კადრი / წმ სიჩქარით.
კოდის ხაზი 3:
byteCount = myPort.readBytesUntil (lf, byteBuffer);
ძირითადი კოდი ამ განცხადებაში:
- ბუფერებს შემოსულ მონაცემებს ადგილობრივად, სანამ არ დაინახავს "lf" (linefeed) სიმბოლოს.
- რის შემდეგაც იგი პირველი მონაცემების 307200 ბაიტს გადაყრის byteBuffer მასივში.
- ის ასევე ინახავს მიღებული ბაიტების რაოდენობას (307201) ცვლადში, სახელწოდებით "byteCount".
კოდის ხაზი 4:
პიქსელები = ფერი (byteBuffer );
როდესაც მოთავსებულია მომდევნო მარყუჟში, ამ განცხადების ძირითადი კოდი:
- კოპირებს "byteBuffer " მასივის შინაარსს "pixels " მასივში
- რომლის შინაარსი გამოჩნდება სურათის ფანჯარაში.
საკვანძო დარტყმები:
ჩარჩოების მიმღები აღიარებს შემდეგ ღილაკებს:
- "C" = სურათის გადაღება
- ‘S’ = შეინახეთ სურათი ფაილში.
ნაბიჯი 7: პროგრამული უზრუნველყოფა
ჩამოტვირთეთ და დააინსტალირეთ თითოეული შემდეგი პროგრამული პაკეტი, თუ უკვე არ არის დაინსტალირებული:
- "არდუინო" https://www.arduino.cc/en/main/software– დან
- "ჯავა 8" https://java.com/en/download/ [1]
- "დამუშავება 3" https://processing.org/download/– დან
Arduino ესკიზის დაყენება:
- ამოიღეთ ყველა OV7670 მხტუნავი მავთული [2]
- შეაერთეთ USB კაბელი თქვენს არდუინოსთან
- დააკოპირეთ "OV7670_camera_mono_V2.ino" შინაარსი Arduino- ს "ესკიზში" და შეინახეთ.
- ატვირთეთ ესკიზი თქვენს არდუინოში.
- გათიშეთ არდუინო
- ახლა თქვენ შეგიძლიათ უსაფრთხოდ დააკავშიროთ OV7670 ჯუმბერის მავთულები
- ხელახლა შეაერთეთ USB კაბელი.
დამუშავების ესკიზის დაყენება და გაშვება
- დააკოპირეთ "OV7670_camera_mono_V2.pde" შინაარსი (მიმაგრებულია) დამუშავების "ესკიზში" და შეინახეთ.
- დააწკაპუნეთ ზედა მარცხენა ღილაკზე "გაშვება" … გამოჩნდება შავი სურათის ფანჯარა
- დააწკაპუნეთ "შავი" გამოსახულების ფანჯარაზე
- დააჭირეთ ღილაკს "c" სურათის გადასაღებად. (დაახლოებით 6.4 წამი).
- დააჭირეთ "s" ღილაკს სურათის შესანახად თქვენს დამამუშავებელ საქაღალდეში
- გაიმეორეთ ნაბიჯები 4 და 5
- პროგრამის გასასვლელად დააჭირეთ ღილაკს "გაჩერება".
შენიშვნები
[1]
დამუშავება 3 მოითხოვს Java 8
[2]
ეს არის "მხოლოდ ერთხელ" უსაფრთხოების ნაბიჯი, რათა თავიდან აიცილოთ თქვენი OV7670 კამერის ჩიპის დაზიანება.
სანამ ესკიზი „OV7670_camera_mono.ini“არ იქნება ატვირთული თქვენს Arduino– ში, შიდა გამყვანი რეზისტორები უკავშირდება 5 ვოლტს, ასევე არსებობს შესაძლებლობა, რომ Arduino– ს მონაცემების ზოგიერთი ხაზი იყოს 5 ვოლტიანი გამოსავალი… ეს ყველაფერი ფატალურია 3v3 ვოლტიანი OV7670 კამერის ჩიპი.
მას შემდეგ რაც Arduino დაპროგრამდება, არ არის საჭირო ამ ნაბიჯის გამეორება და რეგისტრაციის ღირებულებები შეიძლება უსაფრთხოდ შეიცვალოს.
ნაბიჯი 8: ფერადი სურათის მიღება
შემდეგი პროგრამა არის მხოლოდ ექსპერიმენტული და გამოქვეყნებულია იმ იმედით, რომ ზოგიერთი ტექნიკა გამოდგება. როგორც ჩანს, ფერები გადაბრუნებულია … მე ჯერ არ მიპოვია რეგისტრაციის სწორი პარამეტრები. თუ იპოვით გამოსავალს, გთხოვთ გამოაქვეყნოთ თქვენი შედეგები
თუ ჩვენ უნდა მივიღოთ ფერადი სურათი, ყველა მონაცემთა ბაიტი უნდა იყოს გადაღებული და გამოყენებული იქნას შემდეგი ფორმულები.
OV7670 იყენებს შემდეგ ფორმულებს RGB (წითელი, მწვანე, ლურჯი) ფერის ინფორმაციის YUV (4: 2: 2) გადასაყვანად: [1]
- Y = 0.31*R + 0.59*G + 0.11*B
- U = B - Y
- V = R - Y
- Cb = 0.563*(B-Y)
- Cr = 0.713*(R-Y)
შემდეგი ფორმულები შეიძლება გამოყენებულ იქნას YUV (4: 2: 2) RGB ფერში დასაბრუნებლად: [2]
- R = Y + 1.402* (Cr - 128)
- G = Y -0.344136*(Cb -128) -0.714136*(Cr -128)
- B = Y + 1.772*(Cb -128)
თანდართული პროგრამული უზრუნველყოფა უბრალოდ არის მონოქრომული პროგრამული უზრუნველყოფის გაფართოება:
- "C" გადაღების მოთხოვნა ეგზავნება არდუინოს
- Arduino აგზავნის ლუწი დანომრილ (მონოქრომულ) ბაიტებს კომპიუტერში
- კომპიუტერი ინახავს ამ ბაიტებს მასივში
- Arduino შემდეგ აგზავნის კენტი დანომრილი (chroma) ბაიტს კომპიუტერში.
- ეს ბაიტები ინახება მეორე მასივში … ჩვენ ახლა გვაქვს მთლიანი სურათი.
- ზემოაღნიშნული ფორმულები ახლა გამოიყენება თითოეული ჯგუფის ოთხი UYVY მონაცემთა ბაიტისგან.
- შედეგად მიღებული ფერის პიქსელები მოთავსებულია "pixels " მასივში
- კომპიუტერი სკანირებს "pixels " მასივს და სურათი გამოჩნდება "გამოსახულების" ფანჯარაში.
დამუშავების 3 პროგრამა მოკლედ აჩვენებს თითოეულ სკანირებას და საბოლოო შედეგებს:
- ფოტო 1 გვიჩვენებს U & V ქრომის მონაცემებს სკანირებისგან 1
- ფოტო 2 გვიჩვენებს Y1 და Y2 სიკაშკაშის მონაცემებს სკანირება 2 -დან
- ფოტო 3 გვიჩვენებს ფერადი გამოსახულებას… მხოლოდ ერთი რამ არის არასწორი… ჩანთა უნდა იყოს მწვანე !!
ამ პროგრამის ამოხსნისთანავე გამოვაქვეყნებ ახალ კოდს …
წყაროები:
[1]
www.haoyuelectronics.com/Attachment/OV7670%… (გვერდი 33)
[2]
en.wikipedia.org/wiki/YCbCr (JPEG კონვერტაცია)
დააწკაპუნეთ აქ, რომ ნახოთ ჩემი სხვა ინსტრუქციები.
გირჩევთ:
შექმენით თქვენი საკუთარი USB გულშემატკივარი - ინგლისური / ფრანგული: 3 ნაბიჯი
შექმენით თქვენი საკუთარი USB გულშემატკივარი | ინგლისური / ფრანგული: ინგლისური დღეს, მე ვნახე საიტებზე, რომ ჩვენ შეგვიძლია შევიძინოთ USB გულშემატკივარი. მაგრამ მე ვუთხარი, რატომ არ უნდა გააკეთო ჩემი? რა გჭირდებათ: - წებოვანი ლენტი ელექტრიკოსი ან იხვის ლენტი - კომპიუტერის ვენტილატორი - USB კაბელი, რომელიც არ მოგემსახურებათ - მავთულის საჭრელი - ხრახნიანი საჭე - სამაგრის სამაგრები
შექმენით თქვენი საკუთარი როკ ჯგუფი Ekit ადაპტერი (მემკვიდრეობის ადაპტერის გარეშე), არა დესტრუქციულად!: 10 ნაბიჯი
შექმენით თქვენი საკუთარი როკ ჯგუფი Ekit ადაპტერი (მემკვიდრეობის ადაპტერის გარეშე), არა დესტრუქციულად!: მას შემდეგ რაც მოვისმინე პოპულარული პოდკასტის მასპინძელი, რომელმაც აღნიშნა მისი შეშფოთება მისი სადენიანი USB მემკვიდრეობის ადაპტერის კვებასთან დაკავშირებით, მე ვეძებდი წვრილმან გადაწყვეტას უკეთესი/მორგებული eKit– ის RB– ზე დასაკავშირებლად. რა მადლობა ბატონ დონინატორს Youtube– ზე, რომელმაც გადაიღო ვიდეო, სადაც აღწერილია მისი მსგავსი
ESP32-CAM შექმენით თქვენი საკუთარი რობოტი მანქანა ცოცხალი ვიდეო სტრიმინგით: 4 ნაბიჯი
ESP32-CAM შექმენით თქვენი საკუთარი რობოტი მანქანა ცოცხალი ვიდეო სტრიმინგით: იდეა არის რობოტი მანქანა აქ აღწერილი იყოს რაც შეიძლება იაფი. ამიტომ ვიმედოვნებ, რომ მივაღწევ დიდ სამიზნე ჯგუფს ჩემი დეტალური ინსტრუქციით და იაფი მოდელის შერჩეული კომპონენტებით. მინდა წარმოგიდგინოთ ჩემი იდეა რობოტი მანქანისთვის
შექმენით თქვენი საკუთარი ვიჯეტები მარტივად - სწრაფი BPM მრიცხველი: 6 ნაბიჯი
შექმენით თქვენი საკუთარი ვიჯეტები მარტივად - სწრაფი BPM მრიცხველი: ვებ პროგრამები ჩვეულებრივი ადგილია, მაგრამ ვებ პროგრამები, რომლებიც არ საჭიროებს ინტერნეტს, არ არის. ამ სტატიაში მე გაჩვენებთ თუ როგორ გავაკეთე BPM Counter მარტივი HTML გვერდზე ვანილის javascript- თან ერთად ( ნახე აქ) გადმოტვირთვის შემთხვევაში, ეს ვიჯეტი შეიძლება გამოყენებულ იქნას ხაზგარეშე
შექმენით თქვენი საკუთარი ბრძანება მარტივი ნაბიჯი: 4 ნაბიჯი
შექმენით თქვენი საკუთარი გაშვებული ბრძანება მარტივი ნაბიჯი: აქ მე ვაჩვენებ როგორ შეგიძლიათ შექმნათ თქვენი საკუთარი ბრძანება Windows OS– ში. სინამდვილეში ეს ფუნქცია Windows– ში შესანიშნავია, რაც სასარგებლოა თქვენი აპლიკაციის ფანჯრის მყისიერად გასახსნელად. ასე რომ, ახლა თქვენ ასევე შეგიძლიათ შექმნათ თქვენი ბრძანება ნებისმიერი პროგრამის გახსნის მიზნით