Სარჩევი:

ვირტუალური კარის ღილაკი Mongoose OS და XinaBox– ის გამოყენებით: 10 ნაბიჯი
ვირტუალური კარის ღილაკი Mongoose OS და XinaBox– ის გამოყენებით: 10 ნაბიჯი

ვიდეო: ვირტუალური კარის ღილაკი Mongoose OS და XinaBox– ის გამოყენებით: 10 ნაბიჯი

ვიდეო: ვირტუალური კარის ღილაკი Mongoose OS და XinaBox– ის გამოყენებით: 10 ნაბიჯი
ვიდეო: Ford Fusion My Key მოხსნა 2024, ნოემბერი
Anonim
ვირტუალური კარის ღილაკი Mongoose OS და XinaBox– ის გამოყენებით
ვირტუალური კარის ღილაკი Mongoose OS და XinaBox– ის გამოყენებით

მონგუსისა და xChips– ის გამოყენებით, ჩვენ ვირტუალური კარის ღილაკი გავაკეთეთ. იმის მაგივრად, რომ ფიზიკურ ღილაკზე პერსონაჟის ხმა გაისმა, მათ შეუძლიათ ამის გაკეთება თავად.

ნაბიჯი 1: ნივთები, რომლებიც გამოიყენება ამ პროექტში

აპარატურის კომპონენტები

  • XinaBox CW02 x 1 თქვენ შეგიძლიათ გამოიყენოთ CW01
  • XinaBox IP01 x 1
  • XinaBox PU01 x 1 თქვენ შეგიძლიათ გამოიყენოთ IP01 ენერგიისთვის, თუ არ აპირებთ მეტი მოდულის პროგრამირებას.
  • XinaBox OC03 x 1
  • XinaBox XC10 x 1 "წებო", რომელიც ამუშავებს ყველაფერს!

პროგრამული უზრუნველყოფის პროგრამები და ონლაინ სერვისები

Mongoose OS მართლაც გასაოცარი და მარტივი IoT განვითარების ინსტრუმენტი … და უფასოდ

ნაბიჯი 2: ისტორია

ჩვენს მისაღებში საჭირო იყო ჩვენი თანამშრომლების აჟიოტაჟი, ამიტომ ჩვენ გადავწყვიტეთ ჩვენი მედიკამენტების მიღება და ვირტუალური ღილაკის შექმნა. ეს კოდი გაძლევთ საშუალებას გააგზავნოთ RPC (დისტანციური პროცედურის ზარი), რომელიც ჰგავს ჩვეულებრივ HTTP ზარს ნებისმიერი ბრაუზერიდან. ჩვენ გამოვიყენეთ Mongoose, რადგან მასთან მუშაობა მართლაც ადვილი და სწრაფია და ეს არის ჩაშენებული OTA (Over The Air) კოდის განახლება, რაც იმას ნიშნავს, რომ ჩვენ შეგვიძლია დავაინსტალიროთ ჩვენი ტექნიკა და დროთა განმავლობაში მაინც გავაუმჯობესოთ firmware, მისი გადაპროგრამებისათვის დაშლის გარეშე.

ნაბიჯი 3: მომზადება

  • დააინსტალირეთ Mongoose-OS: პირდაპირ წინ, უბრალოდ მიყევით ამ ძალიან მარტივ ნაბიჯებს თქვენი OS– სთვის აქ:
  • დააწკაპუნეთ IP01 და CW02 ერთად XC10 კონექტორის გამოყენებით. იხილეთ სურათი ქვემოთ:
გამოსახულება
გამოსახულება
  • ჩადეთ IP01 თქვენს USB პორტში
  • დარწმუნდით, რომ IP01 კონცენტრატორები არის B და DCE პოზიციებში.
  • გადაათრიეთ Mongoose-OS CW02 ბრძანების სტრიქონიდან. Ამგვარად:

cd

ექსპორტი MOS_PORT = bin/mos flash esp32

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

cd

ბინ/მოს

ნაბიჯი 4: კონფიგურაცია

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

დააყენეთ I2C ქინძისთავები xChips სტანდარტზე:

bin/mos config-set i2c.scl_gpio = 14 i2c.sda_gpio = 2

შეაერთეთ თქვენი CW02 თქვენს WiFi- ს:

bin/mos wifi

გათიშეთ WiFi AP რეჟიმში და შექმენით დომენის სახელი, ასე რომ თქვენ შეგიძლიათ დაუკავშირდეთ CW01– ს მასპინძლის სახელით, სწორი IP მისამართის საპოვნელად. ეს იმუშავებს მხოლოდ იმ შემთხვევაში, თუ:

  • თქვენ გათიშავთ WiFi- ს AP რეჟიმში, როგორც ამას ქვემოთ ვაკეთებთ.
  • ან გამოიყენეთ Mac ან დააინსტალირეთ Bonjour თქვენს Windows მოწყობილობაზე.

bin/mos დარეკეთ Config. Set '{"config": {"wifi": {"ap": {"enable": false}}}}'

bin/mos call Config. Set '{"config": {"dns_sd": {"enable": true}}}' bin/mos call config. Set '{"config": {"dns_sd": {"host- სახელი ":" xinabox_switch "}}}

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

bin/mos დარეკეთ Config.save '{"reboot": true}'

ამის შემდეგ ძალიან სწრაფად თქვენ უნდა შეგეძლოთ ping xinabox_switch.local

ნაბიჯი 5: ინსტალაცია

გათიშეთ IP01 კომპიუტერიდან და ააწყვეთ წრე ზედა სურათის მიხედვით.

შეაერთეთ PU01 (ან თუ თქვენ გადაწყვიტეთ გამყარებაში IP01) USB დენის წყაროსთან. შეაერთეთ მავთულები თქვენი არსებული გადამრთველიდან (დატოვეთ ეს, მხოლოდ იმ შემთხვევაში) OC03- თან (პოლარობას მნიშვნელობა არ აქვს). იხილეთ ფრიზინგის ნახაზი.

ერთხელ ჩართვისას და იმის დასადგენად, რომ თქვენ ნამდვილად ესაუბრებით თქვენს xCW02– ს, რაც შეეხება BUS– ის სკანირებას, იგივე I2C ავტობუსს:

bin/mos --port ws: //xinabox_switch.local/rpc დარეკეთ I2C. სკანირება

თუ ყველაფერი მუშაობს და თქვენი xOC03 სწორად არის დაინსტალირებული, თქვენ უნდა ნახოთ რიცხვი '56', რომელიც ბრუნდება. ეს არის OC03- ის I2C მისამართი ათწილადში (ექვსკუთხედში არის 0x38).

ნაბიჯი 6: პროგრამირება

  • ახლა გახსენით Mongoose კონსოლის რეჟიმში, იხილეთ ზემოთ. ის უნდა გაიხსნას ფანჯრით, სადაც ითხოვს პორტის ნომერს, შეიყვანეთ: ws: //xinabox_switch.local/rpc
  • ის დაუკავშირდება CW02– ს და გააცნობიერებს, რომ ერთეული უკვე ციმციმებულია და უკავშირდება WiFi– ს, ასე რომ ის მხოლოდ 3 გამშვებ ნიშანს მისცემს. დახურეთ ფანჯარა და განაახლეთ ფაილების სია
  • დააკოპირეთ და ჩასვით ქვემოთ კოდი init.js და დააწკაპუნეთ შენახვაზე+გადატვირთვაზე
  • თქვენი წრე ახლა დაპროგრამებულია.

ნაბიჯი 7: ტესტი

თქვენ ახლა განახორციელეთ სხვა RPC ზარი, ასე რომ თქვენი ტერმინალიდან შეგიძლიათ შეიყვანოთ:

bin/mos --port ws: //xinabox_switch.local/rpc ზარის გადამრთველი

… და თქვენი ზარი უნდა წახვიდეს 2 წმ. თქვენ ასევე შეგიძლიათ ამის გაკეთება - თითქმის - ნებისმიერი ბრაუზერიდან:

xinabox_switch.local/rpc/Switch

… იგივე ეფექტით.

ნაბიჯი 8: შემდეგი ნაბიჯი

თქვენ შეგიძლიათ გამოიყენოთ ნებისმიერი ინსტრუმენტი, რომელსაც შეუძლია გათიშოს URL. მე ამას ვაკეთებ Apple აპლიკაციიდან სახელწოდებით Workflow, რაც მაძლევს საშუალებას გავაკეთო ეს ჩემი ტელეფონიდან ან როგორც გართულება ჩემი Apple Watch– დან, მაგრამ ბევრი სხვა ვარიანტი არსებობს. აქ არის ჩემი Workflow სკრიპტი, მაგრამ მყარი კოდირებული IP მისამართით: ისიამოვნეთ!

გამოსახულება
გამოსახულება

Apple აპლიკაცია: სამუშაო ნაკადი - აქ მყარი კოდირებული IP მისამართით

ნაბიჯი 9: სქემა

Buzzer Circuit დააინსტალირეთ OC03 არსებული ღილაკის პარალელურად.

გადმოწერეთ აქ.

OC03 წრე დააინსტალირეთ OC03 არსებული ღილაკის პარალელურად.

გადმოწერეთ აქ.

გამოსახულება
გამოსახულება

ნაბიჯი 10: კოდი

init.js JavaScript თქვენი მთავარი და ერთადერთი კოდი ამ პროექტისათვის.

დატვირთვა ('api_config.js');

დატვირთვა ('api_gpio.js'); დატვირთვა ('api_i2c.js'); დატვირთვა ('api_net.js'); დატვირთვა ('api_sys.js'); დატვირთვა ('api_timer.js'); დატვირთვა ("api_rpc.js"); მოდით led = Cfg.get ('pins.led'); მოდით adr = 0x38; ნება ავტობუსი = I2C.get (); I2C.writeRegB (ავტობუსი, ადრ, 3, 0); I2C.writeRegB (ავტობუსი, ადრ, 1, 0); / * გამორთეთ მხოლოდ დარწმუნებისთვის */ ნება დაგვიანება = 2000; GPIO.set_mode (led, GPIO. MODE_OUTPUT); RPC.addHandler ('გადართვა', ფუნქცია (args) {GPIO.toggle (led); I2C.writeRegB (bus, adr, 3, 0); / * იმ შემთხვევაში, თუ OC03 ხელახლა შეერთდება * / I2C.writeRegB (ავტობუსი, ადრ, 1, 1); Timer.set (დაგვიანებით, ცრუ, ფუნქცია () {GPIO.toggle (led); I2C.writeRegB (bus, adr, 1, 0);}, null); true true;});

გირჩევთ: