Мазмұны:

Magicbit -тен қарапайым радар жүйесі: 6 қадам
Magicbit -тен қарапайым радар жүйесі: 6 қадам

Бейне: Magicbit -тен қарапайым радар жүйесі: 6 қадам

Бейне: Magicbit -тен қарапайым радар жүйесі: 6 қадам
Бейне: Learn Coding with MagicBit 2024, Шілде
Anonim

Бұл нұсқаулықта HC-SR04 сенсоры мен Microbit әзірлеуші тақтасы мен Arduino IDE көмегімен қарапайым радар жүйесін қалай жасау керектігі көрсетілген.

Жабдықтар:

  • SG90 микросерво қозғалтқышы
  • Өткізгіш сымдар (жалпы)
  • Нан тақтасы (жалпы)
  • Magicbit
  • USB-A-Micro-USB кабелі
  • Ультрадыбыстық сенсор - HC -SR04 (жалпы)

1 -қадам: Әңгіме

Бұл оқулықта біз Magicbit core dev тақтасының көмегімен қарапайым радар жүйесін қалай жасау керектігін білеміз. Осы мақсатта біз HC-SR04 ультрадыбыстық сенсорды қолданамыз және деректерді көрсету үшін өңдеу ортасын қолданамыз. Бастайық.

2 -қадам: Теория мен әдістеме

Алдымен, бұл қалай жұмыс істейтінін талқылайық. Бұл принцип өте оңай. Алдымен сенсорды тік ось айналасында 180 градусқа үздіксіз айналдырамыз. Бұл қозғалыс кезінде біз ультрадыбыстық сенсордан ең жақын объектіге дейінгі қашықтық туралы деректерді әр бұрыштан аламыз. Бұл процесс үшін біз Magicbit негізгі тақтасын қолданамыз. Осыдан кейін біз деректерді көрсету үшін өңдеу ортасымен байланыс орнатуымыз керек. Сондықтан біз сәйкес жылдамдықтағы сериялық байланыс хаттамасын қолданамыз. Содан кейін біз IDE өңдеу арқылы радар жүйесінің интерфейсін жасаймыз. Бұл IDE -де біз сериялық байланысты нақты уақыттағы деректерді алу үшін реттейміз. Осылайша біз Magicbit -пен нақты уақытта байланыс жасаймыз және Magicbit -тен IDE өңдеуге жіберетін деректерді көрсетеміз.

3 -қадам: Жабдықты орнату

Жабдықты орнату
Жабдықты орнату
Жабдықты орнату
Жабдықты орнату

Бұл жоба үшін біз негізінен үш аппараттық компонентті қолдандық. Олар Magicbit, серво қозғалтқышы және ультрадыбыстық сенсор. Барлық осы бөліктер арасындағы байланыс жоғарыдағы суретте көрсетілген.

Ультрадыбыстық сенсор 3.3 вольтты қосу үшін қолданылады. Біз ультрадыбыстық датчикті Magicbit -ке қосу үшін Magicbit тақтасының төменгі оң жақ портын қолдандық. Серво қозғалтқышы 5В дұрыс жұмыс жасау үшін пайдаланылады, сондықтан біз сервистік қозғалтқышты Magicbit -ке қосу үшін сол жақ төменгі портты қолдандық. Бұл жағдайда біз Magic bit servo қосқыш модулін қолданамыз. Бірақ егер сізде бұл модуль болмаса, сіз 5 В -тан 5 В -қа, Gnd -тен Gnd -ге және Magbitbit -тегі 26 істікшеге сигнал пинін қосуға үш секіргіш сымды қолдана аласыз.

Схеманы құрғаннан кейін бізде кішкене механикалық бөлік бар. кішкене гайканы пайдаланып, бір жақты серво қосқышын серво қозғалтқышына орнатыңыз. Содан кейін сенсорды сол коннекторға L -тәрізді кронштейнмен немесе дұрыс жолмен бекітіңіз. Бүкіл жүйеден кейін біз тақтаға орнаттық. Бірақ servo мен Magicbit орнату үшін басқа бетті қолдануға болады.

4 -қадам: Бағдарламалық қамтамасыз етуді орнату

Бағдарламалық қамтамасыз етуді орнату
Бағдарламалық қамтамасыз етуді орнату
Бағдарламалық қамтамасыз етуді орнату
Бағдарламалық қамтамасыз етуді орнату

Бағдарламалық жасақтама - бұл кішкентай бит. Дұрыс түсіну үшін келесі бөлімге өтпес бұрын келесі сілтемелерге сілтеме жасай аласыз.

magicbit-arduino.readthedocs.io/kz/latest/

hello.processing.org/editor/

Arduino IDE кодын және бұл кодтың қалай жұмыс істейтінін қарастырайық.

Серво жүргізу үшін біз ESP32 серво кітапханасын қолданамыз. Бұл кітапхана Arduino IDE -де сиқырлы биттік тақта менеджеріне кіреді. Ультрадыбыстық сенсормен жұмыс істеу үшін біз newPing кітапханасын қолданамыз. Мұны келесі сілтемеден жүктеуге болады.

bitbucket.org/teckel12/arduino-new-ping/do…

ZIP файлын жүктеп алып, құралдарға өтіңіз> кітапхананы қосу> Arduino -да Zip кітапханасын қосыңыз. енді жүктелген жаңа PIN кітапханасының ZIP файлын таңдаңыз. Өңдеумен байланыс үшін біз 115200 байды қолданатын сериялық байланысты қолдандық. Бұл ESP32 үшін ең қолайлы жиілік. Біз әр бұрышта осы хаттаманы қолдана отырып, деректерді компьютерге жібереміз. Сенсордан жақын маңдағы объектіге дейінгі қашықтық, бұрылу бағыты мен бұрылу бұрышы осы мәліметтерге енгізілген. Біз ілмектер үшін екеуін қолдана отырып, өз сервомызды екі бағытта айналдырамыз. Бір градусқа айналу кезінде біз сериялық деректерді 4 рет жібердік. Мұның себебін түсініктеме бөлігін өңдеу кезінде түсінуге болады.

Енді өңдеу ортасына қарау уақыты келді. Бұл Java негізіндегі бағдарламалау бағдарламасы. Біз IDE өңдеуде осы эскизге өз бағдарламамыздың эскизін жаза аламыз. Біз сондай -ақ бағдарламаны іске қосудан визуалды нәтиже шығара аламыз. Сондай -ақ, сіз 2D және 3D нысандары ретінде шығуды ала аласыз. Бұл ғана емес, бұл кескінді өңдеу үшін және тағы басқалар үшін қолданыла алады.

Өңдеу эскизінде алдымен біз қарапайым графикалық функцияларды қолдана отырып, мәліметтерді көрсету интерфейсін жасаймыз. Кодтың басында біз сериялық кітапханаларды қосу арқылы сериялық байланыс орнатамыз. Орнату функциясында Magicbit -ті компьютерге қосу үшін қандай USB портын қолданғанын өзгерту қажет. кодты жүктеуге Arduino IDE орнатқан кезде Arduino IDE көмегімен портыңызды тексере аласыз. Содан кейін эскизді өңдеу кезінде орнату бөлігінде ком -порт атауын өзгертіңіз. сериялық деректер болған кезде, Serialevent функциясы автоматты түрде іске қосылады. Осылайша, кодтың негізгі логикасы бұрыштар мен деректердің жоғалуын болдырмау үшін сериялық оқиғаға қосылады. жаңа деректер болған кезде, біз бұрышқа сәйкес экранда сызық сызамыз, егер ол кезде объектіні анықтау болмаса, онда толық сызық жасыл түске боялған. Олай болмаған жағдайда сенсордан объектке дейінгі қашықтыққа сәйкес сызықтың бір бөлігі қызыл болады. Сонымен қатар, айналу бағыты бойынша біз сол сызыққа жасыл түс деңгейі төмендейтін тағы 200 сызық жүргіземіз. әр Main арасында бізде 0,25 градус айырмашылық бар. Осылайша, біз Magicbit -тен әр дәрежеде бір уақытта 4 оқуды аламыз. Осының арқасында біз экранда әдемі іздеу жасай аламыз.

Код сәтті жүктелгеннен кейін сиқырлыққа және аппараттық бөлікке орнатылғаннан кейін өңдеу IDE сәтті ашылады және іске қосу түймесін басу арқылы код іске қосылады. Енді сізде өте қарапайым радар жүйесі бар.

Сіз көрсеткіңіз келетін нәрсені қалағаныңызша кодтарды баптай аласыз.

5 -қадам: ақауларды жою

Эскизді өңдеу орындалмайды.

  • Біраз уақыт күтіңіз. Іске қосылу уақыты компьютер мен GPU өнімділігіне байланысты.
  • Эскизді өңдеу кезінде сериялық порт нөмірінің дұрыстығын тексеріңіз.
  • USB байланысының дұрыс орнатылғанын тексеріңіз.
  • Ультрадыбыстық сенсор мен Magicbit арасындағы байланысты тексеріңіз.
  • Сериялық мониторды ашып, деректердің Arduino -дан келетінін тексеріңіз. Олай болмаса, мәселе сіздің Arduino коды немесе USB қосылымында.

Серво жұмыс істемейді.

  • USB байланысының дұрыс орнатылғанын тексеріңіз.
  • Сымдарды тексеріңіз.
  • Серваның жақсы жағдайда екенін тексеріңіз.

6 -қадам: Arduino коды

#қосу

#TRIGGER_PIN 21 анықтау #ECHO_PIN 22 анықтау #MAX_DISTANCE 200 анықтау NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); #include // servo library int қашықтықты қосады; Servo RadarServo; void setup () {Serial.begin (115200); RadarServo.attach (26); // Серво қозғалтқышы бекітілген кідіріс қай істікшеде екенін анықтайды (3000); } void loop () {// servo қозғалтқышты 15 -тен 165 градусқа бұрады (int i = 0; i <= 180; i ++) {RadarServo.write (i); кешіктіру (50); қашықтық = sonar.ping_cm (); // Ультрадыбыстық сенсормен өлшенетін қашықтықты есептеу үшін функцияны шақырады (int j = 0; j0) {break; } Serial.print (i); // Ағымдағы дәрежені Serial.print сериялық портына жібереді («,»); // Қосу таңбасын Serial.print (j) индекстеуге арналған Processing IDE -де қажет болатын алдыңғы мәннің жанына жібереді; // Ағымдағы дәрежені Serial.print сериялық портына жібереді («*»); Serial.print (1); // Қашықтық мәнін Serial.print порталына жібереді («/»); // Қосымша таңбаны Serial.print (қашықтық) индекстеу үшін Processing IDE кейін қажет болатын алдыңғы мәннің жанына жібереді; // Қашықтық мәнін Serial.print порталына жібереді («.»); // Индекстеу үшін өңдеу IDE-де кейінірек қажет мәннің жанына қосымша таңбаны жібереді}} // Алдыңғы жолдарды 165-тен 15 градусқа дейін қайталайды (int i = 180; i> = 0; i-) {RadarServo.write (i); кешіктіру (50); қашықтық = sonar.ping_cm (); for (int j = 75; j> = 0; j- = 25) {if (i == 180 && (j == 75 || j == 50 || j == 25)) {жалғастыру; } Serial.print (i); // Ағымдағы дәрежені Serial.print сериялық портына жібереді («,»); // Қосу таңбасын Serial.print (j) индекстеуге арналған Processing IDE -де қажет болатын алдыңғы мәннің жанына жібереді; // Ағымдағы дәрежені Serial.print сериялық портына жібереді («*»); Serial.print (-1); // Қашықтық мәнін Serial.print порталына жібереді («/»); // Қосымша таңбаны Serial.print (қашықтық) индекстеу үшін Processing IDE кейін қажет болатын алдыңғы мәннің жанына жібереді; // Қашықтық мәнін Serial.print порталына жібереді («.»); // Қосымша таңбаны индекстеу үшін Processing IDE -де қажет болатын алдыңғы мәннің жанына жібереді}}

}

Ұсынылған: