uy - Routerni sozlash
Arduino-da CxemCAR - Android bilan avtomobilni Bluetooth orqali boshqarish. Android-dan Bluetooth orqali proportsional boshqaruvga ega avtomobil Bluetooth-boshqariladigan avtomobil

Bizga nima kerak:

1. Robot shassisi, =$9,50
2. Dvigatel haydovchisi, =$1,22
3. To'siqni aniqlaydigan sensor, men eng mashhur va eng arzon variantga qaror qildim = $0,94
Biroq, qimmatroq yoki shunga o'xshash narsalarni ishlatish uchun hech kim sizni bezovta qilmaydi
4. Sensorni o'rnatish, eng yaxshi emas, balki maqbul variant. = $1,08
Analoglar sifatida: eng ko'p qidirilgan sariq rang ham bor, lekin men havolani topa olmadim. Kim qidiradi, u ko'k rangga o'xshaydi, lekin M3 vinti uchun oddiy teshiklari va masofa o'lchagichni ulash uchun 4 vint.
5. Sensordan olingan ma'lumotlarni qayta ishlovchi va keyingi qayerga borish haqida qaror chiqaradigan arduino platasi. Men ga qaror qildim, chunki tez orada modellashtirish uchun eng qulay = $5,88
Ushbu plata mikrokontrollerni halokatli ishdan chiqqan taqdirda almashtirish imkoniyati tufayli tanlangan, shuning uchun siz versiyani sotib olishingiz mumkin.

Umuman olganda, men asoslar uchun taxminan 19 dollar sarfladim.

!!! terminallar, ulagichlar, penselarni almashtirish mumkin

Menga yuqoridagi narsa keyinroq va bir necha marta kerak bo'ladi, bu kabi tezlashtirish kerak emas

Ovqatlanish uchun bir nechta fotosuratlar

Simlar va terminallar


Stendlar, murvatlar, yong'oqlar, yuvish vositalari

Assambleya

Keling, qiziqarli qismga - Frankenshteynning yaratilishiga o'tamiz!
Birinchidan, biz M3 murvat uchun ko'k qavsda teshik ochamiz, chunki men boshqa o'rnatish variantini topmadim.


Biz masofa o'lchagichni issiq elim ustiga qo'yamiz.


Biz shassisni yig'amiz va sensorimizni biriktiramiz. U iloji boricha pastroqda joylashgan bo'lishi uchun biz uni to'g'ridan-to'g'ri shassiga o'rnatmasligimiz kerak edi, lekin uni bir necha santimetr pastga tushirish uchun stenddan foydalaning. Qavsning pastki cheti motorlar bilan bir xilda edi.

Dvigatel drayverini biriktiramiz va motorlarni ulaymiz.



Biz batareya bo'linmasi o'rniga quvvat bankini moslashtiramiz.
Buni amalga oshirish uchun shassisga o'rnatish uchun M3 vintlari uchun ikkita teshik hosil qilamiz, ikkita simni "+" va "-" ni taxtadagi USB ga lehimlaymiz va simlarni boshqa burg'ulangan teshikdan chiqaramiz. Afsuski, qo'limda mos kalit yo'q edi, shuning uchun bu funktsiya simlarni Arduinodan uzish orqali amalga oshiriladi. Keyinchalik, biz bu narsani shassiga biriktiramiz.





Arduino-ni o'rnating va simlarni ulang




Batareyaning quvvat banki orqali zaryadlanishi qulay.

Biz batareyani joylashtiramiz, miltillaymiz (men atmel studio 6 muhitini ishlatganman), qochib ketmasligi uchun uni aylantiramiz va nima bo'lganini sinab ko'ramiz.

Bir qarashda hamma narsa yaxshi, agar to'siq paydo bo'lsa, mashina yon tomonga buriladi, to'siq bor-yo'qligini tekshiradi va agar u yana aniqlansa, boshqa tomonga buriladi. Amalda nima sodir bo'ldi: u portlash bilan to'siqlarni aniqlaydi, yaxshi buriladi, eksperimental ravishda zarur kechikishlarni o'rnatdi, lekin orqa rul tufayli deyarli tekis chiziqda harakatlana olmaydi. Ehtimol, men bunday "qattiq" variantga duch keldim, lekin shuning uchun mashina har doim diagonal bo'ylab harakat qiladi, arzimas, ammo yoqimsiz.

Keling, xulosa qilaylik

Boshlash uchun, shunga o'xshash narsani qilishga qaror qilganlar to'rtta motorli shassiga e'tibor berishlari kerak. Bunday qadam, nazariy jihatdan, yoyda harakatlanish imkoniyatini yo'q qiladi, ammo vosita haydovchisini tanlashda bosh og'rig'ini qo'shishi mumkin. Ammo miyangizni sindirishga shoshilmang, siz buni qoldirishingiz mumkin, hamma narsa a'lo darajada ishlashi kerak, oqimlar uchidan uchiga o'tadi - har bir kanalga ikkita motor. Ammo bitta kavanozli quvvat banki, albatta, etarli emas. Menimcha, bu allaqachon tavakkal qilish uchun sababdir. Bundan tashqari, yuvish vositalarini sotib olishingiz kerak bo'ladi, chunki ... Plastmassaga biriktirilganda, yoqimsiz narsalar yuz berishi mumkin. Arduino va motorlarning quvvat manbaini ajratish yoki stabilizatordan foydalanish yoki eng yomoni katta kondansatörda lehimlash juda yaxshi bo'lar edi, lekin bu haqiqiy biluvchilar uchun, u men uchun xuddi shunday ishlaydi. Amalda, men narxni taxminan 2000 rublgacha ushlab turdim, bu arzonroq bo'lishi mumkin edi, lekin bu mening aql uchun mashqim va dasturlashdagi birinchi tajribam edi (hamma narsa shu uchun boshlangan), men ko'p narsalarni saqlamadim. Vaqtim bo'lganda, men radio boshqaruvini ulab, o'zgartiraman.

P.S. Arkda harakatlanish muammosi dvigatellarni almashtirish orqali hal qilindi, maslahat uchun rahmat. Shassini sotib olayotganda, tasdiqlashga shoshilmang, avval uni amalda sinab ko'ring. Endi jamblar yo'q, hamma narsa ishlaydi.

Android va boshqalar uchun manbalar ham mavjud foydali ma'lumotlar. Ushbu maqolada men Arduino platformasi uchun CxemCAR yig'ilishini ko'rsataman. Arduino platasi sifatida deyarli har qanday Arduino-mos platadan foydalanish mumkin: UNO, Nano, Mega, Leonardo va hatto STM32-ga asoslangan Arduino DUE. Men sharf ishlatganman Arduino Nano V3, eBay-da 9 dollarga sotib olingan.

Sxema Arduino ulanishlari HC-06 Bluetooth moduli va L298N motor drayveriga:

Sxemada men jumperdan foydalandim (Jmp1 sxemasida), chunki Bluetooth moduli ulangan bo'lsa, eskizni Arduino-ga yuklash mumkin emas edi. Mikrodasturni o'rnatish vaqtida jumperni olib tashlash Bluetooth modulini quvvatsizlantiradi.

Platforma sifatida men 25 dollarga sotib olgan kichik RC DIY platformasidan foydalandim. Platformaning o'zi alyuminiy asos bo'lib, unda ikkita dvigatel, vites qutisi va 4 g'ildirak uchun 4 kardan haydovchi o'rnatilgan. Yuqorida, 3 ta tokchada non taxtasi qo'yilgan.

Platforma boshqacha emas yuqori sifatli ishlab chiqarish. Uni yig'ganimdan so'ng, men quvvatni ulashga harakat qildim - dvigatellar ham harakat qilmadi, juda ko'p buzilishlar, nuqsonlar va boshqalar bor edi. Men hamma narsani qismlarga ajratishim, mahkamlagichlarni biroz bo'shatishim, bu erda va u erda o'tkirlashim, hamma narsani yaxshilab moylashim kerak edi, shuningdek, oldingi o'qdan 2 ta kardan valini olib tashlashim kerak edi. Natijada avtomobilning orqa g'ildirakli versiyasi paydo bo'ldi.

Shundan so'ng, men Bluetooth modulini Arduino-ga lehimladim va u uchun LED holatini taqdim etdim. Bluetooth modullarining turlari, ularning Arduino-ga ulanishi, ular bilan ishlash va boshqalar haqida. ushbu maqolada o'qishingiz mumkin: . HC-06 moduli 10 mm issiqlik qisqarishi trubasiga joylashtirildi. Oqim cheklovchi rezistorli Bluetooth holati LED ham issiqlik qisqarishiga joylashtirildi, ammo ingichka - 5 mm.

Men platforma bilan birga kelgan non taxtasida teshik ochdim va L298N motor drayverini biriktirdim. Men Arduino platasini ikki tomonlama lenta yordamida biriktirdim.

Mashinaning alyuminiy platformasi va non paneli o'rtasida men 3,7V 1100 mA / soat quvvatga ega 3 ta Li-Po batareyasini joylashtirdim. Tekshirish moslamasi va motorlar alohida quvvatlanadi: Arduino bitta 3,7V batareyadan quvvatlanadi, motorlar va L298N drayveri esa ketma-ket ulangan ikkita 3,7V batareyadan quvvatlanadi. Ikkita 2 pozitsiyali quvvat kalitlari mavjud - bir holatda quvvat batareyalardan iste'molchilarga, ikkinchi holatda zaryadlash terminallariga o'tadi.

Avtomobilni zaryadlash surati:

Dasturiy ta'minot

Dastur Arduino IDE 1.01 da yozilgan. Men dastur kodini yaxshi sharhlashga harakat qildim, lekin agar sizda biron bir savol bo'lsa, forumda so'rang.

#include "EEPROM.h" #define D1 2 // motor 1 aylanish yo'nalishini aniqlang #m1 3 ni aniqlang // Dvigatel 1ni boshqarish uchun PWM pinini (chapda) #D2 4 ni aniqlang // 2 dvigatelning aylanish yo'nalishini aniqlang #M2 5 ni aniqlang // aylanish dvigatelining yo'nalishi 2 (o'ngda) #define HORN 13 // qo'shing. 1-kanal 13-pinga ulangan //#define autoOFF 2500 // millisekundlar soni, shundan so'ng robot aloqa uzilganda to'xtaydi #define cmdL "L" // chap dvigatel uchun UART buyrug'i #define cmdR "R" // UART o'ng bir dvigatel uchun buyruq #define cmdH "H" // qo'shimcha uchun UART buyrug'i. 1-kanal (masalan, Shox signali) #define cmdF "F" // sozlamalarni saqlash uchun MKning EEPROM xotirasi bilan ishlash uchun UART buyrug'i #define cmdr "r" // MKning EEPROM xotirasi bilan ishlash uchun UART buyrug'i sozlamalarni saqlash uchun (o'qing) # cmdw "w" ni belgilang // MKning EEPROM xotirasi bilan ishlash uchun UART buyrug'i incomingByte char sozlamalarini saqlash (yozish) uchun; // kiruvchi ma'lumotlar char L_Data; // chap dvigatel ma'lumotlari uchun qatorlar qatori L bayt L_index = 0; // massiv indeksi char R_Data; // o'ng vosita ma'lumotlari uchun qatorlar qatori R bayt R_index = 0; // massiv indeksi char H_Data; // qo'shimcha uchun qator qatori kanal bayti H_index = 0; // massiv indeksi H char F_Data; // EEPROM bayti bilan ishlash uchun ma'lumotlar qatori F_index = 0; // massiv indeksi F char buyrug'i; // buyrug'i: R, L koordinatalarini uzatish yoki chiziq oxiri unsigned long currentTime, lastTimeCommand, autoOFF; void setup() ( Serial.begin(9600); // portni ishga tushirish pinMode(HORN, OUTPUT); // qo'shimcha kanal pinMode(D1, OUTPUT); // pinMode(D2) dvigatelining aylanish yo'nalishini o'rnatish uchun chiqish , OUTPUT); / / dvigatelning aylanish yo'nalishini o'rnatish uchun chiqish /*EEPROM.write(0,255); EEPROM.write(1,255); EEPROM.write(2,255); EEPROM.write(3,255);*/ timer_init( ); // dasturiy ta'minot taymerini ishga tushirish) void timer_init() ( uint8_t sw_autoOFF = EEPROM.read(0); // EEPROM dan parametrni o'qish "aloqa uzilganda mashinani to'xtatish funksiyasi yoqilgan" agar(sw_autoOFF == "1 ")( // agar to'xtash taymeri yoqilgan bo'lsa char var_Data ; var_Data = EEPROM.read(1); var_Data = EEPROM.read(2); var_Data = EEPROM.read(3); autoOFF = atoi(var_Data)*100; // ms sonini saqlash uchun avtomatik o'chirish o'zgaruvchisi ) else if(sw_autoOFF == "0")( autoOFF = 999999; ) else if(sw_autoOFF == 255)( autoOFF = 2500; // EEPROMga hech narsa yozilmagan bo'lsa , u holda asl qiymati 2,5 sek ) currentTime = millis(); / / dastur ishga tushirilgandan beri o'tgan vaqtni o'qish) void loop() ( if (Serial.available() > 0) ( // agar UART ma'lumotlari kelgan bo'lsa incomingByte = Serial.read(); // baytni o'qing if(incomingByte == cmdL) ( // agar dvigatel L buyrug'i uchun ma'lumotlar kelgan bo'lsa = cmdL; // hozirgi jamoa memset(L_Data,0,sizeof(L_Data)); // massivni tozalash L_index = 0; // massiv indeksini tiklash ) else if(incomingByte == cmdR) ( // agar R dvigateli uchun maʼlumotlar kelgan boʻlsa buyruq = cmdR; memset(R_Data,0,sizeof(R_Data)); R_index = 0; ) else if(incomingByte == cmdH) ( // agar qo'shimcha 1-kanal uchun ma'lumotlar kelgan bo'lsa buyrug'i = cmdH; memset(H_Data,0,sizeof(H_Data)); H_index = 0; ) other if(incomingByte == cmdF) ( // agar ma'lumotlar uchun ish xotira buyrug'i bilan keldi = cmdF; memset(F_Data,0,sizeof(F_Data)); F_index = 0; ) else if(incomingByte == "\r") buyrug'i = "e"; // satr oxiri else if(incomingByte == "\t") buyrug'i = "t"; // xotira buyruqlari uchun satr oxiri if(command == cmdL && incomingByte != cmdL)( L_Data = incomingByte; // har bir qabul qilingan baytni L_index++ massiviga saqlash; // joriy massiv indeksini oshirish ) else if(buyruq == cmdR && incomingByte != cmdR)( R_Data = incomingByte; R_index++; ) else if(buyruq == cmdH && incomingByte != cmdH)( H_Data = incomingByte; H_index++; ) else if(buyruqda == incomingByte)& cmdF F_Data = incomingByte; F_index++; ) else if(buyruq == "e")( // agar qator oxiri qabul qilinsa Control4WD(atoi(L_Data),atoi(R_Data),atoi(H_Data)); kechikish(10) ; ) else if( command == "t")( // agar xotira bilan ishlash uchun satr oxirini qabul qilsak Flash_Op(F_Data,F_Data,F_Data,F_Data,F_Data); ) lastTimeCommand = millis(); // o'qing joriy vaqt, dastur ishga tushirilgandan beri o'tgan ) if(millis() >= (lastTimeCommand + autoOFF))( // joriy taymerni lastTimeCommand + autoOFF Control4WD(0,0,0) o'zgaruvchisi bilan solishtiring; // mashinani to'xtating ) ) void Control4WD(int mLeft, int mRight, uint8_t Horn)( bool directionL, directionR; // L298N bayt qiymati uchun aylanish yoʻnalishiL, valueR; // PWM qiymati M1, M2 (0-255) if(mLeft > 0)( valueL = mLeft; directionL = 0; ) else if(mLeft< 0){ valueL = 255 - abs(mLeft); directionL = 1; } else { directionL = 0; valueL = 0; } if(mRight >0)( valueR = mRight; directionR = 0; ) other if(mRight< 0){ valueR = 255 - abs(mRight); directionR = 1; } else { directionR = 0; valueR = 0; } analogWrite(M1, valueL); // задаем скорость вращения для L analogWrite(M2, valueR); // задаем скорость вращения для R digitalWrite(D1, directionL); // задаем направление вращения для L digitalWrite(D2, directionR); // задаем направление вращения для R digitalWrite(HORN, Horn); // дополнительный канал } void Flash_Op(char FCMD, uint8_t z1, uint8_t z2, uint8_t z3, uint8_t z4){ if(FCMD == cmdr){ // если команда чтения EEPROM данных Serial.print("FData:"); // посылаем данные с EEPROM Serial.write(EEPROM.read(0)); // считываем значение ячейки памяти с 0 адресом и выводим в UART Serial.write(EEPROM.read(1)); Serial.write(EEPROM.read(2)); Serial.write(EEPROM.read(3)); Serial.print("\r\n"); // маркер конца передачи EEPROM данных } else if(FCMD == cmdw){ // если команда записи EEPROM данных EEPROM.write(0,z1); // запись z1 в ячейку памяти с адресом 0 EEPROM.write(1,z2); EEPROM.write(2,z3); EEPROM.write(3,z4); timer_init(); // переинициализируем таймер Serial.print("FWOK\r\n"); // посылаем сообщение, что данные успешно записаны } }

Kod AVR EEPROM xotirasi bilan ishlash uchun kutubxonadan foydalanadi. Bitta sozlama xotirada saqlanadi: ulanish uzilganda mashina to'xtab qolgan millisekundlar soni. Siz ushbu sozlamani dasturda "qattiq kodlashingiz" mumkin; buning uchun #define autoOFF 2500 qatorini izohdan olib tashlang (bu erda 2500 millisekundlar soni). Shundan so'ng, Flash_Op funktsiyasi o'chirilishi mumkin, shuningdek, EEPROM xotirasi bilan ishlash uchun buyruqlarni qabul qilish uchun javobgar bo'lgan kodga kichik o'zgarishlar kiritish kerak bo'ladi.

Bu men amalga oshirgan birinchi robot loyihasidir va agar siz hech qachon robot yasashga urinmagan bo‘lsangiz, buni qiyin deb o‘ylaysiz. Ammo Arduino va 2WD/4WD shassilari yig'ishni ancha osonlashtiradi va siz birinchi Arduino RC robotingizni hech qanday og'riqsiz qurasiz.


Yo‘l-yo‘lakay xayolimga yaratish g‘oyasi keldi radio boshqariladigan avtomobil o'z qo'llarim bilan, bu to'siqlarni aylanib o'tadi, shuning uchun men ushbu loyihani, quyida biriktiradigan video va dastur faylini birlashtirdim.

Fayllar

1-qadam: Kerakli qismlar va asboblar

Foyda oldim tayyor echimlar, va barcha qismlar va asboblar onlayn xarid qilingan.

Ehtiyot qismlar:

  1. Robot uchun 4WD shassi to'plami (GearBest)
  2. Arduino Nano (GearBest)
  3. LM298 H-Bridge moduli (GearBest)
  4. Bluetooth moduli HC-06 (Amazon)
  5. Li-ion batareyalar 2 x 18650 (GearBest)
  6. Batareya bo'limi 2x 18650 (GearBest)
  7. Kichik rivojlanish kengashi (GearBest)
  8. 0,5 mm2 kesimli simlar
  9. Erkak-ayol o'tkazgichli simlar (Amazon)
  10. Ayol-ayol o'tkazgichli simlar (Amazon)
  11. Niqobli lenta, yopishqoq lenta yoki shunga o'xshash narsa (Amazon)

Robot to'siqlardan qochish uchun:

Ultrasonik masofani o'lchash moduli HC - SR04 (GearBest)

Kerakli vosita:

  1. Lehimlash temir (Amazon)
  2. Tel kesgichlar (Amazon)
  3. Sim o'tkazgich (GearBest)
  4. Yelim quroli (GearBest)

2-qadam: Robot nima?

Robot - bu atrof-muhitga qandaydir tarzda reaksiyaga kirishish va muayyan maqsadlarga erishish uchun mustaqil qarorlar yoki harakatlar qilish qobiliyatiga ega elektromexanik qurilma.

Robot quyidagi tarkibiy qismlardan iborat:

  1. Struktura/shassi
  2. Haydash / Dvigatel
  3. Nazoratchi
  4. Kirish qurilmalari / Sensorlar
  5. Quvvatlantirish manbai

Keyingi bosqichlarda siz hamma narsani osongina tushunishingiz uchun ushbu komponentlarning har birini tasvirlab beraman.

3-qadam: Struktura/shassi



Struktura jismoniy qismlardan iborat. Robotda vazifani bajarish uchun qandaydir tarzda harakatlanadigan bir yoki bir nechta jismoniy komponentlar mavjud. Bizning holatlarimizda robotning tuzilishi shassi va g'ildiraklardir.

4-qadam: Drayvlar



Aktuatorni energiyani (robot texnikasida energiya elektr energiyasini nazarda tutadi) jismoniy harakatga aylantiruvchi qurilma sifatida tushunish mumkin. Aksariyat aktuatorlar aylanma yoki chiziqli harakatni hosil qiladi.

Bizning holatda, haydovchi doimiy to'lqinli vosita bo'lib, uning tezligi 3000 rpm, aylanish momenti esa 0,002 N m.Endi biz unga tishli nisbati 1:48 bo'lgan vites qo'shamiz. Yangi tezlik 48 marta kamayadi (natijada 3000/44 = 68 rpm) va moment 48 marta oshiriladi (natijada 0,002 x 48 = 0,096 Nm).

