Სარჩევი:

Arduino ბრაუზერის დაფუძნებული დისტანციური მართვა (linux): 9 ნაბიჯი (სურათებით)
Arduino ბრაუზერის დაფუძნებული დისტანციური მართვა (linux): 9 ნაბიჯი (სურათებით)

ვიდეო: Arduino ბრაუზერის დაფუძნებული დისტანციური მართვა (linux): 9 ნაბიჯი (სურათებით)

ვიდეო: Arduino ბრაუზერის დაფუძნებული დისტანციური მართვა (linux): 9 ნაბიჯი (სურათებით)
ვიდეო: CS50 2015 - Week 10 2024, ივლისი
Anonim
Arduino ბრაუზერზე დაფუძნებული დისტანციური მართვა (linux)
Arduino ბრაუზერზე დაფუძნებული დისტანციური მართვა (linux)
Arduino ბრაუზერზე დაფუძნებული დისტანციური მართვა (linux)
Arduino ბრაუზერზე დაფუძნებული დისტანციური მართვა (linux)

ჩვენ გვყავს ბავშვები. მე მიყვარს ისინი, მაგრამ ისინი მუდმივად მალავენ დისტანციური მართვის სატელიტს და ტელევიზიას, როდესაც ისინი ბავშვთა არხებს აყენებენ. მას შემდეგ რაც ეს ხდება რამდენიმე წლის განმავლობაში ყოველდღიურად და მას შემდეგ რაც ჩემმა საყვარელმა მეუღლემ საშობაოდ არდუინოს მიღების საშუალება მომცა გადავწყვიტე რომ დროა გავაკეთო რაიმე სასარგებლო (მის თვალში!) არდუინოსთან ერთად. ასე რომ, აქ ჩვენ გვაქვს ამის კულმინაცია: ვებ-ინტერფეისი Arduino– სთან, რომელიც ცვლის ჩემს დისტანციურ დისტანციას და ხელმისაწვდომია ჩემი შიდა ქსელიდან. როდესაც გავარკვევ, რატომ არ უშვებს ჩემი ethernet ფარი ჩემს arduino– ს ესკიზის შენარჩუნების მიზნით, მე დავწერ ახალ ჩანახატს, რომელიც იყენებს Ethernet ფარს როგორც ვებ სერვერს, რაც იმას ნიშნავს, რომ მე არ მჭირდება apache ჩემს კომპიუტერში დაყენებული. ადევნეთ თვალი, მე მივალ!

ნაბიჯი 1: წინაპირობები

წინაპირობები
წინაპირობები

ტექნიკა: არდუინოს მხარე: არდუინო - მე ვიყენებ Arduino Uno R2 პურის დაფას - თქვენი ადგილობრივი ელექტრონიკის მაღაზიას, ან სამზარეულოს თუ გსურთ ავთენტური პურის დაფის სამონტაჟო დანართი - მე გამოვიყენე ძველი პლასტმასის კოლოფი გამჭვირვალე სახურავით ერთი გატეხილი დისტანციური მართვისგან (მადლობა ბავშვებს!) ინფრაწითელი მიმღები - მე მივიღე ჩემი ჯადოსნური თვალის დისტანციური გამგრძელებელი ტრანზისტორი - მე გამოვიყენე BC547 რეზისტორი - მე გამოვიყენე 1.5k ohm ცვლადი რეზისტორი 1 კმ ომზე Breadboard jumper ხაზები - მე მივიღე ჩემი მყარი ბირთვიანი RJ45 საკაბელო ბორბლიდან კომპიუტერის მხარე: კომპიუტერი სერვერის სახით გამოიყენოს USB Arduino პროგრამული უზრუნველყოფა: Arduino პროგრამული უზრუნველყოფა - arduino.cc irremote ბიბლიოთეკიდან - https://www.arcfn.com/2009/08/multi-protocol- ინფრაწითელი დისტანციური ბიბლიოთეკა. html (მადლობა კენ, კარგი სამუშაო!) Apache ვებ სერვერი დაყენებული PHP– ით - apache.org შიდა IP მისამართი - ჩემია 192.168.0.9 თქვენი დისტანციური მართვის სურათი - google ან ფოტო კამერაზე გადაღებული. ჩემი გადავარჩინე 200x600 გარჩევადობით

ნაბიჯი 2: დაფის შექმნა

დაფის მშენებლობა
დაფის მშენებლობა

არდუინოსთვის პურის დაფის გამოყენება რეკომენდირებულია. მე დავამონტაჟე ჩემი არდუინო და პურის დაფა ერთსა და იმავე სათავსში და შევაერთე ყველა ქინძისთავი, რომელსაც მე რეგულარულად ვიყენებ პირდაპირ პურის დაფაზე მუდმივად. Arduino ქინძისთავები გამოიყენება ამ პროექტისათვის: 5v, დაფქული ციფრული ქინძისთავები 3, 11 (პინ 3 აკონტროლებს IR LED- ს, პინ 11 აკავშირებს IR მიმღებს)

ნაბიჯი 3: სქემატური

სქემატური
სქემატური

ეს სქემა ძალიან მარტივია, 4 კომპონენტი და 6 მავთული. IR LED კავშირები: შეაერთეთ რეზისტორის ერთი ფეხი Arduino ციფრულ პინთან 3 დაუკავშირეთ რეზისტორის მეორე ფეხი ტრანზისტორის ძირითად საყრდენს (ჩემს შემთხვევაში შუა ფეხი) შეაერთეთ ტრანზისტორის ემისი მიწასთან დააკავშირეთ კოლექტორი LED– ის ტრანზისტორი უარყოფით ფეხიზე (მოკლე ფეხი, LED– ის ბრტყელი მხარე) შეაერთეთ LED– ის დადებითი ფეხი (გრძელი ფეხი, მოსახვევი მხარე) 5v pin IR მიმღების კავშირებთან (თქვენ უნდა იპოვოთ pinout ამისთვის თქვენი კონკრეტული IR მიმღები): GND pin to ground VS pin to 5v VO pin to Arduino digital pin 11

ნაბიჯი 4: დაამატეთ Irremote ბიბლიოთეკა Arduino პროგრამულ უზრუნველყოფას

დაამატეთ Irremote ბიბლიოთეკა Arduino პროგრამულ უზრუნველყოფას
დაამატეთ Irremote ბიბლიოთეკა Arduino პროგრამულ უზრუნველყოფას

irremote არის დიდი ბიბლიოთეკა კენ შირიფის მიერ დაწერილი და ხელმისაწვდომია მისი ბლოგიდან https://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html ჩამოტვირთეთ ბიბლიოთეკა https:// arcfn.com/files/IRremote.zip და დააინსტალირეთ როგორც arduino– ს ნებისმიერი სხვა ბიბლიოთეკა. მის ბლოგს აქვს ბევრი სასარგებლო ინფორმაცია ბიბლიოთეკისა და მისი ინსტალაციის შესახებ.

ნაბიჯი 5: ჩაწერეთ კოდები თქვენი დისტანციური მართვის საშუალებით

აქ არის მოსაწყენი (მაგრამ გარდაუვალი) ნაწილის დასაწყისი: დისტანციური მართვის ყველა ღილაკის დაჭერა, გამომავალი სტრიქონის შენახვა და მისი ვირტუალური დისტანციური მართვის რუქის შედგენა. თქვენ უნდა გააკეთოთ ეს მხოლოდ ერთხელ, დაელოდეთ დაახლოებით 20 წუთს. დაიწყეთ ტექსტური რედაქტორი თქვენი გამომავალი ინფორმაციის შესანახად. შექმენით ახალი დოკუმენტი და ჩაწერეთ ყველა ღილაკი თქვენს დისტანციურ კონტროლზე, ერთი თითო სტრიქონში: ჩართეთ ქვემოთ მარცხნივ მარჯვნივ.. და სხვა შენი არდუინო ეს მაგალითი დისტანციურ კოდებს გადაყრის სერიულ პორტში. ჩართეთ სერიული პორტის მონიტორი და დააჭირეთ ღილაკს თქვენს დისტანციურ კონტროლზე. სერიული მონიტორის ფანჯარაში გამოჩნდება სტრიქონი: "დეკოდირებული *: * (* ბიტი)". დააკოპირეთ ეს ხაზი და შეინახეთ იგი თქვენს დოკუმენტში შესაბამის ხაზზე. გაიმეორეთ სანამ არ შეინახავთ ყველა გასაღებს ტექსტურ ფაილში. მე ვიცი, რამდენად სახალისოა ეს ნაჭერი, მე ეს ჯერჯერობით ორჯერ გავაკეთე: P ახლა ჩვენ გვჭირდება პატარა ძებნა და ჩანაცვლება ტექსტურ ფაილში: მოძებნეთ "დეკოდირებული" შეცვალეთ "" ძიებით ": 0x" შეცვალეთ "," ძიება "(" ჩაანაცვლეთ "," მოძებნეთ "ბიტებით" "შეცვალეთ" "ასე რომ, ხაზისთვის, როგორიცაა: დეკოდირებული NEC: 0x000110 (15 ბიტი) ჩვენ ახლა უნდა გვქონდეს ხაზი, რომელიც ამბობს: NEC, 000110, 15

ნაბიჯი 6: შექმენით ვებ გვერდი თქვენი დისტანციური მართვისთვის

ჩვენ ახლა უნდა დავხატოთ ღილაკები თქვენი სურათის დისტანციური მართვის საშუალებით.

მე გამოვიყენე https://www.maschek.hu/imagemap/imgmap ღილაკების დასადგენად და შევცვალე კოდი, რომელსაც ვებგვერდი გაძლევთ, რომ ის იმუშაოს.

დააწკაპუნეთ "გამოიყენეთ სურათი თქვენს კომპიუტერში: [აირჩიეთ ფაილი]", შეარჩიეთ თქვენი სურათი, დააწკაპუნეთ [ატვირთვაზე], დააწკაპუნეთ [მიიღოს] ჩამოაგდეთ ოთხკუთხედები, წრეები და ა.შ. თითოეულ ღილაკზე. HREF- ისთვის დააყენეთ /remote.php?command= და ტექსტის დოკუმენტიდან ამ ღილაკის ხაზი, მაგალითად /remote.php?command=NEC, 000110, 15 გონივრული იქნება (და უკიდურესად დაეხმაროთ გამართვაში), თუ თქვენ ასევე შეავსებთ Alt: ღილაკის სახელით, მაგრამ ეს თქვენზეა დამოკიდებული.

გაიმეორეთ თითოეული ღილაკისთვის.

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

აქ არის ჩემი სრული ვებ გვერდი, უბრალოდ შეცვალეთ…

საკუთარი კოდით ზემოთ და შეინახეთ როგორც დისტანციური. php თქვენს ვებ დირექტორიაში (/var/www linux) დისტანციური მართვის სურათებთან ერთად. შეცვალეთ ხაზები თქვენი საკუთარი სურათებისთვის:

"https://www.w3.org/TR/html4/loose.dtd">

Arduino LED კონტროლი

ნაბიჯი 7: ატვირთეთ დისტანციური მართვის კოდი თქვენს არდუინოში

ატვირთეთ დისტანციური მართვის კოდი თქვენს არდუინოში
ატვირთეთ დისტანციური მართვის კოდი თქვენს არდუინოში

შექმენით ახალი ესკიზი და ჩასვით მასში შემდეგი კოდი:/ * * WebRemote * IR LED უნდა იყოს დაკავშირებული Arduino PWM pin 3. * ვერსია 0.1 ივლისი, 2009 * ეს კოდი საავტორო უფლებებს გრეგორი ფენტონს, https://labby.co. uk/2012/02/irremote-arduino- ექსპერიმენტი/ * IRremote ბიბლიოთეკა საავტორო უფლება 2009 კენ შირიფი, https://arcfn.com */ #შაბლონის ჩართვა ბეჭდვა და ოპერატორი << (Print & obj, T arg) {obj.print (arg); დაბრუნება obj; } ლოგიკური დასრულდა = ყალბი; char inData [64]; // ზომა შესაბამისი ბაიტის ინდექსი = 0; #განსაზღვრეთ EOP "\ n" IRsend irsend; void setup () {Serial.begin (9600); სერიული << "სერიული პორტი ინიციალიზებული" << EOP; } void loop () {სიმებიანი pch, sType, sTemp; char inChar, sTest, k; int sBits; გრძელი sHex; int i, j; while (1) {while (Serial.available ()> 0) {inChar = Serial.read (); if (ინდექსი == 0) {pch = ""; } if (inChar == '\ r' || inChar == '\ n' || inChar == '/') // EOP {დასრულდა = ჭეშმარიტი; ინდექსი = 0; შესვენება; } else {if (ინდექსი <64) // მასივის ზომა {pch += inChar; ინდექსი ++; }}} თუ (დასრულდა) {// მონაცემების გაანალიზება მონაცემებში აქ … pch.toUpperCase (); i = pch.indexOf ('')! = -1? pch.indexOf (''): pch.indexOf (','); sType = pch.substring (0, i); მე ++; // გამოტოვეთ ',' ან '' // მე ახლა მიუთითებს hex- ის დაწყების j = pch.lastIndexOf ('')! = -1? pch.lastIndexOf (''): pch.lastIndexOf (','); // j ახლა მიუთითებს ',' ან '' hex sHex = 0 შემდეგ; sTemp = pch. ქვესტრიქონი (i, j); if (sTemp.substring (0, 2) == სიმებიანი ("0X")) sTemp = sTemp.substring (2); for (i = 0; i <sTemp.length (); i ++) {k = sTemp ; თუ (! ((k> = '0' && k = 'A' && k <= 'F'))) შესვენება; sHex *= 16; თუ (k> = '0' && k <= '9') sHex += (k - '0'); წინააღმდეგ შემთხვევაში, თუ (k> = 'A' && k <= 'F') sHex + = ((k - 'A') + 10); თუ (! ((k> = '0' && k = 'A' && k <= 'F'))) შესვენება; } sTemp = pch.substring (j+1); sBits = 0; for (i = 0; i <sTemp.length (); i ++) {k = sTemp ; sBits *= 10; თუ (k> = '0' && k <= '9') sBits += (k - '0'); } if (sType.length ()> 0) {სერიული << pch << EOP << "კოდის ტიპი:" << sType << "Hex:"; Serial.print (sHex, HEX); სერიული << "ბიტი:" << sBits; } sendIt (sType, sHex, sBits); pch = ""; დასრულდა = 0; }}} void sendIt (სიმებიანი sType, გრძელი sHex, int sBits) {for (int i = 0; i <2; i ++) {if (sType.equals (String ("RC6"))) {{irsend.sendRC6 (sHex, sBits); } else if (sType.equals (სიმებიანი ("RC5"))) {irsend.sendRC5 (sHex, sBits); } else if (sType.equals (სიმებიანი ("SONY"))) {irsend.sendSony (sHex, sBits); } else if (sType.equals (სიმებიანი ("NEC"))) {if (! i) irsend.sendNEC (sHex, sBits); } else if (sType.equals (სიმებიანი (""))) {სერიული << "დაგვიანება" << EOP; დაგვიანება (450); } დაგვიანებით (30); }}

ნაბიჯი 8: დაუკავშირდით ვებ სერვერს თქვენი კომპიუტერიდან

დაუკავშირდით ვებ სერვერს თქვენი კომპიუტერიდან
დაუკავშირდით ვებ სერვერს თქვენი კომპიუტერიდან

.. ან ტელეფონი, ანდროიდი, iPad ან სხვა რამ: გადადით https:// webserver IP მისამართი/remote.php თქვენს ბრაუზერში ჩემთვის მისამართი არის https://192.168.0.9/remote.php, მაგრამ თქვენი უთუოდ განსხვავებული იქნება. თუ ყველაფერი მუშაობს, თქვენ უნდა ნახოთ დისტანციური მართვის სურათი, რომელზეც შეგიძლიათ დააჭიროთ ღილაკებს.

ნაბიჯი 9: სურვილისამებრ ნაბიჯი: შეცვალეთ თქვენი მასპინძლების ფაილი, რათა ის უფრო მარტივი იყოს

სურვილისამებრ ნაბიჯი: შეცვალეთ თქვენი მასპინძლების ფაილი, რომ მისი გამოყენება უფრო ადვილი იყოს
სურვილისამებრ ნაბიჯი: შეცვალეთ თქვენი მასპინძლების ფაილი, რომ მისი გამოყენება უფრო ადვილი იყოს

ნაბიჯი, რომელიც მე გადავდგი, იყო ჩემი მასპინძლების ფაილის (/etc/hosts linux– ზე, C: / Windows / System32 / Drivers / etc / host– ის Windows– ზე) რედაქტირება. გაითვალისწინეთ, რომ ამ ფაილის რედაქტირება შესაძლებელია მხოლოდ ადმინისტრაციული ბრძანების ფანჯარაში (windows) ან su (linux) ხაზის დამატება ip.add.re.ss დისტანციური ip.add.re.ss შეცვალეთ სერვერის IP მისამართით და შეინახეთ ფაილი რა თქვენ უნდა გააკეთოთ ეს ყველა მოწყობილობაზე, რომელზეც გსურთ წვდომა ვებ გვერდზე მოკლე სახელით. ახლა თქვენ შეგიძლიათ შეხვიდეთ დისტანციური მართვის საშუალებით

გირჩევთ: