فهرست مطالب:

دکمه درب مجازی با استفاده از سیستم عامل Mongoose و XinaBox: 10 مرحله
دکمه درب مجازی با استفاده از سیستم عامل Mongoose و XinaBox: 10 مرحله

تصویری: دکمه درب مجازی با استفاده از سیستم عامل Mongoose و XinaBox: 10 مرحله

تصویری: دکمه درب مجازی با استفاده از سیستم عامل Mongoose و XinaBox: 10 مرحله
تصویری: کنترل کامپیوتر و سیستم ها از راه دور: آموزش ریموت دسکتاپ | Remote Desktop 2024, نوامبر
Anonim
دکمه درب مجازی با استفاده از سیستم عامل Mongoose و XinaBox
دکمه درب مجازی با استفاده از سیستم عامل Mongoose و XinaBox

با استفاده از Mongoose و برخی از 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) داخلی آن است ، به این معنی که ما می توانیم فناوری خود را نصب کرده و به مرور زمان سیستم عامل را ارتقا دهیم ، بدون اینکه آن را برای برنامه ریزی مجدد جدا کنیم.

مرحله 3: آماده سازی

  • Mongoose-OS را نصب کنید: مستقیم ، فقط این مراحل بسیار آسان را برای سیستم عامل خود در اینجا دنبال کنید:
  • با استفاده از اتصال XC10 روی IP01 و CW02 کلیک کنید. تصویر زیر را مشاهده کنید:
تصویر
تصویر
  • IP01 را در درگاه USB خود قرار دهید
  • اطمینان حاصل کنید که سوئیچ های IP01 در موقعیت B و DCE قرار دارند.
  • Mongoose-OS را از خط فرمان خود به CW02 فلش کنید. مثل این:

سی دی

صادرات MOS_PORT = bin/mos flash esp32

شما همچنین می توانید فقط وارد کنسول شوید و بیشتر کارها را از آنجا انجام دهید ، اما در اینجا ما این کار را از خط فرمان انجام می دهیم ، بنابراین کار به سرعت انجام می شود. برای ورود به کنسول:

سی دی

bin/mos

مرحله 4: پیکربندی

در حالی که این مراحل را می توان در یک بیانیه طولانی انجام داد ، ما تصمیم گرفتیم آنها را از هم جدا کنیم ، و از آنجا که شما به هر نحوی آنها را کپی و جایگذاری می کنید ، اجازه دهید این کار را آسان کنیم:

پین های I2C را بر روی استاندارد xChips تنظیم کنید:

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

CW02 خود را به WiFi متصل کنید:

وای فای bin/mos

اتصال WiFi را در حالت AP قطع کرده و یک نام دامنه تنظیم کنید تا بتوانید به جای یافتن آدرس IP صحیح ، با نام میزبان به CW01 متصل شوید. این تنها در صورتی کار می کند که:

  • شما مانند وای فای را در حالت 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- name ":" xinabox_switch "}}}

و در نهایت شما باید CW02 را مجدداً راه اندازی کنید تا پیکربندی کار کند

bin/mos تماس با Config.ave '{"reboot": true} را ذخیره کنید

خیلی سریع بعد از این شما باید بتوانید xinabox_switch.local را پینگ کنید

مرحله 5: نصب

IP01 را از رایانه خود جدا کرده و مدار را مطابق تصویر بالا مونتاژ کنید.

PU01 (یا اگر تصمیم دارید از IP01 استفاده کنید) را به منبع تغذیه USB وصل کنید. سیمها را به موازات سوئیچ موجود خود متصل کنید (فقط در صورت امکان) به OC03 (قطبیت مهم نیست). به نقاشی Fritzing مراجعه کنید.

پس از روشن شدن و مشاهده اینکه در واقع با xCW02 خود صحبت می کنید ، اسکن BUS ، معروف به گذرگاه I2C:

bin/mos --port ws: //xinabox_switch.local/rpc با I2C تماس بگیرید. اسکن

اگر همه چیز کار می کند و xOC03 شما به درستی نصب شده است ، باید یک عدد '56' را مشاهده کنید. این آدرس I2C OC03 به صورت اعشاری است (در شش ضلعی 0x38 است).

مرحله ششم: برنامه نویسی

  • حالا Mongoose را در حالت کنسول باز کنید ، به بالا مراجعه کنید. باید با پنجره ای که شماره پورت را می خواهد باز شود ، وارد کنید: ws: //xinabox_switch.local/rpc
  • با CW02 ارتباط برقرار می کند و متوجه می شود که دستگاه قبلا فلش شده و به WiFi متصل شده است ، بنابراین فقط 3 علامت چک می دهد. پنجره را ببندید و لیست پرونده را بازخوانی کنید
  • کد زیر را در init.js کپی و جایگذاری کنید و روی ذخیره+راه اندازی مجدد کلیک کنید
  • مدار شما اکنون برنامه ریزی شده است.

مرحله 7: آزمایش کنید

شما اکنون یک تماس RPC دیگر پیاده سازی کرده اید ، بنابراین از ترمینال خود می توانید وارد کنید:

bin/mos --port ws: //xinabox_switch.local/rpc تماس Switch

… و زنگ شما باید 2 ثانیه کار کند. همچنین می توانید این کار را - تقریباً - از هر مرورگری انجام دهید:

xinabox_switch.local/rpc/Switch

… با همان جلوه

مرحله 8: مرحله بعد

می توانید از هر ابزاری که می تواند نشانی اینترنتی را خاموش کند استفاده کنید. من این کار را از طریق اپلیکیشنی به نام Workflow انجام می دهم ، که به من امکان می دهد آن را از طریق تلفن یا به عنوان عارضه ای از Apple Watch خود انجام دهم ، اما گزینه های بسیار دیگری نیز وجود دارد. در اینجا اسکریپت Workflow من است ، اما دارای آدرس IP سخت افزاری است: لذت ببرید!

تصویر
تصویر

Apple App: Workflow - اینجا با آدرس IP کد شده

مرحله نهم: شماتیک

مدار وزوز OC03 را به موازات دکمه موجود نصب کنید.

آن را از اینجا بارگیری کنید.

مدار OC03 OC03 را به موازات دکمه موجود نصب کنید.

آن را از اینجا بارگیری کنید.

تصویر
تصویر

مرحله 10: کد

init.js جاوا اسکریپت کد اصلی و تنها شما برای این پروژه.

بار ('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؛ let bus = I2C.get ()؛ I2C.writeRegB (bus، adr، 3، 0)؛ I2C.writeRegB (bus، adr، 1، 0)؛ / * فقط برای اطمینان مطمئن شوید */ اجازه دهید تاخیر = 2000؛ GPIO.set_mode (led ، GPIO. MODE_OUTPUT) ؛ RPC.addHandler ('Switch'، function (args) {GPIO.toggle (led)؛ I2C.writeRegB (bus، adr، 3، 0)؛ / * در صورت اتصال مجدد OC03 * / I2C.writeRegB (bus ، adr ، 1 ، 1) ؛ Timer.set (تأخیر ، نادرست ، عملکرد () {GPIO.toggle (led) ؛ I2C.writeRegB (bus ، adr، 1، 0)؛} ، null) ؛ true true؛}) ؛

توصیه شده: