Мазмуну:

Mongoose OS жана XinaBoxтун жардамы менен виртуалдык эшик баскычы: 10 кадам
Mongoose OS жана XinaBoxтун жардамы менен виртуалдык эшик баскычы: 10 кадам

Video: Mongoose OS жана XinaBoxтун жардамы менен виртуалдык эшик баскычы: 10 кадам

Video: Mongoose OS жана XinaBoxтун жардамы менен виртуалдык эшик баскычы: 10 кадам
Video: МАНГУСТЫ- бесстрашные защитники людей и ловкие убийцы. Мангуст в деле. Mongoose vs cobra 2024, Ноябрь
Anonim
Mongoose OS жана XinaBoxтун жардамы менен виртуалдык эшик баскычы
Mongoose OS жана 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 -кадам: Окуя

Биздин кабыл алууда биздин кызматкерлерди ызы -чуу кылыш керек болчу, ошондуктан биз өзүбүздүн дары -дармектерибизди алып, виртуалдык баскычты түзүүнү чечтик. Бул код сизге каалаган браузерден кадимки HTTP чалуусуна окшогон RPC (Remote Process Call) жөнөтүүгө мүмкүндүк берет. Биз Mongoose колдонгонбуз, анткени аны иштетүү абдан оңой жана тез жана ал OTA (аба аркылуу) кодун жаңыртуусу, биз өзүбүздүн технологиябызды орнотуп, убакыттын өтүшү менен программаны жаңыртып, кайра программалоо үчүн өркүндөтө алабыз дегенди билдирет.

3 -кадам: даярдоо

  • Mongoose-OSти орнотуңуз: Түз алдыга, бул жерде сиздин ОС үчүн эң жөнөкөй кадамдарды аткарыңыз:
  • XC10 туташтыргычын колдонуп IP01 менен CW02ди чыкылдатыңыз. Төмөндөгү сүрөттү караңыз:
Сүрөт
Сүрөт
  • IP01ди USB портуна салыңыз
  • IP01 өчүргүчтөрүнүн B жана DCE абалында экенин текшериңиз.
  • Mongoose-OSти CW02ге буйрук сабынан жаркылдатыңыз. Бул сыяктуу:

cd

экспорттоо MOS_PORT = bin/mos flash esp32

Сиз ошондой эле консолго кире аласыз жана көбүн ошол жерден жасай аласыз, бирок бул жерде биз аны буйрук сабынан жасайбыз, андыктан иш тез бүтөт. Консолго кирүү үчүн:

cd

bin/mos

4 -кадам: Конфигурация

Бул кадамдарды бир узун билдирүүдө жасоого болот, бирок биз аларды бөлүүнү чечтик, жана сиз баары бир көчүрүп, чаптап койсоңуз болот, муну жеңилдетели:

I2C казыктарын xChips стандартына коюңуз:

bin/mos конфигурация-i2c.scl_gpio = 14 i2c.sda_gpio = 2

Сиздин CW02ди WiFiңызга туташтырыңыз:

bin/mos wifi

WiFi режимин AP режиминде ажыратып, домендик аталышты орнотуңуз, ошондо сиз туура IP дарегин табуунун ордуна CW01ге хосттун аты менен туташа аласыз. Бул төмөнкү учурларда гана иштейт:

  • Сиз WiFi режимин AP режиминде өчүрөбүз, биз төмөндө.
  • Же Mac колдонуңуз, же Windows машинаңызга Bonjour орнотуңуз.

bin/mos чакыруу Config. Set '{"config": {"wifi": {"ap": {"enable": false}}}}'

bin/mos чакыруусу Config. Set '{"config": {"dns_sd": {"enable": true}}}' bin/mos чакыруу Config. Set '{"config": {"dns_sd": {"host- аты ":" xinabox_switch "}}}

Акыры, конфигурациянын иштеши үчүн CW02ди кайра жүктөөңүз керек

bin/mos чакыруу Config. Save '{"reboot": true}'

Ушундан кийин абдан тез сиз xinabox_switch.local пингге жөндөмдүү болушуңуз керек

5 -кадам: Орнотуу

IP01ди компьютериңизден ажыратыңыз жана жогорку сүрөттөгүдөй схеманы чогултуңуз.

PU01ди (же IP01 менен жабышууну чечсеңиз) USB кубат булагына сайыңыз. Учурдагы которгучтан зымдарды параллелдүү туташтырыңыз (болгондо гана калтырыңыз) OC03кө (полярдык мааниге ээ эмес). Fritzing сүрөтүн караңыз.

Ишке киргизилгенден кийин жана чындыгында сиздин xCW02 менен сүйлөшүп жатканыңызды көрүү үчүн, I2C автобусу болгон автобусту сканерлөө жөнүндө эмне айтууга болот:

bin/mos -порт ws: //xinabox_switch.local/rpc чалуу I2C. Scan

Эгерде баары иштесе жана сиздин xOC03 туура орнотулган болсо, '56' деген сан кайтарылганын көрүшүңүз керек. Бул OC03тун I2C дареги ондукта (он алтылыкта 0x38).

6 -кадам: Программалоо

  • Эми Mongoose консолу режиминде ачыңыз, жогорудан караңыз. Терезе менен ачылышы керек, анда порт номерин сурайт, киргизиңиз: ws: //xinabox_switch.local/rpc
  • Бул CW02 менен байланышып, бирдиктин мурунтан эле жарк этип, WiFiга туташып калганын түшүнөт, андыктан ал 3 текшерүү белгисин берет. Терезени жаап, файлдардын тизмесин жаңыртыңыз
  • Төмөндөгү кодду көчүрүп, init.jsке чаптаңыз жана сактоо+өчүрүүнү басыңыз
  • Сиздин схемаңыз азыр программаланган.

7 -кадам: Тест

Сиз азыр башка RPC чалуусун ишке ашырдыңыз, андыктан терминалыңыздан кире аласыз:

bin/mos -порт ws: //xinabox_switch.local/rpc чалуу которуу

… Жана коңгурооңуз 2 секундага кетиши керек. Сиз муну дээрлик каалаган браузерден жасай аласыз:

xinabox_switch.local/rpc/Switch

… ошол эле эффект менен.

8 -кадам: Кийинки кадам

Сиз URL өчүрө турган ар кандай куралды колдоно аласыз. Мен аны Workflow деп аталган Apple тиркемесинен жасайм, бул мага телефонумдан же Apple Watchтун татаалдыгы катары жасоого мүмкүндүк берет, бирок ал жерде башка көптөгөн варианттар бар. Бул жерде менин Workflow сценарийи бар, бирок катталган IP дареги менен: ырахат алыңыз!

Сүрөт
Сүрөт

Apple App: Workflow - бул жерде катуу коддолгон IP дареги бар

9 -кадам: схемалар

Buzzer Circuit OC03тү учурдагы баскычка параллель орнотуңуз.

Бул жерден жүктөп алыңыз.

OC03 Circuit 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"); let = Cfg.get ('pins.led'); adr = 0x38 болсун; автобус = I2C.get () болсун; I2C.writeRegB (автобус, адр, 3, 0); I2C.writeRegB (автобус, адр, 1, 0); / * ишенимдүү болуу үчүн өчүрүү */ кечигүү болсун = 2000; GPIO.set_mode (жетектелген, GPIO. MODE_OUTPUT); RPC.addHandler ('Switch', милдети (args) {GPIO.toggle (жетектелген); I2C.writeRegB (автобус, адр, 3, 0); / * эгер OC03 кайра туташса * / I2C.writeRegB (автобус, адр., 1, 1); Timer.set (delay, false, function () {GPIO.toggle (led); I2C.writeRegB (bus, adr, 1, 0);}, null); true true;});

Сунушталууда: