Სარჩევი:

ATtiny85 IR USB მიმღები: 11 ნაბიჯი (სურათებით)
ATtiny85 IR USB მიმღები: 11 ნაბიჯი (სურათებით)

ვიდეო: ATtiny85 IR USB მიმღები: 11 ნაბიჯი (სურათებით)

ვიდეო: ATtiny85 IR USB მიმღები: 11 ნაბიჯი (სურათებით)
ვიდეო: ATtiny85 Relay Control with IR Remote || 2-Channel IR Remote Control System Using ATtiny85 2024, ივლისი
Anonim
ATtiny85 IR USB მიმღები
ATtiny85 IR USB მიმღები

გაფრთხილება, ეს ინსტრუქცია გახდა აბსოლუტური

V-usb ბიბლიოთეკა შექმნილია იმუშაოს USB 1.1 პროტოკოლით, რომელიც დღესდღეობით თითქმის არ არსებობს. USB3– ის მოსვლასთან ერთად თქვენ გექნებათ უფრო მეტი თავის ტკივილი, ვიდრე ცდილობთ v-usb მოწყობილობების მუშაობას. მულტიმედიური ცენტრის შეცვლის შემდეგ, მე მაქვს სტაბილურობის მრავალი პრობლემა და მიუხედავად იმისა, რომ მიმღები მუშაობს, გარკვეული პერიოდის შემდეგ ის წყვეტს მუშაობას. მე წარუმატებლად ვცდილობდი მის გამოსწორებას. მე ასევე გავაკეთე atmega328p ვერსია, მაგრამ ამას ჰქონდა იგივე საკითხები. დაფის პერიოდულად გადატვირთვის მცველის ტაიმერის გამოყენება არც მიშველა, ასე რომ, მე უარს ვამბობ v-usb- ზე.

მიეცით საკუთარ თავს სიკეთე და ნუ გააგრძელებთ ამ ინსტრუქციას, თუ ეს საგანმანათლებლო მიზნებისთვის არ არის. მე გირჩევთ შეიძინოთ ჩიპის მოდული ATmega 32U4, რომელიც უკვე ინტეგრირებულია USB ინტერფეისით და მიჰყევით ამ სახელმძღვანელოს:

www.sparkfun.com/tutorials/337

შემდეგ ჩააგდე IR სენსორი TSOP31238 და კარგი ხარ.

გამარჯობა შემქმნელებო! ეს არის ინსტრუქციული სამუშაო USB IR მიმღების მშენებლობა Attiny85 მიკროკონტროლის გამოყენებით. მე დავიწყე ეს პროექტი GNU/Linux ოპერაციული სისტემის ზოგიერთი IR დისტანციის მხარდაჭერის ნაკლებობის დასაძლევად (სულ მცირე სრული მხარდაჭერა). ამ ინსტრუქციის შემდეგ შეგიძლიათ შექმნათ პროგრამირებადი USB IR მიმღები, რომელიც მუშაობს ნებისმიერ IR დისტანციურ მოწყობილობაზე რამდენიმე დოლარად.

