Სარჩევი:
- ნაბიჯი 1: იდეა
- ნაბიჯი 2: კონტროლერის შექმნა
- ნაბიჯი 3: კონტროლერის მორგება
- ნაბიჯი 4: ხელსაწყოები სამკერვალო საქმის გასამარტივებლად
ვიდეო: დაცემა Stm32: დისტანციური მართვა სახლის მედია ცენტრისთვის: 4 ნაბიჯი (სურათებით)
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
ეს არის სრული პროტოტიპი სახლის მედია ცენტრის დისტანციური მართვისთვის smt32 მიკრო კონტროლერზე დაფუძნებული, stm32f103c8t6, რომელიც ცნობილია როგორც "bluepill" დაფა. დავუშვათ, თქვენ იყენებთ კომპიუტერს სახლის მედია ცენტრისთვის. ეს არის ძალიან მოქნილი გადაწყვეტა, რომლის საშუალებითაც შეგიძლიათ განათავსოთ უზარმაზარი ვიდეო ბიბლიოთეკა შიდა მყარ დისკზე, ან შეგიძლიათ ითამაშოთ ვიდეოდან ქსელიდან, მაგალითად youtube ან ასე შემდეგ, თქვენ საერთოდ არ გაწუხებთ კოდეკებთან ან ვიდეოს დაკვრასთან, რადგან ეს ძალიან ადვილია პროგრამული უზრუნველყოფის პლეერის განახლება ნებისმიერ დროს. ამ გადაწყვეტილების მთავარი მინუსი ის არის, რომ თქვენ უნდა გამოიყენოთ მაუსი და კლავიატურა თქვენი დაკვრის გასაკონტროლებლად. IR დისტანციური მართვა ბევრად უფრო მოსახერხებელია ამისათვის.
ამ სტატიაში მე ვაჩვენებ როგორ შევქმნათ საკუთარი დისტანციური მართვა ჩიპების დაფის დაფის გამოყენებით.
ნაბიჯი 1: იდეა
მთავარი იდეა ძალიან მარტივია: bluepill დაფაზე არის ჩასმული usb პორტი და შეუძლია იმოქმედოს როგორც USB HID კლავიატურა. თუ ჩვენ დავუერთებთ IR მიმღებს დაფაზე, მას შეუძლია თარგმნოს ბრძანება თქვენი IR დისტანციური მართვის საშუალებით ვირტუალური კლავიატურის "გასაღების დაჭერაზე". დამატებითი მძღოლები არ არის საჭირო!
ჩვენს ირგვლივ ბევრი IR პროტოკოლი არსებობს. VCS გამყიდველის თითოეულ ტელევიზორს აქვს საკუთარი IR პროტოკოლი. მაგრამ ყველა ამ პროტოკოლს აქვს რაღაც საერთო: ისინი იყენებენ პულსის მოდულაციას სიგნალის დასაკოდირებლად. ჩვეულებრივ, არსებობს გარკვეული წინასიტყვაობა: გრძელი იმპულსი პაკეტის პირველ ნაწილამდე. შემდეგ IR კონტროლი გადასცემს მთელ პაკეტს 0 და 1 და ამთავრებს გადაცემას დასრულების გრძელი პულსი. ბიტის დეკოდირებისათვის საჭიროა გავზომოთ სიგრძის პულსი და მწვერვალის სიგრძე. ჩვეულებრივ, ლოგიკის 0 და ლოგიკა 1 პიკის სიგრძე ერთნაირია, განსხვავება არის პულსის მთლიანი სიგრძეში.
Stm32 მიკრო კონტროლერებს აქვთ ჩამონტაჟებული ფუნქცია PWM სიგნალის გადასაღებად. მიკრო კონტროლერის თითქმის ყველა ტაიმერი შეიძლება შეიყვანოს "PWM სიგნალის გადაღებისას", როდესაც ტაიმერის არხის ცვლადები ინახავს პულსის საერთო სიგრძეს და მის პიკის სიგრძეს. აქ უნდა გამოვყო მცირედი დეტალი: როდესაც IR მიმღები იჭერს სიგნალს, ძაბვა მის სამუშაო პინზე ხდება 0 და უმოქმედო მდგომარეობაში ძაბვა სამუშაო პინში არის 5 ან 3.3 ვოლტი დამოკიდებულია IR მიმღების მიწოდების ძაბვაზე. ანუ მიმღები სიგნალს 'შებრუნებს'.
PWM გადაღების რეჟიმით stm32 მიკროკონტროლი შეიძლება ადვილად იქცეს IR დისტანციურ მთარგმნელად IR დისტანციურიდან კლავიატურის კოდებზე. შემდეგ თქვენ შეგიძლიათ დაიწყოთ თქვენი საყვარელი ვიზუალიზაციის პროგრამული უზრუნველყოფა, მაგალითად Kodi of VLC, რომ ითამაშოთ თქვენი საყვარელი ფილმი მედია ცენტრში.
ნაბიჯი 2: კონტროლერის შექმნა
Stm32 მიკრო კონტროლერის დასაპროგრამებლად მინდა გირჩიოთ უფასო პროგრამული უზრუნველყოფა STM– დან: სისტემის სამუშაო მაგიდა (aka ac6) და დაფის კონფიგურაციის ინსტრუმენტი cubeMX. მიკრო კონტროლერში პროგრამული უზრუნველყოფის ასატვირთად შეიძლება გამოყენებულ იქნას ST-Link V2 ადაპტერის ჩიპური კლონი. სისტემის სამუშაო მაგიდის პროექტის ფაილები, რომლებიც თან ერთვის ამ ნაბიჯს, F1-IR_remote.zip ფაილს.
დაფის კონფიგურაციის ინსტრუმენტი ამარტივებს ჩვენი მიკრო კონტროლერის საწყისი აპარატურის კონფიგურაციის პროცესს.
თუ თქვენ იყენებთ სისტემის სამუშაო მაგიდის ინსტრუმენტს, შეგიძლიათ გამოიყენოთ გადმოწერილი პროექტი. მაგრამ თუ გსურთ უფრო დეტალურად გამოიძიოთ პროექტი, შეგიძლიათ შექმნათ დაფის კონფიგურაცია cubeMX– ში:
- შექმენით ახალი პროექტი და შეარჩიეთ დაფა stm32f103c8
- RCC მენიუში აირჩიეთ "ბროლის/კერამიკული რეზონატორი" "მაღალი სიჩქარის საათის (HSE)" ელემენტისთვის.
- აირჩიეთ "სერიული მავთული" "გამართვის" ელემენტისთვის SYS მენიუში.
-
დააკონფიგურირეთ ტაიმერი #2 (TIM2 მენიუ) PWM გადაღების რეჟიმში, როგორც ეს ნაჩვენებია სურათზე:
- მონა რეჟიმი -> გადატვირთვის რეჟიმი
- გამომწვევი წყარო -> TI1FP1
- საათის წყარო -> შიდა საათი
- არხი 1 -> შეყვანის გადაღების პირდაპირი რეჟიმი
- USB მენიუში დააყენეთ ჩამრთველი 'მოწყობილობა (FS)
- აირჩიეთ "ადამიანის ინტერფეისის მოწყობილობის კლასი (HID)" ჩამოსაშლელი მენიუს ელემენტი "Class of FS IP" პუნქტში USB_DEVICE მენიუში
- საათის კონფიგურაციის პანელში, დარწმუნდით, რომ მიაწოდეთ ტაიმერს #2 72 მეგაჰერცი, რადგან ჩვენ გვჭირდება ტაიმერის დათვლა თითოეულ 1 მეტრზე.
- კონფიგურაციის პანელში დააინსტალირეთ USB მოწყობილობა, როგორც ნაჩვენებია სურათზე
-
კონფიგურაციის პანელში დააკონფიგურირეთ ტაიმერი#2 შემდეგნაირად:
- პრესკალერი - 71 (0 -დან 71 -მდე) - 1 მიკრო წამი ტკიპა!
- Counter Mode - Up
- კონტრ პერიოდი - 39999 (ჩვენ უნდა შეგვეძლოს გრძელი პულსის გაზომვა)
- შეყვანის გადაღების არხი 1 - დაცემის ზღვარი (გახსოვდეთ, რომ სიგნალი IR მიმღებიდან არის შემობრუნებული)
PWM გადაღების რეჟიმში ტაიმერი#2 იმუშავებს შემდეგნაირად:
როდესაც დაცემული წინა მხარე გამოვლინდა, ტაიმერის მრიცხველი შეინახება არხის 1 რეგისტრში და ტაიმერის მრიცხველი გადატვირთული იქნება 0. -ით, შემდეგ ტაიმერი აგრძელებს მიმართულების ათვლას. ასე რომ, ჩვენ შეგვიძლია მარტივად გავზომოთ პულსის სიგრძე მიკრო წამებში.
სტანდარტულად STM32 USB HID კლასი ახდენს USB მაუსის სიმულაციას. აქ თქვენ ნახავთ ინსტრუქციას, რომ კონტროლერი კლავიატურად აქციოთ.
ნაბიჯი 3: კონტროლერის მორგება
პროექტი მუშაობს Panasonic დისტანციური მართვისა და Kodi მედია ცენტრის საშუალებით. თქვენი საკუთარი კონტროლერის პროექტის შესაქმნელად თქვენ უნდა დაამატოთ კოდის მასივი თქვენი დისტანციური მართვისთვის, როგორც ეს გავაკეთე Panasonic დისტანციური მართვისთვის (panasonicCode) Inc/code.h სათაურში. როგორც ხედავთ, ყველა ბრძანებას აქვს უნიკალური ID (IRcommmand enum). არსებობს 24 ბრძანება (0-23), რომლებიც აღიარებულია პროექტის მიერ. ბრძანება დალაგებულია შესაბამისობის მიხედვით.
typedef enum {IR_play = 0, IR_stop, IR_pause, IR_forward, IR_rewind, IR_last_channel, IR_OSD, IR_prevous_menu, IR_left, IR_right, IR_up, IR_down, IR_enter, IR_chapter_next, IR_chapter_preyed, IR_sum_ IR, IR, IR_power, IR_unknown} IR ბრძანება;
const uint16_t kbrd_kodi = {HID_KEY_P, HID_KEY_X, HID_KEY_SPACE, HID_KEY_F, HID_KEY_R, HID_KEY_0, HID_KEY_M, HID_KEY_BACKSPACE, HID_KEY_LEFT, HID_KEY_RIGHT, HID_KEY_UP, HID_KEY_DOWN, HID_KEY_ENTER, HID_KEY_DOT, HID_KEY_COMMA, HID_KEY_S, HID_KEY_I, HID_KEY_T, HID_KEY_L (uint16_t (HID_LEFT_CTRL) << 8) | HID_KEY_T, HID_KEY_V, HID_KEY_Z, HID_KEY_W, HID_KEY_C};
const uint32_t panasonicCode = {0xd00505d, 0xd00000d, 0xd00606d, 0xd00525f, 0xd00929f, 0x100eced, 0xd00101d, 0x1002b2a, 0x1007273, 0x100f2f3, 0x1005253, 0x100d2d3, 0x1009293, 0x1002c2d, 0x100acad, 0x1009c9d, 0x1008e8f, 0x1004e4f, 0x100cecf, 0x1000e0f, 0x180c041, 0x1801091, 0x180a021, 0xd00bcb1};
შემდეგ თქვენ უნდა დაამატოთ თქვენი საკუთარი დისტანციური მართვის init () მეთოდი IR.cpp- ში addRemote () ფუნქციით. ფუნქციის არგუმენტებია:
- ბიტების რაოდენობა პაკეტში
- პაკეტის სათაურის სიგრძე
- "ნულოვანი" ბიტის სიგრძე
- "ერთი" ცოტა სიგრძე
- მაჩვენებელი კოდის მასივზე
- მასივის რიცხვითი ელემენტები
void IRcmd:: init (void) {addRemote (48, 5252, 902, 1755, panasonicCode, sizeof (panasonicCode)/sizeof (uint32_t));
}
ასევე ფაილი შეიცავს სხვა ცხრილს ბრძანებების კლავიატურულ კოდებად გადასაყვანად. Kbdr_kodi მასივი შეიცავს Kodi მედია ცენტრის ძირითად კოდებს. თქვენ შეგიძლიათ დაამატოთ სხვა მასივი თქვენი საკუთარი მედია ცენტრის პროგრამისთვის, მაგალითად, vlc player. თუ თქვენ დაამატებთ სხვა მედია ცენტრის პროგრამულ ცხრილს, თქვენ შექმნით სხვა ობიექტს KBD და ინიციალიზებთ მას main.cpp- ში.
ნაბიჯი 4: ხელსაწყოები სამკერვალო საქმის გასამარტივებლად
საცავში არის კიდევ ორი პროექტი
- IR გამოიძიოს - საშუალებას გაძლევთ გაზომოთ თქვენი დისტანციური მართვის სიგნალების დროის პარამეტრები.
- IR_capture - საშუალებას გაძლევთ მიიღოთ თქვენი დისტანციური მართვის HEX კოდები.
უბრალოდ ჩატვირთეთ IR საგამოძიებო პროექტი და დააკავშირეთ Bluepill დაფის USB პორტი თქვენს კომპიუტერში. შემდეგ გაუშვით ნებისმიერი ტერმინალური პროგრამა ვირტუალური სერიული პორტის მოწყობილობაზე, შესაბამისი stm32 დაფაზე. სანამ დისტანციურ ღილაკებს დააჭერთ, პროგრამა ზომავს მიღებულ იმპულსებს და ბეჭდავს საშუალო დროს სხვადასხვა პულსისთვის. ის უნდა გაამარტივოს პაკეტის სათაურის პულსის სიგრძის გამოვლენა, ნულოვანი და ერთი ბიტი.
IR საგამოძიებო პროექტში ტაიმერი #2 მუშაობს PWM გადაღების რეჟიმში ორი არხით: პირველი არხი იკავებს მთელ პულსის სიგრძეს და არხი 2 აღწევს პიკის სიგრძეს. როდესაც დაცემული სიგნალის ზღვარი გამოვლენილია, ტაიმერის მნიშვნელობა შეინახება არხის პირველ რეგისტრში და ტაიმერი გადატვირთულია 0. როდესაც სიგნალის ამომავალი ზღვარი გამოვლინდა, ტაიმერის მრიცხველი შეინახება არხის 2 რეგისტრში.
თქვენი დისტანციური მართვის ღილაკის კოდების გადასაღებად, IR_capture პროექტი შეიძლება გამოყენებულ იქნას. Main.c ფაილში თქვენ უნდა დაამატოთ დისტანციური განმარტება, როგორც ეს:
IRcode panasonic = {.hdr = 5252,.bits = 48,.zero = 902,.one = 1755,.dev = 60};
- .hdr - სათაურის სიგრძე mks
- .bits - პაკეტში ბიტების რაოდენობა
- . ნული - ნულოვანი ბიტის სიგრძე
- .ერთი - სიგრძე ერთი ბიტი
- .dev - გადახრა (განსხვავება დროში, რომლის მიღებაც შესაძლებელია). ჩვეულებრივ, ეს არის ყველაზე პატარა სიგრძის 1/10.
შემდეგ დაამატეთ თქვენი დისტანციური მართვის პულტის სიას:
const IRcode* remote [2] = {& panasonic, & pioneer};
გირჩევთ:
LED RF დისტანციური მართვის დისტანციური მართვა "არაფრის"!: 5 ნაბიჯი
LED RF დისტანციური მართვის დისტანციური მართვა "არაფრის"!: ამ პროექტში მე გაჩვენებთ თუ როგორ უნდა გამოიყენოთ LED RF დისტანციური მართვის პულტი იმისათვის, რომ გააკონტროლოთ თითქმის ყველაფერი რაც გსურთ. ეს ნიშნავს, რომ ჩვენ უფრო ახლოს შევხედავთ RF დისტანციური გადაცემის პროცესს, წაიკითხავთ გაგზავნილ მონაცემებს Arduino µC– ით
დისტანციური Arduino დისტანციური მართვა: 5 ნაბიჯი
უსაფრთხო Arduino დისტანციური: ეს არის მაგალითი იმისა, თუ როგორ უნდა გააკეთოთ ულტრა უსაფრთხო უკაბელო (ავტოფარეხი) დისტანციური. ჩვეულებრივ დისტანციურ დისკებს აქვს მოძრავი კოდის ტიპის უსაფრთხოება, რომლის გვერდის ავლით ნებისმიერი მოწინავე ქურდი შეძლებს. ეს დისტანციური სისტემა ეყრდნობა 16 ბაიტიანი ღილაკის გამოყენებას, ასე რომ მისი გატეხვა იქნება
აკონტროლეთ საყოფაცხოვრებო ტექნიკა LoRa - ლორა სახლის ავტომატიზაციაში - LoRa დისტანციური მართვა: 8 ნაბიჯი
აკონტროლეთ საყოფაცხოვრებო ტექნიკა LoRa | ლორა სახლის ავტომატიზაციაში | LoRa დისტანციური მართვა: აკონტროლეთ და ავტომატიზირეთ თქვენი ელექტრო ტექნიკა დიდი დისტანციიდან (კილომეტრი) ინტერნეტის გარეშე. ეს შესაძლებელია LoRa– ს საშუალებით! ჰეი, რა ხდება ბიჭებო? აქარში აქ CETech– დან. ამ PCB– ს ასევე აქვს OLED დისპლეი და 3 რელე, რომელიც
გადააკეთეთ (მხოლოდ შესახებ) ნებისმიერი მედია ფაილი უფასოდ (მხოლოდ დაახლოებით) ნებისმიერ სხვა მედია ფაილზე უფასოდ!: 4 ნაბიჯი
კონვერტაციის (მხოლოდ შესახებ) ნებისმიერი მედია ფაილი (მხოლოდ შესახებ) ნებისმიერი სხვა მედია ფაილი უფასოდ!: ჩემი პირველი სასწავლო, გაიხარე! ყოველ შემთხვევაში, მე Google- ში ვეძებდი უფასო პროგრამას, რომელიც გადააკეთებდა ჩემს Youtube.flv ფაილებს იმ ფორმატში, უფრო უნივერსალურია, როგორიცაა. wmv ან.mov. მე ვეძებდი უამრავ ფორუმს და ვებსაიტს და შემდეგ ვიპოვე პროგრამა სახელწოდებით
დისტანციური დისტანციური მართვა: 11 ნაბიჯი (სურათებით)
დისტანციური მართვა: მე მყავს ახალშობილი ბავშვი და ის არ ფიქრობს, რომ მან უნდა დაიძინოს მანამ, სანამ მე და ჩემმა ცოლმა მასაც ვუსურვოთ. ერთი რამ, რაც მას ბედნიერს ხდის თავის საწოლში არის მობილური, რომელიც მის თავზეა ჩამოკიდებული. ასე რომ, როდესაც ის გაიღვიძებს, თუ ჩვენ გვჭირდება კიდევ 25 წუთი ან მეტი