Мазмуну:

Magicbitтен жөнөкөй радар системасы: 6 кадам
Magicbitтен жөнөкөй радар системасы: 6 кадам

Video: Magicbitтен жөнөкөй радар системасы: 6 кадам

Video: Magicbitтен жөнөкөй радар системасы: 6 кадам
Video: Во бору брусника (2 серия) (1989) фильм 2024, Июль
Anonim

Бул окуу куралы HC-SR04 сенсорун жана Microbit иштетүү тактасын жана Arduino IDEнин жардамы менен жөнөкөй радар системасын кантип жасоону көрсөтөт.

Берилиштер:

  • SG90 Micro-servo мотор
  • Өткөргүч зымдар (жалпы)
  • Нан тактасы (жалпы)
  • Magicbit
  • USB-Aдан Micro-USB кабелине
  • УЗИ сенсор - HC -SR04 (жалпы)

1 -кадам: Окуя

Бул үйрөткүчтө биз Magicbit core dev boardтун жардамы менен жөнөкөй радар системасын кантип жасоону үйрөнөбүз. Бул үчүн биз HC-SR04 УЗИ сенсорун колдонобуз жана маалыматтарды көрсөтүү үчүн биз иштетүү чөйрөсүн колдонобуз. Баштайлы.

2 -кадам: Теория жана методология

Биринчиден, бул кантип иштээрин талкуулайлы. Принцип абдан оңой. Биринчиден, сенсорубузду 180 градус диапазонунда үзгүлтүксүз вертикалдуу огунун айланасында айландырабыз. Бул кыймыл учурунда биз УЗИ сенсорунан ар бир бурчта жакынкы объектке чейинки аралык тууралуу маалыматтарды алабыз. Бул процесс үчүн биз Magicbit негизги тактасын колдонобуз. Андан кийин, биз маалыматтарды көрсөтүү үчүн иштетүү чөйрөсү менен байланыш түзүшүбүз керек. Ошондуктан биз ылайыктуу ылдамдыкта сериялык байланыш протоколун колдонобуз. Андан кийин биз IDEди иштетүү менен радар системасынын интерфейсин түзөбүз. Бул IDEде биз сериялык байланышты реалдуу убакытта сериал аркылуу алуу үчүн конфигурациялайбыз. Ошентип, биз Magicbit менен реалдуу убакытта байланышып турабыз жана Magicbitтен IDEге иштетүүчү маалыматтарды көрсөтөбүз.

3 -кадам: Аппараттык орнотуу

Аппараттык орнотуу
Аппараттык орнотуу
Аппараттык орнотуу
Аппараттык орнотуу

Бул долбоор үчүн биз негизинен үч аппараттык компоненттерди колдондук. Алар Magicbit, servo мотор жана УЗИ сенсор. Бул бөлүктөрдүн ортосундагы байланыш жогорудагы сүрөттө көрсөтүлгөн.

УЗИ сенсорунун кубаттуулугу үчүн 3.3 в колдонулат. Ошентип, биз Magicbit тактасынын төмөнкү оң портун колдонуп, Magicbitке УЗИ сенсорун туташтырдык. Бирок серво мотору туура иштөө үчүн 5В колдонулат, ошондуктан биз servo моторду Magicbit менен туташтыруу үчүн сол жактын төмөнкү портун колдондук. Бул учурда, биз Magic bit servo Connector модулун колдонобуз. Бирок, эгерде сизде бул модуль жок болсо, сиз 5Vдан 5Vга, Gndден Gndга жана Magbitbit боюнча 26 пинге сигналдын пинти туташтыруу үчүн үч секиргич зымды колдоно аласыз.

Районду кургандан кийин бизде кичинекей механикалык бөлүк бар. кичинекей гайканы колдонуу менен servo моторго бир тараптуу servo туташтыргычын коюңуз. Андан кийин сенсорду ошол туташтыргычка L формасындагы кронштейн же туура жол менен оңдоңуз. Бүт системадан кийин биз нан тактасына бекиттик. Бирок сиз servo жана Magicbitти орнотуу үчүн башка бетти колдоно аласыз.

4 -кадам: Программаны орнотуу

Программалык камсыздоону орнотуу
Программалык камсыздоону орнотуу
Программалык камсыздоону орнотуу
Программалык камсыздоону орнотуу

Программалык камсыздоо жагы кичинекей комплекстүү. Туура түшүнүү үчүн кийинки бөлүмгө өтүүдөн мурун төмөнкү шилтемелерге шилтеме кылсаңыз болот.

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

hello.processing.org/editor/

Келгиле, Arduino IDE кодун жана ал коддун кантип иштээрин карап көрөлү.

Серво айдоо үчүн биз ESP32 servo китепканасын колдонобуз. Бул китепкана дээрлик Arduino IDEдеги сыйкырдуу бит тактасынын менеджерине кирет. УЗИ сенсору менен күрөшүү үчүн newPing китепканасын колдонобуз. Бул төмөнкү шилтемеден жүктөп алса болот.

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

ZIP файлын жүктөп алып, инструменттерге өтүңүз> китепкананы кошуңуз> Arduinoдогу Zip китепканасын кошуңуз. азыр жаңы пин китепканасынын жүктөлүп алынган ZIP файлын тандаңыз. Кайра иштетүү менен байланыш үчүн биз 115200 байдын ылдамдыгы менен сериялык байланышты колдондук. Бул ESP32 үчүн эң туура жыштык. Ар бир бурчта биз бул протоколду колдонуп маалыматтарды компьютерге жөнөтөбүз. Бул маалыматка сенсордон жакынкы алдыңкы объектке чейинки аралык, айлануу багыты жана бурулуш бурчу кирет. Илмек үчүн экөөнү колдонуп, сервопроводубузду эки тарапка айландырабыз. Бир даражада айлануу учурунда биз сериялык маалыматтарды 4 жолу жөнөткөнбүз. Мунун себебин бир бөлүктүн түшүндүрмөсүн иштеп чыгууда түшүнө аласыз.

Эми кайра иштетүү чөйрөсүн кароого убакыт келди. Бул Java негизделген программалоо программасы. Биз IDE иштетүүдө ушул эскизде программабыздын эскизин жаза алабыз. Биз ошондой эле программабызды иштетүүдөн визуалдык продукт чыгара алабыз. Ошондой эле сиз 2D жана 3d объекттери катары чыгара аласыз. Ал гана эмес, бул сүрөттөрдү иштетүү жана башка көптөгөн нерселер үчүн колдонулушу мүмкүн.

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

Кодду ийгиликтүү жүктөгөндөн кийин, сыйкырчылыкка жана аппараттык бөлүккө ийгиликтүү иштетүү IDE ачыңыз жана кодду иштетүү баскычын чыкылдатыңыз. Эми сизде абдан жөнөкөй радар системасы бар.

Сиз көргөзгүңүз келген нерселерди каалагандай коддорду ыңгайлаштыра аласыз.

5 -кадам: Мүчүлүштүктөрдү оңдоо

Эскиз иштетилбей жатат.

  • Бир аз күтө туруңуз. Иштетүү убактысы сиздин PC жана 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 китепканасы 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 (); // Ultrasonic сенсор менен ченелген аралыкты эсептөө функциясын чакырат (int j = 0; j0) {break; } Serial.print (i); // Учурдагы даражаны Serial Port Serial.print (",") жөнөтөт; // Serial.print (j) индекстөө үчүн кийинчерээк Processing IDEде керектүү болгон мурунку маанинин жанына кошумча белгини жөнөтөт; // Учурдагы даражаны Serial Port Serial.print ("*") жөнөтөт; Serial.print (1); // Аралыктын маанисин Serial Port Serial.print ("/") жөнөтөт; // Serial.print (расстояние) индекстөө үчүн кийинчерээк Processing IDEде керектүү болгон мурунку маанинин жанына кошумча белгини жөнөтөт; // Аралыктын маанисин Serial Port Serial.print (".") Жөнөтөт; // Кошумча белгини индекстөө үчүн кийинчерээк Processing 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 Port Serial.print (",") жөнөтөт; // Serial.print (j) индекстөө үчүн кийинчерээк Processing IDEде керектүү болгон мурунку маанинин жанына кошумча белгини жөнөтөт; // Учурдагы даражаны Serial Port Serial.print ("*") жөнөтөт; Serial.print (-1); // Аралыктын маанисин Serial Port Serial.print ("/") жөнөтөт; // Serial.print (расстояние) индекстөө үчүн кийинчерээк Processing IDEде керектүү болгон мурунку маанинин жанына кошумча белгини жөнөтөт; // Аралыктын маанисин Serial Port Serial.print (".") Жөнөтөт; // Индекстөө үчүн кийинчерээк Processing IDEде керектүү болгон мурунку маанинин жанына кошумча символду жөнөтөт}}

}

Сунушталууда: