Სარჩევი:

Hackable დისტანციური მართვა ZenWheels მიკროავტობუსისთვის: 7 ნაბიჯი
Hackable დისტანციური მართვა ZenWheels მიკროავტობუსისთვის: 7 ნაბიჯი

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

ვიდეო: Hackable დისტანციური მართვა ZenWheels მიკროავტობუსისთვის: 7 ნაბიჯი
ვიდეო: დისტანციური მართვის პულტი 2024, ნოემბერი
Anonim
Image
Image
შეკრება
შეკრება

ამ გაკვეთილში ჩვენ ვაპირებთ ავაშენოთ პერსონალური დისტანციური მართვა ZenWheels მიკროავტობუსისათვის. მიკროავტობუსი ZenWheels არის 5 სმ სათამაშო მანქანა, რომლის კონტროლი შესაძლებელია Android ან Iphone პროგრამის საშუალებით. მე ვაპირებ გაჩვენოთ, თუ როგორ უნდა შეცვალოთ ანდროიდის აპლიკაცია საკომუნიკაციო პროტოკოლის გასარკვევად და როგორ შეგიძლიათ ააწყოთ დისტანციური მართვა არდუინოს და გიროსკოპის გამოყენებით.

ნაბიჯი 1: კომპონენტები და ინსტრუმენტები

ნაწილები:

1. ZenWheels მიკროავტობუსი

2. Arduino pro mini 328p

3. პურის დაფა

4. MPU6050 გიროსკოპი

5. ენერგიის წყარო <= 5 v (ზოგიერთი ბატარეა, რომელსაც ჩვენ შეგვიძლია დავამატოთ პურის დაფაზე)

6. U- ფორმის ჯუმბერის კაბელები (სურვილისამებრ). მე გამოვიყენე ეს ჯუმბერის კაბელები, რადგან ისინი უკეთესად გამოიყურებიან პურის დაფაზე. მის ნაცვლად შეიძლება გამოყენებულ იქნას ჩვეულებრივი ჯუმბერის კაბელები

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– ის გარკვეული ცოდნა.

პროექტის მიზანია მიკროსქემის კონტროლი გიროსკოპის გამოყენებით. ამისათვის ჩვენ უნდა გავარკვიოთ მეტი ამ სათამაშოსა და ანდროიდის აპლიკაციას შორის bluetooth კავშირის შესახებ.

ამ ნაბიჯში მე აგიხსნით, თუ როგორ უნდა შეცვალოთ საკომუნიკაციო პროტოკოლი მიკროავტობუსსა და ანდროიდის აპლიკაციას შორის. თუ თქვენ უბრალოდ გსურთ დისტანციური მართვის შექმნა ეს ნაბიჯი არ არის აუცილებელი. პროტოკოლის აღმოჩენის ერთ -ერთი გზაა კოდის ნახვა. ჰმ, მაგრამ ეს არ არის პირდაპირ წინ, android პროგრამები შედგენილია და შეგიძლიათ დააინსტალიროთ apk google play– ის საშუალებით.

ასე რომ, მე გავაკეთე ძირითადი სახელმძღვანელო ამის გასაკეთებლად:

1. ჩამოტვირთეთ APK. Android პაკეტის ნაკრები (მოკლედ APK) არის პაკეტის ფაილის ფორმატი, რომელიც გამოიყენება Android ოპერაციული სისტემის მიერ მობილური აპლიკაციების განაწილებისა და ინსტალაციისთვის

ჯერ მოძებნეთ პროგრამა google play store– ში, ჩვენს შემთხვევაში მოძებნეთ „zenwheels“და მიიღებთ პროგრამის ბმულს

შემდეგ google- ში მოძებნეთ "ონლაინ apk downloader" და გამოიყენეთ ერთი apk გადმოსაწერად. როგორც წესი, ისინი ითხოვენ განაცხადის ბმულს (ის, რაც ჩვენ ადრე მოვიპოვეთ), შემდეგ ჩვენ დავაჭერთ გადმოტვირთვის ღილაკს და შევინახავთ ჩვენს კომპიუტერში.

2. APK– ის დეკომპილირება. ჩვენს სიტუაციაში დეკომპილირება არის ინსტრუმენტი, რომელიც იღებს APK– ს და აწარმოებს ჯავას კოდს.

უმარტივესი გამოსავალი არის სამუშაოს შესასრულებლად ონლაინ დეკომპილირების გამოყენება. მე ვეძებე Google- ში "ონლაინ დეკომპლილერი" და ავირჩიე https://www.javadecompilers.com/. თქვენ უბრალოდ უნდა ატვირთოთ ადრე მიღებული APK და

დააჭირეთ დეკომპილირებას. შემდეგ თქვენ უბრალოდ გადმოწერეთ წყაროები.

3. შეეცადეთ შეცვალოთ ინჟინერი, რომელიც ეძებს კოდს

პროექტის გასახსნელად გჭირდებათ ტექსტური რედაქტორი ან უკეთესი IDE (ინტეგრირებული განვითარების გარემო). Android პროექტებისთვის ნაგულისხმევი IDE არის Android Studio (https://developer.android.com/studio). Android Studio– ს დაყენების შემდეგ გახსენით პროექტის საქაღალდე.

იმის გამო, რომ ჩვენი მანქანა კონტროლდება bluetooth– ით, მე დავიწყე ძებნა დეკომპილირებულ კოდში, საკვანძო სიტყვით „bluetooth“, იმ შემთხვევებიდან, როდესაც აღმოვაჩინე, რომ „BluetoothSerialService“კომუნიკაციას ეწეოდა. თუ ეს კლასი მართავს კომუნიკაციას, მას უნდა ჰქონდეს გაგზავნის ბრძანების მეთოდი. გამოდის, რომ არსებობს ჩაწერის ერთი მეთოდი, რომელიც აგზავნის მონაცემებს bluetooth არხის საშუალებით:

საჯარო ბათილად ჩაწერა (ბაიტი გარეთ)

ეს კარგი დასაწყისია, მე ვეძებ. ლოგიკა არის კონტროლერებში: BaseController და StandardController.

BaseController– ში ჩვენ გვაქვს სერვისის ინიციალიზაცია, ასევე განმსაზღვრელი მექანიზმები და არხები, არხები, ფაქტობრივად, ბრძანების პრეფიქსია იმის დასადგენად, რომ გარკვეული ტიპის ბრძანება მოჰყვება:

დაცული ZenWheelsMicrocar microcar = ახალი ZenWheelsMicrocar (ეს, ეს. btHandler);

დაცული ChannelOutput შედეგები = {ახალი TrimChannelOutput (ZenWheelsMicrocar. STEERING_CHANNEL), ახალი TrimChannelOutput (ZenWheelsMicrocar. THROTTLE_CHANNEL)};

StandardController– ში საჭე მუშაობს:

საჯარო ბათილად სახელური მართვა (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 value2 = მნიშვნელობა & 63; if (უარყოფითი) {დაბრუნების მნიშვნელობა 2 | 64; } დაბრუნების მნიშვნელობა 2; }

StandardController– ში არსებობს მსგავსი მეთოდი სახელწოდებით

საჯარო ბათილად სახელური throttle (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- ფორმის ჯუმბერის კაბელები (სურვილისამებრ). მე გამოვიყენე ეს ჯუმბერის კაბელები, რადგან ისინი უკეთესად გამოიყურებიან პურის დაფაზე და ლიდერები უფრო თვალსაჩინოა ამ გზით. თუ თქვენ არ გაქვთ ეს კაბელები, შეგიძლიათ შეცვალოთ ისინი დუპონტის მავთულხლართებით.

ზემოაღნიშნული ფასები აღებულია eBay– დან.

ინსტრუმენტები:

1. USB სერიული FTDI ადაპტერი FT232RL arduino pro mini პროგრამირების მიზნით

2. Arduino IDE

3. Android Studio (სურვილისამებრ, თუ გსურთ შეცვალოთ ინჟინერი საკუთარ თავს)

ნაბიჯი 4: შეკრება

შეკრება
შეკრება

შეკრება ძალიან მარტივია, რადგან ჩვენ ამას ვაკეთებთ პურის დაფაზე:)

- ჯერ ჩვენ ვათავსებთ ჩვენს კომპონენტებს პურის დაფაზე: მიკროკონტროლი, ბლუთუს მოდული და გიროსკოპი

- დააკავშირეთ HC-05 bluetooth RX და TX ქინძისთავები arduino 10 და 11 ქინძისთავებთან. გიროსკოპი SDA და SCL უნდა იყოს დაკავშირებული arduino A4 და A5 პინებთან

- დააკავშირეთ კვების ბლოკები bluetooth, gyro და arduino. ქინძისთავები უნდა იყოს დაკავშირებული + და - პურის დაფის მხარეს

- ბოლოს შეაერთეთ კვების ბლოკი (3.3V– დან 5V– მდე) პურის დაფაზე, მე გამოვიყენე პატარა 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 მოდულთან კომუნიკაციისთვის.

პირველ რიგში ჩვენ უნდა გავარკვიოთ microcar bluetooth მისამართი:

- ჩართეთ Bluetooth თქვენს ტელეფონში

- ჩართეთ მანქანა და გადადით Android– ში თქვენი პარამეტრების bluetooth განყოფილებაში

- მოძებნეთ ახალი მოწყობილობები და უნდა გამოჩნდეს რაიმე მოწყობილობა სახელწოდებით "მიკროკარტა"

- დაწყვილდით ამ მოწყობილობასთან

- შემდეგ bluetooth MAC- ის ამოსაღებად, მე გამოვიყენე ეს პროგრამა google play სერიული Bluetooth ტერმინალიდან

ამ პროგრამის დაყენების შემდეგ გადადით მენიუში -> მოწყობილობებზე და იქ გექნებათ სია ყველა bluetooth დაწყვილებული მოწყობილობით. ჩვენ გვაინტერესებს მხოლოდ კოდი "მიკრო მანქანის" ქვემოთ: 00: 06: 66: 49: A0: 4B

შემდეგ დააკავშირეთ FTDI ადაპტერი bluetooth მოდულთან. ჯერ VCC და GROUND ქინძისთავები და შემდეგ FTDI RX bluetooth TX და FTDI TX bluetooth RX. ასევე უნდა იყოს ბლუთუს მოდულზე პინი, რომელიც უნდა იყოს დაკავშირებული VCC– სთან. ამით bluetooth მოდული შედის "პროგრამირებადი რეჟიმში". ჩემს მოდულს აქვს ღილაკი, რომელიც VCC აკავშირებს იმ სპეციალურ პინს. როდესაც თქვენ ჩართავთ FTDI USB- ს, ის უნდა იყოს დაკავშირებული pin / ღილაკზე დაჭერით, რომ შეხვიდეთ ამ სპეციალურ პროგრამირებად რეჟიმში. 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 */ #მოიცავს "I2Cdev.h" #მოიცავს "MPU6050_6Axis_MotionApps20.h" #მოიცავს #მავთულს.h " #მოიცავს" SoftwareSerial.h"

const int MAX_ANGLE = 45;

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

bool ინიციალიზაცია = ყალბი; // მითითებული true თუ DMP init წარმატებული იყო

uint8_t mpuIntStatus; // ფლობს ფაქტობრივ შეწყვეტის სტატუსს byte 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 შეწყვეტის პინი

ხელმოუწერელი long lastPrintTime, lastMoveTime = 0;

პროგრამული უზრუნველყოფა სერიული BT სერიალი (10, 11);

MPU6050 mpu;

ბათილად დაყენება ()

{Serial.begin (9600); BTserial.begin (38400); Serial.println ("პროგრამა დაიწყო"); ინიციალიზაცია = ინიციალიზაციაგიროსკოპი (); }

ბათილი მარყუჟი () {

if (! ინიციალიზაცია) {დაბრუნება; } mpuInterrupt = ყალბი; mpuIntStatus = mpu.getIntStatus (); fifoCount = mpu.getFIFOCount (); if (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 არის მაქსიმალურად მარჯვნივ * იღებს სიჩქარეს -90 -დან 90 -მდე, სადაც -90 არის მაქსიმალური უკან და 90 არის მაქსიმალური წინ */ ბათილად გადაადგილება ZwheelsCar (ბაიტის კუთხე, int სიჩქარე) {თუ (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 ((byte) 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 angle, int speed)

{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 ("კუთხე ="); Serial.print (კუთხე); Serial.print (";"); Serial.print ("სიჩქარე ="); Serial.print (სიჩქარე); Serial.println (";"); lastPrintTime = მილი (); }

bool initializeGyroscope ()

{Wire.begin (); mpu. ინიციალიზაცია (); 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 ინიციალიზაცია ვერ მოხერხდა (კოდი")); Serial.println (devStatus); დაბრუნება false;} mpu.setDMPEnabled (true); Serial.println (F ("ჩართულია შეწყვეტის გამოვლენა (Arduino გარე შეფერხება 0)… ")); attachInterrupt (0, dmpDataReady, აღმავალი); mpuIntStatus = mpu.getIntStatus (); Serial.println (F (" DMP მზად! ელოდება პირველ შეწყვეტას … ")); პაკეტის ზომა = mpu.dmpGetFIFOPacketSize (); დაბრუნება true;}

void dmpDataReady ()

{mpuInterrupt = ჭეშმარიტი; }

ლოგიკური აქვს FifoOverflown (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 მოდული, რომელიც უმტკივნეულოა "სამაგისტრო" რეჟიმში და პითონის bluetooth ბიბლიოთეკა მუშაობს როგორც ხიბლი. ასევე შესაძლებელია კიდევ რამდენიმე საინტერესო პროექტი, როგორიცაა მანქანის კონტროლი Alexa echo– ს გამოყენებით:)

ვიმედოვნებ, რომ მოგეწონათ პროექტი და გთხოვთ დატოვეთ კომენტარები ქვემოთ!

გირჩევთ: