Բովանդակություն:

Hackable Remote Control for ZenWheels Microcar: 7 Steps
Hackable Remote Control for ZenWheels Microcar: 7 Steps

Video: Hackable Remote Control for ZenWheels Microcar: 7 Steps

Video: Hackable Remote Control for ZenWheels Microcar: 7 Steps
Video: 4 Channel RF Transmitter | How to make a Remote controller #jlcpcb 2024, Հունիսի
Anonim
Image
Image
Ժողով
Ժողով

Այս ձեռնարկում մենք պատրաստվում ենք կառուցել հատուկ հեռակառավարիչ ZenWheels միկրո մեքենայի համար: ZenWheels միկրո մեքենան 5 սմ խաղալիք մեքենա է, որը կառավարելի է Android կամ Iphone հավելվածի միջոցով: Ես ձեզ ցույց կտամ, թե ինչպես կարելի է հետընթաց նախագծել Android հավելվածը ՝ կապի արձանագրության մասին տեղեկանալու և ինչպես կարող եք հեռակառավարման վահանակ ստեղծել ՝ օգտագործելով arduino և գիրոսկոպ:

Քայլ 1: Բաղադրիչներ և գործիքներ

Մասեր:

1. ZenWheels միկրո մեքենան

2. Arduino pro mini 328p

3. Հացաթուղթ

4. MPU6050 գիրոսկոպ

5. էներգիայի աղբյուր <= 5 վ (որոշ մարտկոց, որը մենք կարող ենք կցել տախտակին)

6. U- ձևի jumper մալուխներ (ըստ ցանկության): Ես օգտագործել եմ այս թռիչքային մալուխները, քանի որ դրանք ավելի լավ տեսք ունեն տախտակի վրա: Դրա փոխարեն կարող են օգտագործվել սովորական թռիչքային մալուխներ

7. HC-05 bluetooth մոդուլ (AT ռեժիմ մուտք գործելու կոճակով)

Գործիքներ:

1. USB սերիական FTDI ադապտեր FT232RL ՝ Arduino pro mini ծրագրավորելու համար

2. Arduino IDE

3. Android հեռախոս

4. Android Studio [ըստ ցանկության]

Քայլ 2. Հակադարձ նախագծում ZenWheels Android հավելվածը [ըստ ցանկության]

Այս հատվածը հասկանալու համար անհրաժեշտ է Java- ի և Android- ի որոշակի իմացություն:

Րագրի նպատակն է միկրոշրջանը վերահսկել գիրոսկոպի միջոցով: Դրա համար մենք պետք է ավելին իմանանք այս խաղալիքի և android հավելվածի միջև bluetooth հաղորդակցության մասին:

Այս քայլում ես կբացատրեմ, թե ինչպես կարելի է հետընթաց նախագծել միկրո մեքենայի և android հավելվածի միջև հաղորդակցության արձանագրությունը: Եթե պարզապես ցանկանում եք հեռակառավարման վահանակ կառուցել, այս քայլը անհրաժեշտ չէ: Արձանագրությունը հայտնաբերելու միջոցներից մեկը աղբյուրի կոդին նայելն է: Հմ, բայց դա ուղիղ առաջ չէ, android ծրագրերը կազմված են, և կարելի է apk- ն տեղադրել google play- ի միջոցով:

Այսպիսով, ես կազմել եմ հիմնական ուղեցույցը դա անելու համար.

1. Ներբեռնեք APK ֆայլը: Android Package Kit (կարճ APK) փաթեթային ֆայլի ձևաչափ է, որն օգտագործվում է Android օպերացիոն համակարգի կողմից բջջային հավելվածների բաշխման և տեղադրման համար

Նախ դիմումը որոնեք google play խանութում, մեր դեպքում որոնեք «zenwheels» - ը և կստանաք հավելվածի հղումը

Այնուհետև Google- ում որոնեք «առցանց apk ներլցիչ» և օգտագործեք մեկը ՝ ներբեռնելու համար apk ֆայլը: Սովորաբար նրանք խնդրում են հավելվածի հղումը (այն, ինչ մենք ավելի վաղ ձեռք ենք բերել), այնուհետև մենք կտտացնենք ներբեռնման կոճակը և կպահենք այն մեր համակարգչում:

2. Ապակոմպիլացնել APK- ն: Մեր իրավիճակում ապակոմպիլյատորը գործիք է, որը վերցնում է APK- ն և արտադրում Java աղբյուրի կոդ:

Ամենապարզ լուծումն այն է, որ աշխատանքը կատարելու համար օգտագործեք առցանց ապակոմպիլյատոր: Ես Google- ում որոնել եմ «առցանց ապակոմպիլյատոր» և ընտրել եմ https://www.javadecompilers.com/: Պարզապես պետք է վերբեռնել ավելի վաղ ձեռք բերված APK- ն և

սեղմել ապամոնտաժումը: Այնուհետև պարզապես ներբեռնեք աղբյուրները:

3. Փորձեք հետ շրջել ինժեները, որը նայում է ծածկագրին

Նախագիծը բացելու համար ձեզ հարկավոր է տեքստային խմբագիր կամ ավելի լավ IDE (ինտեգրված զարգացման միջավայր): Android Projects- ի կանխադրված IDE- ն Android Studio- ն է (https://developer.android.com/studio): Android Studio- ի տեղադրումից հետո բացեք ծրագրի թղթապանակը:

Քանի որ մեր մեքենան վերահսկվում է bluetooth- ով, ես որոնումս սկսեցի ապակոմպիլացված կոդի մեջ `« bluetooth »հիմնաբառով, այն դեպքերից, որոնցից ես գտա, որ« BluetoothSerialService » - ը հաղորդակցության մեջ էր: Եթե այս դասը վարում է հաղորդակցությունը, ապա այն պետք է ունենա ուղարկելու հրամանի մեթոդ: Պարզվում է, որ կա գրելու մեկ եղանակ, որը տվյալները ուղարկում է bluetooth ալիքով.

հրապարակային դատարկություն գրել (բայթ դուրս)

Սա լավ սկիզբ է, ես փնտրել եմ.write (մեթոդը օգտագործվում է և կա դաս «ZenWheelsMicrocar», որն ընդլայնում է մեր «BluetoothSerialService» ծառայությունը): Այս դասը պարունակում է Bluetooth- ի միջոցով մեր հաղորդակցության տրամաբանության մեծ մասը: տրամաբանությունը վերահսկիչների մեջ է ՝ BaseController և StandardController:

BaseController- ում մենք ունենք ծառայության նախաստորագրում, ինչպես նաև ղեկի և շնչափողի ալիքների սահմանումներ, ալիքները իրականում հրամանի նախածանցներ են `նշելու, որ ինչ -որ տիպի հրաման կհաջորդի.

պաշտպանված ZenWheelsMicrocar microcar = նոր ZenWheelsMicrocar (սա, սա. btHandler);

պաշտպանված ChannelOutput ելքեր = {new TrimChannelOutput (ZenWheelsMicrocar. STEERING_CHANNEL), նոր TrimChannelOutput (ZenWheelsMicrocar. THROTTLE_CHANNEL)};

StandardController- ում ղեկը մշակվում է.

հանրային դատարկ բռնակ teեկավարում (TouchEvent touchEvent) {

… This.microcar.setChannel (steeringOutput.channel, steeringOutput.resolveValue ()); }

Վերլուծելով մեթոդը ՝ steeringOutput.channel- ը ունի 129 արժեք (ալիքը, որն օգտագործվում է ղեկի համար) և steeringOutput.resolveValue () -ը կարող է ունենալ -90 -ից 90 -ի սահմաններում: Ալիքի արժեքը (129) ուղարկվում է ուղղակիորեն, և ղեկի արժեքը փոփոխվում է: բիթային գործողությունների կիրառմամբ.

մասնավոր վերջնական int value_convert_out (int արժեք) {

բուլ բացասական = կեղծ; if (արժեք <0) {բացասական = f6D; } int արժեք 2 = արժեք & 63; if (բացասական) {վերադարձելի արժեք 2 | 64; } վերադարձելի արժեք 2; }

StandardController- ում կա նմանատիպ մեթոդ, որը կոչվում է

հանրային դատարկ բռնակ Շարժիչ (TouchEvent touchEvent)

Քայլ 3: Բաղադրիչներ

Մասեր:

1. Arduino pro mini 328p 2 $

2. Հացաթուղթ

3. MPU6050 գիրոսկոպ 1,2 $

4. HC-05 վարպետ-ստրուկ 6 պին մոդուլ 3 $

5. 4 x AA մարտկոցի փաթեթ `4 մարտկոցով

6. U- ձևի jumper մալուխներ (ըստ ցանկության): Ես օգտագործել եմ այս թռիչքային մալուխները, քանի որ դրանք ավելի լավ տեսք ունեն տախտակի վրա, իսկ լուսարձակները այս կերպ ավելի տեսանելի են: Եթե դուք չունեք այս մալուխները, կարող եք դրանք փոխարինել dupont լարերով:

Վերոնշյալ գները վերցված են eBay- ից:

Գործիքներ:

1. USB սերիական FTDI ադապտեր FT232RL ՝ arduino pro mini ծրագրավորելու համար

2. Arduino IDE

3. Android Studio (պարտադիր չէ, եթե ինքներդ ինժեներ եք հակադարձում)

Քայլ 4: Հավաքում

Ժողով
Ժողով

Հավաքումը շատ պարզ է, քանի որ մենք դա անում ենք սեղանի վրա:)

- նախ մենք մեր բաղադրիչները տեղադրում ենք տախտակի վրա `միկրոկառավարիչը, bluetooth մոդուլը և գիրոսկոպը

- միացրեք HC-05 bluetooth RX և TX կապերը arduino 10 և 11 կապումներին: SDA և SCL գիրոսկոպը պետք է միացված լինեն arduino A4 և A5 կապումներին

- միացրեք հոսանքի կապերը bluetooth- ին, gyro- ին և arduino- ին: քորոցները պետք է միացված լինեն սեղանի + և - ի կողքին

- վերջին միացրեք էլեկտրամատակարարումը (3.3 Վ -ից մինչև 5 Վ) սնուցող տախտակին, ես օգտագործել եմ փոքր LiPo մեկ բջջային մարտկոց, բայց ցանկացածը կանի, քանի դեռ այն գտնվում է հզորության տիրույթում:

Լրացուցիչ մանրամասների համար խնդրում ենք ստուգել վերը նշված նկարները

Քայլ 5. Միացրեք HC-05 Bluetooth- ը միկրոավտոբուսին

Միացրեք HC-05 Bluetooth- ը միկրո մեքենայի հետ
Միացրեք HC-05 Bluetooth- ը միկրո մեքենայի հետ
Միացրեք HC-05 Bluetooth- ը միկրո մեքենայի հետ
Միացրեք HC-05 Bluetooth- ը միկրո մեքենայի հետ
Միացրեք HC-05 Bluetooth- ը միկրո մեքենայի հետ
Միացրեք HC-05 Bluetooth- ը միկրո մեքենայի հետ

Դրա համար ձեզ հարկավոր է Android հեռախոս, bluetooth HC-05 մոդուլ և սերիական FTDI ադապտեր ՝ լարերով: Նաև մենք կօգտագործենք Arduino IDE- ն ՝ Bluetooth մոդուլի հետ հաղորդակցվելու համար:

Նախ մենք պետք է պարզենք միկրո մեքենայի bluetooth հասցեն.

- միացրեք Bluetooth- ը ձեր հեռախոսի վրա

- միացրեք մեքենան և անցեք Android- ի ձեր կարգավորումների bluetooth բաժին

- որոնել նոր սարքեր, և պետք է հայտնվի «Microcar» կոչվող սարք

- զուգակցեք այս սարքի հետ

- ապա bluetooth MAC- ը հանելու համար ես օգտագործել եմ այս ծրագիրը google play Serial Bluetooth տերմինալից

Այս ծրագիրը տեղադրելուց հետո գնացեք ընտրացանկ -> սարքեր և այնտեղ կունենաք Bluetooth- ի հետ զուգակցված բոլոր սարքերի ցուցակ: Մեզ հետաքրքրում է միայն ներքևում գտնվող «Միկրոքար» հանքը 00: 06: 66: 49: A0: 4B

Հաջորդը միացրեք FTDI ադապտերը bluetooth մոդուլին: Սկզբում VCC և GROUND կապում, այնուհետև FTDI RX- ից bluetooth TX և FTDI TX ՝ bluetooth RX- ից: Նաև bluetooth մոդուլի վրա պետք է լինի քորոց, որը պետք է միացված լինի VCC- ին: Դա անելով bluetooth մոդուլը մտնում է «ծրագրավորվող ռեժիմ»: Իմ մոդուլն ունի կոճակ, որը միացնում է VCC- ն այդ հատուկ քորոցին: Երբ FTDI- ն միացնում եք USB- ին, այն պետք է միացված լինի / սեղմված կոճակով `այս հատուկ ծրագրավորվող ռեժիմ մուտք գործելու համար: Bluetooth- ը հաստատում է այս ռեժիմ մուտք գործելը ՝ դանդաղ թարթելով յուրաքանչյուր 2 վայրկյանը մեկ:

Arduino IDE- ում ընտրեք սերիայի նավահանգիստը, այնուհետև բացեք սերիական մոնիտորը (և NL և CR 9600 baud արագությամբ): Մուտքագրեք AT- ն և մոդուլը պետք է հաստատեն «OK» - ով:

Մուտքագրեք «AT+ROLE = 1» ՝ մոդուլը վարպետ ռեժիմում դնելու համար: Ձեր bluetooh մոդուլին զուգորդելու համար գրեք ՝ «AT+BIND = 0006, 66, 49A04B», նկատեք, թե ինչպես է մեր «00: 06: 66: 49: A0: 4B» - ն վերածվում «0006, 66, 49A04B» - ի: Դե, դուք պետք է նույն փոխակերպումն անեք ձեր bluetooh MAC- ի համար:

Այժմ միացրեք Zenwheels մեքենան, ապա անջատեք FTDI- ը և նորից միացրեք այն առանց կոճակը սեղմված / միացված է հատուկ քորոց: Որոշ ժամանակ անց այն պետք է միանա մեքենային, և կնկատեք, որ մեքենան որոշակի կապի հաջողակ ձայն է տալիս:

Անսարքությունների վերացում

- Ես գտա, որ իմ ունեցած Bluetooth- ի բոլոր մոդուլներից միայն վարագույրն էր աշխատում կոճակով:

- համոզվեք, որ մեքենան ամբողջությամբ լիցքավորված է

- համոզվեք, որ մեքենան միացված չէ հեռախոսին

- եթե Bluetooth- ը մտնում է AT ռեժիմում (դանդաղ է թարթում), բայց չի արձագանքում հրամանին, համոզվեք, որ ունեք և՛ NL և CR, և՛ փորձեր BAUD- ի այլ դրույքաչափերով:

- կրկնակի ստուգեք, որ RX- ը միացված է TX- ին և հակառակը

- փորձիր այս ձեռնարկը

Քայլ 6: Կոդ և օգտագործում

Նախ անհրաժեշտ է ներբեռնել և տեղադրել երկու գրադարան.

1. MPU6050 գրադարան գիրոսկոպի համար

2. I2CDev գրադարանի աղբյուր

Այնուհետև ներբեռնեք և տեղադրեք իմ գրադարանը այստեղից կամ պատճենեք այն ներքևից.

/** * Գրադարաններ ՝ * https://github.com/jrowberg/i2cdevlib * https://github.com/jrowberg/i2cdevlib */#include "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" #include "Wire.h "#include" SoftwareSerial.h"

const int MAX_ANGLE = 45;

const byte commandStering = 129; const byte commandSpeed = 130;

bool սկզբնականացում = կեղծ; // սահմանել true, եթե DMP init- ը հաջող էր

uint8_t mpuIntStatus; // պահում է փաստացի ընդհատման կարգավիճակի բայթ MPU uint8_t devStatus- ից; // վերադարձնել կարգավիճակը սարքի յուրաքանչյուր գործողությունից հետո (0 = հաջողություն,! 0 = սխալ) uint16_t packetSize; // ակնկալվող DMP փաթեթի չափը (կանխադրվածը 42 բայթ է) uint16_t fifoCount; // FIFO uint8_t fifoBuffer- ում ներկա պահին բոլոր բայթերի հաշվարկը [64]; // FIFO պահեստավորման բուֆեր Quaternion q; // [w, x, y, z] քառորդ կոնտեյներ VectorFloat gravity; // [x, y, z] ինքնահոս վեկտորը float ypr [3]; // [yaw, pitch, roll] yaw/pitch/roll բեռնարկղ և ինքնահոս վեկտոր ցնդող բուլ mpuInterrupt = false; // ցույց է տալիս, թե արդյոք MPU ընդհատման քորոցը բարձրացել է

անստորագիր երկար lastPrintTime, lastMoveTime = 0;

SoftwareSerial BT սերիալ (10, 11);

MPU6050 մպ;

դատարկ կարգավորում ()

{Serial.begin (9600); BTserial.begin (38400); Serial.println («startedրագիրը մեկնարկեց»); նախաստորագրում = initializeGyroscope (); }

դատարկ շրջան () {

եթե (! սկզբնականացում) {վերադարձ; } mpuInterrupt = կեղծ; mpuIntStatus = mpu.getIntStatus (); fifoCount = mpu.getFIFOCount (); եթե (hasFifoOverflown (mpuIntStatus, fifoCount)) {mpu.resetFIFO (); վերադարձ; } if (mpuIntStatus & 0x02) {while (fifoCount <packetSize) {fifoCount = mpu.getFIFOCount (); } mpu.getFIFOBytes (fifoBuffer, packetSize); fifoCount -= packetSize; mpu.dmpGetQuaternion (& q, fifoBuffer); mpu.dmpGetGravity (& ինքնահոս, & q); mpu.dmpGetYawPitchRoll (ypr, & q, & ինքնահոս); ղեկ (ypr [0] * 180/M_PI, ypr [1] * 180/M_PI, ypr [2] * 180/M_PI); }}

/*

* Ստանում է 0 -ից 180 անկյուն, որտեղ 0 -ը ձախ է, իսկ 180 -ը ՝ աջ millis () - lastMoveTime = 90) {resultAngle = քարտեզ (անկյուն, 91, 180, 1, 60); } else if (անկյուն 0) {resultSpeed = քարտեզ (արագություն, 0, 90, 0, 60); } else if (արագություն <0) {resultSpeed = քարտեզ (արագություն, 0, -90, 120, 60); } Serial.print ("actualAngle ="); Serial.print (անկյուն); Serial.print (";"); Serial.print ("actualSpeed ="); Serial.print (resultSpeed); Serial.println (";"); BTserial.write (commandStering); BTserial.write (resultAngle); BTserial.write (commandSpeed); BTserial.write ((բայթ) resultSpeed); lastMoveTime = միլիարդ (); }

դատարկ ղեկ (int x, int y, int z)

{x = սահմանափակում (x, -1 * MAX_ANGLE, MAX_ANGLE); y = սահմանափակում (y, -1 * MAX_ANGLE, MAX_ANGLE); z = սահմանափակում (z, -MAX_ANGLE, MAX_ANGLE); int անկյուն = քարտեզ (y, -MAX_ANGLE, MAX_ANGLE, 0, 180); int արագություն = քարտեզ (z, -MAX_ANGLE, MAX_ANGLE, 90, -90); printDebug (x, y, z, անկյուն, արագություն); moveZwheelsCar (անկյուն, արագություն); }

void printDebug (int x, int y, int z, int անկյուն, int արագություն)

{if (millis () - lastPrintTime <1000) {վերադարձ; } Serial.print ("z ="); Serial.print (x); Serial.print (";"); Serial.print ("y ="); Serial.print (y); Serial.print (";"); Serial.print ("z ="); Serial.print (z); Serial.print (";"); Serial.print ("angle ="); Serial.print (անկյուն); Serial.print (";"); Serial.print ("speed ="); Serial.print (speed); Serial.println (";"); lastPrintTime = միլիարդ (); }

bool initializeGyroscope ()

{Wire.begin (); mpu.initialize (); Serial.println (mpu.testConnection ()? F ("MPU6050 կապը հաջող է"). F ("MPU6050 կապը ձախողվեց")); devStatus = mpu.dmpInitialize (); mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788); if (devStatus! = 0) {Serial.print (F ("DMP Initialization failed (code")); Serial.println (devStatus); return false;} mpu.setDMPEnabled (true); Serial.println (F ("Enabling ընդհատումների հայտնաբերում (Arduino արտաքին ընդհատում 0)… ")); attachInterrupt (0, dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); Serial.println (F (" DMP պատրաստ է! = mpu.dmpGetFIFOPacketSize (); վերադարձնել ճշմարիտ;}

դատարկ dmpDataReady ()

{mpuInterrupt = ճշմարիտ; }

բուլյան hasFifoOverflown (int mpuIntStatus, int fifoCount)

{վերադարձ mpuIntStatus & 0x10 || fifoCount == 1024; }

Տեղադրեք կոդը FTDI ադապտերի միջոցով arduino- ին, ապա միացրեք մարտկոցները:

Օգտագործելով հեռակառավարիչը

Արդուինոն միացնելուց հետո միացրեք նաև մեքենան: HC-05 մոդուլը պետք է միանա մեքենային, երբ դա տեղի ունենա, մեքենան ձայն կթողնի: Եթե այն չի աշխատում, խնդրում ենք ստուգել նախորդ քայլը և անսարքությունների վերացման բաժինը:

Եթե հացաթխիկը թեքեք առաջ, մեքենան պետք է առաջ շարժվի, աջ, իսկ մեքենան ՝ աջ: Այն նաև ավելի աստիճանական շարժումներ է կատարում, ինչպիսիք են ՝ մի փոքր առաջ թեքվելը և մի փոքր ձախ մնալը: Այս դեպքում մեքենան դանդաղ կընթանա ձախ:

Եթե մեքենան ինչ -որ այլ ճանապարհ է տանում, երբ հացաթխումը թեքում է, նախ պահեք այն տարբեր ուղղություններով:

Ինչպես է դա աշխատում:

Էսքիզը ստանում է գիրոսկոպի կոորդինատները յուրաքանչյուր 100 ms- ում, կատարում հաշվարկներ, այնուհետև bluetooth- ով փոխանցում մեքենայի հրամանները: Սկզբում կա «ուղղորդման» մեթոդ, որը կոչվում է չմշակված x, y և z անկյուններով: Այս մեթոդը ղեկը փոխում է 0 -ից 180 աստիճանի, իսկ արագացումը -90 -ից 90 -ի միջև: Այս մեթոդը կոչ է անում

void moveZwheelsCar (բայտի անկյուն, int արագություն), որը ղեկը և արագացումը փոխակերպում է ZenWheels- ի բնութագրերի, այնուհետև հրամանները փոխանցում bluetooth- ի միջոցով:

Պատճառը, որ ես փոխակերպումը կատարեցի երկու քայլով, կրկին օգտագործելիությունն է: եթե ես պետք է այս ուրվագիծը հարմարեցնեի հեռակառավարման այլ սարքի, ես կսկսեի «ղեկ» բազային մեթոդից, որն արդեն իսկ արագությունն ու ղեկը քարտեզագրում է որոշ օգտակար արժեքների:

Քայլ 7: Այլընտրանքներ

«Հակադարձ տեխնիկայի» այլընտրանք: Ես խոսել եմ այն մասին, թե ինչպես կարելի է հետընթաց նախագծել նախագիծը ՝ սկսելով Android հավելվածից: Բայց դրան այլընտրանք կա, կարող եք ստեղծել սերիական FTDI + bluetooth ստրուկ (սովորական HC-05 ՝ առանց հիմնական կարգավորումները նշելու): Այնուհետեւ ZenWheels հավելվածից միկրոավտոբուսի փոխարեն միացեք HC-05- ին:

Հրամանները վերծանելու համար հարկավոր է ղեկը պահել ինչ -որ դիրքում, այնուհետև պիթոնի սցենարի միջոցով վերլուծել սերիական հաղորդակցությունը: Ես առաջարկում եմ պիթոնի սցենար, քանի որ կան չտպագրվող նիշեր և Arduino IDE- ն դրա համար հարմար չէ: Դուք կնկատեք, որ եթե անիվը մեկ դիրքով պահեք, ծրագիրը պարբերաբար կփոխանցի նույն երկու բայթ: Եթե փոխեք անիվի դիրքը, բռունցքի բայթը կմնա նույնը, երկրորդը կփոխվի: Բազմաթիվ փորձություններից հետո կարող եք գալ ղեկի ալգորիթմով, այնուհետև հետադարձ ճարտարագետի շնչափողով և այլն:

Արդուինոյի վրա հիմնված հեռակառավարման այլընտրանքը կլինի RaspberryPi հեռակառավարիչը: Ազնվամորու pi- ն ունի ներկառուցված bluetooth մոդուլ, որն անհնար է տեղադրել «վարպետ» ռեժիմում, իսկ python bluetooth գրադարանը գործում է որպես հմայք: Հնարավոր են նաև ավելի հետաքրքիր նախագծեր, ինչպիսիք են մեքենայի կառավարումը Alexa echo- ի միջոցով:)

Հուսով եմ, որ ձեզ դուր եկավ նախագիծը: Խնդրում ենք մեկնաբանություններ թողնել ստորև:

Խորհուրդ ենք տալիս: