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

ATtiny85 IR USB хүлээн авагч: 11 алхам (зурагтай)
ATtiny85 IR USB хүлээн авагч: 11 алхам (зурагтай)

Видео: ATtiny85 IR USB хүлээн авагч: 11 алхам (зурагтай)

Видео: ATtiny85 IR USB хүлээн авагч: 11 алхам (зурагтай)
Видео: LDmicro 14: ЖК-дисплей I2C и часы реального времени DS3231 (программирование лестничной схемы ПЛК микроконтроллера с помощью LDmicro) 2024, Долдугаар сарын
Anonim
ATtiny85 IR USB хүлээн авагч
ATtiny85 IR USB хүлээн авагч

АНХААРУУЛГА, ЭНЭ ЗАХИАЛГАГҮЙ БАЙГУУЛЛАА

V-USB номын сан нь өнөө үед бараг байдаггүй USB 1.1 протоколоор ажиллах зориулалттай. USB3 гарсны дараа та v-usb төхөөрөмжүүдийг ажиллуулах гэж оролдохоос илүү толгой өвдөх болно. Мультимедиа төвөө сольсны дараа надад тогтвортой байдлын олон асуудал тулгарч, хүлээн авагч ажиллаж байсан ч хэсэг хугацааны дараа ажиллахаа больсон. Би үүнийг засах гэж оролдож чадаагүй. Би бас atmega328p хувилбарыг хийсэн боловч энэ нь ижил асуудалтай байсан. Удирдах самбарыг үе үе тохируулахын тулд ажиглагч таймер ашиглах нь тус болохгүй байсан тул би v-usb-ээс татгалзсан.

Боловсролын зориулалтаар ашиглахгүй бол өөрт тааламжтай байгаарай. Би USB интерфэйсийг аль хэдийн нэгтгэсэн ATmega 32U4 чип модулийг худалдаж авахыг зөвлөж байна.

www.sparkfun.com/tutorials/337

Дараа нь TSOP31238 IR мэдрэгчийг оруулаарай.

Сайн байна уу бүтээгчид ээ! Энэ бол Attiny85 микроконтроллер ашиглан USB IR хүлээн авагчийг бүтээх заавар юм. GNU/Linux OS -ийн зарим IR алсын удирдлагын дэмжлэг (хамгийн багадаа бүрэн дэмжлэг) -ийг арилгахын тулд би энэ төслийг эхлүүлсэн. Энэхүү зааврыг дагаж ямар ч IR алсын удирдлагатай хэдэн доллараар ажилладаг, програмчлагдах боломжтой USB IR хүлээн авагчийг бүтээж болно.

Нэгдүгээрт, энд ашигладаг номын санг бий болгосон хүмүүсийн хичээл зүтгэлгүйгээр энэ зааварчилгаа байхгүй болно.

  • Дэвид А. Меллис өөрийн баталгааны үндсэн дээр
  • Тэдний номын санд зориулсан Rowdy Dog програм хангамж TinyTuner
  • Rowdy Dog програм хангамж нь тэдний жижиг ачигчдад зориулагдсан
  • Rancidbacon (https://rancidbacon.com/) нь v-USB номын сангийн өөрийн arduino портод зориулагдсан (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • https://www.instructables.com/id/Attiny-IR-librar… кодын тайлбар дээр бичсэн жижиг судалтай холбоотой жижиг номнуудын өөрийн IR номын сантай танилцана уу https://www.instructables.com/id/Attiny-IR -номын сан …

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

Энэхүү гарын авлага нь би хайрцгаас ажиллах бүрэн заавар/гарын авлага олж чадаагүй тул байгаа юм (энэ нь байж магадгүй, гэхдээ би олж чадаагүй), тиймээс би вэб дээр байгаа бүх мэдээллийг цуглуулж, сайн туршилт хийсний дараа олж авсан. алдаа Би үнэхээр сайн ажилладаг USB IR хүлээн авагчийг бүтээх бүрэн гарын авлага авлаа.

Миний дагаж мөрдсөн мэдээллийн гол эх сурвалжууд:

  • https://nathan.chantrell.net/20121014/tinypcremot…
  • https://forum.arduino.cc/index.php?PHPSESSID=ap4jg…
  • https://blog.petrockblock.com/2012/05/19/usb-keybo…
  • https://learn.adafruit.com/using-an-infrared-libr…
  • https://codeandlife.com/2012/03/03/diy-usb-passwor…
  • https://codeandlife.com/2012/02/22/v-usb-with-atti…
  • https://www.instructables.com/id/Attiny-IR-librar…

Алхам 1: Зарим анхаарах зүйлс

  • Надад AVR ISP програмист байдаггүй, би үүнийг худалдаж авах дургүй байдаг тул Arduino ашиглан attiny85 програмчлав.
  • Надад GNU/Linux -ээс өөр үйлдлийн систем огт хамаагүй, тиймээс энэ нь өөрөөр ажиллах эсэхийг мэдэхгүй байна.
  • бусад IR номын сан байдаг, гэхдээ би тэднийг arduino -тэй ч ажиллуулж чадаагүй. Би IR номын сангийн талаар хязгаарлагдмал мэдлэгтэй байсан гэж бодож үзээрэй. Нэлээд хэдэн асуудлыг шийдвэрлэх туршлага олж авсны дараа би тэднийг одоо ажиллуулж болох юм. Ямар ч байсан би Seejaydee -ийн өгсөн номын санг олохоосоо өмнө төөрч, цөхрөнгөө барсан бөгөөд тэр цагаас хойш би үүнийг ашиглаж ирсэн (хүнд маш их баярлалаа!).
  • Тоног төхөөрөмжийн бусад тохиргоо байдаг, гэхдээ би зөвхөн 5V -ийг ашиглан attiny85 -ийг тэжээж, өгөгдлийн шугамын хүчдэлийг дарахын тулд 3.6V -ийн 0.5W -ийн хоёр диверийг ашигладаг. бусад тохиргоо.
  • Та 16Mhz болор ашиглаж болно, эсвэл tinytuner номын санг ашиглан attiny85 -ийн дотоод цагийг тохируулж болно. Би болорыг ашиглахыг зөвлөж байна, энэ нь илүү тогтвортой бөгөөд толгой өвдөхөөс ангижрах болно.
  • Би энд attiny85 -д зориулж хоёр өөр ачаалагчийг ашиглаж байна:

a) Rowdy Dog програм хангамжийн хувилбар, энэ нь маш дажгүй, маш жижиг цуваа интерфэйсийг нэгтгэсэн тул та өөрийн програм болон бусад номын санд илүү их зай эзэлнэ. Асуудал нь зарим шалтгааны улмаас нэлээд сайн ажиллаж байгаа боловч хэсэг хугацааны дараа USB төхөөрөмж салгагдсан (та dmesg командын тусламжтайгаар асуудлыг олж болно). Энэ нь цөмтэй холбоотой асуудал эсвэл цөмийн холимог хослол болон сонгосон номын сангуудын аль нь болохыг би мэдэхгүй, хэсэг хугацааны дараа би энэ цөмийг алсын товчлуурыг тайлж, цагийг тохируулахын тулд ашиглахаар шийдсэн (16 МГц ашиглахгүй байх үед) болор). Үүний дараа би зүгээр л Mellis bootloader -ийг шатааж, цуваа интерфэйсийг ашигладаггүй ноорог зургийг орууллаа.

b) Mellis хувилбар, тогтвортой ачаалагч, би үүнийг олон төсөлд ашиглаж байсан. Хэрэв энэ цуваа интерфэйс орсон бол би энэ ачаалагчийг үргэлж ашиглах байсан. Би энэ цөмийг алсын удирдлага дээрх бүх түлхүүрийг тайлсны дараа эцсийн зураг дээр ашигладаг.

Алхам 2: Техник хангамжаас эхэлье

Тоног төхөөрөмжөөс эхэлье
Тоног төхөөрөмжөөс эхэлье
Тоног төхөөрөмжөөс эхэлье
Тоног төхөөрөмжөөс эхэлье
Тоног төхөөрөмжөөс эхэлье
Тоног төхөөрөмжөөс эхэлье

Танд хэрэгтэй хэрэгсэл:

  • arduino нийцтэй самбар
  • алсын түлхүүрээ тайлах USB адаптерт зориулсан цуваа (зүгээр л FT232RL ашиглана уу)
  • GNU/Linux суулгасан, arduino IDE -ийг зөв тохируулсан компьютер, би arduino IDE 1.8.0 ашиглаж байна
  • таны төхөөрөмжийг турших IR алсын удирдлага (arduino гарааны иж бүрдэлд байдаг муухай ч гэсэн ажиллах болно)
  • самбараа дибаг хийх мултиметр (танд хэрэггүй гэж найдаж байна, амжилт хүсье!)