5-qadam: Dvigatel terminallarini tayyorlang




Taxminan 12-15 sm uzunlikdagi 4 ta qizil va qora simlarni kesib oling.Men 0,5 mm2 kesimli simlardan foydalanardim. Simlarning uchlarini torting. Dvigatel terminallariga simlarni lehimlang.

Dvigatellarning polaritesini batareya bo'linmasiga ulab tekshirishingiz mumkin. Agar u oldinga yo'nalishda ishlayotgan bo'lsa (musbat terminalda qizil sim va batareyalarning salbiy terminalida qora sim bilan), u holda ulanish yaxshi.

6-qadam: Dvigatelni o'rnating




Har bir dvigatelga ikkita uzun murvat va ikkita yong'oq yordamida ikkita akril ajratgichni ulang. Aniqlik uchun siz videoni tomosha qilishingiz mumkin.

E'tibor bering, har bir dvigateldagi simlar shassisning o'rtasiga olib boradi. Shassisning har bir tomonidagi motorlardan ikkala qizil va ikkala qora simni ulang. Ulangandan so'ng siz chap tomonda ikkita terminalga va o'ngda ikkita terminalga ega bo'lasiz.

7-qadam: tomni o'rnating

4 ta motorni o'rnatganingizdan so'ng, tomni o'rnatishingiz kerak. Yong'oq yordamida 6 ta mis ustunni ulang, simli terminallarni uyingizda teshikdan o'tkazing.

8-qadam: boshqaruvchi

Endi bizda shassi va drayvlar o'rnatilgan, ammo bizda kontroller etishmayapti. Tekshirgichsiz shassi hech qaerga ketmaydi. Robot joyida qoladi, jonsiz qoladi. Shuning uchun robotning harakatlanishi uchun bizga miya (kontroller) kerak.

Tekshirish moslamasi - bu ma'lum bir dastur bo'yicha ishlay oladigan va barcha hisob-kitoblar, qarorlar qabul qilish va aloqa uchun javobgar bo'lgan dasturlashtiriladigan qurilma. Bizning holatlarimizda biz Arduino Nano mikrokontrolleridan kontroller sifatida foydalanamiz.

Tekshirish moslamasi kirish ma'lumotlarini (datchiklardan, masofadan turib va ​​hokazo) oladi, uni qayta ishlaydi va keyin tanlangan vazifani bajarish uchun drayverlarga (motorlarga) buyruq beradi.

Agar siz batareyalardan musbat simni dvigatelning bir tomoniga ulasangiz, keyin batareyalardan salbiy simni motorning boshqa tomoniga ulang, u oldinga aylana boshlaydi. Agar siz simlarni almashtirsangiz, vosita boshqa yo'nalishda aylana boshlaydi.

Mikrokontroller dvigatelni bir yo'nalishda aylantirish uchun ishlatilishi mumkin, ammo agar siz mikrokontroller yordamida motorni oldinga va orqaga aylantirish uchun foydalanmoqchi bo'lsangiz, unda sizga qo'shimcha sxema - H-ko'prigi kerak bo'ladi. Keyingi bosqichda men nima ekanligini tushuntiraman.

9-qadam: H-ko‘prik (LM 298 moduli)




H-ko'prigi nima?

H-ko'prigi atamasi odatdagidan keladi grafik tasvir bu sxema. Bu motorni ham oldinga, ham teskari yo'nalishda aylantira oladigan sxema.

Ish printsipi:
H-ko'prik sxemasining ishlash printsipini tushunish uchun biriktirilgan rasmga qarang. Ko'prik 4 ta elektron kalitlardan iborat S1, S2, S3, S4 (tranzistorlar / MOSFET / IGBTS).

S1 va S4 kalitlari yopiq va qolgan ikkitasi ochiq bo'lsa, musbat kuchlanish vosita orqali oqadi va u oldinga yo'nalishda aylanadi. Xuddi shu tarzda, S2 va S3 kalitlari yopiq va S1 va S4 ochiq bo'lsa, dvigatelga teskari kuchlanish beriladi va u teskari yo'nalishda aylana boshlaydi.

Eslatma: Xuddi shu qo'ldagi kalitlar (ya'ni S1, S2 yoki S3, S4) hech qachon bir vaqtning o'zida yopilmaydi - bu qisqa tutashuvni hosil qiladi.

H-ko'priklar integral mikrosxemalar sifatida mavjud yoki siz 4 tranzistor yoki MOSFET yordamida o'z ko'prikni qurishingiz mumkin. Mening holimda LM298 H-ko'prikli integral sxemasi qo'llaniladi, bu sizga motorlarning tezligi va yo'nalishini boshqarish imkonini beradi.

Pinout tavsifi:

Chiqish 1: DC vosita 1 "+" yoki step vosita A+
Chiqish 2: DC vosita 1 "-" yoki step motor A-
Chiqish 3: DC vosita 2 "+" yoki step motor B+
Chiqish 4: Dvigatel chiqishi B
12v: 12V kirish, lekin 7 dan 35V gacha foydalanish mumkin
GND: Yer
5v: 12V o'tkazgich o'rnatilgan bo'lsa, 5V chiqish, Arduino (va hokazo) ni quvvatlantirish uchun ideal.
EnA: Dvigatel A uchun PWM signallarini qabul qilish imkonini beradi (Iltimos, Arduino Sketch Mulohazalari bo'limini o'qing)
IN1: A motorini yoqadi
IN2: A motorini yoqadi
IN3: B motorini yoqadi
IN4: B motorini yoqadi
BEnB: Motor B uchun PWM signallarini qabul qilish imkonini beradi (Iltimos, Arduino Sketch Mulohazalari bo'limini o'qing)

10-qadam: Kirishlar/Datchiklar

Odamlardan farqli o'laroq, robotlar faqat ko'rish, tovush, teginish, hid va ta'm bilan cheklanmaydi. Robotlar foydalanadi turli sensorlar tashqi dunyo bilan muloqot qilish.

Sensor - bu atrof-muhitdan ma'lum turdagi ma'lumotlarni aniqlaydigan va ularga javob beradigan qurilma. Bu ma'lumotlar yorug'lik, issiqlik, harakat, namlik, bosim yoki boshqa har qanday ekologik hodisa bo'lishi mumkin.

Kiruvchi signallar sensorlardan, masofadan turib yoki smartfondan kelishi mumkin. Ushbu qo'llanmada men robotni boshqarish uchun signallarni yuboradigan qurilma sifatida smartfondan foydalanaman.

11-qadam: Elektr ta'minoti





Aktuatorlarni (motorlarni) boshqarish va boshqaruvchini quvvatlantirish uchun robotga quvvat manbai kerak. Aksariyat robotlar batareyalardan quvvat oladi. Batareyalar haqida gapirganda, biz ko'plab variantlarni yodda tutamiz:

  1. AA ishqoriy batareyalar (qayta zaryadlanmaydi)
  2. NiMH yoki NiCd AA batareyalari (qayta zaryadlanuvchi)
  3. Lityum-ion batareyalar
  4. Lityum polimer batareyalar

Ehtiyojlaringizga qarab siz tegishli turdagi batareyalarni tanlashingiz kerak. Menimcha, siz doimo etarli quvvatga ega qayta zaryadlanuvchi batareyalarni tanlashingiz kerak. Men 2 dan foydalandim lityum-ionli batareyalar 2600mAh quvvatga ega standart 18650. Agar avtonomiya uchun ko'proq quvvat kerak bo'lsa, 5A turnigi kabi katta batareyalar to'plamidan foydalaning.

Batareya bo'limi:
Men Xitoydan batareya bo'linmasini buyurtma qildim va u tekis batareyalarga mos kelmadi, shuning uchun batareyalarni shakllantirish uchun ikkita neodim magnitidan foydalandim.

Zaryadlovchi:
Batareyalarni zaryad qilish uchun sizga yaxshi zaryadlovchi kerak. Mening tajribamga ko'ra, ushbu zaryadlovchilar yaxshi ishladi:

  1. PowerEx AA zaryadlovchi-analizatori (Amazon)
  2. XTAR LiIon batareya zaryadlovchi (Amazon)
  3. Turnigy LiPo batareya zaryadlovchi qurilmasi (Amazon)

12-qadam: Komponentlarni o'rnatish


Bir qismli sxema uyingizda o'rnatiladi. Men batareya bo'linmasini, LM 298 dvigatel drayverini va issiq elim bilan kichik non taxtasini biriktirdim, lekin siz ularni shunchaki burab qo'yishingiz mumkin. Bluetooth moduli lenta bilan mahkamlangan. Arduino nano-ni non paneliga joylashtiring.

13-qadam: simlarni ulash






Modullarni ulash uchun sizga jumperli simlar kerak bo'ladi.
Ikki dvigatelning qizil simlarini bir-biriga ulang (har ikki tomonda), keyin esa qora simlar. Natijada, siz har tomondan ikkita terminalga ega bo'lasiz.

MOTORA ikkita o'ng dvigatel uchun javobgardir, mos ravishda ikkita chap dvigatel MOTORB ga ulangan.
Barcha komponentlarni ulash uchun ko'rsatmalarga amal qiling:

Dvigatel ulanishi:

Out1 -> chap qo'l motorli qizil sim (+)
Out2 -> chap dvigatelning qora simi (—)
Out3 -> o'ng motor qizil sim (+)
Out4 -> o'ng motor uchun qora sim (—)
LM298 -> Arduino
IN1 -> D5
IN2->D6
IN2 ->D9
IN2->D10
Bluetooth moduli -> Arduino
Rx->Tx
Tx -> Rx
GND -> GND
Vcc -> 3,3V
Oziqlanish
12V -> qizil batareya simi
GND -> qora batareya simi va Arduino-dagi GND pin
5V -> Arduino 5V piniga ulang

14-qadam: Mantiqni boshqarish

Bu qanday ishlashini tushunish uchun men buni yaratdim mantiqiy jadval. Bu kod yozishda juda qo'l keladi.

16-qadam: Sinov



Robot mashinani sinab ko'rish uchun men uni kichik karton qutiga joylashtirdim. Shunday qilib, g'ildiraklar aylanadi, lekin mashina joyida qoladi. Mavjud bo'lgan barcha tugmalarni bosish orqali ishlashni tekshiring. Agar hamma narsa ishlayotgan bo'lsa, unda siz uni haqiqatan ham boshqarishingiz mumkin.

Eslatma: Agar dvigatellar teskari yo'nalishda aylansa, shunchaki simlarni almashtiring.

17-qadam: Kelajak rejalari




Ushbu qo'llanmada men oddiy mashinani qanday yaratishni tushuntirdim. Keyin men unga ba'zi yaxshilanishlarni qo'shmoqchiman. Unga turli xil sensorlarni ulashingiz mumkin, bu erda ba'zi fikrlar:

  1. To'siqlardan qochish uchun ultratovushli sensorni qo'shish
  2. Boshqarish masofasini kengaytirish uchun Bluetooth o'rniga ESP8266 yoki Node MCU kabi WiFi modulidan foydalaning.
  3. Qo'shish quyosh paneli batareyalarni zaryad qilish uchun.

Ushbu maqolada mobil telefon uchun kichik dasturni yaratish batafsil tavsiflanadi operatsion tizim Android va Arduino eskizi. Yoniq Arduino Uno Bluetooth modulli Wireless Shield bo'ladi. Ilova Bluetooth moduliga ulanadi va ma'lum bir buyruq yuboradi. O'z navbatida, eskiz Arduino-ga ulangan LEDlardan birini yoqish yoki o'chirish uchun ushbu buyruqdan foydalanadi.

Bizga kerak bo'ladi

Android ilovasini yaratish

Bo'sh

Android operatsion tizimini ishlab chiqish ADT ishlab chiqish muhitida, Android Development Tools da amalga oshiriladi. Buni Google dasturchi portalidan yuklab olish mumkin. ADT-ni yuklab olib, o'rnatganingizdan so'ng, uni ishga tushirishingiz mumkin. Biroq, dasturni ishlab chiqishni boshlash uchun hali erta. Shuningdek, Android SDK-ni yuklab olishingiz kerak kerakli versiya. Buning uchun siz Android SDK menejerini ochishingiz kerak "Oyna → Android SDK menejeri". Ro'yxatda biz kerakli SDK ni tanlashimiz kerak, bizning holatlarimizda Android 2.3.3 (API 10). Agar sizda telefon bo'lmasa, 2.3.3 yoki undan yuqori versiyasini tanlang; va agar mavjud bo'lsa - telefonning OS versiyasiga mos keladigan versiya. Keyin o'rnatish jarayonini boshlash uchun "Paketlarni o'rnatish" tugmasini bosing.

Yuklab olish va o'rnatish tugallangach, dasturni yaratishni boshlaymiz. “Fayl → Yangi → Android ilova loyihasi” ni tanlang. Keling, rasmda ko'rsatilgandek oynaning mazmunini to'ldiramiz.

    Ilova nomi - ko'rsatiladigan dastur nomi Google Play Do'kon. Ammo biz arizani nashr qilmoqchi emasmiz, shuning uchun ism biz uchun unchalik muhim emas.

    Loyiha nomi - ADTdagi loyiha nomi.

    Paket nomi - ilova identifikatori. U quyidagicha tuzilgan bo'lishi kerak: saytingiz nomi teskari va ba'zi dastur nomi.

"Minimum talab qilinadigan SDK", "Target SDK", "Compile with" ochiladigan ro'yxatlarida biz avval yuklab olgan versiyani tanlang. Yangi SDK versiyalari qo'llab-quvvatlanadi grafik mavzular ilovalar uchun, lekin eskilari yo'q. Shuning uchun, "Mavzu" maydonida "Yo'q" ni tanlang. “Keyingi” tugmasini bosing.

"Maxsus ishga tushirish belgisini yaratish" belgisini olib tashlang: ushbu maqolaning maqsadlari uchun biz ilova belgisini yaratishga e'tibor qaratmaymiz. “Keyingi” tugmasini bosing.

Ko'rsatilgan oynada siz "Faoliyat" ko'rinishini tanlashingiz mumkin: dastur ishga tushirilganda ekranda nima bo'lishini ko'rish. Biz "Bo'sh faoliyat" ni tanlaymiz, ya'ni biz hamma narsani noldan boshlamoqchimiz. “Keyingi” tugmasini bosing.

Ilovamizda faqat bitta Faoliyat bo'ladi, shuning uchun paydo bo'lgan oynada hech narsani o'zgartirishingiz shart emas. Shunday qilib, "Finish" tugmasini bosing.

Mana, bizning ilovamiz yaratildi.

Emulyatorni sozlash

Android ilovalari haqiqiy qurilmada tuzatiladi yoki agar mavjud bo'lmasa, emulyatorda. Keling, o'zimizni sozlaymiz.

Buning uchun "Oyna → Android Virtual Device Manager" ni ishga tushiring. Ko'rsatilgan oynada "Yangi" tugmasini bosing. Ko'rsatilgan shaklning maydonlarini to'ldiring. Bu emulyatorning "telefon" ga qancha va qanday resurslarni taqdim etishiga bog'liq. O'rtacha qiymatlarni tanlang va OK tugmasini bosing.

Android Virtual Device Manager oynasida "Ishga tushirish" tugmasini bosing. Bu emulyatorni ishga tushiradi. Ishga tushirish bir necha daqiqa davom etadi. Shunday ekan, sabr qiling.

Natijada siz shunga o'xshash emulyator oynasini ko'rasiz:

To'ldirish faoliyati

Faoliyat - ilova ishga tushirilgandan so'ng telefon ekranida ko'rsatiladigan narsa. Unda bizda ikkita tugma bo'ladi "Qizil LEDni yoqish" va "Moviy LEDni yoqish". Keling, ularni qo'shamiz. “Package Explorer” panelida res/layout/activity_main.xml ni oching. Uning ko'rinishi taxminan ekran tasviridagi kabi bo'ladi.

2 ta "ToggleButtons" ni ekran shakliga torting. "activity_main.xml" yorlig'iga o'ting va quyidagi kodni ko'ring:

activity_main_aiutogen.xml xmlns: asboblar = android:layout_width="match_parent" android:layout_height="match_parent" android: paddingBottom = android: paddingLeft = android: paddingRight = "@dimen/activity_horizontal_margin" android: paddingTop = "@dimen/activity_vertical_margin" asboblar: kontekst = "Asosiy faoliyat" > android: id="@+id/toggleButton1" android:layout_alignParentLeft"to'g'ri" android:layout_alignParentTop="true" android: text="ToggleButton" /> android: id="@+id/toggleButton2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/textView1" android:layout_alignParentRight"to'g'ri" android: text="ToggleButton" /> >

Bu bizning Faoliyatimizdan boshqa narsa emas, u grafik sifatida ko'rsatilmaydi, lekin XML formatida tasvirlangan.

Keling, komponent nomlarini aniqroq qilib ko'rsatamiz. Keling, android:id maydonlarini quyidagicha o'zgartiramiz.

android: id="@+id/toggleRedLed" ... android: id="@+id/toggleGreenLed" ...

Shuningdek, biz ularga imzo qo'yamiz, rangi va matn hajmini o'zgartiramiz. Olingan belgilash kodi quyidagicha ko'rinadi:

activity_main.xml "http://schemas.android.com/apk/res/android" xmlns: asboblar = "http://schemas.android.com/tools" android:layout_width="fill_parent" android: paddingBottom = "@dimen/activity_vertical_margin" android: paddingLeft = "@dimen/activity_horizontal_margin" android: paddingRight = "@dimen/activity_horizontal_margin" android: paddingTop = "@dimen/activity_vertical_margin" asboblar: kontekst = "Asosiy faoliyat" android:weightSum="2" android:orientation="gorizontal" > android: id="@+id/toggleRedLed" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" android:background="#FF0000" android:textOff="OFF" android: textOn="ON" android: textSize="30dp" /> android: id="@+id/toggleGreenLed" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" android:background="#00FF00" android:textOff="OFF" android: textSize="30dp" android: textOn="ON" /> >

Xuddi shu o'zgarishlar "Outline/Xususiyatlar" yorlig'i yordamida grafik rejimda amalga oshirilishi mumkin.

Sinov sinovi

Yangi yaratilgan dasturni emulyatorda ishga tushirishimiz mumkin. "Ishga tushirish" → Konfiguratsiyalarni ishga tushirish sozlamalariga o'ting, chap tomonda "Android ilovasi" ni bosing. "New_configuration" yangi konfiguratsiyasi paydo bo'ladi. Oynaning o'ng tomonida "Maqsad" yorlig'ini tanlang va "Barcha mos keluvchi qurilmalarda / AVD-da ishga tushirish" variantini tanlang.

"Ilova" tugmasini bosing va keyin "Ishga tushirish" tugmasini bosing. Ilova emulyatorda ishga tushadi.

Siz tugmachalarni bosishingiz mumkin. Lekin hech narsa bo'lmaydi, chunki biz hali klik ishlov beruvchilarini yozmaganmiz.

Ilovani haqiqiy qurilmada ishga tushirish uchun uning sozlamalarida "USB disk raskadrovka" opsiyasini yoqishingiz va uni kompyuteringizga ulashingiz kerak.

Haqiqiy qurilmada dastur xuddi shunday ko'rinadi.

Android uchun kod yozish

Manifestni tahrirlash

Har bir Android ilovasi tizimga qanday huquqlar berish kerakligini aytishi kerak. Huquqlar AndroidManifest.xml deb ataladigan manifest faylida keltirilgan. Unda biz ilovamizda Bluetooth-dan foydalanmoqchi ekanligimizni ko'rsatishimiz kerak. Buni amalga oshirish uchun faqat bir nechta qatorlarni qo'shing:

AndroidManifest.xml "http://schemas.android.com/apk/res/android" paket = "ru.amperka.arduinobtled" android:versionCode="1" android:versionName="1.0" > android:minSdkVersion="10" android:targetSdkVersion="10" /> "android.permission.BLUETOOTH"/> "android.permission.BLUETOOTH_ADMIN"/>
android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > android: nomi = "ru.amperka.arduinobtled.MainActivity" android: label="@string/app_name" > > "android.intent.category.LAUNCHER" /> > > > >

Asosiy kodni qo'shish

Bizning ilovamizga hayot kiritish vaqti keldi. MainActivity.java faylini oching (src → ru.amperka.arduinobtled). Dastlab u quyidagi kodni o'z ichiga oladi:

MainActivityAutogen.java to'plami ru.amperka.arduinobttled; android.os.Bundle ni import qilish; import android.app.Activity ; import android.view.Menu ; public class MainActivity kengaytiradi Faoliyat ( @Override protected void onCreate(Bundle savedInstanceState) ( super .onCreate (savedInstanceState) ; setContentView(R.layout .activity_main ); ) @Override public mantiqiy onCreateOptionsMenu( Menyu menyu) ( getMenuInflater() .inflate (R.menu .main , menu) ; true ni qaytaring; ) )

Bizga kerak bo'lgan kodni qo'shamiz:

    Bluetooth o'chirilgan bo'lsa, biz uni yoqamiz.

    Tugmani bosish bilan ishlov beramiz

    Qaysi tugma bosilganligi haqida ma'lumot yuboramiz.

Ikki xonali raqam bilan bir baytni Arduino-ga o'tkazamiz. Raqamning birinchi raqami - bu yoki boshqa LED ulangan pinning raqami, ikkinchisi - LEDning holati: 1 - yoqilgan, 0 - o'chirilgan.

Buyruq raqami juda sodda tarzda hisoblanadi: Agar qizil tugma bosilsa, u holda 60 raqami olinadi (qizil LED uchun biz Arduinoning 6-pinini tanladik) va LEDning ishlashiga qarab, unga 1 yoki 0 qo'shiladi. hozir yoqilgan yoki yo'q. Yashil tugma uchun hamma narsa o'xshash, faqat 60 o'rniga 70 olinadi (chunki yashil LED pin 7 ga ulangan). Natijada, bizning holatlarimizda 4 ta jamoa bo'lishi mumkin: 60, 61, 70, 71.

Keling, aytilganlarning hammasini amalga oshiradigan kodni yozaylik.

MainActivity.java to'plami ru.amperka.arduinobtled; import java.io.IOException ; import java.io.OutputStream ; Import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method ; import android.app.Activity ; Import android.bluetooth.BluetoothAdapter; Import android.bluetooth.BluetoothDevice; Import android.bluetooth.BluetoothSocket; import android.content.Intent ; android.os.Bundle ni import qilish; import android.util.Log ; import android.view.Menu ; android.view.View import; Import android.view.View.OnClickListener; import android.widget.Toast ; import android.widget.ToggleButton ; ommaviy klass MainActivity Faoliyat dasturlarini kengaytiradi Ko'rinish.OnClickListener( //Bizning tugmalar sinflari misollari ToggleButton redButton; ToggleButton yashil tugma; //Arduino-ga ma'lumotlarni yuboradigan rozetka BluetoothSocket clientSocket; //Bu funksiya dastur ishga tushganda avtomatik ravishda ishlaydi@Override himoyalangan void onCreate(Bundle savedInstanceState) ( super .onCreate(savedInstanceState) ; setContentView(R.layout .activity_main ); //Ilova oynasidagi tugma ko'rinishini amalga oshirish bilan "Ulanish" redButton = (ToggleButton) findViewById(R.id .toggleRedLed ); greenButton = (ToggleButton) findViewById(R.id .toggleGreenLed ); //Tugmaga “klik tinglovchi” qo‘shing redButton.setOnClickListener(bu); greenButton.setOnClickListener(bu); //Bluetooth-ni yoqing. Agar u allaqachon yoqilgan bo'lsa, unda hech narsa bo'lmaydi String enableBT = BluetoothAdapter.ACTION_REQUEST_ENABLE ; startActivityForResult(yangi niyat(enableBT) , 0 ); //Biz standart bluetooth adapteridan foydalanmoqchimiz BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter(); //Bu amallarni bajarishga urinish harakat qilib ko'ring ( //Bu manzilga ega qurilma bizning Bluetooth Bee //Manzil quyidagicha aniqlanadi: ulanish o'rnatish //Kompyuter va modul o'rtasida (pin: 1234) va keyin sozlamalarga qarang // ulanish moduli manzili. Katta ehtimol bilan shunga o'xshash bo'ladi. BluetoothDevice qurilmasi = bluetooth.getRemoteDevice("00:13:02:01:00:09" ); //Qurilma bilan ulanishni boshlang Usul m = device.getClass().getMethod("createRfcommSocket", yangi Class(int.class)); clientSocket = (BluetoothSocket) m.invoke(qurilma, 1); clientSocket.connect(); //Agar biron bir xatolik yuzaga kelsa, jurnalga xabar chiqaring) tuting ( IOException Xavfsizlik istisnosi e) ( Log.d ("BLUETOOTH" , e.getMessage () ) ; ) catch ( NoSuchMethodException e) ( Log.d ("BLUETOOTH" , e.getMessage () ) ; ) catch ( IllegalArgumentException e) ( Log.d ("BLUETOOTH" , e.getMessage () ) ; ) catch ( IllegalAccessException e) ( Log.d ("BLUETOOTH" , e.getMessage () ) ; ) catch ( InvocationTargetException e) (Log.d ("BLUETOOTH", e.getMessage () ); ) //Muvaffaqiyatli ulanish haqida xabarni ko'rsatish Toast.makeText(getApplicationContext(), "CONNECTED", Toast.LENGTH_LONG).show(); ) @CreateOptionsMenudagi umumiy mantiqiy qiymatni bekor qilish( Menyu menyu) ( // Menyuni to'ldirish; agar mavjud bo'lsa, bu harakatlar paneliga elementlarni qo'shadi. getMenuInflater() .inflate (R.menu .main , menyu); rostni qaytarish; ) // Aynan shu funksiya chaqiriladi@Override public void onClick( Ko'rinish v) ( //Ma'lumotlarni yuborishga harakat qilinmoqda harakat qilib ko'ring ( //Ma'lumotlarni uzatish uchun chiqish oqimini oling Output Stream outStream = clientSocket.getOutputStream(); int qiymati = 0; //Qaysi tugma bosilganiga qarab, // yuborish uchun ma'lumotlarni o'zgartiring agar (v == redButton) (qiymat = (redButton.isChecked () ? 1 : 0 ) + 60 ; ) else if (v == greenButton) (qiymat = (greenButton.isChecked () ? 1 : 0 ) + 70 ; ) //Ma'lumotlarni chiqish oqimiga yozish outStream.write(qiymat); ) tuting ( IOException e) ( //Agar xatolar bo'lsa, ularni jurnalga chiqaring Log.d ("BLUETOOTH" , e.getMessage (, OUTPUT) ; pinMode(7 , OUTPUT) ; ) void loop() ( //Agar ma'lumotlar kelgan bo'lsa agar (Serial.available() > 0) ( //Kiruvchi baytni o'qing byte incomingByte = Serial.read(); //Qabul qilingan bayt qiymatini 10 ga bo'lish orqali pin raqamini oling // va 2 ga bo'linishning qolgan qismini olish orqali bizga kerak bo'lgan harakat: //(1 - yonadi, 0 - o'chiriladi) digitalWrite(incomingByte / 10 , incomingByte % 2 ); ))

Eskizni to'ldirishning xususiyatlari

Bluetooth-Bee-ni kontroller bilan bog'lash uchun proshivka bilan bir xil pinlar (0 va 1) ishlatiladi. Shuning uchun, kontrollerni dasturlashda "Simsiz qalqon" dagi "SERIAL SELECT" tugmasi "USB" holatiga o'rnatilishi kerak va miltillagandan keyin uni "MICRO" holatiga qaytarish kerak.

Natija

Xulosa

Ushbu maqolada biz operatsiya xonasi uchun ilovalarni qanday yaratishni bilib oldik Android tizimlari va Bluetooth orqali ma'lumotlarni uzatish. Endi Android operatsion tizimiga asoslangan telefon ekranidagi tugmani bosganingizda, platadagi LEDning holati o'zgaradi.

Siz o'z g'oyangizni ishlab chiqishingiz va Android-da qulayroq interfeys yaratishingiz, u yordamida ancha murakkab qurilmalarni boshqarishingiz, Android Market-da ajoyib ilovalarni nashr qilishingiz va juda ko'p qiziqarli narsalarni qilishingiz mumkin!

Arduino va Bluetooth-da kodni tahrirlashsiz mashina. Eskizni yaratish uchun maxsus bepul dasturlardan foydalanamiz. Bundan tashqari, bizning hunarmandchiligimiz uchun shassi sotib olishning hojati yo'q, deyarli har qanday noto'g'ri radio boshqariladigan avtomobil yoki tank modeli qiladi.

Men Bluetooth orqali boshqariladigan mashina va uning tarkibi haqida umumiy videoni tomosha qilishni taklif qilaman.

Shunday qilib, keling, Android plansheti yoki smartfonidan bluetooth orqali masofadan boshqariladigan o'z qo'llaringiz bilan qanday qilib mashina yasashning jonli misolini ko'rib chiqaylik. Maqola, g'alati, boshlang'ich bilim darajasiga mo'ljallangan. Arduino IDE-da kodni tahrirlash bo'yicha qo'llanma yo'q va biz undan faqat kodimizni to'ldirish uchun foydalanamiz. Va biz FLProg deb nomlangan dasturda boshqaruv algoritmini tuzamiz. Smartfondan boshqarish dasturi - HmiKaskada_free. Lekin birinchi navbatda, bizga kerak bo'lgan apparat haqida.

Arduino va Bluetooth-dagi mashina - apparat.

Sizga kerak bo'lgan birinchi narsa shassi, ya'ni g'ildiraklari va motorlari bo'lgan tana, bizni va atrofimizdagilarni xursand qilish uchun harakat qiladi. Mening vaziyatimda men radio boshqariladigan o'yinchoqdan foydalandim, unda quvvat qismi yonib ketdi. Ta'mirlash istiqboli menga zerikarli tuyuldi va men bolalarim uchun yangi narsalarni xohlardim. Shunday qilib, bu loyiha tug'ildi. Korpusda ikkita dvigatel mavjud bo'lib, ular tank kabi mashinaning yon tomonidagi g'ildiraklarni boshqaradi. Barcha elektron komponentlar ehtiyot qismlarga yuborildi.

Kelajakda yaratilgan elektr motorlarini boshqarish uchun bizga kerak bo'ladi L298N chipidagi H-ko'prigi Aliga havola, men buni undan oldim. Rasmni bosish mumkin.

Arduino uchun H-ko'prigi

5 - 35 volt kuchlanish oralig'ida ikkita motorni boshqarishi mumkin. PWM ni qo'llab-quvvatlaydi, ya'ni siz vosita tezligini sozlashingiz mumkin. Kengash Arduino-ni quvvatlantirish uchun 5 voltlik barqarorlashtirilgan kuchlanish chiqishiga ega.

Ulanish diagrammasi oddiy va oddiy:

Loyihamizni elektron to'ldirishning navbatdagi ajralmas qismi hisoblanadi bluetooth moduli HC-06. Arduino uchun eng keng tarqalgan modul shu qadar mashhurki, u qo'shimcha tavsifga muhtoj emas.

Arduino uchun HC-06 bluetooth

Mening ishimda asosiy element va miya arduino nano, Men bu erda hatto fotosuratlarni ham joylashtirmayman, chunki hamma bu haqda biladi va u bilan qanday ishlashni biladi. Aytgancha, har qanday Arduino platasi, agar u korpusga to'g'ri kelsa, buni qiladi 😀

Batareyalar va lehim simlari spetsifikatsiyani talab qilmaydi. Batareyalarni tanlash elektr motorlarining ish kuchlanishiga bog'liq.

Arduino va Bluetooth-dagi mashina - eskizni chizish.

Takror aytaman - bu erda kodni qazish bo'lmaydi. Biz mashhur FLProg dasturidan foydalanamiz. Uning so'nggi versiyasini rasmiy veb-saytdan yuklab olishingiz mumkin. Dasturning interfeysi sodda va oddiy, ammo u juda katta funksionallikka ega va deyarli barcha mashhur modullarni qo'llab-quvvatlaydi. Men uni qanday ishlatishni yozmayman, chunki bu bir nechta maqolani oladi. Aytmoqchimanki, men arduino va uning klonlari uchun eskizlar yaratish uchun qulayroq va qulayroq dasturni uchratmadim. Interfeys ekrani:

FLProg interfeysi

Sayt matn va video qo'llanmalar bilan to'la, men buni tushunasiz deb o'ylayman.

Masofadan boshqariladigan avtomobil uchun loyihamni Yandex diskidan yuklab olish mumkin.

Arduino va Bluetooth-dagi mashina - Android planshetida boshqaruv interfeysi.

Ko'p so'rovlar tufayli men maqolada HmiKaskada android asosida boshqaruv interfeysini ishlab chiqish bo'yicha batafsil ko'rsatmalar yozdim. Havolani bosish mumkin.

Android bilan ishlaydigan qurilmalar uchun HmiKaskada (YandexDisk-ga havola) deb nomlangan dastur mavjud. U dastlab qimmatbaho sanoat HMI panellariga muqobil sifatida ishlab chiqilgan. Ammo qiziquvchan onglar uning hamma narsani boshqarishi mumkinligini tezda angladilar. Bizning holatda, yozuv mashinkasi. U Wi-Fi va Bluetooth simsiz interfeyslarini qo'llab-quvvatlaydi va siz qurilmani to'g'ridan-to'g'ri USB orqali ulashingiz mumkin.

Dasturning pullik va bepul versiyalari mavjud. Menda ikkalasi ham bor, lekin men sizga ko'rsatish va yana bir bor bepul versiyaning mutlaqo funktsional ekanligiga ishonch hosil qilish uchun loyihani bepul versiyada qildim. Bepul va PRO versiyalarining asosiy farqi shundaki, u faqat Bluetooth orqali ishlaydi.

FLProg forumida KaScada bilan moslik bo'yicha ulkan mavzu mavjud va ishlab chiquvchi faol va xushmuomala. Men boshqaruv panelining skrinshotini joylashtirishdan hech qanday ma'no ko'rmayapman - bu videoda.



 


O'qing:



Nima uchun noutbukga kichik SSD kerak va unga Windows-ni o'rnatishga arziydimi?

Nima uchun noutbukga kichik SSD kerak va unga Windows-ni o'rnatishga arziydimi?

O'yinlar uchun SSD drayveri qanchalik muhim, u nimaga ta'sir qiladi va ushbu texnologiyaning foydaliligi nimada - bu bizning maqolamizda muhokama qilinadi. Qattiq holat...

Dasturlar yordamida flesh-diskni ta'mirlash Noutbukdagi USB portni qanday tuzatish kerak

Dasturlar yordamida flesh-diskni ta'mirlash Noutbukdagi USB portni qanday tuzatish kerak

USB portini qanday tuzatish mumkin? Mutaxassisdan javob: Kompyuterdan foydalanganda USB portlari tez-tez buziladi. Birinchidan, ular muvaffaqiyatsizlikka uchradi ...

Disk tuzilishi buzilgan, o'qish mumkin emas, nima qilish kerak?

Disk tuzilishi buzilgan, o'qish mumkin emas, nima qilish kerak?

Foydalanuvchilarning shaxsiy kompyuterlarida ko'pincha muhim ma'lumotlar - hujjatlar, fotosuratlar, videolar saqlanadi, ammo ma'lumotlarning zaxira nusxasi odatda...

Kompyuter nimadan iborat?

Kompyuter nimadan iborat?

Nashr etilgan: 14.01.2017 Assalomu alaykum, do'stlar, bugun biz kompyuter tizim blokining dizaynini batafsil ko'rib chiqamiz. Keling, nima ekanligini bilib olaylik ...

tasma tasviri RSS