Processing va Google Speech API yordamida Arduino ovozli boshqarish. Arduino yordamida LEDni ovozli boshqarish

Qandaydir tarzda bu g'oya paydo bo'ldi ovozli boshqaruv Arduino, lekin bitta Arduino etarli emas, chunki tizim uchun aqlli uy shuningdek, kompyuter va uning tizimlari bilan aloqa o'rnatishingiz kerak.

Yechim topish:

BitVoicer
Men Arduino bilan birgalikda BitVoicer-dan foydalangan holda har xil maqolalarga duch keldim, ammo muammo shundaki, BitVoicer faqat Windows-da ishlaydi va bu tizimni Unix-da ishlaydigan Rasberry Pi kabi oddiy qurilmalarda ishlatishga imkon bermaydi.
Arduino ovozini tanib olish
Ovozni tanib olish moduli tufayli Arduino-ni ovoz bilan boshqarish ham mumkin, ammo hozircha men uni sotib olishdan mamnun emasman va ushbu moduldan foydalanishda bir qator noqulayliklar mavjud: cheklangan miqdordagi buyruqlar, mashaqqatli mashg'ulotlar, yangi buyruqlar modulni miltillatishni talab qiladi, agar bu tizim allaqachon kamchilik bo'lsa disk raskadrovka qilindi va o'rnatildi.

Qaror

Men tizimning to'plamda ishlashiga imkon beradigan o'zaro faoliyat platformalar echimini izlay boshladim operatsion tizimlar... Buni topdi: Java / Processing uchun matn kutubxonasiga nutq ... Kompleks til asosida amalga oshiriladi Qayta ishlash (Java) va Google Speach API biz allaqachon mushuk haqida yozganmiz. Ushbu qaror sizning ovozingizni real vaqtda kuzatib borish imkoniyatini beradi enableAutoRecord (), ovoz balandligini belgilang enableAutoThreshold (), ulanmoq tashqi mikrofonlar getLineIn (), tanib olish tilini ko'rsating setLanguage (String)... Funktsiyalar va xususiyatlarning to'liq ro'yxati ishlab chiquvchining veb-saytida joylashgan: http://stt.getflourish.com. Ishlash uchun bizga Google Speech API kaliti kerak. Qanday qilib olish mumkinligi bu erda tasvirlangan: www.chromium.org/developers/how-tos/api-keys ... Faqatgina salbiy nuqta shundaki, Google Speech kuniga atigi 50 ta so'rovni ishlashga imkon beradi, ammo amalda 500 dan ortiq so'rovlar ko'rib chiqiladi.

Kelajakda matnni boshqarishni osonlashtirish uchun men allaqachon yozilgan barcha manbalarni biriktiraman ovozli buyruqlar, Arduino taxtasiga ulanish, Arduino taxtasi uchun eskiz, iboralarni ovozli tasdiqlash va allaqachon mavjud bo'lgan va ishlayotgan barcha narsalar: manbalar. Yuklab olingandan so'ng, GoogleTTS papkasi Processing kutubxonalariga joylashtirilgan "a. Arduino uchun eskiz GoogleTTS / ArduinoSerial papkasida. Hammasi Processa 3.0a4-da yozilgan, rasmiy veb-saytda oldindan nashr etilgan.

Amalga oshirish ("Mening buyrug'imni tinglang!"):
Biz tan olish to'g'risida qaror qildik. Endi biz kerakli buyruqlarni bajarishimiz va ular bo'yicha qaror qabul qilishimiz kerak. Bo'lim buning uchun javobgardir:
bekor buyruqlar () (if (result.equals ("arduino")) (// matchni qidiryapsiz // matchni qabul qilganda buyruqni bajarasiz) else if (result.equals ("qancha vaqt")) (// matchni qabul qilganda buyruqni bajarish ))
Ovozli javob
Endi bizga gugurt topilsa, bizga inson ovozi bilan javob beradigan vosita kerak. Amalga oshirish vositasi, aniqrog'i matnni ovozga aylantiruvchi modul sifatida Google Translate tanlandi. Matn so'rov orqali Google serveriga o'zgartiriladi, o'zgartiriladi ovozli fayl va bizga mp3 formatida qaytarib yubordi. Bo'lim buning uchun javobgardir:
bekor googleTTS (String txt, String tili) (// matn ovozga googleTTS buyrug'i bilan o'zgartiriladi ("text", "language") String u \u003d "http://translate.google.com/translate_tts?tl\u003d"; u \u003d u + til + "& q \u003d" + txt; u \u003d u. almashtirish ("", "% 20"); harakat qilib ko'ring ( Url url \u003d yangi URL (u); harakat qilib ko'ring (URLConnection connection \u003d url.openConnection (); connection.setRequestProperty ("User-Agent", "Mozilla / 4.0 (mos; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322 ;.) NET CLR 1.2.30703) "); connection.connect (); InputStream bu \u003d connection.getInputStream (); File f \u003d new File (sketchPath +" / "+ txt +" .mp3 "); OutputStream out \u003d new FileOutputStream ( f); bayt buf \u003d yangi bayt; int len; while ((len \u003d is.read (buf))\u003e 0) (out.write (buf, 0, len);) out.close (); is.close ( ); println ("Fayl yaratildi:" + txt + ".mp3");) catch (IOException e) (e.printStackTrace ();)) catch (MalformedURLException e) (e.printStackTrace ();))

Ushbu bo'lim to'g'ridan-to'g'ri matnli iboralarni qayta ishlash uchun javobgardir:
void voicer (String s) (// voicer ("text") println (s) buyrug'i bilan bajarilgan; // matnni kuzatishda foydalaniladi File f \u003d new File (sketchPath + "/" + s + ".mp3"); // Faylni tekshirish // Agar fayl allaqachon mavjud bo'lsa, faylni o'ynang, agar (f.exists ()) (println ("Fayl allaqachon mavjud! Faylni ijro etish!"); Player \u003d minim.loadFile (s + ".mp3"); player.play ();) // Agar hali biror fayl bo'lmasa, uni boshqasini yarating (println ("Hali fayl yo'q! Uni yaratish!"); GoogleTTS (s, "ru"); pleer \u003d minim.loadFile (s + ".mp3"); player.play ();))

Tanib olish va ovozli tasdiqlashni amalga oshirish misoli:
bekor buyruqlar () (agar (result.equals ("kompyuter")) (// gugurt ovozini qidiryapsiz ("Tinglash"); // ovozli tasdiqni oling // gugurt qabul qilinganda buyruq bajariladi))
U tirik!

Qayta ishlash + Arduino

Xo'sh, u ishlaganga o'xshaydi, lekin bir narsa etishmayapti. Endi bularning hammasini Arduino bilan "do'stlashtiraylik".
Arduino-ga ma'lumot yuborish uchun biz ishlov berishda ketma-ket ulanishni boshlaymiz (uchun mac foydalanuvchilari va Unix):
String portName \u003d Serial.list (); myPort \u003d yangi ketma-ket (bu, portName, 9600); myPort.bufferUntil ("\\ n");

Uchun Windows foydalanuvchilari:
String myPort \u003d yangi ketma-ket (bu "Sizning MAQOMOTI portingiz", 9600); myPort.bufferUntil ("\\ n");

Ovozli o'yin topilganda u erga buyruq yuboring:
bekor buyruqlar () (if (result.equals ("chiroqni yoqish")) (// Agar ovozli ibora "chiroqni yoqish" deb tanilgan bo'lsa, u holda so'rovni bajaring myPort.write ("Yuqori"); // Yuqori buyruqni ketma-ket ulanishga yuboradi voicer ("Chiroqni yoqish"); // Buyruqning bajarilishini ovozli tasdiqlash) else if (result.equals ("nurni o'chirish")) (myPort.write ("Low"); // Low buyrug'ini ketma-ket ulanish voiceriga yuboradi (" Chiroqni o'chiring "); // Tasdiqlash // Match olinganidan keyin buyruq bajariladi))

Endi Arduino kengashiga o'tamiz. Biz ketma-ket portni tinglashimiz kerak va ro'yxatdan buyruq topsak, buyruqqa muvofiq kerakli amalni bajaring. Eskiz juda oddiy:
int led \u003d 13; // Void setup-dagi LEDning pinasi () (Serial.begin (9600); // ketma-ket ulanish pinMode-ni ishga tushiring (led, OUTPUT); // LED-ning pimi ma'lumot uzatadi) bo'sh halqa () (int i \u003d 0; // o'zgaruvchan satrni bufer char buferiga haydash uchun; // unga qator qo'shish uchun bufer qatori, agar (Serial.available ()) (// ketma-ket portni ma'lumotlarning kechikishini tekshiring (100); // o'qishni buferga olib borishda (Serial.available) () && i< 99) { buffer = Serial.read(); } //закрываем массив buffer="\0"; String val = buffer; if (val == "High") { // Если получили значение High Serial.println("Led is On"); // Отправляем в Serial подтверждение получения digitalWrite(led, HIGH); // Включаем светодиод } if (val == "Low") { // Если получили значение Low Serial.println("Led is Off"); // Отправляем в Serial подтверждение получения digitalWrite(led, LOW); // Выключаем светодиод } } }
Hammasi. Tekshirilmoqda.

Muammolar va rejalar:

Chunki Men bu vaqtgacha hech qanday dasturlash bilan shug'ullanmaganman, disk raskadrovka jarayonida ba'zi narsalarni to'liq tushunmayapman. Agar kimdir menga quyidagi ro'yxatdagi muammolarni qanday hal qilishni aytsa, minnatdor bo'lar edim:

Eng asosiy muammo shundaki, ovozli ibora to'liq aytilmaydi. Oxirgi harflar yo'qoladi. Ovozli fayl bilan birga kelgan bo'lsa-da google server yilda normal shakl... Vaziyatni tushunganimdek: audio pleyer muammosi, ammo hozircha aniq emas.
- Men allaqachon Google Speech API kuniga 50 ta so'rovni cheklashi haqida yozgan edim, lekin aslida u ko'proq chiqadi. Har holda, bu etarli emas. Men asosiy buyruqning mahalliy tan olinishini ro'yxatdan o'tkazishni rejalashtirmoqchiman va faqat tanib bo'lgandan keyingina matnning qolgan qismini Google tomonidan qayta ishlashga jo'nataman. "Men echim izlayapman.
- Menimcha, Arduino Ethernet qalqoniga buyruq yuborish zarar qilmaydi, chunki ba'zi tizimlar asosiy kompyuterdan yaxshi masofada joylashgan bo'lishi mumkin va bu erda ketma-ket ulanish endi ishlamaydi. Men ushbu qaror bilan shu kunlarning birida shug'ullanaman, tk. Menda Arduino-ni unga chekilgan qalqon bilan ulash uchun yo'riqnoma yo'q.

Hammasi shu! Iltimos, kod satrlari bo'yicha qat'iy hukm qilmang! Men ushbu tramplinni o'rganishni endigina boshladim va agar kerak bo'lmasa qanday qilib burunni burkatsangiz va buni qanday qilishni ko'rsatsangiz juda minnatdorman. Ushbu loyihaga boshqa manfaatdor shaxslar qo'shilsa, men ham xursand bo'laman - men har doim muloqotga ochiqman!

Ushbu loyihada men yuzni aniqlash va kuzatuv tizimini birlashtirdim.

Qisqacha aytganda, loyihaning mohiyati: aylanma mexanizmga o'rnatilgan veb-kamera operatsiya xonasi nazorati ostida kompyuterga ulangan windows tizimlari va belgilangan bilan dasturiy ta'minot Ochiq... Agar dastur veb-kamerani ko'rish sohasida yuzni aniqlasa, yuzning o'rtasi hisoblanadi. X va Y koordinatalari kompyuterga USB orqali ulangan Arduino boshqaruvchisiga uzatiladi. O'z navbatida, Arduino boshqaruvchisi, qabul qilingan buyruqlarga binoan, ikkita servomotorni boshqaradi: X koordinatasida va Y koordinatasida, shunday qilib. kuzatuv tizimi ta'minlangan.

OpenCV (Open Source Computer Vision Library) kutubxonasini yuklab olish mumkin. Kutubxona ko'p platformali bo'lib, hozirda u quyidagi OS uchun mavjud: Windows, Linux, Android, Mac OS va hatto iOS. Kutubxona tasvirni real vaqtda qayta ishlashni ta'minlaydi. C / C ++ da yozilgan.

Shunday qilib ushbu loyiha yumshoq va qattiq eritmalar aralashmasidir. Tasvirni qayta ishlash kompyuterda, servo boshqaruv esa kontroller yordamida amalga oshiriladi.

Xo'sh, men loyiha uchun foydalangan narsalar:

Dasturiy ta'minot:
Windows uchun Arduino IDE 1.0

Microsoft Visual C ++ 2010 Express SP1
Win32 uchun ketma-ket C ++ kutubxonasi (Thierry Schneider tomonidan)

Temir:
Windows 7 SP1 kompyuteri
Arduino Uno yoki mos keladigan + PSU
2 servo
USB veb-kamera

Shunday qilib, ketaylik.

Qadam 1. Dasturiy ta'minotni o'rnatish

1) Agar sizda Windows OS bo'lsa, OpenCV-2.3.1-win-superpack.exe faylini (yoki undan keyingi versiyasini) yuklab oling va kutubxonani o'rnating.

2) Microsoft Visual C ++ 2010 Express dasturini yuklab oling va o'rnating. Agar sizda 64 bitli bo'lsa windows versiyasi, keyin siz Windows SDK-ni yuklab olishingiz kerak bo'ladi (lekin 64-versiyada muammolar bo'lishi mumkin, men hali ham OpenCV-ni Windows 7 x64 ostida ishlashga qodir bo'lmadim).

Rasmiy veb-saytda Visual C ++ uchun OpenCV sozlamalarini o'qing.

Qadam 2. Kamera va servolarni biriktirish

Men tuzilmani "bardoshli" qilmadim, chunki yakuniy maqsadga erishgandan so'ng, keyingi loyiha uchun hamma narsani ajrataman.
Men veb-kamerani X o'qi servo dvigateliga uladim va u o'z navbatida uni Y o'qi servo motoriga o'rnatdi va men bu tuzilmani "uchinchi qo'llar" dan qisqichga o'rnatdim.

Qadam 3. Ulanish

Servo vosita ulanishi:
X o'qi servosidan sariq pin Arduino kontrollerining 9 piniga ulanadi
Y o'qi servosidan sariq pim Arduino kontrollerining 10 pimiga ulanadi
Servo-dan Vcc qizil pin 5V piniga ulanadi
Servodan qora GND pin Arduino kontrollerining GND piniga ulanadi

Veb-kameraga ulanish:
Veb-kamera kompyuterga ulangan USB interfeysi... C ++ dasturi veb-kamerani USB port raqami bilan aniqlaydi. Sizga dasturda portni ko'rsatish kerak bo'lishi mumkin.

Arduino UNO tekshiruvi aloqasi:
Tekshirish moslamasi USB interfeysi orqali kompyuterga ulanadi. Tizimda virtual MAQOMOTI porti paydo bo'ladi, uni C ++ dastur kodiga qo'shish kerak.

Bir necha yil oldin (va ehtimol hozir ham) xonadagi yorug'likni qo'llaringizni qarsak chalib boshqarish g'oyasi qanday mashhur bo'lganini eslaysizmi? Ammo, oxir-oqibat, bu juda qulay, siz to'shakda yotasiz, o'rnidan turishga va chiroqni yopib qo'yishga yoki uyga borishga dangasalik qilasiz, qorong'i, o'chirgichni uzoq vaqt his qiling va mana shu ostonadan bir-ikki qarsak chalinadi va chiroq allaqachon yonib turadi. Menimcha, bu kontseptsiya hanuzgacha dolzarb bo'lib qolmoqda, ammo 5 yil, 10 yil oldingi kontseptsiyalar bilan taqqoslaganda, unga yuqori texnologiyalarni qo'llash mumkin. Endi nisbatan kichik miqdordagi mablag 'uchun siz bir nechta qismlarni sotib olishingiz va shu kabi funktsiyalar uchun tuzilmani dasturlashingiz mumkin, bu quyida muhokama qilinadi.

Bugun biz ovozli buyruqlarni (shu jumladan, yozib olingan ovozli buyruq ichidagi ovozni) aniqlashga mo'ljallangan modulni ko'rib chiqamiz - Ovozni tanib olish moduli V3.1 (V3) yoki FZ0475 umumiy kodlash nomi.

To'plamga modulning o'zi kiradi ( bosilgan elektron karta juda yuqori yaxshi sifat), egiluvchan oyoq ustidagi mikrofon 3,5 mm raz'em ulagichi va modul platasi uchun 2,56 mm balandlikdagi burchakli PLS kontaktlari (agar ular boshqa yo'l bilan modul kontaktlariga ulangan bo'lsa, ularni tashlab qo'yish mumkin).

Bugungi kunda turli ishlab chiqaruvchilar va ishlab chiquvchilar yoki dizayndagi o'xshash funktsiyalarga ega bo'lgan bir necha turdagi modullar mavjud. Ushbu modul ovozni tanib olish, mening fikrimcha, narx, funktsionallik, qulaylik o'rtasida ma'lum bir muvozanatga ega. EasyVR moduli kuchliroq va sezilarli darajada qimmatroq bo'ladi. LD3320 asosida ishlab chiqarilgan modullar arzonroq va noqulay bo'ladi (noqulay, hech bo'lmaganda ularda oddiy tavsiflarni topish oson emas, aks holda u allaqachon sub'ektivdir).

V3.1 (V3) ovozni aniqlash modulining xususiyatlari:

  • Besleme quvvati - 5 volt
  • Joriy iste'mol - 40 mA gacha
  • Interfeyslar - UART, GPIO
  • Tanib olish aniqligi - 99% (ideal sharoitda)
  • Faoliyat doirasi - ishlatilgan mikrofonga bog'liq, to'plamdan standart mikrofon uchun, masofa etarlicha baland ovoz bilan maksimal masofaning 0,5-1 metrini tashkil qiladi, agar ovoz jim bo'lsa, u holda siz mikrofonni og'zingizga yaqinlashtirishingiz kerak bo'ladi

Modul - bu kichkina toza taxta, unda asosiy mikrokontroller (qora dog '), mikrofonni ulash uchun 3,5 mm raz'em ulagichi, flesh-xotira chipi, GPIO, UART va quvvat kontaktlari, bir juft LED va elektronning ishlashi uchun zarur bo'lgan boshqa jihozlar joylashgan - rezistorlar, kondansatörler, kvarts. Kengashning ixcham o'lchamlari modulni osongina birlashtirishga imkon beradi o'z ishlanmalari... Ovozli buyruqlar doirasini oshirish uchun, ehtimol kuchaytirgichli mikrofondan foydalanish kerak. Qabul qilinadigan diapazonga etib borgach, modul aqlli uy tizimlarida foydalanish uchun javob beradi. Operatsion diapazonini yaxshilash uchun modifikatsiyasiz modul ish stolini boshqarish tizimlarida, shuningdek xavfsizlik tizimlarida (boshqarish va kirishni cheklash) ishlatilishi mumkin. Qisqa diapazon tufayli standart mikrofon yordamida ovozni tanib olish modulidan eshitish vositasi sifatida foydalanish va buyruqlarni simsiz batareykadan va simsiz modullardan foydalangan holda (masalan, HC-05 yoki HC-12 yoki boshqa biron bir narsa) boshqaradigan boshqaruvchiga uzatish xavfsizroq. Modul tashqi mikrokontrollersiz ishlashga qodir, chunki ishlab chiqaruvchi funktsional mustaqillikni o'rnatgan, faqat bitta marta ovozli buyruqlarni yozib olish va mustaqil ishlash parametrlarini o'rnatish kerak tashqi qurilma (Kompyuter yoki MK).

Shunday qilib, ovozni tanib olish moduli bilan ishlashni boshlash uchun biz uni kompyuterga (USB-UART adapteri kerak) yoki mikrokontrollerga ulashimiz kerak (ishlab chiqishimiz kerak) dastur kodi modulni boshqarish uchun).

Kompyuterga yoki mikrokontrollaga ulanish o'rtasida modulni boshqarish va sozlashda tub farq yo'q, shuning uchun aniqlik uchun biz konfiguratsiya uchun shaxsiy kompyuterdan foydalanamiz. Ko'rsatmalarda o'n oltinchi shaklda modul uchun buyruqlar tasvirlangan, shuning uchun qulaylik uchun sizga baytlarni o'n oltilik shaklda uzatuvchi terminal kerak bo'ladi, masalan AccessPort (maqolaning oxirida yuklab olish mumkin). Bundan tashqari, ishlab chiqaruvchi Arduino platformasi foydalanuvchilariga e'tiborini qaratadi va ushbu moduldan foydalanish uchun kutubxona va ushbu kutubxonadan foydalanish bo'yicha ko'rsatmalarni taqdim etadi. Biroq, ko'pchiligimiz Arduino o'ramidan ko'ra to'g'ridan-to'g'ri modulning o'zi bilan ishlashga ko'proq qiziqish bildirmoqdamiz.

Ishga kirishishdan oldin, taxtani aniqlaymiz. O'ng tarafdagi taxtaning uchlarida mikrofon ulagichi, ikkinchisida to'rtta UART interfeys pimi joylashgan. Quyida ovozni aniqlash orqali tetiklanadigan signallarni chiqarish uchun ishlatiladigan sakkizta pin mavjud. Yuqorida, agar ushbu funktsiyadan foydalanilsa, buyruqlar guruhlari (har biri etti ovozli buyruqlar) o'rtasida o'tish uchun signal kiritish sifatida tuzilgan to'rtta kontakt ishlatiladi. Va yuqoridagi qolgan oltita pin, ehtimol, modul xotirasiga ulanish uchun ishlatiladi.

Modulning ishlashi va konfiguratsiyasi uchun buyruqlar tizimidan foydalaniladi. Kadrning umumiy ko'rinishi quyidagicha:

Birinchi to'rtta 00, 01, 02, 03 buyruqlar modul holatini va uning sozlamalarini tekshirish uchun ishlatiladi. Keyingi oltita 10, 11, 12, 13, 14, 15 buyruqlar modul sozlamalarini o'zgartirish uchun ishlatiladi, shu jumladan chiqish portlari va avtomatik yuk parametrlarini boshqarish. Bundan tashqari, ovozli buyruqlarni yozish uchun uchta buyruq 20,21, 22 ishlatiladi. Keyingi uchta buyruq 30,31,32 ovozni aniqlashni boshqarish uchun ishlatiladi. 0A, 0D, FF buyruqlar faqat modulning o'zi tomonidan ma'lumotlarni qaytarishda foydalaniladi. Aslida, buyruqlar ko'p emas va bularning barchasi modul hujjatlarida birinchi qarashda ko'rinadigan darajada qo'rqinchli emas. Ovozni aniqlash moduli bilan ishlash uchun zarur bo'lgan buyruqlarni ko'rib chiqamiz. Mavjud jamoalarning hammasi ham amaliy emas.

Shunisi e'tiborga loyiqki, modul tashqi boshqaruv mikrokontrollerisiz ishlashi, shuningdek, chiqish portlari bilan biron bir narsani mustaqil ravishda boshqarishi mumkin. Buning uchun ularni sozlash kerak (buyruqlar 12, 13, 14).

12-jamoa - chiqish portlarini sozlash. Ushbu buyruq ovozni aniqlash modulining chiqish portlarining ishlash rejimini o'rnatadi.

Format: | AA | 03 | 12 | Rejim | 0A |

MODE to'rtta qiymatni qabul qilishi mumkin bo'lgan joyda: 0 - impuls rejimi (ovozli buyruq ishga tushirilganda, buyruqqa mos keladigan chiqish 13-buyruq bilan belgilangan vaqt davomida o'z holatini o'zgartiradi), 1 - o'tish rejimi (almashtirish yoki almashtirish) (har safar ovozli buyruq ishga tushirilganda, ovozli buyruqqa mos keladigan chiqish teskari), 2-yoqish rejimi (ovozli buyruq ishga tushirilganda, chiqish mantiqiy birlik holatiga o'tadi va endi mantiqiy nol holatiga o'tmaydi, qayta tiklash 14-buyruq bilan amalga oshiriladi), 3-o'chirish rejimi (faqat yoqish rejimiga o'xshash, aksincha, ovozli buyruq ishga tushirilganda mantiqiy nol holatiga o'tadi).

Eng amaliy - bu keraksiz buyruqlarni talab qilmaydigan almashtirish rejimi. Impuls rejimi yaxshi bo'lar edi, ammo bu rejimning mantiqi shundayki, ovozli buyruq ishga tushirilganda, u mantiqiy birlikni bir marta, 10 ms dan 1 soniyagacha chiqaradi. Bu etarli emas. Garchi, ushbu rejim uchun talablarga qarab, u foydali bo'lishi mumkin. Yoqish va o'chirish rejimlari noqulay tarzda amalga oshiriladi, chunki ular qo'shimcha buyruqlar bajarilishini talab qiladi.

13-jamoa - tegishli rejimning impuls muddatini belgilash.

Format: | AA | 03 | 13 | DARAJA | 0A |

Bu erda LEVEL 00 dan 0F gacha bo'lgan qiymatni oladi (10 ms dan 1 s gacha bo'lgan vaqtga to'g'ri keladi).

DARAJA davomiyligi
0x00 10 mil
0x01 15 mil
0x02 20 mil
0x03 25 mil
0x04 30 mil
0x05 35 mil
0x06 40 mil
0x07 45 mil
0x08 50 mil
0x09 75 mil
0x0A 100 mil
0x0B 200 mil
0x0C 300 mil
0x0D 400 ms
0x0E 500 mil
0x0F 1 soniya

14-jamoa - chiqish portlarini yoqish yoki o'chirish rejimlari bilan belgilangan holatga qaytarish.

Format: | AA | 03 | 14 | FF | 0A | - barcha chiqish portlarini qayta tiklash

| AA | 03 + n | 14 | IO0 | ... | IOn | 0A | - tanlangan chiqish portlarini tiklash

Bu erda n - tanlab tiklanadigan pinlar soni, IO0 ... IOn - bu pinlarning ma'lumot yuborish doirasidagi ro'yxati.

Bundan tashqari, ovozli buyruqlar bajarilishi uchun ular modulga yozilishi kerak (modulni o'qitish). Bu erda cheklov mavjud. Bir vaqtning o'zida faqat etti buyruqni tanib olish mumkin, ammo yana ko'plarini yozish mumkin. Taniqli ovozli buyruqlar doirasini kengaytirish uchun modulning kirish portlari tomonidan boshqariladigan guruhlash tizimidan (32-buyruq) foydalaniladi. Ushbu kontaktlarga signallarning konfiguratsiyasini o'rnatish orqali tan olinadigan buyruqlar guruhini tanlash amalga oshiriladi. Bu ishlatilgan ovozli tekshirgich modulining cheklangan ishlashi bilan bog'liq.

20-jamoa - bir yoki bir nechta ovozli buyruqlarni yozib olish.

Format: | AA | 03 + n | 20 | R0 | ... | Rn | 0A |

Bu erda n - yozib olingan ovozli buyruqlar soni (agar bitta buyruq yozilgan bo'lsa n \u003d 0, ikkita buyruq n \u003d 1 va hokazo, Lenght buyrug'ining uzatilishining umumiy formatiga muvofiq - uzunlik), R0 ... Rn - ovozli buyruqlar soni (AA 03 20 03 0A - uchinchi ovozli buyruqni yozib olish buyrug'i).

21-guruh - bitta ovozli buyruqni yozib olish va unga imzo qo'yish.

Format: | AA | 03 + SIGLEN | 21 | RECORD | SIG | 0A |

RECORD - bu ovozli buyruqning raqami, SIG - imzo (u bir necha baytdan iborat bo'lishi mumkin, shunda har bir bayt kerak bo'lsa alifbo belgisining kodlanishiga to'g'ri kelishi mumkin), SIGLEN - bu imzo tarkibidagi baytlar soni.

22-guruh - tanlangan ovozli buyruq uchun imzo qo'shish yoki olib tashlash.

Format: | AA | 03 + SIGLEN | 22 | RECORD | SIG | 0A | - imzo qo'shish

| AA | 03 | 22 | RECORD | 0A | - imzoni olib tashlash

Ovozli buyruqlarni yozib olish jarayonida LED signallarini boshqarish kerak. Yozib olish jarayonini boshlaydigan buyruqni kiritgandan so'ng, sariq (to'q sariq) LED tez miltillay boshlaydi. Qizil LED yonishi bilanoq, siz mikrofonga ovozli buyruqni aytishingiz kerak. Muvaffaqiyatli bo'lsa, sariq (to'q sariq) LED yonadi va keyin yana qizil bo'ladi - ovozli buyruqni tasdiqlashingiz kerak, yana bir bor ayting. Muvaffaqiyatli bo'lsa, ikkala LED yonadi - ovozli buyruq saqlanadi.

Ovozli buyruqlar modulda qayd etilgandan so'ng, ushbu buyruqlar modulning "Tanib oluvchisi" ga joylashguncha hech narsa bo'lmaydi. Buning uchun 30-buyruqdan foydalaning. Ushbu buyruqni bajargandan so'ng, modul ovozli buyruqni saqlangan namunalarga mos kelishini kutishni boshlaydi. Bir vaqtning o'zida faqat etti buyruqni tanib olish mumkin. Bunday holda, modul kartasidagi sariq (to'q sariq) LED asta-sekin miltillaydi.

30-jamoa - yozuvlarni "Recognizer" moduliga yuklash.

Format: | AA | 2 + n | 30 | R0 | ... | Rn | 0A |

Javob formati quyidagicha: | AA | 07 | 0D | 00 | GRPM | R | RI | SIGLEN | SIG | 0A |

GRPM - bu buyruq tegishli bo'lgan guruh haqida ma'lumot (agar ishlatilgan bo'lsa), R tanilgan ovozli buyruq (agar imzo ishlatilmasa, bu ma'lumotlar buyruqni bir-biridan ajratib olish uchun ishlatilishi mumkin), RI - taniqli buyruq indekslari, SIGLEN - baytdagi imzo uzunligi, SIG - imzo (agar ishlatilgan bo'lsa).

Va nihoyat, agar modul mustaqil ishlashi kerak bo'lsa, unda siz 15 dan buyruqni ishlatishingiz kerak avtomatik boshlash tanib oluvchining oldindan belgilab qo'yganiga ko'ra. Bunday holda, ovozni tanib olish moduli yoqilgandan keyin ishga tushirishni talab qilmasdan mustaqil ravishda ishlaydi.

15-jamoa - ishga tushirilganda tanib olishni avtomatik ishga tushirishni sozlash.

Format: | AA | 03 | 15 | 00 | 0A | - avtomatik ishga tushirish funktsiyasini o'chirib qo'yish

| AA | 03 + n | 15 | BITMAP | R0 | ... | Rn | 0A | - avtomatik ishga tushirish funktsiyasini sozlash

Buyruqlarning bajarilishining to'g'riligini nazorat qilish uchun ularning har biri o'z javobiga mos keladi. Agar bunday zarurat tug'ilsa, barcha ma'lumotlarni maqolaning oxirida biriktirilgan ovozni aniqlash moduli uchun hujjatlarda topish mumkin. Barcha raqamli qiymatlar ko'rsatilganligini unutmang o'n oltinchishakl.

Shunday qilib, buyruqlar tizimidan foydalanib, ovozni aniqlash modulini turli maqsadlarda foydalanish uchun moslashuvchan ravishda sozlash mumkin. Agar modulning chiqish portlarini oddiy boshqarish etarli bo'lmasa, ovozni aniqlash moduli boshqa qurilmalarga UART yoki GPIO orqali ulanishi mumkin. Uchun simsiz ulanish ilgari muhokama qilingan modullardan foydalanishingiz mumkin.

Simsiz modullar yordamida siz ovozni aniqlash modulini zarur bo'lgan har qanday qurilmaga ulashingiz mumkin. Masalan, ovozli buyruqlarni tanib olish bo'yicha olingan ma'lumotlarga nisbatan LEDlarni boshqaradigan mikrokontrollaga ulaymiz. Simsiz modullar ma'lumotlarni ikki yo'nalishda uzatish imkonini beradi, shuning uchun agar kerak bo'lsa, mikrokontroller uchun ovozli modulni ishga tushirish va ovozli buyruqlarni yozish uchun kod yozilishi mumkin. Bizning holatlarimizda kompyuter boshqaruvidagi modulda allaqachon bir nechta ovozli buyruqlar yozib olingan va avtomatik yoqish avtomatik ravishda yoqilganda quvvatni yoqish paytida tuzilgan, shuning uchun mikrokontroller uchun biz ushbu ma'lumotlarga nisbatan faqat ma'lumotlarni qabul qilish va LED boshqaruvini tayinlaymiz. STM32F103C8T6 mikrokontroleri ma'lumotni qabul qilish uchun USART1 va LEDlar tomonidan boshqariladigan PB10 ... PB15 pinlarini ishlatadi. Manba kodi maqola oxirida qo'shimchada joylashgan.

Natijalar haqida bir oz

Ovozni aniqlash butunlay to'g'ri emas. Bu tanlangan buyruqlar va foydalanuvchining ovoziga bog'liq. Sinov paytida men bir nechta salbiy fikrlarni topdim. Modul buyruqlarini o'rgatishda "bitta" va "ikkita" ovozli buyruqlar tanlandi. "Ikki" buyrug'i har doim aniq edi, lekin "bitta" buyrug'i ko'pincha "ikki" buyrug'i sifatida aniqlangan va shunga muvofiq ikkinchi buyruqning kodi bajarilgan. Bundan tashqari, ingliz tilida ovozli buyruqlarni berishga harakat qilayotganda (va ular ovozli modulda yozilmagan), "bitta" buyrug'i deyarli har doim "ikkita" deb ta'riflangan. Ehtimol, gap odam ovozining talaffuzi, intonatsiyasi va boshqa jihatlari bilan bog'liq bo'lib, u so'zlashuvchi buyruqlarning ovozli modulini kodlash algoritmiga kiritilgan. Biroq, bu sirlar ishlab chiqaruvchilar ochiq kirish bermang. Bundan tashqari, tanib olish sifatiga tashqi shovqin sharoitlari ta'sir qiladi - ko'chadan gumburlash, muxlislarning shovqini, tasodifiy tovushlar va boshqalar. Ishlab chiqaruvchi bunga e'tibor qaratmoqda yuqori daraja tanib olish aniqligi ideal sharoitda amalga oshiriladi. Kuchaytirgich bilan mikrofondan foydalanish g'oyasi, albatta, qurilmaning ishlash doirasini oshiradi, ammo xatolar ehtimolini ham oshiradi, chunki ovozning kuchayishi shovqin kuchayishi bilan ham sodir bo'ladi.

Natijada, agar siz ovozni tanib olish va ovozli buyruqlarni bajarish uchun past talablarga ega bo'lsangiz, unda ushbu modul unga sarflangan mablag'ni halol ishlaydi.

Radioelementlar ro'yxati

Belgilanish Turi Denominatsiya miqdori EslatmaHisobMening daftarim
IC1 MK STM32

STM32F103C8

1 Bloknotga
VR1 Lineer regulyator

AMS1117-3.3

1 Bloknotga
MOD1, MOD3 Simsiz modulHC-122 Bloknotga
MOD2 Ovozni aniqlash moduliVR3.11 Bloknotga
Z1 Kvarts8 MGts1

Ushbu loyihada men yuzni aniqlash va kuzatuv tizimini birlashtirdim.

Loyihaning mohiyati haqida qisqacha: aylanadigan mexanizmga o'rnatilgan veb-kamera Windows operatsion tizimida ishlaydigan va o'rnatilgan dasturiy ta'minot bilan kompyuterga ulangan Ochiq... Agar dastur veb-kamerani ko'rish sohasida yuzni aniqlasa, yuzning o'rtasi hisoblanadi. X va Y koordinatalari kompyuterga USB orqali ulangan Arduino boshqaruvchisiga uzatiladi. O'z navbatida, Arduino boshqaruvchisi, qabul qilingan buyruqlarga binoan, ikkita servomotorni boshqaradi: X koordinatasida va Y koordinatasida, shunday qilib. kuzatuv tizimi ta'minlangan.

OpenCV (Open Source Computer Vision Library) kutubxonasini yuklab olish mumkin. Kutubxona ko'p platformali bo'lib, hozirda u quyidagi OS uchun mavjud: Windows, Linux, Android, Mac OS va hatto iOS. Kutubxona tasvirni real vaqtda qayta ishlashni ta'minlaydi. C / C ++ da yozilgan.

Shunday qilib ushbu loyiha yumshoq va qattiq eritmalar aralashmasidir. Tasvirni qayta ishlash kompyuterda, servo boshqaruv esa kontroller yordamida amalga oshiriladi.

Xo'sh, men loyiha uchun foydalangan narsalar:

Dasturiy ta'minot:

Temir:

windows 7 SP1 kompyuteri

Arduino Uno yoki mos keladigan + PSU

2 servo

USB veb-kamera

Shunday qilib, ketaylik.

Qadam 1. Dasturiy ta'minotni o'rnatish

1) Agar sizda Windows OS bo'lsa, OpenCV-2.3.1-win-superpack.exe faylini (yoki undan keyingi versiyasini) yuklab oling va kutubxonani o'rnating.

2) Microsoft Visual C ++ 2010 Express dasturini yuklab oling va o'rnating. Agar sizda Windows-ning 64-bitli versiyasi bo'lsa, unda siz Windows SDK-ni yuklab olishingiz kerak bo'ladi (lekin 64-versiyada muammolar bo'lishi mumkin, men hali ham OpenCV-ni Windows 7 x64 ostida ishlashga qodir bo'lmadim).

Rasmiy veb-saytda Visual C ++ uchun OpenCV sozlamalarini o'qing.

Qadam 2. Kamera va servolarni biriktirish

Men tuzilmani "bardoshli" qilmadim, chunki yakuniy maqsadga erishgandan so'ng, keyingi loyiha uchun hamma narsani ajrataman.

Men veb-kamerani X o'qi servo dvigatelga uladim va u o'z navbatida uni Y o'qi servo motoriga o'rnatdi va men bu tuzilmani "uchinchi qo'llar" dan qisqichga o'rnatdim.

Qadam 3. Ulanish

Servo vosita ulanishi:

X o'qi servosidan sariq pim Arduino kontrollerining 9 pimiga ulanadi

Y o'qi servosidan sariq pim Arduino kontrollerining 10 pimiga ulanadi

Servo-dan Vcc qizil pin 5V piniga ulanadi

Servodan olingan qora GND pin Arduino kontrollerining GND piniga ulanadi

Veb-kameraga ulanish:

Veb-kamera kompyuterga USB interfeysi orqali ulangan. C ++ dasturi veb-kamerani USB port raqami bilan aniqlaydi. Sizga dasturda portni ko'rsatish kerak bo'lishi mumkin.

Arduino UNO tekshiruvi aloqasi:

Tekshirish moslamasi USB interfeysi orqali kompyuterga ulanadi. Tizimda virtual MAQOMOTI porti paydo bo'ladi, uni C ++ dastur kodiga qo'shish kerak.

Loyiha fayllarini yuklab oling

Asl maqola ingliz tili (cxem.net sayti uchun Koltykov A.V. tarjimasi)

  • Qayta ishlash,
  • Veb-saytlarni ishlab chiqish
  • Fikr:

    Ovoz berish uchun qandaydir g'oya paydo bo'ldi arduino nazorati, lekin bitta Arduino etarli emas, chunki aqlli uy tizimi uchun siz shuningdek kompyuter va uning tizimlari bilan aloqa o'rnatishingiz kerak.

    Yechim topish:

    BitVoicer
    Men Arduino bilan birgalikda BitVoicer-dan foydalangan holda har xil maqolalarga duch keldim, ammo muammo shundaki, BitVoicer faqat Windows-da ishlaydi va bu tizimni Unix-da ishlaydigan Rasberry Pi kabi oddiy qurilmalarda ishlatishga imkon bermaydi.
    Arduino ovozini tanib olish
    Ovozni tanib olish moduli tufayli Arduino-ni ovoz bilan boshqarish ham mumkin, ammo hozircha men uni sotib olishdan mamnun emasman va ushbu moduldan foydalanishda bir qator noqulayliklar mavjud: cheklangan miqdordagi buyruqlar, mashaqqatli mashg'ulotlar, yangi buyruqlar modulni miltillatishni talab qiladi, agar bu tizim allaqachon kamchilik bo'lsa disk raskadrovka qilindi va o'rnatildi.

    Qaror

    Men tizimni turli xil operatsion tizimlarda ishlashiga imkon beradigan o'zaro faoliyat platformalar echimini izlay boshladim. Buni topdi: Java / Processing uchun matn kutubxonasiga nutq ... Kompleks til asosida amalga oshiriladi Qayta ishlash (Java) va Google Speach API biz allaqachon mushuk haqida yozganmiz. Ushbu yechim sizning ovozingizni real vaqt rejimida kuzatib borish imkonini beradi enableAutoRecord (), ovoz balandligini belgilang enableAutoThreshold (), tashqi mikrofonlarni ulang getLineIn (), tanib olish tilini ko'rsating setLanguage (String)... Funktsiyalar va xususiyatlarning to'liq ro'yxati ishlab chiquvchining veb-saytida joylashgan: http://stt.getflourish.com. Ishlash uchun bizga Google Speech API kaliti kerak. Qanday qilib olish mumkinligi bu erda tasvirlangan: www.chromium.org/developers/how-tos/api-keys ... Faqatgina salbiy nuqta shundaki, Google Speech kuniga atigi 50 ta so'rovni ishlashga imkon beradi, ammo amalda 500 dan ortiq so'rovlar ko'rib chiqiladi.

    Kelajakda matnni boshqarishni osonlashtirish uchun men allaqachon ovozli buyruqlar, Arduino doskasiga ulanish, Arduino taxtasi uchun eskiz, iboralarni ovozli tasdiqlash va mavjud bo'lgan va ishlayotgan boshqa barcha manbalarni biriktiraman. Yuklab olingandan so'ng GoogleTTS papkasi "Kutubxonalarni qayta ishlashga joylashtirilgan. A. Arduino uchun eskiz GoogleTTS / ArduinoSerial papkasida joylashgan. Hammasi Processa 3.0a4-da yozilgan, rasmiy veb-saytda oldindan nashr etilgan.

    Amalga oshirish ("Mening buyrug'imni tinglang!"):
    Biz tan olish to'g'risida qaror qildik. Endi biz kerakli buyruqlarni bajarishimiz va ular bo'yicha qaror qabul qilishimiz kerak. Bo'lim buning uchun javobgardir:
    bekor buyruqlar () (if (result.equals ("arduino")) (// matchni qidiryapsiz // matchni qabul qilganda buyruqni bajarasiz) else if (result.equals ("qancha vaqt")) (// matchni qabul qilganda buyruqni bajarish ))
    Ovozli javob
    Endi bizga gugurt topilsa, bizga inson ovozi bilan javob beradigan vosita kerak. Amalga oshirish vositasi, aniqrog'i matnni ovozga aylantiruvchi modul sifatida Google Translate tanlandi. Matn so'rov orqali Google serveriga yuboriladi, ovozli faylga aylantiriladi va bizga mp3 formatida qaytarib yuboriladi. Bo'lim buning uchun javobgardir:
    bekor googleTTS (String txt, String tili) (// matn googleTTS buyrug'i yordamida ovozga aylantiriladi ("text", "language") String u \u003d "http://translate.google.com/translate_tts?tl\u003d"; u \u003d u + til + "& q \u003d" + txt; u \u003d u. almashtirish ("", "% 20"); harakat qilib ko'ring (URL url \u003d yangi URL (u); harakat qilib ko'ring (URLConnection ulanish \u003d url.openConnection (); ulanish. setRequestProperty ("User-Agent", "Mozilla / 4.0 (mos; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 1.2.30703)"); ulanish.connect ( InputStream is \u003d connection.getInputStream (); File f \u003d new File (sketchPath + "/" + txt + ".mp3"); OutputStream out \u003d new FileOutputStream (f); bayt buf \u003d yangi bayt; int len; while ((len \u003d is.read (buf))\u003e 0) (out.write (buf, 0, len);) out.close (); is.close (); println ("Fayl yaratildi:" + txt + " .mp3 ");) catch (IOException e) (e.printStackTrace ();)) catch (MalformedURLException e) (e.printStackTrace ();))

    Ushbu bo'lim to'g'ridan-to'g'ri matnli iboralarni qayta ishlash uchun javobgardir:
    void voicer (String s) (// voicer ("text") println (s) buyrug'i bilan bajarilgan; // matnni kuzatishda foydalaniladi File f \u003d new File (sketchPath + "/" + s + ".mp3"); // Faylni tekshirish // Agar fayl allaqachon mavjud bo'lsa, faylni o'ynang, agar (f.exists ()) (println ("Fayl allaqachon mavjud! Faylni ijro etish!"); Player \u003d minim.loadFile (s + ".mp3"); player.play ();) // Agar hali biror fayl bo'lmasa, uni boshqasini yarating (println ("Hali fayl yo'q! Uni yaratish!"); GoogleTTS (s, "ru"); pleer \u003d minim.loadFile (s + ".mp3"); player.play ();))

    Tanib olish va ovozli tasdiqlashni amalga oshirish misoli:
    bekor buyruqlar () (agar (result.equals ("kompyuter")) (// gugurt ovozini qidiryapsiz ("Tinglash"); // ovozli tasdiqni oling // gugurt qabul qilinganda buyruq bajariladi))
    U tirik!

    Qayta ishlash + Arduino

    Xo'sh, u ishlaganga o'xshaydi, lekin bir narsa etishmayapti. Endi bularning hammasini Arduino bilan "do'stlashtiraylik".
    Arduino-ga ma'lumot yuborish uchun biz ishlov berishda ketma-ket ulanishni boshlaymiz (Mac va Unix foydalanuvchilari uchun):
    String portName \u003d Serial.list (); myPort \u003d yangi ketma-ket (bu, portName, 9600); myPort.bufferUntil ("\\ n");

    Windows foydalanuvchilari uchun:
    String myPort \u003d yangi ketma-ket (bu "Sizning MAQOMOTI portingiz", 9600); myPort.bufferUntil ("\\ n");

    Ovozli o'yin topilganda u erga buyruq yuboring:
    bekor buyruqlar () (if (result.equals ("chiroqni yoqish")) (// Agar ovozli ibora "chiroqni yoqish" deb tanilgan bo'lsa, u holda so'rovni bajaring myPort.write ("Yuqori"); // Yuqori buyruqni ketma-ket ulanishga yuboradi voicer ("Chiroqni yoqish"); // Buyruqning bajarilishini ovozli tasdiqlash) else if (result.equals ("nurni o'chirish")) (myPort.write ("Low"); // Low buyrug'ini ketma-ket ulanish voiceriga yuboradi (" Chiroqni o'chiring "); // Tasdiqlash // Match olinganidan keyin buyruq bajariladi))

    Endi Arduino kengashiga o'tamiz. Biz ketma-ket portni tinglashimiz kerak va ro'yxatdan buyruq topsak, buyruqqa muvofiq kerakli amalni bajaring. Eskiz juda oddiy:
    int led \u003d 13; // Void setup-dagi LEDning pinasi () (Serial.begin (9600); // ketma-ket ulanish pinMode-ni ishga tushiring (led, OUTPUT); // LED-ning pimi ma'lumot uzatadi) bo'sh halqa () (int i \u003d 0; // o'zgaruvchan satrni bufer char buferiga haydash uchun; // unga qator qo'shish uchun bufer qatori, agar (Serial.available ()) (// ketma-ket portni ma'lumotlarning kechikishini tekshiring (100); // o'qishni buferga olib borishda (Serial.available) () && i< 99) { buffer = Serial.read(); } //закрываем массив buffer="\0"; String val = buffer; if (val == "High") { // Если получили значение High Serial.println("Led is On"); // Отправляем в Serial подтверждение получения digitalWrite(led, HIGH); // Включаем светодиод } if (val == "Low") { // Если получили значение Low Serial.println("Led is Off"); // Отправляем в Serial подтверждение получения digitalWrite(led, LOW); // Выключаем светодиод } } }
    Hammasi. Tekshirilmoqda.

    Muammolar va rejalar:

    Chunki Men bu vaqtgacha hech qanday dasturlash bilan shug'ullanmaganman, disk raskadrovka jarayonida ba'zi narsalarni to'liq tushunmayapman. Agar kimdir menga quyidagi ro'yxatdagi muammolarni qanday hal qilishni aytsa, minnatdor bo'lar edim:

    Eng asosiy muammo shundaki, ovozli ibora to'liq aytilmaydi. Oxirgi harflar yo'qoladi. Ovozli fayl Google serveridan odatdagi shaklida bo'lsa ham. Vaziyatni tushunganimdek: audio pleyer muammosi, ammo hozircha aniq emas.
    - Men allaqachon Google Speech API kuniga 50 ta so'rovni cheklashi haqida yozgan edim, lekin aslida u ko'proq chiqadi. Har holda, bu etarli emas. Men asosiy buyruqning mahalliy tan olinishini ro'yxatdan o'tkazishni rejalashtirmoqchiman va faqat tanib bo'lgandan keyingina matnning qolgan qismini Google tomonidan qayta ishlashga jo'nataman. "Men echim izlayapman.
    - Menimcha, Arduino Ethernet qalqoniga buyruq yuborish zarar qilmaydi, chunki ba'zi tizimlar asosiy kompyuterdan yaxshi masofada joylashgan bo'lishi mumkin va bu erda ketma-ket ulanish endi ishlamaydi. Men ushbu qaror bilan shu kunlarning birida shug'ullanaman, tk. Menda Arduino-ni unga chekilgan qalqon bilan ulash uchun yo'riqnoma yo'q.

    Hammasi shu! Iltimos, kod satrlari bo'yicha qat'iy hukm qilmang! Men ushbu tramplinni o'rganishni endigina boshladim va agar kerak bo'lmasa qanday qilib burunni burkatsangiz va buni qanday qilishni ko'rsatsangiz juda minnatdorman. Ushbu loyihaga boshqa manfaatdor shaxslar qo'shilsa, men ham xursand bo'laman - men har doim muloqotga ochiqman!

    Maqola sizga yoqdimi? Do'stlar bilan bo'lishish uchun: