Სარჩევი:
- ნაბიჯი 1: კომპონენტები და ინსტრუმენტები
- ნაბიჯი 2: უკუ ინჟინერია ZenWheels Android პროგრამა [სურვილისამებრ]
- ნაბიჯი 3: კომპონენტები
- ნაბიჯი 4: შეკრება
- ნაბიჯი 5: დააწყვილეთ HC-05 Bluetooth მიკროავტობუსთან
- ნაბიჯი 6: კოდი და გამოყენება
- ნაბიჯი 7: ალტერნატივები
ვიდეო: Hackable დისტანციური მართვა ZenWheels მიკროავტობუსისთვის: 7 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:17
ამ გაკვეთილში ჩვენ ვაპირებთ ავაშენოთ პერსონალური დისტანციური მართვა 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 მიკროავტობუსთან
ამისათვის დაგჭირდებათ 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– ს გამოყენებით:)
ვიმედოვნებ, რომ მოგეწონათ პროექტი და გთხოვთ დატოვეთ კომენტარები ქვემოთ!
გირჩევთ:
Arduino ბრაუზერის დაფუძნებული დისტანციური მართვა (linux): 9 ნაბიჯი (სურათებით)
Arduino ბრაუზერზე დაფუძნებული დისტანციური მართვა (linux): ჩვენ გვყავს ბავშვები. მე მიყვარს ისინი, მაგრამ ისინი მუდმივად მალავენ დისტანციური მართვის სატელიტს და ტელევიზიას, როდესაც ისინი ბავშვთა არხებს აყენებენ. მას შემდეგ რაც ეს ხდება რამდენიმე წლის განმავლობაში ყოველდღიურად, და მას შემდეგ რაც ჩემმა საყვარელმა მეუღლემ მომცა საშუალება მქონოდა
Magic Button 4k: 20USD BMPCC 4k (ან 6k) უკაბელო დისტანციური მართვა: 4 ნაბიჯი (სურათებით)
Magic Button 4k: 20USD BMPCC 4k (ან 6k) უკაბელო დისტანციური მართვა: ბევრმა ადამიანმა მთხოვა გამეზიარებინა ზოგიერთი დეტალი ჩემი უკაბელო კონტროლერის შესახებ BMPCC4k– სთვის. კითხვების უმეტესობა ეხებოდა bluetooth კონტროლს, ამიტომ რამდენიმე დეტალს აღვნიშნავ ამის შესახებ. მე ვთვლი, რომ თქვენ იცნობთ ESP32 Arduino გარემოს
LED RF დისტანციური მართვის დისტანციური მართვა "არაფრის"!: 5 ნაბიჯი
LED RF დისტანციური მართვის დისტანციური მართვა "არაფრის"!: ამ პროექტში მე გაჩვენებთ თუ როგორ უნდა გამოიყენოთ LED RF დისტანციური მართვის პულტი იმისათვის, რომ გააკონტროლოთ თითქმის ყველაფერი რაც გსურთ. ეს ნიშნავს, რომ ჩვენ უფრო ახლოს შევხედავთ RF დისტანციური გადაცემის პროცესს, წაიკითხავთ გაგზავნილ მონაცემებს Arduino µC– ით
დისტანციური Arduino დისტანციური მართვა: 5 ნაბიჯი
უსაფრთხო Arduino დისტანციური: ეს არის მაგალითი იმისა, თუ როგორ უნდა გააკეთოთ ულტრა უსაფრთხო უკაბელო (ავტოფარეხი) დისტანციური. ჩვეულებრივ დისტანციურ დისკებს აქვს მოძრავი კოდის ტიპის უსაფრთხოება, რომლის გვერდის ავლით ნებისმიერი მოწინავე ქურდი შეძლებს. ეს დისტანციური სისტემა ეყრდნობა 16 ბაიტიანი ღილაკის გამოყენებას, ასე რომ მისი გატეხვა იქნება
დისტანციური დისტანციური მართვა: 11 ნაბიჯი (სურათებით)
დისტანციური მართვა: მე მყავს ახალშობილი ბავშვი და ის არ ფიქრობს, რომ მან უნდა დაიძინოს მანამ, სანამ მე და ჩემმა ცოლმა მასაც ვუსურვოთ. ერთი რამ, რაც მას ბედნიერს ხდის თავის საწოლში არის მობილური, რომელიც მის თავზეა ჩამოკიდებული. ასე რომ, როდესაც ის გაიღვიძებს, თუ ჩვენ გვჭირდება კიდევ 25 წუთი ან მეტი