Материалын жагсаалт:

  • 85
  • 2 68R резистор
  • 1.5K эсэргүүцэл
  • 1 4.7K эсэргүүцэл
  • 1 16 МГц болор
  • 1 22pF конденсатор
  • 1 0.1uF конденсатор
  • 1 10uF конденсатор
  • 2 3.6V 0.5W zener диод
  • 1 USB төрлийн эрэгтэй холбогч
  • Самбарыг програмчлах, дибаг хийх 6 зүү бүхий 1 тууз зүү.
  • 1 IR мэдрэгч TSOP31238
  • сэрүүн байлгахын тулд маш их кофе ууна

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

Attiny85 -ийг компьютерт холбохын тулд эцсийн загвар нь самбар дээр гагнаж буй USB төрлийн А холбогчийг ашигладаг боловч прототипийн хувьд та талхтай холбож болох USB кабель хийх шаардлагатай болно.

Перфорбордын 4 зүү бүхий жижиг хэсэг болгон гагнана, дараа нь хуучин USB кабелийг хайчилж, тээглүүрийг USB кабель доторх 4 утсанд гагнана.

  • улаан бол VCC (5V)
  • хар бол GND
  • цагаан бол D-
  • ногоон бол D+

Бүгдийг халуун цавуугаар хамт байлга.

Одоо бид ISP програмист (Arduino), USB -ийг цуваа адаптер (FT232RL), IR мэдрэгчийг attiny85 -т холбох хэрэгтэй.

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

Үүнийг хийхийн тулд дараах зааврыг дагаж бүх зүйлийг холбоно уу.

ISP програмист (Arduino): энэ нь бидэнд ачаалагчдыг шатааж, ноорог ачаалах боломжийг олгодог

  • attiny85 PB0 (pin5) to pin11 (MOSI) in arduino
  • attiny85 PB1 (pin6) to pin12 (MISO) in arduino
  • attiny85 PB2 (pin7) to pin13 (SCK) to arduino
  • attiny85 RESET (pin1) нь татах (VCC -ээс 4.6k хүртэл) arduino -д pin10 хийх
  • arduino -д attiny85 VCC -ээс 5V хүртэл
  • attiny85 GND to GND to arduino

usb to serial adapter (FT232RL): энэ нь цуваа портыг шалгах боломжийг бидэнд олгодог

  • attiny85 PB0 (pin5 RX) -ийг FT232RL дахь TX рүү
  • attiny85 PB2 (pin7 TX) FT232RL дахь RX рүү
  • attiny85 GND (pin4) -ийг FND232RL дээрх GND рүү
  • attiny85 нь аль хэдийн ардуиногоор тэжээгддэг тул та FT232RL дээрх 5V -ийг холбох шаардлагагүй, эс тэгвээс холбоно уу: attiny85 VCC (pin8) -ийг FT232RL дээрх 5V руу

usb to serial adapter (FT232RL) зөвхөн цагийн шалгалт тохируулгад зориулагдсан (зөвхөн "ATtiny85 @ 8MHz ачаалагч (дотоод осциллятор; BOD идэвхгүй)")

  • FT232RL attiny85 дахь PB4 (pin3 RX) -ээс TX рүү
  • FT232RL attiny85 дахь PB3 (pin2 TX) -ээс RX рүү
  • FND232RL дээрх GND (pin4) рүү GND
  • attiny85 нь аль хэдийн ардуиногоор тэжээгддэг тул та FT232RL дээрх 5V -ийг холбох шаардлагагүй, эс тэгвээс холбоно уу: attiny85 VCC (pin8) -ийг FT232RL дээрх 5V руу

Хэрэв та 16 МГц болор ашигладаг бол үүнийг Attiny85 зүү PB3 (pin2) ба PB4 (pin3) -д холбож, зүү бүрийг 22pF таг ашиглан GND руу холбоно уу.

Attiny85 VCC -ийг GND -тэй зэрэгцээ холбосон 0.1uF ба 10uF конденсатороор шүүнэ

IR мэдрэгчийн гаралтын зүүг attiny85 PB1 (pin6) руу холбож асаагаарай.

USB интерфэйсийг бүтээж холбоно уу

  • GND (хар утас): үүнийг нийтлэг GND -тэй холбоно уу (бүх үндэслэлийг хооронд нь холбоно)
  • D- (цагаан утас) 68R резистороор дамжуулан attiny85 PB0 (pin5) -д холбож, 3.6В 0.5Вт-ын хүчдэлтэй цахилгаан үүсгүүрээр холбож, 1.5K эсэргүүцэлтэйгээр VCC хүртэл татаж аваарай.
  • 68+ резистороор PB2 -т холбогдсон D+ (ногоон утас), 3.6V 0.5W цахилгаан үүсгүүрээр газардуул.
  • 5V, энэ үе шатанд бүх зүйл Arduino -ээс тэжээгддэг тул та үүнийг холболгүй үлдээж болно, эс тэгвэл үүнийг attiny85 VCC -т холбоно уу.

Zener диодыг холбосон тул анодуудыг GND-тэй холбож, катодуудыг D+ ба D- өгөгдлийн шугамд холбоно.

Алхам 3: Эцсийн дизайн

Эцсийн дизайн
Эцсийн дизайн
Эцсийн дизайн
Эцсийн дизайн
Эцсийн дизайн
Эцсийн дизайн

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

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

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

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

Алхам 4: Програм хангамжтай харьцах

Энэ төслийн схем нь маш хялбар бөгөөд програм хангамж нь илүү их хүчин чармайлт шаарддаг.

Үүнийг хийхийн тулд бидэнд дор хаяж 2 номын сан хэрэгтэй (хэрэв та болор ашиглаагүй байгаа бол өөр нэг номын сан), дээр нь 2 bootloader хэрэгтэй болно. Би энэ төслийг эхлүүлэхдээ зарим номын санг туршиж үзсэн боловч заримдаа тэд ажиллахгүй байсан бөгөөд ихэнхдээ Attiny85 -тай ажиллахаар тохируулагдаагүй байсан (би үүнийг хараахан мэдээгүй байсан). Дараа нь би номын сан / ачаалагч ачаалал тасалдсантай холбоотой асуудлуудыг олж мэдэв. Эцэст нь би эцсийн хэлхээг компьютерт холбохдоо маш их хэмжээний алдаатай тулгарсан. Надад энэ гарын авлага байгаагүй, тиймээс та зүгээр байх болно гэж бодож байна, зааврыг дагана уу, хэрэв та алдаа гаргахгүй бол зүгээр байх болно:)

Бид одоо хэдэн номын санг суулгаж тохируулах хэрэгтэй байна.

  • arduino номын санд зориулсан v-usb: энэ номын сан нь микроконтроллерийг компьютерт HID USB гар гэж хүлээн зөвшөөрөх боломжийг олгодог бөгөөд бид үүнийг түлхүүрийн цохилтыг компьютерт илгээхэд ашиглах болно. Энэ номын сан нь attiny85 -тэй нийцтэй байхын тулд зарим өөрчлөлт хийх шаардлагатай байна
  • tinytuner номын сан нь хэрэв та 16 МГц болор ашиглахгүй бол. Дараа нь танд микроконтроллерийн дотоод цагийг тохируулах шаардлагатай болно. Энэ номын сан нь хайрцагнаас гадуур ажилладаг.
  • IR мэдрэгчтэй харьцах Attiny-IR-номын сан. Энэ номын сан нь хайрцагнаас гадуур ажилладаг.

Бидэнд бас 2 ачаалагч хэрэгтэй болно:

  • Dog програм хангамжийн хувилбар, цуваа интерфэйстэй. Энэ bootloader нь millis () функцэд timer1 ашигладаг тул IR номын сантай ажиллахгүй тул attiny85 -тэй ажиллахын тулд бага зэрэг тохируулга хийх шаардлагатай болно. Бид таймерыг таймер0 болгон өөрчлөх хэрэгтэй.
  • Mellis хувилбар, бид эцсийн шатанд ашиглах тогтвортой ачаалагч. Энэ нь хайрцагнаас гадна ажилладаг.

Алхам 5: V-USB номын санг суурилуулах, тохируулах

Номын санг https://code.google.com/archive/p/vusb-for-arduin… дээрээс татаж аваад фолдерын номын сан/UsbKeyboard-ийг ноорог номын сангийнхаа хавтсанд хуулж аваарай.

Одоо та ATtiny85 -тэй нийцтэй байхын тулд хэд хэдэн файлыг засах хэрэгтэй (энэ нь arduino -тэй ажиллахаар тохируулагдсан):

A) usbconfig.h засварлах:

"Тоног төхөөрөмжийн тохиргоо" хэсгийг өөрчлөх:

USB_CFG_IOPORTNAME D -ийг тодорхойлох ## USB_CFG_IOPORTNAME B тодорхойлох

ба

USB_CFG_DMINUS_BIT 4 -ийг#тодорхойлох, USB_CFG_DMINUS_BIT 0 тодорхойлох

"Нэмэлт тоног төхөөрөмжийн тохиргоо" хэсэгт байгаа өөрчлөлтийг оруулна уу.

USB_CFG_PULLUP_IOPORTNAME D -ийг ## тодорхойлох USB_CFG_PULLUP_IOPORTNAME B тодорхойлох ##

"Ачаалах нийцтэй HID" бүрэн тодорхойлолтыг бий болгохын тулд (өөрөөр хэлбэл мултимедиа түлхүүрүүд ажиллахгүй болно) дараах зүйлийг өөрчилнө үү.

USB_CFG_INTERFACE_SUBCLASS 0 -ийг тодорхойлох // Bootto#тодорхойлох USB_CFG_INTERFACE_SUBCLASS 0x01 // Ачаалах

ба

USB_CFG_INTERFACE_PROTOCOL 0 -ийг тодорхойлох // USB_CFG_INTERFACE_PROTOCOL 0x01 -ийг тодорхойлох#гар

Сонголтоор та үйлдвэрлэгч болон төхөөрөмжийн нэрийг дараах тодорхойлолтод өөрчилж болно.

USB_CFG_VENDOR_NAME -г #тодорхойлох

#USB_CFG_DEVICE_NAME -ийг тодорхойлох

B) UsbKeyboard.h засварлах:

өөрчлөх:

PORTD = 0; // TODO: Зөвхөн USB тээглүүрт зориулсан уу? DDRD | = ~ USBMASK;

руу

PORTB = 0; // TODO: Зөвхөн USB тээглүүрт зориулсан уу? DDRB | = ~ USBMASK;

101 -ээс дээш түлхүүр кодыг зөвшөөрөхийн тулд мөн өөрчлөх:

0x25, 0x65, // LOGICAL_MAXIMUM (101) to: 0x25, 0xE7, // LOGICAL_MAXIMUM (231)

ба

0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application) to: 0x29, 0xE7, // USAGE_MAXIMUM (Keyboard Application)

Та мөн эдгээр 3 файлыг засварлах шаардлагатай болж магадгүй юм.

usbdrv.husbdrv.cUsbKeyboard.h

мөн PROGMEM -ийг харах бүрдээ хувьсагчийн нэрийн өмнө "const" нэмнэ (жишээ нь: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Хэрэв энэ нь тодорхой биш байвал https://forum.arduino.cc/index.php?topic=391253.0#… зочилно уу.

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

UsbKeyboard нь attiny85 -д тохируулагдсан

Засварлах: саяхан би Алехандро Лейва (https://github.com/gloob) энэ номын санг асарч, бас сайн ажиллаж байгаа бололтой. Та мөн түүний хувилбарыг attiny -тэй ажиллахын тулд миний хийсэн шаардлагатай өөрчлөлтүүдээр туршиж үзэх боломжтой, хэрэв та үүнийг шалгахыг хүсвэл ноорог номын сангийн фолдер дотроосоо задалж үзээрэй.

UsbKeyboard нь attiny85 -д тохируулагдсан (Alejandro Leiva хувилбар)

Алхам 6: Attiny-IR ба Tinytuner номын санг суурилуулах

A) Attiny-IR номын сан:

drive.google.com/open?id=0B_w9z88wnDtFNHlq… дээрээс татаж аваад ноорог номын сангийн фолдерт задална уу.

B) Tinytuner номын сан:

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

Итгэж амжаагүй байна уу? За, номын санг https://storage.googleapis.com/google-code-archive… дээрээс татаж аваад ноорог номын сангийнхаа хавтсанд задална уу.

Бид номын сангаа дуусгаад одоо ачаалагчдыг суулгахаар үргэлжлүүлж байна.

Алхам 7: Ачаалагчдыг суулгах ба тохируулах

Миний туршлагын дагуу Mellis нэг ачаалагч хоёрыг илүү тогтвортой суулгах гэж байгаа бөгөөд бид үүнийг эцсийн зураг дээр ашиглах болно. Нөгөө нэг нь Rowdy Dog Software -ийн боловсруулсан гайхалтай цөм бөгөөд маш жижиг хэмжээтэй, нэгдсэн интерфэйстэй боловч миний алсын удирдлага хэсэг хугацааны дараа осолдсон тул бид энэ ачаалагчийг ашиглан attiny85 дотоод цагийг тохируулж, алсын удирдлагаа тайлах болно. товчлуурууд.

Attiny85 -ийн цуваа боломжийг олгох номын сан байдаг гэдгийг би мэднэ, гэхдээ дараа нь та цуваа объектыг ашигладаг номын санг өөрчлөх хэрэгтэй болно … Энэ процедур надад илүү таалагдаж байна.

Суулгалтаас эхэлье:

A) Mellis ачаалагч:

Arduino IDE тохиргоог нээгээд Нэмэлт самбар менежерийн URL хаягийг оруулна уу.

raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

Дараа нь Arduino IDE самбарын менежерийг нээж, аттелин хайж Mellis -аас самбар суулгаарай, та Arduino ID ATtiny25/45/85 ба ATtiny24/44/84 самбарыг харах ёстой.

B) Rowdy Dog програм хангамжийн жижиг ачаалагч:

ачаалагчийг https://storage.googleapis.com/google-code-archive… дээрээс татаж аваарай.

Файлыг задалж, ноорог дэвтэр/техник хэрэгслийнхээ жижигхэн хавтсыг хуулж ав (хэрэв энэ файл байхгүй бол энэ фолдерыг үүсгэнэ үү). дараа нь sketchbook/hardware/tiny/avr/фолдер руу шилжих ба:

1) Prospective Boards.txt файлыг board.txt файл руу хуулж ав

2) platform.txt файлыг засварлаж, зарим өөрчлөлтийг хийнэ үү.

Compiler.path хувьсагчийг тайлбарлаж, arduino суулгах хавтасныхаа hardware/tools/avr/bin/фолдер руу зааж үлдээгээрэй.

compiler.path = {PATH_TO_YOUR_ARDUINO_FOLDER}/техник хангамж/хэрэгсэл/avr/bin/

alsocompiler. S.flags = -c -g -assembler-with-cpptocompiler. S.flags = -c -g -x-assembler-cpp ашиглан өөрчлөх

Дараа нь бүх зүйл байрандаа байгаа эсэхийг шалгахын тулд дараах хувьсагчдыг өөрчил (эдгээр файлууд байх ёстой, эс тэгвээс хувьсагчдыг зөв зам руу чиглүүлнэ үү):

tools.avrdude.cmd.path = {runtime.ide.path}/hardware/tools/avr/bin/avrdude

tools.avrdude.config.path = {runtime.ide.path} /hardware/tools/avr/etc/avrdude.conf

tools.avrdude.cmd.path.linux = {runtime.ide.path}/hardware/tools/avr/bin/avrdude

tools.avrdude.config.path.linux = {runtime.ide.path} /hardware/tools/avr/etc/avrdude.conf

3) cores/tiny/core_build_options.h файлыг засварлаж өөрчилнө үү.

TIMER_TO_USE_FOR_MILLIS 1 -ийг#тодорхойлохын тулд TIMER_TO_USE_FOR_MILLIS 0 -ийг тодорхойлох

Энэ нь маш чухал юм, эс тэгвээс IR хүлээн авагч нь товчлуур бүрийн тэгийг гаргадаг. Энэхүү мэдэгдэл нь millis () функцын timer0 -ийг тохируулдаг бөгөөд таймер1 -ийг IR номын санд ашиглах боломжтой болгодог. Эцсийн ноорог нь таймер0 -ийг идэвхгүй болгох тул танд millis () болон delay () функц байхгүй болно. Та оронд нь delayMicroseconds () функцтэй байж магадгүй.

Энэ ачаалагч нь хамгийн бага боловч Цуваа объектын дэмжлэгийг агуулсан болно:

Attiny85 PB2 (pin7) нь TX, PB0 (pin5) нь RX юм

Та ISP програмист (arduino) болон USB адаптерийн сериалыг нэгэн зэрэг холбосон тохиргоотой байж болох тул утсыг байнга солих шаардлагагүй болно.

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

Алхам 8: Ачаалагчдыг шатааж, эскиз байршуулах

Би Arduino IDE тохиргооны дагуу дэлгэрэнгүй гаралтыг идэвхжүүлэхийг зөвлөж байна, ингэснээр та аливаа асуудлыг шийдэх боломжтой болно.

Ачаалагчийг Attiny85 -д оруулахын тулд та ISP -ийн жишээг Arduino -д байршуулж, дараа нь програмист Arduino -ийг ISP болгон сонгох хэрэгтэй.

Одоо 10uF конденсаторыг arduino дээрх дахин тохируулах ба газардуулгын хооронд байрлуул (энэ нь шатаах процесст шаардлагагүй, гэхдээ ноорогыг attiny85 -д байршуулах явдал юм).

Одоо arduino нь ачаалагчдыг шатааж, ноорог ачаалахад бэлэн боллоо. Та зүгээр л attini -тэйгээ тохирох зөв самбарыг сонгоод шатаах хэрэгтэй.

Attiny85 -д ноорог оруулахын тулд arduino IDE дээр ачаалаад "Программист ашиглан байршуулах" дээр дарна уу.

ЧУХАЛ: ноорог байршуулахдаа эмхэтгэх, бичих, шалгах гэсэн 3 үе шаттай. Хэрэв эмхэтгэх, бичих ажил амжилттай хийгдсэн боловч шалгах үйл явц амжилтгүй болбол ноорог ямар ч байсан ажиллах боломжтой байсан.

Алхам 9: Attiny85 дотоод цагийг тохируулна уу (хэрэв та болор ашигладаг бол үүнийг алгасаарай)

Хэрэв та 16 МГц болор ашиглахгүй гэж шийдсэн бол attiny85 цагийг тохируулах шаардлагатай болно, ингэснээр бидэнд цуваа интерфэйстэй ачаалагч хэрэгтэй болно, бид калибровкийн номын санг ашиглан зөв шалгалт тохируулгыг авах болно.

Дараагийн алхамуудыг дагана уу

  • Arduino -ийг ISP програмистаар сонгох хэрэгтэй
  • "ATtiny85 @ 8MHz (дотоод осциллятор; BOD идэвхгүй)" самбарыг сонгоно уу.
  • Холбогдохоос өмнө холболтын өмнө тайлбарласны дагуу ISP холболт бэлэн байгаа гэж би бодож байна
  • bootloader -ийг шатаах
  • Энэ ачаалагч нь цуваа интерфэйсийн өөр өөр тээглүүрүүдийг тохируулсан бөгөөд энэ тохиргоог зөвхөн одоогийн ачаалагч дээр ашиглаарай

- FT232RL attiny85 дахь PB4 (pin3 RX) TX -ээс - FT232RL attiny85 - PB3 (pin2 TX) -ээс RX хүртэл FT232RL дээрх 5v, өөрөөр холбоно уу: attiny85 VCC (pin8) -ийг FT232RL дээрх 5V руу холбоно уу.

  • tinytuner жишээг attiny85 дээр байршуулах
  • Цуваа холболтыг хянахын тулд дэлгэцийн програмыг нээнэ үү: screen /dev /ttyUSB0 9600
  • RESET pin (pin1) -ийг GND -д холбосон attiny85 -ийг анхны байдалд нь оруулна уу (хоромхон зуур), дэлгэцийн цонхонд тавтай морилно уу гэсэн мессеж гарч ирэх ёстой.
  • Шалгалт тохируулга дуустал ганц 'x' тэмдэгтүүдийг (тэрэг буцах, мөр дамжуулахгүй) үргэлжлүүлэн илгээнэ үү
  • шалгалт тохируулгын утгыг хаа нэгтээ тэмдэглэ (OSCCAL = 0x). Энэ бол эцсийн ноорог дээр зарлах ёстой үнэ цэнэ юм

Алхам 10: Алсын товчлууруудаа декодлох

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

  • Хэрэв та болор ашиглаагүй бол "ATtiny85 @ 16MHz (дотоод PLL; 4.3V BOD)" самбарыг сонгоно уу, "ATtiny85 @ 16 MHz (гадаад болор; 4.3 V BOD"), эс тэгвээс үүнийг шатаана уу.
  • ноорог ачаалах:
  • Хэрэв та болор ашигладаггүй бол OSCCAL хувьсагч агуулсан мөрийг тайлбарлаж, цагны шалгалт тохируулгыг хийхдээ олсон утгыг зааж өгнө үү.
  • Мэдрэгчийг өмнө тайлбарласны дагуу холбогдсон гэж бодож байна, эс бөгөөс холбоно уу
  • FT232RL цуваа нь USB адаптертай холбогдсон гэж би бодож байна, тэгэхгүй бол холбоно уу
  • RESET pin (pin1) -ийг GND руу холбосон attiny85 -ийг анхны байдалд нь оруулна уу (хэдхэн хором)
  • алсын удирдлагынхаа товчлууруудыг дахин дарж, дэлгэцийн цонхыг шалгаарай, та бичлэг бүрийн сүүлийн дугаарыг тэмдэглэх хэрэгтэй, товчлуур бүр 2 өөр дугаар гаргаж болно.

Жишээ:

Хүлээн авсан D44 3396 хүлээн авсан 544 1348

Дөнгөж дарсан товчлууртай холбоотой 3396, 1348 -ыг тэмдэглээрэй, дараа нь та энэ товчлуураар юу хийхээ шийдэх ёстой. Жишээлбэл, би тэр товчлуурыг "Дууны түвшинг дээшлүүлэх" мультимедиа түлхүүр кодыг илгээхийг хүсч болох юм. Үүнийг хийхийн тулд PDF -г татаж авна уу:

"Keyboard/Keypad Page" хуудасны 53 -р хуудсыг хайж олоод, алсын товчлууруудыг гарын кодтой холбохын тулд Use ID (Dec) баганад байгаа тоонуудыг ашиглана уу. Бидний жишээн дээр "Дууны түвшинг нэмэгдүүлэх" түлхүүр код нь 128 байна гэдгийг харж болно.

UsbKeyboard номын сан дахь UsbKeyboard.h файлыг өмнө нь суулгаж байсан v-usb багцаас засварлаж, хэрэв байхгүй бол одоо байгаа тодорхойлолтод нэмнэ үү.

128

Бүх алсын удирдлага/товчлуурууд болон UsbKeyboard.h файл дахь бүх тодорхойлолтууд бэлэн болмогц бид эцсийн алхам руу шилжиж болно.

Алхам 11: Эцсийн ноорог болон хамгийн сайн сайхныг найдаж байна

Эцсийн ноорог болон хамгийн сайн сайхныг найдаж байна!
Эцсийн ноорог болон хамгийн сайн сайхныг найдаж байна!
Эцсийн ноорог болон хамгийн сайн сайхныг найдаж байна!
Эцсийн ноорог болон хамгийн сайн сайхныг найдаж байна!

Бид одоо бүх алсын товчлууруудыг тайлж, UsbKeyboard.h файлыг манай түлхүүр кодоор дүүргэсэн байгаа тул одоо бид ноорог зургийг arduino IDE руу ачаалж болно.

github.com/venumz/ATtiny85-USB-IR-receiver…

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

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

Давталтын функцэд иймэрхүү маш олон мэдэгдэл байгааг анхаарна уу:

if (results.value == 3405 || results.value == 1357) {// сум хүртэл

if (lastStroke! = results.value) UsbKeyboard.sendKeyStroke (KEY_ARROW_UP);

}

Та удирдлагынхаа товчлуур бүрт нэг мэдэгдэл үүсгэх ёстой. "If" нөхцөлд та алсын удирдлагаа тайлахдаа олсон утгуудаа үр дүнг оруулах ёстой бөгөөд UsbKeyboard.sendKeyStroke аргын аргумент болгон UsbKeyboard.h файлд аль хэдийн тодорхойлсон түлхүүр кодыг оруулах ёстой.

"Хэрэв (lastStroke! = Results.value)" нөхцөл шаардлагатай, учир нь зарим алсын удирдлага нь нэг кодыг нэг цохилтод хоёр удаа илгээдэг бөгөөд энэ нь хоёр дахь цохилтоос сэргийлдэг. Би бүрэн итгэлтэй биш байгаа бөгөөд энэ нь таны алсын удирдлагад програмчилсан IR протоколоос хамаарч магадгүй юм (би IR протоколын чиглэлээр мэргэшсэн хүн биш), гэхдээ миний алсын удирдлагатай туршлагын дагуу товчлуур бүр 2 өөр код гаргаж чаддаг. Та товчлуурыг дарж байхад энэ нь ижил кодыг илгээдэг боловч хэрэв та товчлуурыг дахин дарвал нөгөө кодыг илгээдэг. Тиймээс кодыг өөр хэлбэрээр илгээдэг юм шиг санагддаг, энэ товчлуурыг хэдэн удаа дарсныг мэдэх нь стандарт горим юм.

За, бид бараг дуусч байна, зүгээр л эцсийн ноорогоо байршуулаад, компьютерт холбоод, энэ нь хэрхэн болж байгааг хараарай.

Хэрэв та arduino болон usb -ийг цуваа адаптераас салгаад зөвхөн USB портоо PC -ийнхээ залгуурт залгах нь илүү дээр юм.

Хэрэв бүх зүйл хэвийн ажиллаж байсан бол терминал нээж dmesg командыг илгээхэд энэ алхам дээрх эхний зурагтай төстэй зүйлийг харах ёстой. Хэрэв асуудал гарсан бол та хоёр дахь зураг дээрх шиг алдаатай байх ёстой бөгөөд та хэлхээ ба/эсвэл програм хангамжаа дибаг хийж эхлэх ёстой. Надад тохиолдсон анхны алдааны нэг эх үүсвэр нь миний IR хүлээн авагчтай ажиллахгүй USB зангилаа байсан (бусад нь ажилладаг байсан) … тиймээс энэ эцсийн алхам бол IR хүлээн авагчийг шууд компьютерийн порт руу залгах явдал юм. Эцсийн эцэст алдаа олоход хэцүү байж болох ч эцэст нь над шиг та маш их зүйлийг сурч мэдэх бөгөөд төлөх үнэ нь үнэ цэнэтэй гэдгийг би баталж байна.

Энэ бол хүмүүс, хэрэв та энэ зааварчилгааны алдааг анзаарч, цоо шинэ IR USB хүлээн авагчтай болсондоо мэдэгдээрэй!

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