უპირველეს ყოვლისა, ეს ინსტრუქცია არ იარსებებდა იმ ხალხის შრომის გარეშე, რომლებმაც შექმნეს ბიბლიოთეკები, რომლებსაც აქ ვიყენებ:

  • დავით ა. მელისი თავისი დამცავი ბირთვისთვის
  • Rowdy Dog პროგრამული უზრუნველყოფა მათი ბიბლიოთეკისთვის TinyTuner
  • Rowdy Dog პროგრამული უზრუნველყოფა მათი პატარა ჩატვირთვისათვის
  • Rancidbacon (https://rancidbacon.com/) v-usb ბიბლიოთეკის არდუინოს პორტისთვის (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee მისი IR ბიბლიოთეკისთვის მცირე ზომის ბირთვებისთვის ნაპოვნი სასწავლო ინსტრუქციის კომენტარებზე https://www.instructables.com/id/Attiny-IR-librar… კოდი https://www.instructables.com/id/Attiny-IR -ბიბლიოთეკა…

ზოგჯერ ბიბლიოთეკის სწორი მფლობელის პოვნა ადვილი არ არის, ამიტომ შეცდომის დაშვების შემთხვევაში გთხოვთ დატოვეთ კომენტარი და მე საკითხს სასწრაფოდ მოვაგვარებ.

ეს სახელმძღვანელო არსებობს იმიტომ, რომ მე ვერ ვიპოვე სრული სახელმძღვანელო/სახელმძღვანელო, რომელიც მუშაობს ყუთში (ის შეიძლება არსებობდეს, მაგრამ მე ვერ ვიპოვე), ასე რომ მე შევიკრიბე ინტერნეტში არსებული ყველა ინფორმაცია და დიდი რაოდენობის ცდების შემდეგ და შეცდომები მე მივიღე სრული სახელმძღვანელო სამუშაო USB IR მიმღების შესაქმნელად, რომელიც რეალურად საკმაოდ კარგად მუშაობს.

ინფორმაციის ძირითადი წყაროები, რომელსაც მე მივყვები:

  • https://nathan.chantrell.net/20121014/tinypcremot…
  • https://forum.arduino.cc/index.php?PHPSESSID=ap4jg…
  • https://blog.petrockblock.com/2012/05/19/usb-keybo…
  • https://learn.adafruit.com/using-an-infrared-libr…
  • https://codeandlife.com/2012/03/03/diy-usb-passwor…
  • https://codeandlife.com/2012/02/22/v-usb-with-atti…
  • https://www.instructables.com/id/Attiny-IR-librar…

ნაბიჯი 1: რამდენიმე მოსაზრება

  • მე არ ვარ AVR ISP პროგრამისტი და მე ნამდვილად არ მსურს მისი ყიდვა, ამიტომ მე გამოვიყენე Arduino attiny– ის დასაპროგრამებლად
  • მე არ მაინტერესებს სხვა ოპერაციული სისტემა GNU/Linux– ის გარდა, ასე რომ არ ვიცი ეს სხვაგვარად იმუშავებს თუ არა.
  • არის სხვა IR ბიბლიოთეკები, მაგრამ მე არ შემიძლია მათი მუშაობა არდუინოსთანაც კი. გაითვალისწინეთ, რომ დავიწყე შეზღუდული ცოდნით IR ბიბლიოთეკების შესახებ. შესაძლოა მე შემეძლოს მათი მუშაობა ახლა მას შემდეგ, რაც მიღებული გამოცდილება გამოცდილ იქნა სამართლიანი რაოდენობის საკითხებში. ყოველ შემთხვევაში, მე დავიკარგე და სასოწარკვეთილი ვიპოვნე ბიბლიოთეკა, რომელსაც სეჯაიდი გვთავაზობდა და მას შემდეგ ვიყენებ (დიდი მადლობა კაცო!).
  • არსებობს სხვა აპარატურის კონფიგურაცია, მაგრამ მე გამოვიყენე მხოლოდ ის, რომელიც იყენებს 5V ენერგიას attiny85 და ორი 3.6V 0.5W ზენერის დიოდი მონაცემთა ხაზების ძაბვის დასაჭერად, ის მუშაობს ყუთში, ასე რომ სხვა კონფიგურაციები.
  • თქვენ შეგიძლიათ გამოიყენოთ 16Mhz ბროლი ან შეგიძლიათ გამოიყენოთ tinytuner ბიბლიოთეკა თქვენი attiny- ის შიდა საათის დასადგენად 85. მე მკაცრად ვურჩევ ბროლის გამოყენებას, ის ბევრად უფრო სტაბილურია და ალბათ ბევრ თავის ტკივილს შეგიწყალებთ.
  • მე აქ ვიყენებ ორ სხვადასხვა ჩამტვირთველს attiny85– ისთვის:

ა) Rowdy Dog პროგრამული უზრუნველყოფის ვერსია, მას აქვს ინტეგრირებული სერიული ინტერფეისი, რომელიც არის ძალიან მაგარი და ძალიან მცირე, ასე რომ თქვენ გაქვთ მეტი ადგილი თქვენი პროგრამისთვის და სხვა ბიბლიოთეკებისთვის. პრობლემა ის არის, რომ გარკვეული მიზეზების გამო, მიუხედავად იმისა, რომ ის საკმაოდ კარგად მუშაობს, გარკვეული პერიოდის შემდეგ USB მოწყობილობა გათიშულია (თქვენ შეგიძლიათ იპოვოთ საკითხები dmesg ბრძანებით). არ ვიცი ეს არის ბირთვის პრობლემა თუ ბირთვის შერეული კომბინაცია პლუს არჩეული ბიბლიოთეკები, ამიტომ გარკვეული პერიოდის შემდეგ გადავწყვიტე გამოვიყენო ეს ბირთვი მხოლოდ დისტანციური გასაღებების დეკოდირებისთვის და საათის დაკალიბრებისთვის (როდესაც არ ვიყენებ 16 მჰც ბროლი). ამის შემდეგ, მე უბრალოდ დავწვი Mellis ჩამტვირთავი და ავტვირთე საბოლოო ესკიზი, რომელიც არ იყენებს სერიულ ინტერფეისს.

ბ) Mellis ვერსია, სტაბილური ჩამტვირთავი, მე ეს გამოვიყენე ბევრ პროექტში. მე ყოველთვის გამოვიყენებდი ამ ჩამტვირთველს, თუ მასში შედიოდა სერიული ინტერფეისი. მე ვიყენებ ამ ბირთვს საბოლოო ესკიზში მას შემდეგ, რაც ვიღებ ყველა კლავიშს ჩემს დისტანციურ დისტანციებზე.

ნაბიჯი 2: დავიწყოთ აპარატურით

დავიწყოთ აპარატურით
დავიწყოთ აპარატურით
დავიწყოთ აპარატურით
დავიწყოთ აპარატურით
დავიწყოთ აპარატურით
დავიწყოთ აპარატურით

ინსტრუმენტები გჭირდებათ:

  • arduino თავსებადი დაფა
  • სერიული usb ადაპტერი თქვენი დისტანციური გასაღებების დეკოდირებისთვის (უბრალოდ გამოიყენეთ FT232RL)
  • კომპიუტერი GNU/Linux– ით დაინსტალირებული და arduino IDE სწორად კონფიგურირებული, მე ვიყენებ arduino IDE 1.8.0 – ს
  • IR პულტი თქვენი მოწყობილობის შესამოწმებლად (თუნდაც ისეთი საშინელი, როგორიც არის arduino დამწყებ ნაკრებში, იმუშავებს)
  • მულტიმეტრი თქვენი დაფის გამოსწორების მიზნით (იმედია არ დაგჭირდებათ, წარმატებები!)

მასალების სია:

  • 1 ატინი 85
  • 2 68R რეზისტორი
  • 1 1.5K რეზისტორი
  • 1 4.7K რეზისტორი
  • 1 16 მჰც კრისტალი
  • 1 22pF კონდენსატორი
  • 1 0.1uF კონდენსატორი
  • 1 10uF კონდენსატორი
  • 2 3.6V 0.5W ზენერის დიოდი
  • 1 USB ტიპის A მამრობითი კონექტორი
  • 1 ზოლის პინი 6 პინით დაფის პროგრამირებისა და გამართვისთვის.
  • 1 IR სენსორი TSOP31238
  • ბევრი ყავა რომ გაიღვიძოს

სანამ საბოლოო დაფას შეაერთებდით, თქვენ ალბათ გინდათ, რომ მოამზადოთ პურის დაფის პროტოტიპი სატესტო მიზნებისთვის, ამ ინსტრუქციებზე მიმაგრებული სქემის საკმარისი იქნება მისი ასაშენებლად.

კომპიუტერთან attiny85– ის დასაკავშირებლად, საბოლოო დიზაინი იყენებს USB ტიპის A კონექტორს, რომელიც ჩასმულია დაფაზე, მაგრამ პროტოტიპისთვის დაგჭირდებათ USB კაბელის გაკეთება, რომლის დაკავშირებაც შეგიძლიათ პურის დაფაზე:

შედუღეთ პერფორდის პატარა ნაჭერი 4 ქინძისთავით, შემდეგ გაჭერით ძველი USB კაბელი და შეაერთეთ ქინძისთავები 4 მავთულზე USB კაბელის შიგნით:

  • წითელი არის VCC (5V)
  • შავი არის GND
  • თეთრი არის D-
  • მწვანე არის D+

შეინახეთ ყველაფერი ცხელი წებოთი.

ახლა ჩვენ უნდა დავუკავშიროთ ISP პროგრამისტი (Arduino), USB სერიულ ადაპტერს (FT232RL) და IR სენსორი attiny85.

თქვენ შეგიძლიათ დატოვოთ დაკავშირებული ყველა ერთად, ასე რომ თქვენ გექნებათ შესაძლებლობა ჩაწეროთ სხვადასხვა ჩამტვირთვები, ჩატვირთოთ ესკიზები და შეამოწმოთ სერიული პორტი მავთულის შეცვლის გარეშე, ამისათვის დააკავშირეთ ყველაფერი ამ ინსტრუქციის შემდეგ:

ISP პროგრამისტი (Arduino): ეს გვაძლევს საშუალებას ჩავწეროთ ჩამტვირთავები და ჩავტვირთოთ ესკიზები

  • attiny85 PB0 (pin5) pin11 (MOSI) არდუინოში
  • attiny85 PB1 (pin6) pin12 (MISO) არდუინოში
  • attiny85 PB2 (pin7) pin13 (SCK) არდუინოში
  • attiny85 RESET (pin1) ერთად pullup (4.6k to VCC) to pin10 in arduino
  • attiny85 VCC 5V არდუინოში
  • attiny85 GND to GND არდუინოში

usb სერიული ადაპტერი (FT232RL): ეს საშუალებას გვაძლევს შევამოწმოთ სერიული პორტი

  • attiny85 PB0 (pin5 RX) to TX FT232RL– ში
  • attiny85 PB2 (pin7 TX) RX– დან FT232RL– ში
  • attiny85 GND (pin4) GND– მდე FT232RL– ზე
  • ვინაიდან attiny85 უკვე მუშაობს arduino– ს საშუალებით, თქვენ არ გჭირდებათ 5v– ის დაკავშირება FT232RL– ზე, წინააღმდეგ შემთხვევაში დაკავშირება: attiny85 VCC (pin8) 5V– ზე FT232RL– ზე

usb სერიული ადაპტერი (FT232RL) მხოლოდ საათის დაკალიბრებისთვის (მხოლოდ ჩამტვირთველისთვის "ATtiny85 @ 8MHz (შიდა ოსცილატორი; BOD გამორთულია)")

  • PB4 (pin3 RX) TX– დან FT232RL attiny85– ში
  • PB3 (pin2 TX) RX– დან FT232RL attiny85– ში
  • GND (pin4) GND– მდე FT232RL– ზე
  • ვინაიდან attiny85 უკვე მუშაობს arduino– ს საშუალებით, თქვენ არ გჭირდებათ 5v– ის დაკავშირება FT232RL– ზე, წინააღმდეგ შემთხვევაში დაკავშირება: attiny85 VCC (pin8) 5V– ზე FT232RL– ზე

თუ იყენებთ 16 მჰც კრისტალს, შეაერთეთ იგი Attiny85 ქინძისთავებთან PB3 (pin2) და PB4 (pin3) და დააკავშირეთ თითოეული პინი GND– თან, ასევე თითოეული 22pF თავსახურით.

გაფილტრეთ Attiny85 VCC 0.1uF და 10uF კონდენსატორებით, რომლებიც აკავშირებს მათ GND– ის პარალელურად

შეაერთეთ IR სენსორის გამომავალი პინი attiny85 PB1 (pin6), ჩართეთ იგი.

შექმენით და დააკავშირეთ USB ინტერფეისი:

  • GND (შავი მავთული): დააკავშირეთ იგი საერთო GND– თან (ყველა საფუძველი ერთმანეთთან არის დაკავშირებული)
  • D- (თეთრი მავთული) უკავშირდება attiny85 PB0 (pin5) 68R რეზისტორს, დაუკავშირეთ იგი ასევე მიწას 3.6V 0.5W ზენერის საშუალებით და გაიყვანეთ VCC– მდე 1.5K რეზისტორით
  • D+ (მწვანე მავთული) დაკავშირებულია PB2– თან 68R რეზისტორის საშუალებით, დაუკავშირეთ მას მიწასთან 3.6V 0.5W ზენერის საშუალებით
  • 5V, შეგიძლიათ დატოვოთ იგი დაუკავშირებლად, რადგან ამ ეტაპზე ყველაფერი იკვებება არდუინოს საშუალებით, წინააღმდეგ შემთხვევაში დააკავშირეთ იგი attiny85 VCC– სთან

ზენერის დიოდები დაკავშირებულია ისე, რომ ანოდები მიბმულია GND– ზე და კათოდები დაკავშირებულია მონაცემთა ხაზებთან D+ და D-.

ნაბიჯი 3: საბოლოო დიზაინი

საბოლოო დიზაინი
საბოლოო დიზაინი
საბოლოო დიზაინი
საბოლოო დიზაინი
საბოლოო დიზაინი
საბოლოო დიზაინი

საბოლოო დიზაინისთვის შეგიძლიათ გამოიყენოთ დაფა ხვრელების კომპონენტებით, ან დახატოთ თქვენი საკუთარი დაფა და გამოიყენოთ smd კომპონენტები. იმის გასაგებად, თუ როგორ უნდა დაამუშაოთ დაფა, უბრალოდ google- ში, არის გასაოცარი გაკვეთილები, რომლებიც ხელმისაწვდომია ინტერნეტში.

მე მაქვს ამოტვიფრული ჩემი დაფა და ძალიან კმაყოფილი ვარ საბოლოო შედეგებით (პატარა, სტაბილური და გამძლე დაფა). დიახ, მე ვიცი, რომ დაჭრილი ცუდია, მაგრამ მე ვერ ვიყენებ არცერთ ელექტრო ინსტრუმენტს ასე გვიან ღამით და მე უბრალოდ გაჭერით დაფა ჩემი თუნუქის მაკრატლით.

სხვათა შორის, სურათების კვალი არ არის შიშველი სპილენძი, ისინი დამუშავებულია ამაზრზენი ქიმიური ნივთიერებით, რომელიც ოდნავ ანათებს სპილენძს (ეჭვმიტანილია კიბოს გამომწვევი, ამიტომ გამოიყენეთ იგი დიდი სიფრთხილით, ლატექსის გლობუსები და მტვრის ნიღაბი):

გამოიყენეთ ზემოთ მოცემული სქემები თქვენი განლაგების შესაქმნელად, ან შეგიძლიათ გამოიყენოთ ჩემი pcb ნაკვალევი თქვენი დაფის გასაკეთებლად.

ნაბიჯი 4: პროგრამულ უზრუნველყოფასთან მუშაობა

ამ პროექტში ჩართვა ძალიან მარტივია, სამაგიეროდ პროგრამული უზრუნველყოფა მოითხოვს უფრო დიდ ძალისხმევას.

ჩვენ გვჭირდება მინიმუმ 2 ბიბლიოთეკა (კიდევ ერთი, თუ თქვენ არ იყენებთ კრისტალს) პლუს 2 ჩამტვირთავი, რომ შეასრულოთ ეს სამუშაო. როდესაც მე დავიწყე ეს პროექტი, მე შევამოწმე რამდენიმე ბიბლიოთეკა, ზოგჯერ ისინი არ მუშაობდნენ და ბევრჯერ ისინი უბრალოდ არ იყვნენ კონფიგურირებულნი Attiny85– თან მუშაობის გარეშე (მე ეს ჯერ არ ვიცოდი). შემდეგ მე აღმოვაჩინე პრობლემები ბიბლიოთეკებთან / ჩამტვირთავებთან, რომლებიც გადაფარავს შეფერხებებს. დაბოლოს, მე მომიწია გაუმკლავდე შეცდომების საკმაოდ დიდ რაოდენობას, როდესაც საბოლოო ჩართვა შევაერთე ჩემს კომპიუტერს. მე არ მქონდა ეს სახელმძღვანელო, ასე რომ, მე ვფიქრობ, რომ ყველაფერი კარგად გექნებათ, უბრალოდ მიჰყევით ამ ინსტრუქციურ ნაბიჯებს, თუ ამას აკეთებთ შეცდომების გარეშე, კარგად იქნებით:)

ახლა ჩვენ გვჭირდება რამდენიმე ბიბლიოთეკის დაყენება და კონფიგურაცია:

  • v-usb arduino ბიბლიოთეკისთვის: ეს ბიბლიოთეკა საშუალებას აძლევს მიკროკონტროლერს კომპიუტერის მიერ აღიარებულ იქნას როგორც HID USB კლავიატურა და ჩვენ გამოვიყენებთ მას კომპიუტერში საკვანძო დარტყმების გასაგზავნად. ამ ბიბლიოთეკას სჭირდება გარკვეული ცვლილებები attiny– თან თავსებადი 85
  • tinytuner ბიბლიოთეკა მხოლოდ იმ შემთხვევაში, თუ თქვენ არ გამოიყენებთ 16 მჰც კრისტალს. თქვენ დაგჭირდებათ მიკროკონტროლის შიდა საათის დაკალიბრება. ეს ბიბლიოთეკა მუშაობს ყუთში.
  • Attiny-IR- ბიბლიოთეკა IR სენსორთან ურთიერთქმედების მიზნით. ეს ბიბლიოთეკა მუშაობს ყუთში.

ჩვენ ასევე გვჭირდება 2 ჩამტვირთავი:

  • ძაღლის პროგრამული უზრუნველყოფის ვერსია, სერიული ინტერფეისით. ამ ჩამტვირთველს სჭირდება მცირე შესწორება attiny85– თან მუშაობისთვის, რადგან ის იყენებს timer1– ს millis () ფუნქციისთვის და არ იმუშავებს IR ბიბლიოთეკასთან. ჩვენ უნდა შევცვალოთ ტაიმერი timer0.
  • Mellis ვერსია, სტაბილური ჩამტვირთავი, რომელსაც ჩვენ გამოვიყენებთ დასკვნით ეტაპზე. ეს მუშაობს ყუთში.

ნაბიჯი 5: V-usb ბიბლიოთეკის დაყენება და კონფიგურაცია

ჩამოტვირთეთ ბიბლიოთეკა https://code.google.com/archive/p/vusb-for-arduin… ამოიღეთ ფაილი და დააკოპირეთ საქაღალდის ბიბლიოთეკები/UsbKeyboard თქვენს ჩანახატების ბიბლიოთეკების საქაღალდეში.

ახლა თქვენ უნდა შეცვალოთ რამდენიმე ფაილი ATtiny85– თან თავსებადი (ის კონფიგურირებულია arduino– სთან მუშაობისთვის):

ა) შეცვალეთ usbconfig.h:

"აპარატურის კონფიგურაციის" შეცვლა:

#განსაზღვრეთ USB_CFG_IOPORTNAME D ## განსაზღვრეთ USB_CFG_IOPORTNAME B

და

#განსაზღვრეთ USB_CFG_DMINUS_BIT 4 რათა#განსაზღვროთ USB_CFG_DMINUS_BIT 0

"სურვილისამებრ აპარატურის კონფიგურაციის" შეცვლა:

#განსაზღვრეთ USB_CFG_PULLUP_IOPORTNAME D ## განსაზღვრეთ USB_CFG_PULLUP_IOPORTNAME B

სრული "ჩატვირთვის შესაბამისი HID" სპეციფიკაციის შესაქმნელად (წინააღმდეგ შემთხვევაში მულტიმედიური კლავიში არ იმუშავებს), ასევე შეცვალეთ:

#განსაზღვრეთ USB_CFG_INTERFACE_SUBCLASS 0 // ჩატვირთვა#განსაზღვრეთ USB_CFG_INTERFACE_SUBCLASS 0x01 // ჩატვირთვა

და

#განსაზღვრეთ USB_CFG_INTERFACE_PROTOCOL 0 // კლავიატურა#განსაზღვრეთ USB_CFG_INTERFACE_PROTOCOL 0x01 // კლავიატურა

სურვილისამებრ შეგიძლიათ შეცვალოთ მწარმოებელი და მოწყობილობის სახელი შემდეგ განმარტებებში:

#განსაზღვრეთ USB_CFG_VENDOR_NAME

#განსაზღვრეთ USB_CFG_DEVICE_NAME

ბ) შეცვალეთ UsbKeyboard.h:

შეცვლა:

PORTD = 0; // TODO: მხოლოდ USB ქინძისთავებისთვის? DDRD | = ~ USBMASK;

რათა

PORTB = 0; // TODO: მხოლოდ USB ქინძისთავებისთვის? DDRB | = ~ USBMASK;

101 -ზე მეტი საკვანძო კოდის შესაცვლელად ასევე:

0x25, 0x65, // LOGICAL_MAXIMUM (101) დან: 0x25, 0xE7, // LOGICAL_MAXIMUM (231)

და

0x29, 0x65, // USAGE_MAXIMUM (კლავიატურის აპლიკაცია): 0x29, 0xE7, // USAGE_MAXIMUM (კლავიატურის აპლიკაცია)

შეიძლება დაგჭირდეთ ამ 3 ფაილის რედაქტირებაც:

usbdrv.husbdrv.cUsbKeyboard.h

და ყოველ ჯერზე, როდესაც ხედავთ PROGMEM- ის დამატებას "const" ცვლადის ტიპის სახელის წინ (მაგ.: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

თუ ეს არ არის ნათელი ეწვიეთ

თქვენ შეგიძლიათ თავიდან აიცილოთ ყველა ეს ცვლილება, თუ უბრალოდ გადმოწერეთ თანდართული ბიბლიოთეკა (მე თვითონ გავაკეთე ეს ყველაფერი) და უბრალოდ ამოიღეთ იგი თქვენი ჩანახატების ბიბლიოთეკების საქაღალდეში:

UsbKeyboard კონფიგურირებულია attiny85– ისთვის

რედაქტირება: ცოტა ხნის წინ აღმოვაჩინე, რომ ალეხანდრო ლეივა (https://github.com/gloob) ზრუნავდა ამ ბიბლიოთეკაზე და, როგორც ჩანს, კარგად მუშაობს. თქვენ ასევე შეგიძლიათ სცადოთ მისი ვერსია იმ აუცილებელი ცვლილებებით, რაც მე გავაკეთე იმისათვის, რომ იგი დამუშავებულიყო, ასე რომ, თუ ამის შემოწმება გსურთ, უბრალოდ ამოიღეთ იგი თქვენი ჩანახატების ბიბლიოთეკების საქაღალდეში.

UsbKeyboard კონფიგურირებულია attiny85– ისთვის (ალეხანდრო ლეივას ვერსია)

ნაბიჯი 6: Attiny-IR და Tinytuner ბიბლიოთეკების დაყენება

ა) Attiny-IR ბიბლიოთეკა:

გადმოწერეთ https://drive.google.com/open?id=0B_w9z88wnDtFNHlq… შემდეგ გახსენით იგი თქვენი ესკიზის წიგნების ბიბლიოთეკების საქაღალდეში.

ბ) Tinytuner ბიბლიოთეკა:

ეს საჭიროა მხოლოდ იმ შემთხვევაში, თუ თქვენ არ იყენებთ 16 მჰც კრისტალს, მაგრამ დამიჯერეთ, მიუხედავად იმისა, რომ ის ასევე მუშაობს ბროლის გარეშე, ის ბევრად უფრო სტაბილურია და რამდენიმე ცენტი ღირს, ასე რომ, შეინახეთ მარტივი, გამოიყენეთ ბროლი და გამოტოვეთ ამ ბიბლიოთეკას

ჯერ არ ხარ დარწმუნებული? კარგი, გადმოწერეთ ბიბლიოთეკა https://storage.googleapis.com/google-code-archive… შემდეგ გახსენით იგი თქვენი sketchbook ბიბლიოთეკების საქაღალდეში.

ჩვენ დავასრულეთ ბიბლიოთეკები, ახლა ჩვენ გადავდივართ ჩამტვირთავების დაყენებაზე.

ნაბიჯი 7: ჩატვირთვის ინსტალაცია და კონფიგურაცია

ჩვენ ვაპირებთ დავაყენოთ ორი ჩამტვირთავი Mellis, რომელიც ჩემი გამოცდილებით უფრო სტაბილურია და ჩვენ გამოვიყენებთ მას საბოლოო ესკიზში. მეორე, რომელიც შემუშავებულია Rowdy Dog Software– ის მიერ, არის გასაოცარი ბირთვი, ძალიან პატარა და ხელმისაწვდომია ინტეგრირებული სერიული ინტერფეისით, მაგრამ ჩემი დისტანციური გადამრთველი გარკვეული დროის შემდეგ ჩამოვარდა, ამიტომ ჩვენ გამოვიყენებთ ამ ჩამტვირთველს მხოლოდ attiny85 შიდა საათის დასაზუსტებლად და ჩვენი დისტანციური კოდის დეკოდირებისთვის. ღილაკები.

მე ვიცი, რომ არსებობს ბიბლიოთეკები, რომლებიც აძლევენ 85 სერიულ შესაძლებლობებს, მაგრამ შემდეგ თქვენ უნდა შეცვალოთ ბიბლიოთეკები, რომლებიც იყენებენ სერიულ ობიექტს … მე ეს პროცედურა უფრო მომწონს.

დავიწყოთ ინსტალაციით:

ა) Mellis ჩამტვირთავი:

უბრალოდ გახსენით Arduino IDE პარამეტრები და დაამატეთ დამატებითი დაფების მენეჯერის მისამართები:

raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

შემდეგ გახსენით Arduino IDE დაფების მენეჯერი და მოძებნეთ მიმზიდველობა, დააინსტალირეთ დაფები Mellis– დან. ახლა თქვენ უნდა ნახოთ Arduino ID ATtiny25/45/85 და ATtiny24/44/84 დაფები.

ბ) Rowdy Dog პროგრამული უზრუნველყოფის პატარა ჩამტვირთავი:

გადმოწერეთ ჩამტვირთავი

გახსენით ფაილი და დააკოპირეთ პაკეტი თქვენს ჩანახატებში/აპარატურაში (შექმენით ეს საქაღალდე, თუ ის ჯერ არ არსებობს). შემდეგ გადადით საქაღალდეში sketchbook/hardware/tiny/avr/და:

1) დააკოპირეთ ფაილი Prospective Boards.txt ფაილში boards.txt

2) შეცვალეთ ფაილის platform.txt და შეიტანეთ ცვლილებები:

წაშალეთ კომენტარის ცვლადი შემდგენელი. გზა და დატოვეთ ის მიუთითეთ საქაღალდეზე hardware/tools/avr/bin/თქვენს arduino სამონტაჟო საქაღალდეში:

compiler.path = {PATH_TO_YOUR_ARDUINO_FOLDER}/ტექნიკა/ინსტრუმენტები/avr/bin/

შეცვალეთ alsocompiler. S.flags = -c -g -assembler-with-cpptocompiler. S.flags = -c -g -x assembler-with-cpp

შემდეგ შეცვალეთ შემდეგი ცვლადები და დარწმუნდით, რომ ყველაფერი თავის ადგილზეა (ეს ფაილები უნდა არსებობდეს, წინააღმდეგ შემთხვევაში მიუთითეთ ცვლადები სწორ გზებზე):

tools.avrdude.cmd.path = {runtime.ide.path}/ტექნიკა/ინსტრუმენტები/avr/bin/avrdude

tools.avrdude.config.path = {runtime.ide.path} /hardware/tools/avr/etc/avrdude.conf

tools.avrdude.cmd.path.linux = {runtime.ide.path}/ტექნიკა/ინსტრუმენტები/avr/bin/avrdude

tools.avrdude.config.path.linux = {runtime.ide.path} /hardware/tools/avr/etc/avrdude.conf

3) შეცვალეთ ფაილის ბირთვები/tiny/core_build_options.h და შეცვალეთ:

#განსაზღვრეთ TIMER_TO_USE_FOR_MILLIS 1 -დან#განსაზღვრეთ TIMER_TO_USE_FOR_MILLIS 0

ეს ძალიან მნიშვნელოვანია, წინააღმდეგ შემთხვევაში IR მიმღები გამოუშვებს ნულებს ყველა ღილაკზე. ეს განცხადება აყალიბებს timer0- ს millis () ფუნქციისთვის და ტოვებს ტაიმერს 1 IR ბიბლიოთეკისთვის. საბოლოო ესკიზი მაინც გამორთავს timer0- ს, ასე რომ თქვენ არ გექნებათ არც millis () და delay () ფუნქციები. ამის ნაცვლად შეიძლება გქონდეთ ფუნქცია delayMicroseconds ().

ეს ჩამტვირთავი არის მინიმალური, მაგრამ მოიცავს სერიული ობიექტის მხარდაჭერას:

Attiny85 PB2 (pin7) არის TX და PB0 (pin5) არის RX

თქვენ შეგიძლიათ გქონდეთ კონფიგურაცია ISP პროგრამისტთან (arduino) და სერიული usb ადაპტერი, რომელიც დაკავშირებულია ერთდროულად, ასე რომ თქვენ არ გჭირდებათ მავთულის ძალიან ხშირად შეცვლა:

ახლა ჩვენ გვაქვს ბიბლიოთეკები და ჩამტვირთველები დაინსტალირებული და სწორად კონფიგურირებული, უმძიმესი სამუშაო დასრულებულია და ჩვენ შეგვიძლია დავიწყოთ საგნების ტესტირება.

ნაბიჯი 8: ჩამტვირთავების დაწვა და ჩანახატების ატვირთვა

მე მტკიცედ გირჩევთ გაააქტიუროთ სიტყვიერი გამომავალი Arduino IDE პარამეტრების მიხედვით, ასე რომ თქვენ შეგიძლიათ გაარკვიოთ რაიმე საკითხი.

ჩატვირთვის ჩამტვირთავი Attiny85– ში თქვენ უნდა ატვირთოთ ISP მაგალითი Arduino– ში და შემდეგ შეარჩიოთ პროგრამისტი Arduino როგორც ISP.

ახლა განათავსეთ 10uF კონდენსატორი არდუინოზე გადატვირთვისა და დაფის ქინძისთავებს შორის (ეს არ არის საჭირო წვის პროცესისთვის, მაგრამ ესკიზების ატვირთვისთვის 85).

ახლა არდუინო მზადაა ჩაწეროს ჩამტვირთავი და დატვირთოს ესკიზები. თქვენ უბრალოდ უნდა შეარჩიოთ სწორი დაფა, რომელიც შეესაბამება თქვენს გარეგნობას და დაწვათ.

ესკიზის ჩასატვირთად Attiny85– ში ჩატვირთეთ იგი arduino IDE– ში და დააწკაპუნეთ „პროგრამის გამოყენებით პროგრამის გამოყენებით“.

მნიშვნელოვანია: ესკიზის ატვირთვისას არის 3 ნაბიჯი, შედგენა, წერა და გადამოწმება. თუ შედგენა და წერა წარმატებით მუშაობდა, მაგრამ გადამოწმების პროცესი ვერ მოხერხდა, შესაძლებელია ესკიზი მაინც იმუშაოს.

ნაბიჯი 9: დააკალიბრეთ Attiny85 შიდა საათი (გამოტოვეთ ეს თუ იყენებთ კრისტალს)

იმ შემთხვევაში, თუ გადაწყვეტთ, რომ არ გამოიყენოთ 16 მჰც ბროლი, თქვენ გჭირდებათ თქვენი attiny85 საათის დაკალიბრება, ამიტომ ჩვენ დაგვჭირდება ჩამტვირთავი სერიული ინტერფეისით და გამოვიყენებთ tinytuner ბიბლიოთეკას სწორი კალიბრაციის მისაღებად.

მიჰყევით შემდეგ ნაბიჯებს

  • ინსტრუმენტების ქვეშ შეარჩიეთ Arduino, როგორც ISP პროგრამისტი
  • აირჩიეთ დაფა "ATtiny85 @ 8MHz (შიდა ოსცილატორი; BOD გამორთულია)"
  • მე ვივარაუდებ, რომ თქვენ გაქვთ ISP კავშირი, როგორც აღწერილია ადრე დაკავშირებამდე, წინააღმდეგ შემთხვევაში გააკეთეთ კავშირები
  • ჩამტვირთავი ჩამტვირთავი
  • ამ ჩატვირთვისას აქვს კონფიგურირებული სხვადასხვა ქინძისთავები სერიული ინტერფეისისთვის, გამოიყენეთ ეს კონფიგურაცია მხოლოდ მიმდინარე ჩამტვირთველისთვის

- PB4 (pin3 RX) to TX in FT232RL attiny85 - PB3 (pin2 TX) to RX in FT232RL attiny85 - GND (pin4) to GND on FT232RL რადგან attiny85 უკვე იკვებება arduino– ით თქვენ არ გჭირდებათ დაკავშირება 5v FT232RL– ზე, სხვაგვარად დაკავშირება: attiny85 VCC (pin8) 5V FT232RL– ზე

  • ატვირთეთ tinytuner მაგალითი attiny85– ზე
  • გახსენით ეკრანის პროგრამა სერიული კომუნიკაციის მონიტორინგისთვის: screen /dev /ttyUSB0 9600
  • აღადგინეთ attiny85, რომელიც აკავშირებს RESET pin- ს (pin1) GND- თან (მხოლოდ ერთი წუთით), მისასალმებელი შეტყობინება უნდა გამოჩნდეს ეკრანის ფანჯარაში
  • განაგრძეთ ერთჯერადი 'x' სიმბოლოების გაგზავნა (გადაზიდვის გარეშე დაბრუნება; ხაზის კვება არ არის) სანამ კალიბრაცია დასრულდება
  • მინიშნეთ სადღაც დაკალიბრების მნიშვნელობა (OSCCAL = 0x). ეს არის ის ღირებულება, რომელიც თქვენ უნდა გამოაცხადოთ საბოლოო ესკიზებზე

ნაბიჯი 10: გაშიფრეთ თქვენი დისტანციური ღილაკები

ახლა დროა გავშიფროთ ჩვენი დისტანციური ღილაკები და მივანიჭოთ ისინი კომპიუტერის სპეციფიკურ გასაღებებს, ამისათვის მიყევით შემდეგ ნაბიჯებს:

  • შეარჩიეთ დაფა "ATtiny85 @ 16MHz (შიდა PLL; 4.3V BOD)" თუ არ იყენებთ კრისტალს, "ATtiny85 @ 16 MHz (გარე კრისტალი; 4.3 V BOD" წინააღმდეგ შემთხვევაში, შემდეგ დაწვით
  • ჩატვირთეთ ესკიზი:
  • თუ არ იყენებთ კრისტალს, გაუკეთეთ კომენტარი მწკრივში, რომელიც შეიცავს OSCCAL ცვლადს და მიანიჭეთ ის მნიშვნელობა, რომელიც იპოვეთ საათის დაკალიბრებისას.
  • მე ვთვლი, რომ სენსორი უკავშირდება ისე, როგორც აღწერილია ადრე, წინააღმდეგ შემთხვევაში შეაერთეთ იგი
  • მე ასევე ვვარაუდობ, რომ FT232RL სერია usb ადაპტერთან არის დაკავშირებული, წინააღმდეგ შემთხვევაში დააკავშირეთ
  • აღადგინეთ attiny85, რომელიც აკავშირებს RESET pin- ს (pin1) GND- თან (მხოლოდ ერთი წუთით)
  • რამდენჯერმე დააწკაპუნეთ დისტანციური მართვის ღილაკებზე და შეამოწმეთ ეკრანის ფანჯარა, თქვენ უნდა მიუთითოთ ბოლო ჩანაწერი თითოეული ჩანაწერისთვის, თითოეულ ღილაკს შეუძლია წარმოადგინოს 2 განსხვავებული ნომერი

მაგალითი:

მიღებულია D44 3396 მიღებულია 544 1348

ანოტირება გაუკეთეთ 3396 და 1348 ღილაკებს, რომლებიც უბრალოდ დააჭერთ, შემდეგ თქვენ უნდა გადაწყვიტოთ რისი გაკეთება გსურთ ამ ღილაკთან ერთად. მაგალითად, მე მინდა, რომ ღილაკმა გამოაგზავნოს მულტიმედიური კლავიში "მოცულობა", შემდეგ უნდა ვიპოვო პირადობის მოწმობა ამ კოდისათვის. ამისათვის გადმოწერეთ PDF:

დააკვირდით განყოფილებას "კლავიატურის/კლავიატურის გვერდი" გვერდი 53 და გამოიყენეთ რიცხვები სვეტში "გამოყენება ID" (დეკემბერი) თქვენი დისტანციური ღილაკების კლავიატურის კოდებთან დასაკავშირებლად. ჩვენს მაგალითში ჩვენ ვხედავთ, რომ "მოცულობის გაზრდის" გასაღები კოდია: 128.

შეცვალეთ ფაილი ფაილი UsbKeyboard.h შიგნით UsbKeyboard ბიბლიოთეკაში v-usb პაკეტიდან, რომელიც ჩვენ ადრე დავაყენეთ და დაამატეთ არსებულ განმარტებებს, თუ ის უკვე არ არის იქ:

#განსაზღვრეთ KEY_VOL_UP 128

როდესაც ჩვენ დავასრულებთ ყველა ჩვენს დისტანციურ/ღილაკებს და ყველა განსაზღვრულ ფაილს UsbKeyboard.h მზად ვართ ჩვენ შეგვიძლია გადავიდეთ ბოლო საფეხურზე.

ნაბიჯი 11: ჩატვირთვა საბოლოო ესკიზი და იმედი საუკეთესო

ჩატვირთვა საბოლოო ესკიზი და იმედი საუკეთესო!
ჩატვირთვა საბოლოო ესკიზი და იმედი საუკეთესო!
ჩატვირთვა საბოლოო ესკიზი და იმედი საუკეთესო!
ჩატვირთვა საბოლოო ესკიზი და იმედი საუკეთესო!

ჩვენ ახლა გვაქვს ყველა დისტანციური ღილაკი გაშიფრული, ფაილი UsbKeyboard.h ივსება ჩვენი ძირითადი კოდებით, ასე რომ, ახლა ჩვენ შეგვიძლია ჩავტვირთოთ arduino IDE– ში საბოლოო ესკიზი:

github.com/venumz/ATtiny85-USB-IR-receiver…

ეს ფაილი არის ზუსტი ფაილი, რომელსაც მე ვიყენებ ჩემი მიმღებისთვის და მუშაობს 2 სხვადასხვა დისტანციური მართვის პულტზე, ასე რომ თქვენ აშკარად გჭირდებათ მისი განახლება, რათა მუშაობდეთ თქვენს დისტანციურ/ებზე.

თუ არ იყენებთ კრისტალს, გაუკეთეთ კომენტარი მწკრივში, რომელიც შეიცავს OSCCAL ცვლადს და მიანიჭეთ ის მნიშვნელობა, რომელიც იპოვეთ საათის დაკალიბრებისას.

გაითვალისწინეთ, რომ მარყუჟის ფუნქციაში არის ბევრი ასეთი განცხადება:

if (results.value == 3405 || results.value == 1357) {// ისარი ზემოთ

if (lastStroke! = results.value) UsbKeyboard.sendKeyStroke (KEY_ARROW_UP);

}

თქვენ უნდა შექმნათ თქვენი საკუთარი განცხადებები, თითო ღილაკზე დისტანციური მართვის პულტში. "თუ" მდგომარეობაში თქვენ უნდა ჩაწეროთ შედეგები. შეაფასეთ ის ფასეულობები, რომლებიც იპოვეთ თქვენი დისტანციური კოდის გაშიფვრაში და როგორც UsbKeyboard.sendKeyStroke მეთოდის არგუმენტი თქვენ უნდა განათავსოთ ერთ -ერთი უკვე განსაზღვრული საკვანძო კოდი ფაილში UsbKeyboard.h.

პირობა "if (lastStroke! = Results.value)" საჭიროა, რადგან ზოგიერთი დისტანციური მართვის პულტი აგზავნის ერთსა და იმავე კოდს ორჯერ დარტყმაში და ეს ხელს უშლის მეორე დარტყმას. მე არ ვარ მთლიანად დარწმუნებული და ეს შეიძლება იყოს დამოკიდებული IR პროტოკოლზე, რომელიც დაპროგრამებულია თქვენს პულტში (მე ნამდვილად არ ვარ IR პროტოკოლების ექსპერტი), მაგრამ ჩემი დისტანციური მართვის გამოცდილების თანახმად, თითოეულ ღილაკს შეუძლია შექმნას 2 განსხვავებული კოდი და ღილაკზე დაჭერისას და დაჭერისას ის აგზავნის იმავე კოდს, მაგრამ თუ კვლავ დააჭირეთ ღილაკს ის მეორეს აგზავნის. ასე რომ, როგორც ჩანს, კოდები იგზავნება ალტერნატიული გზით, მე ვფიქრობ, რომ ეს არის სტანდარტული რეჟიმი იმის ცოდნა, რამდენჯერ დააჭერი ნამდვილად ღილაკს.

კარგი, ჩვენ თითქმის დავასრულეთ, უბრალოდ ატვირთეთ საბოლოო ესკიზი, დაუკავშირეთ კომპიუტერს და ნახეთ როგორ მიდის.

ამ ნაბიჯის გადადგმისთვის უკეთესია, თუ გამორთავთ როგორც arduino- ს, ასევე USB- ს სერიულ ადაპტერს და მხოლოდ ამის შემდეგ შეაერთეთ USB თქვენს კომპიუტერის პორტში (თუ რამე არასწორედ წავა, თქვენი წრე გამართული იქნება უფრო მარტივი).

თუ ყველაფერი კარგად მუშაობს, ტერმინალის გახსნისას და dmesg ბრძანების გაგზავნისას თქვენ უნდა ნახოთ მსგავსი რამ ამ ნაბიჯის პირველი სურათის მსგავსი. თუ იყო პრობლემები, თქვენ უნდა გქონდეთ შეცდომები, როგორიც არის მეორე სურათზე და თქვენ უნდა დაიწყოთ თქვენი მიკროსქემის და/ან პროგრამული უზრუნველყოფის გამართვა. ერთ – ერთი საწყისი შეცდომის წყარო, რომელიც მე მქონდა, იყო USB კერა, რომელიც არ იმუშავებდა ჩემს IR მიმღებთან (სხვები მუშაობდნენ)… ასე რომ, ამ ბოლო საფეხურისთვის უმჯობესია IR მიმღების პირდაპირ კომპიუტერის პორტში ჩართვა. შეცდომების პოვნა შეიძლება ძნელი იყოს, მაგრამ ბოლოს, ჩემნაირად, თქვენ ბევრს ისწავლით და ფასიც ღირს, გარწმუნებთ.

ეს ყველაფერია, გამაგებინეთ თუ შეამჩნევთ რაიმე შეცდომას ამ სასწავლო ინსტრუქციაში და ისიამოვნეთ თქვენი ახალი IR USB მიმღებით!

გირჩევთ: