Агуулгын хүснэгт:

Custom Arduino нь CAN жолооны хүрдийг шинэ машины стерео дээр байлгах болно: 9 алхам (зурагтай)
Custom Arduino нь CAN жолооны хүрдийг шинэ машины стерео дээр байлгах болно: 9 алхам (зурагтай)

Видео: Custom Arduino нь CAN жолооны хүрдийг шинэ машины стерео дээр байлгах болно: 9 алхам (зурагтай)

Видео: Custom Arduino нь CAN жолооны хүрдийг шинэ машины стерео дээр байлгах болно: 9 алхам (зурагтай)
Видео: 50 САМЫХ ИННОВАЦИОННЫХ ЛИЧНЫХ ТРАНСПОРТНЫХ СРЕДСТВ 2021–2022 гг. 2024, Арваннэгдүгээр
Anonim
Custom Arduino нь шинэ машины стерео ашиглан жолооны хүрдний товчлууруудыг хадгалах боломжтой болно
Custom Arduino нь шинэ машины стерео ашиглан жолооны хүрдний товчлууруудыг хадгалах боломжтой болно
Custom Arduino нь шинэ машины стерео ашиглан жолооны хүрдний товчлууруудыг хадгалж үлдэх болно
Custom Arduino нь шинэ машины стерео ашиглан жолооны хүрдний товчлууруудыг хадгалж үлдэх болно
Custom Arduino нь шинэ машины стерео ашиглан жолооны хүрдний товчлууруудыг хадгалах боломжтой болно
Custom Arduino нь шинэ машины стерео ашиглан жолооны хүрдний товчлууруудыг хадгалах боломжтой болно

Би Volvo V70 -02 машиныхаа анхны стерео төхөөрөмжийг шинэ стерео төхөөрөмжөөр солихоор шийдсэн тул mp3, bluetooth, гар чөлөөтэй гэх мэт зүйлсийг үзэх боломжтой болно.

Миний машинд стерео жолооны хүрдний удирдлага байдаг бөгөөд үүнийг би ашиглахыг хүсч байна. Зах зээл дээр миний машинд тохирох хэд хэдэн адаптерууд байдаг тул ийм асуудал гарна гэж би төсөөлөөгүй. Гэсэн хэдий ч тэд тийм биш болохыг би удалгүй олж мэдэв! (V70 -ийн адаптерууд нь арай өөр CAN протоколын улмаас -02 машинд асуудалтай байж магадгүй юм шиг санагдаж байна.)

Тэгвэл яах ёстой вэ? Хуучин стерео хадгалах уу? Ажиллахгүй товчлууртай амьдралаар амьдрах уу? Мэдээж үгүй! Хэрэв зах зээл дээр ажиллах адаптер байхгүй бол бид үүнийг бүтээх хэрэгтэй болно!

Энэхүү зааварчилгааг жолооны хүрдний товчлуурууд CAN автобусаар дамждаг автомашинд ашиглаж болно.

Алхам 1: Стерео руу командыг хэрхэн илгээх талаар олж мэдээрэй

Стерео руу командыг хэрхэн илгээх талаар олж мэдээрэй
Стерео руу командыг хэрхэн илгээх талаар олж мэдээрэй
Стерео руу командыг хэрхэн илгээх талаар олж мэдээрэй
Стерео руу командыг хэрхэн илгээх талаар олж мэдээрэй

Таны хийх ёстой хамгийн эхний зүйл бол стерео ямар төрлийн алсын оролт хүлээж байгааг олж мэдэх явдал юм. Ихэвчлэн үйлдвэрлэгчид үүнийг хэлдэггүй бөгөөд та урвуу инженерчлэлийн алсын удирдлагатай ажиллах боломжгүй байж магадгүй юм.

Миний шинэ стерео (Кенвуд) -ын алсын удирдлага нь нэг утаснаас бүрддэг бөгөөд энэ нь хэрхэн ажилладаг талаар ямар ч мэдээлэл олж чадаагүй байна. Гэсэн хэдий ч алсын зайнаас оруулахад зориулагдсан 3.5 мм -ийн үүртэй. Би ч бас энэ талаар юу ч олж чадаагүй. Гэхдээ бусад брэндүүдэд зориулсан 3.5 мм -ийн үүрний тухай зарим мэдээлэл байдаг бөгөөд энэ нь үзүүр ба ханцуйны хооронд тодорхой эсэргүүцэл (өөрөөр хэлбэл бөгж ба ханцуйны хооронд) ашигласнаар өөр өөр командуудыг тодорхойлдог болохыг харуулж байна. Жишээлбэл https://forum.arduino.cc/index.php?topic=230068.0. Тиймээс би үүнийг туршихаар шийдсэн бөгөөд талх, хэд хэдэн резистор, 3.5 мм -ийн залгуурыг стерео залгаж, талхны самбартай холбосон. Эхэндээ юу ч танигдаагүй, гэхдээ стерео нь "сургалтын горим" цэстэй бөгөөд янз бүрийн эсэргүүцэл үзүүлэх үед командыг амжилттай тохируулж болно. Амжилт!

Гэсэн хэдий ч би энд алдаа хийснээ хожим нь мэдсэн: Стерео сурсан мэт санагдсан командууд бүгд ажиллахгүй байна. Жишээлбэл Сургалтын горимд 30 кОм олдсон боловч дараа нь ажиллаагүй бөгөөд зарим командуудын хувьд эсэргүүцлийн зөрүү маш бага байсан тул хожим нь буруу командыг ажиллуулсан.

Тиймээс, та удирдахыг хүсч буй бүх алсын командуудын хувьд резистор, унтраалга товчлуур бүхий талхны самбар ашиглахыг зөвлөж байна.

Хэрэв таны машины стерео оролтыг ижил аргаар хүлээн авах боломжгүй бол та энэ шийдлийг дасан зохицохын тулд хэрхэн ажилладагийг олж мэдэх хэрэгтэй болно. Хэрэв та огт ойлгож чадахгүй бол танд асуудал байна.

Алхам 2: CAN автобусанд хаанаас холбогдохоо олж мэдээрэй

CAN автобусанд хаанаас холбогдохыг олж мэдээрэй
CAN автобусанд хаанаас холбогдохыг олж мэдээрэй

Та CAN автобусанд холбогдох сайн газар олох хэрэгтэй. Та CAN -ээр холбогддог хуучин стерео төхөөрөмжийг сольж байгаа тул стерео бичлэгийн цаана байгааг олж мэдэх боломжтой болно. CAN автобус нь хос эрчилсэн утаснаас бүрддэг (CAN-L ба CAN_H). Машиныхаа найдвартай байдлыг хангахын тулд утас диаграмаас лавлана уу.

Алхам 3: CAN мессежийн урвуу инженерчлэл

CAN мессежийн урвуу инженерчлэл
CAN мессежийн урвуу инженерчлэл

Google танд ямар CAN мессежийг сонсох ёстойг хэлж өгөхгүй л бол та CAN автобусанд холбогдож, урвуу инженерчлэл хийх шаардлагатай болно. Би Arduino Uno болон CAN бамбайг ашигласан. (Танд CAN бамбай үнэхээр хэрэггүй, дараа нь та хямдхан бүрэлдэхүүн хэсгүүдийг талхны самбар дээр ашиглаж болно.)

Машиндаа холбогдохдоо ямар хурдны хурдыг ашиглах ёстойг Google -ээс лавлаарай. (Ихэвчлэн өндөр хурдтай, бага хурдтай CAN сүлжээ байгааг олж мэдэх болно. Та бага хурдны сүлжээнд холбогдож байна.)

Та мөн Arduino програмыг CAN бүх мессежийг цуваа интерфейсээр бүртгүүлэхээр програмчлах хэрэгтэй бөгөөд ингэснээр та тэдгээрийг компьютер дээрээ бүртгэлийн файлд хадгалах боломжтой болно. Стандарт Arduino IDE нь өгөгдлийг бүртгэлийн файлд хадгалахгүй, гэхдээ та жишээ нь. Үүний оронд шаваас.

Програмаа бичиж эхлэхээсээ өмнө та CAN_BUS_Shield номын санг суулгах хэрэгтэй.

Програмаа эхлүүлэхэд тань туслах хэдэн хуурамч код энд байна.

тохируулах()

{init цуврал холболт init CAN номын сан} loop () {хэрэв CAN мессеж хүлээн авбал {унших CAN зурвасын форматын бүртгэлийн оруулгыг бичих бүртгэлийн бичлэгийг цуврал руу}}

Зөвлөмж:

Та CAN номын сангийн функцэд хандахын тулд MCP_CAN ангийн жишээг ашиглах болно.

MCP_CAN m_can;

Init CAN:

байхад (m_can.begin ()! = CAN_OK)

{саатал (1000); }

CAN мессежийг шалгаж, уншина уу:

while (m_can.checkReceive () == CAN_MSGAVAIL)

{// CAN id, мессежийн урт, мессежийн өгөгдлийг авах m_can.readMsgBufID (& m_canId, & m_msgLen, m_msgBuf); // Энд зурвасын өгөгдлөөр ямар нэгэн зүйл хий.

Хэрэв танд илүү их тусламж хэрэгтэй бол дараагийн алхамд миний програмын линкийг олж болно. CAN бамбай номын санд мөн жишээ оруулсан болно. Эсвэл үүнтэй төстэй алхам орсон mviljoen2 -ийн зааварчилгааг шалгаарай.

Эхлээд танд өгөгдлийг шүүхэд туслах лавлах файл хэрэгтэй болно. Гал асаах горимыг радио горимд шилжүүлж, товчлуурыг даралгүйгээр бүх зүйлийг хэдэн минутын турш тэмдэглэ.

Дараа нь товчлуур бүрийн хувьд мод бэлтгэж эхэлж, товчлуурыг дарж, бүртгэлийг зогсоо.

Дууссаны дараа та нэр дэвшигчдээ олохын тулд товчлуурын бүртгэлээс лавлах бүртгэлд байгаа бүх зүйлийг шүүж авах хэрэгтэй. Би маш олон зурвасууд байсныг олж мэдээд илүү их бүртгэл хөтөлж, "А командын нэр дэвшигчид бүх А товчлуур файлд байх ёстой бөгөөд лавлах файлуудын аль нь ч байхгүй" байхыг шаардсан. Энэ нь надад хичээх хэдхэн боломж үлдээсэн юм.

Бүртгэлд маш олон мессеж байх тул та үүнд зориулж програм бичих эсвэл Excel програмыг ашиглах шаардлагатай болно. (Би өөрийн хэрэгцээнд зориулан маш хатуу кодлогдсон нөхцөлтэй програмыг ашигласан тул таны ашиглаж болох програмыг санал болгож чадахгүй байна гэж айж байна.)

Анхааруулах үг: Та товчлуур үргэлж ижил зурвас гаргадаг гэдэгт итгэлтэй байж чадахгүй. Зарим битүүд нь өсөн нэмэгдэж буй тоолуур гэх мэт байж болно.

Хэрэв танд Volvo V70 -02 байгаа бол дараахь зүйлийг хийх болно.

  • Зурвасын id: 0x0400066Byte0: 0x00, 0x40, 0x80 эсвэл 0xc0 (хамаагүй)
  • Байт1: 0х00 (хамаагүй)
  • Byte2: 0x00 (хамаагүй)
  • Byte3: 0x00-0x07 (хамаагүй)
  • Byte4: 0x1f (хамаагүй)
  • Байт 5: 0x40 (хамаагүй)
  • Byte6: 0x40 (хамаагүй)
  • Byte7: Товчлуурын таних тэмдэг: 0x77 = дууны хэмжээг нэмэгдүүлэх, 0x7b = дууг багасгах, 0x7d = дараагийн дуу, 0x7e = өмнөх дуу.

Та командыг олсон гэдэгт итгэж байгаа бол програмыг өөрчлөх нь зүйтэй бөгөөд ингэснээр зөвхөн сонирхолтой мессежүүдийг бүртгэдэг. Зөв зурвасыг олж тогтоосон эсэхээ баталгаажуулахын тулд товчлууруудыг дарж байхдаа цуваа бүртгэлийн цонхыг хараарай.

Алхам 4: Тоног төхөөрөмжийн прототип

Тоног төхөөрөмжийн прототип
Тоног төхөөрөмжийн прототип

Таны техник хангамж дараахь чадвартай байх шаардлагатай.

  1. CAN автобусанд хүлээн авсан командуудыг тодорхойлох
  2. Стерео руу өөр форматаар командыг илгээх

Хэрэв танд хангалттай зай байгаа бол та эхний хэсэгт Arduino болон CAN бамбайг ашиглаж, хоёрдугаарт нэмэлт тоног төхөөрөмж хавсаргаж болно. Гэсэн хэдий ч зарим сул талууд байдаг:

  • CAN бамбайны өртөг
  • Хэмжээ
  • Arduino цахилгаан хангамж нь таны машинтай 12V шууд холбогдсон бол баярлахгүй (энэ нь ажиллах болно, гэхдээ ашиглалтын хугацаа богиносох магадлалтай).

Тиймээс би оронд нь дараахь зүйлийг ашигласан.

  • Атмега 328, "Arduino тархи". (Зарим хувилбарууд байдаг, Arduino Uno дээрх хувилбартай тэнцүү хувилбарыг аваарай. Та үүнийг Arduino ачаалагч дуудагчтай эсвэл ачаалалгүй худалдаж авах боломжтой.)
  • 16 МГц болор + цагны дохионы конденсатор.
  • MCP2551 CAN дамжуулагч.
  • MCP2515 CAN хянагч.
  • TSR1-2450, 6.5-36V-ийг 5V болгон хөрвүүлнэ. (Прототипт ашиглагддаггүй, учир нь програм хангамж нь тэжээлийн хангамжийг анхаарч үздэггүй.)
  • Стерео руу командыг илгээхэд ашиглагдах CD4066B унтраалга.
  • Хэд хэдэн резистор. (Энэ утгыг Eagle -ийн схемээс дараагийн алхамаас олж болно.)

Энэхүү тохиргооны сайн тал нь Arduino болон CAN shield номын сантай бүрэн нийцэж байгаа явдал юм.

Хэрэв та 4 -өөс дээш товчлууртай ажиллахыг хүсч байвал CD4066B -ээс өөр зүйл ашиглахыг хүсч магадгүй юм. CD4066B -ийг нэг дор дөрвөн унтраалга гэж тодорхойлж болох бөгөөд тус бүрийг Atmegas GPIO зүүгээр удирддаг. Шилжүүлэгч бүрт стерео оролт болгон ашигладаг эсэргүүцлийг хянахын тулд резистор холбогдсон байдаг. Тиймээс үүнийг дөрвөн өөр командыг илгээхэд хялбархан ашиглаж болно. Хэрэв тэдгээрийг нэгтгэвэл эсэргүүцлийн нэмэлт утгыг авах боломжтой. Энд миний өмнө дурдсан алдаа гардаг. Надад дөрвөн товчлуур бий, гэхдээ би зургаан өөр команд өгөхийн тулд хоёр товчлуурыг урт, богино дарж хэрэгжүүлэхээр төлөвлөсөн. Гэхдээ эцэст нь надад зургаан ажлын хослол өгөх резисторуудын хослол олдохгүй байгааг олж мэдэв. Үүний оронд аналог гаралтын дохиог стерео (3.5 мм -ийн үзүүр) руу холбох боломжтой байж магадгүй юм. (Атмегад жинхэнэ аналог гаралт байхгүй тул нэмэлт тоног төхөөрөмж шаардлагатай болно гэдгийг анхаарна уу.)

Туршилтын зорилгоор би өөрийн загвартай холбогдохын тулд энгийн "машин ба стерео" симулятор хийв. Энэ нь дибаг хийх ажлыг хөнгөвчилдөг бөгөөд хэрэв та машиндаа суух, програм суулгах дургүй бол би үүнийг зөвлөж чадна.

Прототипийг зураг дээрх доод талхны самбараар дүрсэлсэн болно. Цахилгаан хангамж, програмчлал, цуваа бүртгэлийн хувьд үүнийг Armeino Uno -д хавсаргасан бөгөөд тэнд Atmega чипийг салгасан болно.

Талхны дээд самбар нь анхны загварыг туршихад ашиглах машин + стерео симулятор юм.

Прототип + симулятор нь дараахь байдлаар ажиллах зорилготой юм.

  • Симулятор самбар дээрх унтраалга товчлууруудын нэгийг дарна уу. (Эдгээр нь таны жолооны хүрдний товчлуурууд юм.)
  • Симулятор програм нь товчлуур дарах үед товчлуур дарагдсан тохиолдолд 70 мс тутамд холбогдох CAN мессежийг илгээх болно. (Учир нь миний өмнө авсан логууд миний машинд иймэрхүү байдлаар ажилладаг болохыг харуулсан болно.) Мөн автобусны бусад урсгалыг дуурайхын тулд олон "хог" CAN мессеж илгээх болно.
  • CAN мессежийг CAN автобусанд илгээдэг.
  • CAN мессежийг прототипээр хүлээн авдаг.
  • MCP2515 нь мессежийн id дээр үндэслэн хамааралгүй бүх мессежийг хаядаг.
  • MCP2515 ажиллах ёстой мессежийг хүлээн авах үед энэ нь мессеж хүлээж авсан болохыг илтгэнэ.
  • Атмега мессежийг уншиж, аль товчлуурыг идэвхтэй гэж үзэх ёстойг шийдэх болно.
  • Атмега нь хамгийн сүүлчийн мессежийг хэзээ хүлээж авсныг хянах бөгөөд тодорхой хугацааны дараа товчлуурыг суллагдсан гэж үзэх болно. (CAN зурвасууд нь товчлуур дарагдсан эсвэл суллагдсан биш харин зөвхөн доошоо байсныг илтгэнэ.)
  • Хэрэв товчлуурыг идэвхтэй гэж үзвэл CD4066B -ийн нэг буюу хэд хэдэн унтраалга идэвхжих болно.
  • Симулятор (одоо таны стерео болж байгаа) үзүүр ба ханцуйны хооронд эсэргүүцэл байгааг анзаарах болно. (Зөвлөгөө нь 3.3V -тэй, резистороор дамжуулан аналог оролтын зүүтэй холбогдсон байна. Хэрэв ямар ч команд идэвхгүй бол энэ зүү нь 3.3V -ийг унших болно.
  • Тушаал идэвхжсэн үед харгалзах удирдамж идэвхжих болно. (Би хоёр товчлууртаа өөр өөр урт / богино товчлуур ашиглахаар төлөвлөж байсан тул зургаан гэрэл байдаг.)

Прототипийн тоног төхөөрөмжийн талаар илүү дэлгэрэнгүй мэдээлэл авахыг хүсвэл Eagle -ийн схемийг дараагийн алхамаас үзнэ үү.

Симулятор самбарын тоног төхөөрөмжийн талаархи нэмэлт мэдээлэл:

  • 16 МГц болор
  • 22 pF конденсатор
  • LED эсэргүүцлийг LED шинж чанар дээр үндэслэн сонгох ёстой
  • A7 ба 3.3V -д холбогдсон резистор, жишээ нь сонгоно уу. 2kOhm (чухал биш).
  • MCP2551 ба MCP2515-тай холбогдсон резисторууд нь дээш / доошоо татагддаг. Жишээ нь сонгох 10 кОм.

(Эсвэл та хүсвэл симуляторын "CAN хэсэг" -ийн хувьд CAN бамбайг ашиглаж болно.)

Тоног төхөөрөмжийг зохион бүтээхдээ Атмега тээглүүрийг Arduino тээглүүртэй хэрхэн яаж харуулдаг болохыг мэдэх нь чухал юм.

(Ямар ч LED -ийг CD 4066B руу шууд бүү холбоорой, энэ нь зөвхөн бага гүйдэлтэй ажиллах чадвартай. Би анх удаа гаралтыг туршиж үзэхэд чип нь ашиггүй болох гэж оролдсон. Сайн зүйл бол би хэдийг нь худалдаж авсан юм. маш хямд байдаг.)

Алхам 5: Гал хамгаалагчийн програмчлал

Прототипт MCP2515 руу цагийн дохио өгөх тусдаа бүрэлдэхүүн хэсгүүд байхгүй болохыг та өмнөх алхам дээр анзаарсан байх. Учир нь бидний ашиглаж болох Атмега цагийн дохио болгон ашигладаг 16 МГц болор аль хэдийн байдаг. Гэхдээ бид үүнийг шууд MCP2515 -тэй холбож чадахгүй бөгөөд Атмега дээр цаг дуусах дохио байдаггүй.

(Хэрэв та хүсвэл энэ алхамыг алгасаад оронд нь нэмэлт цагийн тоног төхөөрөмж нэмж болно.)

Гэсэн хэдий ч бид "гал хамгаалагчийн програмчлал" гэж нэрлэгддэг зүйлийг ашиглан GPIO тээглүүрийн аль нэгэнд цаг гарах дохиог идэвхжүүлж болно.

Эхлээд та Arduino IDE -д ашигладаг "board.txt" нэртэй файлыг олох хэрэгтэй болно. Та Arduino Uno -ийн оруулгыг хуулж, шинэ нэр өгч, low_fuses -ийн утгыг өөрчлөх шаардлагатай болно.

Миний шинэ самбар дараах байдлаар харагдаж байна.

###################################################### #############Arduino Uno дээр суурилсан#Өөрчлөлт:#бага_халгуур хамгаалагчийг 0xff -ээс 0xbf болгон өөрчилж, 16 MHz цагийг идэвхжүүлэхийн тулд Atmega PB0/pin 14 = Arduino D8

clkuno.name = Цаг дуусах (Arduino Uno)

clkuno.upload.protocol = arduino clkuno.upload.maximum_size = 32256 clkuno.upload.speed = 115200 clkuno.bootloader.low_fuses = 0xbf clkuno.bootloader.high_fuses = 0xde clkuno.bootloader.extended_cootplpho = 0xfo.bootloader.file = optiboot_atmega328.hex clkuno.bootloader.unlock_bits = 0xff clkuno.bootloader.lock_bits = 0xcf clkuno.build.mcu = atmega328p clkuno.build.f_cpu = 16000000L clkuno.build.core.core

##############################################################

Хяналтын битийг 0 болгож тохируулснаар цаг дуусахыг идэвхжүүлдэг болохыг анхаарна уу.

ТУЗ -ийн тохиргооны файлд шинэ самбар үүсгэсний дараа та шинэ ачаалагчийг Atmega руу шарах хэрэгтэй болно. Үүнийг хийх янз бүрийн арга байдаг, би https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard дээр тайлбарласан аргыг ашигласан.

Үүнийг хийсний дараа Atmega -д програм байршуулахдаа Arduino Uno биш харин шинэ самбарын төрлийг сонгохоо мартуузай.

Алхам 6: Програм хангамж

Програм хангамж
Програм хангамж

Зарим програм хангамж нэмж хэлгүй техник хангамжийг ухаалаг болгох цаг болжээ.

Прототипийн хуурамч код энд байна:

lastReceivedTime = 0

lastReceivedCmd = none cmdTimeout = 100 setup () {D4-D7-ийг гаралтын тээглүүр болгон тохируулах зүүг идэвхжүүлнэ үү CAN тохиргоог хийх боломжтой CAN шүүлтүүр} давталт () {товчлуурын команд бүрийн хувьд харуулыг дахин тохируулах {CAN зурвас хамааралтай бол товчлуурын тушаал {lastReceivedTime = now lastReceivedCmd = cmd}}} хэрэв одоо бол> lastReceivedTime + cmdTimeout {lastReceivedCmd = none} товчлуур тус бүрийн хувьд {хэрэв lastReceivedCmd бол товчлуурын команд юм {set command pin output = on} өөр {командын пин гаралт = унтраалттай }}}

cmdTimeout нь хамгийн сүүлд гарсан идэвхтэй товчлуурыг авч үзэхээс өмнө бид хэр удаан хүлээх ёстойгоо шийддэг. 70 мс тутамд CAN мессежийн командыг илгээдэг тул энэ нь арай илүү хэмжээтэй байх ёстой. Гэхдээ хэрэв энэ нь том хэмжээтэй бол хоцрогдолтой туршлага байх болно. Тиймээс 100 ms нь сайн нэр дэвшигч шиг харагдаж байна.

Гэхдээ харуулын нохой гэж юу вэ? Энэ нь эвдэрсэн тохиолдолд биднийг аварч чадах жижиг тоног төхөөрөмжийн ашигтай шинж чанар юм. Эзлэхүүнийг дээшлүүлэх командыг идэвхжүүлж байх үед програмыг ажиллуулахад алдаа гарсан гэж төсөөлөөд үз дээ. Дараа нь бид дууны дээд хэмжээг стерео болгоно. Гэхдээ харуулын нохойг тодорхой хугацаанд дахин тохируулахгүй бол гэнэтийн зүйл тохиолдсоныг шийдэж, дахин тохируулах болно.

хүчингүй тохиргоо ()

{// wdt_enable (WDTO_250MS) давталтад хамгийн ихдээ 250 мс зөвшөөрөх; // бусад анхны зүйлс} void loop () {wdt_reset (); // юм хийх}

ШҮҮХ боломжтой юу? За, та CAN хянагчийг шүүлтүүрт тохирохгүй бүх мессежийг устгахаар тохируулж болно, ингэснээр програм хангамж нь бидэнд хамаагүй зурвасуудад цаг үрэх шаардлагагүй болно.

гарын үсэггүй урт маск = 0x1fffffff; // Маскийн толгойн бүх 29 битийг оруулна уу

гарын үсэг зураагүй урт шүүлтүүрId = 0x0400066; // Бид зөвхөн энэ CAN мессеж id m_can.init_Mask (0, CAN_EXTID, маск) -д л санаа тавьдаг; // Маск 0 нь 0-1 шүүлтүүрт хамаарна m_can.init_Mask (1, CAN_EXTID, маск); // Маск 1 нь 2-5 m_can.init_Filt (0, CAN_EXTID, filterId) шүүлтүүрт хамаарна. m_can.init_Filt (1, CAN_EXTID, filterId); m_can.init_Filt (2, CAN_EXTID, filterId); m_can.init_Filt (3, CAN_EXTID, filterId); m_can.init_Filt (4, CAN_EXTID, filterId); m_can.init_Filt (5, CAN_EXTID, filterId);

Шүүлтүүр + маскыг хэрхэн тохируулах талаар дэлгэрэнгүй мэдээллийг CAN номын сангийн код болон CAN хянагчийн баримт бичгээс шалгана уу.

Та мөн CAN хянагчийг зурвас (шүүгдээгүй) хүлээн авах үед тасалдал үүсгэх тохируулж болно. (Дээрх жишээн дээр ороогүй боловч миний програмд зарим код байгаа.) Энэ тохиолдолд энэ нь ямар ч үнэ цэнийг нэмэхгүй бөгөөд хэрэв та програмчлалд дасаагүй бол эндүүрч магадгүй юм.

Энэ бол прототип програм хангамжийн товч тойм юм. Гэхдээ бидэнд симулятор самбарын код хэрэгтэй болно:

lastSentTime = 0

minDelayTime = 70 setup () {A0-A5 тээглүүрийг гаралтын тээглүүр болгон тохируулах нь D4-D7 тээглүүрийг дотоод таталттай оролтын зүү болгон тохируулдаг. init CAN} loop () {send "junk" can send msg set activeButton = button for none to button {if button is push {set activeButton = button}} if activeButton! = none {if now> lastSentTime + minDelayTime {send button тушаал илгээх боломжтой. } set lastSentTime = now} invalid = унших зүү A7 foreach (cmd) {if (min <invalid <max) {led on} other {led off}} 1 ms хүлээ}

Энэ нь ойролцоогоор ms тутамд "хог" CAN мессежийг тасралтгүй илгээх бөгөөд 70 ms тутамд харгалзах командыг дарахад.

Товчлуур бүрт хамаарах min ба max хувьсагчийн тохирох утгыг олохын тулд өөр товчлууруудыг дарж байхдаа A7 зүү дээрх оролтыг бүртгэх шаардлагатай болж магадгүй юм. (Эсвэл та үүнийг тооцоолж болно, гэхдээ оролтыг унших нь танд илүү нарийвчлалтай утгыг өгөх болно.)

Пин горимыг програмчлахдаа жаахан болгоомжтой байх хэрэгтэй. Хэрэв та санамсаргүйгээр дотоод таталтыг гаралтын тээглүүр болгон ашиглахаар төлөвлөж байгаа бол гаралтыг өндөр түвшинд тохируулах үед Arduino -ийг гэмтээх боломжит товчлол үүсгэх болно.

Хэрэв та миний програмыг шалгахыг хүсвэл эндээс татаж авч болно.

  • CAN мессежийг бүртгэх програм
  • Симулятор самбарт зориулсан програм
  • Прототип / эцсийн самбарт зориулсан програм

Эдгээр програмууд нь псевдо кодтой үнэхээр таарахгүй байгаа бөгөөд тэдгээрт тийм ч их хэрэггүй "нэмэлт" зүйлс агуулагдаж байгааг та мэдэх ёстой бөгөөд хэрэв та объект хандалтат програмчлалын талаар сайн мэдэхгүй бол уншихад жаахан хэцүү байж магадгүй юм..

Алхам 7: Эцсийн тоног төхөөрөмж

Эцсийн тоног төхөөрөмж
Эцсийн тоног төхөөрөмж
Эцсийн тоног төхөөрөмж
Эцсийн тоног төхөөрөмж
Эцсийн тоног төхөөрөмж
Эцсийн тоног төхөөрөмж

Хэрэв та програмдаа сэтгэл хангалуун байвал (симулятор самбар ашиглан эцсийн туршилтыг хийсний дараа загварыг машинд туршиж үзэхээ мартуузай) жинхэнэ тоног төхөөрөмжийг бүтээх цаг болжээ.

Энд танд гурван сонголт байна:

  • Түргэн бөгөөд бохир - эд зүйлсийг ПХБ -ийн загвар самбар дээр хамт гагнана.
  • Hardcore DIY - өөрийн ПХБ -ийг сийлээрэй.
  • Залхуу арга - бүрэлдэхүүн хэсгүүдийг гагнахын тулд мэргэжлийн ПХБ захиалаарай.

Хэрэв та яарахгүй бол би хамгийн сүүлийн сонголтыг санал болгож чадна. Хэрэв танд ийм жижиг ПХБ хэрэгтэй бол Хятадаас захиалах нь маш хямд юм. (Дараа нь та арван ширхэг авах болно, ингэснээр та гагнуурын зарим алдааг төлж чадна.)

ПХБ захиалахын тулд та загвараа Gerber форматаар илгээх шаардлагатай болно. Үүний тулд янз бүрийн програм хангамж байдаг. Би санал болгож чадах бүргэдийг ашигласан. Та үүнийг хэдэн цаг сурна гэж найдаж болно, гэхдээ дараа нь энэ нь сайн ажилладаг. Ийм жижиг самбаруудын хувьд та үүнийг үнэгүй ашиглаж болно.

Дизайн хийхдээ болгоомжтой байгаарай. Та буруу зүйл хийснээ мэдэхийн тулд хүргэх хүртэл дөрвөн долоо хоног хүлээхийг хүсэхгүй байна.

(Хэрэв та сайн гагнах чадвартай бол гадаргуу дээр суурилуулсан эд ангиудыг зохион бүтээж, үнэхээр жижиг адаптер авах боломжтой. Би тэгээгүй.)

Дараа нь жишээ нь: https://www.seeedstudio.com/fusion_pcb.html. Дизайнаасаа Gerber файлыг хэрхэн үүсгэх талаар зааврыг дагана уу. Үр дүн нь зүгээр байгаа эсэхийг шалгахын тулд та урьдчилж харах боломжтой.

(Эцэст нь би R4-R7-ийн бүдүүвч зураг дээрх жагсаалтаас өөр эсэргүүцэл сонгох шаардлагатай болсон. Үүний оронд 2k, 4.7k, 6.8k, 14.7k-ийг ашигласан.)

Мөн санаарай - Атмега зүүний дугаарыг Arduino зүү дугаарлахтай андуурч болохгүй!

Би танд Atmega чипийг шууд гагнахгүй, харин залгуур ашиглахыг зөвлөж байна. Дараа нь дахин програмчлах шаардлагатай бол үүнийг амархан арилгаж болно.

Алхам 8: Машинд суурилуулах

Машины бэхэлгээ
Машины бэхэлгээ
Машин суурилуулах
Машин суурилуулах

Хамгийн хөгжилтэй хэсэг бол үүнийг машиндаа суулгаад ашиглаж эхлээрэй! (Та үүнд зориулж хайрцаг хийж / худалдаж авсны дараа.)

Хэрэв та машиныхаа загварыг бүрэн туршиж үзсэн бол бүх зүйл төгс ажиллах ёстой.

(Өмнө дурьдсанчлан би тийм биш байсан тул зарим резисторыг сольж, програмдаа зарим өөрчлөлт оруулах шаардлагатай болсон.)

Та үүнийг стерео эсвэл өөр газар холбох ёстой эсэхийг анхаарч үзээрэй. Би бээлийнийхээ хайрцган дотроос юу ч салгахгүйгээр хүрч болох сайн газрыг олсон. Хэрэв би үүнийг дараа нь шинэчлэхээр шийдсэн бол энэ нь ашигтай байж магадгүй юм.

Эцэст нь миний товчлуурууд дахин ажиллаж байна! Тэдэнгүйгээр би яаж хоёр сар амьд үлдэх вэ?

Алхам 9: Ирээдүйн сайжруулалтууд

Өмнө дурьдсанчлан, хэрэв би энэ хувилбарын 2.0 хувилбарыг хийвэл би илүү уян хатан байхын тулд 4066B -ийг өөр зүйлээр (магадгүй дижитал потенциометр) солих болно.

Үүнээс гадна таны хийж чадах өөр олон зүйл бий. Жишээлбэл bluetooth модулийг нэмж, утсандаа алсын удирдлагатай аппликейшн хий. Эсвэл gps модуль, дараа нь та гэртээ ойрхон байхдаа дууны түвшинг автоматаар дээшлүүлж, "цонх доошлуулах" гэсэн мессежийг илгээж, хөршүүд тань таны гайхалтай хөгжмийг сонсох боломжтой болно.

Зөвлөмж болгож буй: