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

Raspberry Pi-Arduino-SignalR гэрийн автоматжуулалтын төв: 11 алхам (зурагтай)
Raspberry Pi-Arduino-SignalR гэрийн автоматжуулалтын төв: 11 алхам (зурагтай)

Видео: Raspberry Pi-Arduino-SignalR гэрийн автоматжуулалтын төв: 11 алхам (зурагтай)

Видео: Raspberry Pi-Arduino-SignalR гэрийн автоматжуулалтын төв: 11 алхам (зурагтай)
Видео: Building a Robot Arm with .NET 5, Raspberry Pi, Blazor and Signal R - Peter Gallagher 2024, Долдугаар сарын
Anonim
Raspberry Pi-Arduino-SignalR гэрийн автоматжуулалтын төв
Raspberry Pi-Arduino-SignalR гэрийн автоматжуулалтын төв

Энд болон энд нийтлэгдсэн миний өмнөх хэд хэдэн IBLE -ийн дагуу энэхүү төсөл нь Гэрийн автоматжуулалтын төвийн функциональ зангилааны үндсэн хувилбарыг бий болгох эхний алхамыг хийсэн болно.

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

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

SQL Server 2012 мэдээллийн сан:

  • Урьдчилан тодорхойлсон хэт улаан туяаны (IR) кодуудын жагсаалтыг өвөрмөц "кодын түлхүүр" -тэй хамт хүснэгтэд хадгалдаг.
  • кодын түлхүүрүүдийг зөн совиноор (хэрэглэгчийн нэрээр) нэрлэх бөгөөд ингэснээр холбогдох IR кодын зорилгыг тодорхойлох боломжтой болно

Бодит цагийн ASP. NET SignalR Hub вэб програм:

  • HTML клиенттэй тулгарсан хэрэглэгчийн тушаалуудын дагуу "кодын түлхүүрүүдийг" хүлээж, хүлээн авдаг
  • хүлээн авмагц SQL мэдээллийн санд холбогддог бөгөөд өгөгдсөн кодын түлхүүрийг ашиглан IR кодыг авдаг
  • авсан IR кодыг Python SignalR үйлчлүүлэгчид дамжуулдаг

HTML SignalR хяналтын самбарын үйлчлүүлэгчтэй тулгарч буй хэрэглэгч:

  • jQuery SignalR Client API -ээр дамжуулан өвөрмөц кодын түлхүүрийг Hub руу дамжуулдаг
  • Хяналтын самбар дээрх товчлуур бүр нь SQL мэдээллийн сангийн хүснэгтэд бичигдсэн өвөрмөц кодын түлхүүрийг төлөөлөх болно

Raspberry Pi 2.0 дээр ажилладаг Python SignalR суурь үйлчилгээний програм:

  • IR кодуудыг Hub -аас тушаал болгон хүлээн авдаг
  • IR кодоос тусгаарлагч хайж, маш урт кодыг сегмент болгон задалдаг
  • Цуваа портоор Arduino руу холбогдож сегмент бүрийг дараалан бичдэг

Arduino IR дамжуулагчийн ноорог:

  • Цуваа порт дээрх IR кодын сегмент бүрийг хүлээж, хүлээж авдаг
  • кодын сегментүүдийг IR кодын буфер массивт нэгтгэдэг
  • буферийг IRLib Arduino номын санг ашиглан IR дамжуулах команд болгон багцлана

Хэрэв зорилтот төхөөрөмж нь IR дамжуулагчийн ойролцоо байгаа бол төхөөрөмж нь Arduino -ийн дамжуулж буй IR дохионд хариу үйлдэл үзүүлэх болно.

ТАЙЛБАР

Хэдийгээр энэ жагсаал дээр миний ашиглаж буй зорилтот төхөөрөмж нь IR дохионд хариу үйлдэл үзүүлж байгаа боловч энэ төхөөрөмж яагаад IR дохионд хариу үйлдэл үзүүлж магадгүй гэж хэлснийг та миний бусад IBLE -ийн энэ хэсгийг уншиж болно.

Гүйлгэх цаг боллоо.

Алхам 1: Танд хэрэгтэй зүйлээс өмнө

Танд хэрэгтэй зүйлээс өмнө, танд хэрэгтэй зүйл
Танд хэрэгтэй зүйлээс өмнө, танд хэрэгтэй зүйл
Танд хэрэгтэй зүйлээс өмнө, танд хэрэгтэй зүйл
Танд хэрэгтэй зүйлээс өмнө, танд хэрэгтэй зүйл
Танд хэрэгтэй зүйлээс өмнө, танд хэрэгтэй зүйл
Танд хэрэгтэй зүйлээс өмнө, танд хэрэгтэй зүйл

Энэхүү зааварчилгаа нь өмнө хийсэн зарим ажлуудаас үүдэлтэй бөгөөд энэ нь миний сүүлчийн IBLE -д хүргэсэн.

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

  1. Arduino IRLib хэт улаан туяаны номын сан байгуулагдсан
  2. Энэхүү IBLE -д ашигласан IR кодыг IR хүлээн авагч ашиглан хэрхэн авсан болохыг олж мэдэв
  3. Ирсэн IR кодыг IR дамжуулагчаар дамжуулан зорилтот төхөөрөмжийг хянахад хэрхэн ашигласан бэ?

Энэхүү IBLE -ийг дуусгасны дараа би ASP. NET IR Code Recorder вэб програмыг байрлуулсан бөгөөд үүнд:

  • Баригдсан IR кодыг зөн совинтой кодын түлхүүрийн хамт вэб маягтаар дамжуулан оруулахыг хүлээн авна уу
  • Arduino Uno -ийн цуваа буферын хязгаарт үлдэхийн тулд маш урт IR кодыг 64 тэмдэгтээс бага сегмент болгон хуваа.
  • Кодуудын сүүлийн хэсгийг "E" үсгээр урьдчилан тохируулах бөгөөд энэ нь кодын сүүлийн сегментийг хүлээн авсан болохыг Arduino-д харуулна.
  • Сегмент бүрийг урт утсанд буцааж угсрахаас өмнө хоолой тусгаарлагчаар тусгаарлана
  • Эцэст нь сегментчилсэн IR кодыг кодын түлхүүрийн хамт SQL Server 2012 мэдээллийн санд хадгалсан болно

Энэхүү SQL мэдээллийн сан нь энэхүү IBLE -д боловсруулсан Гэрийн автоматжуулалтын төвийн бүрэлдэхүүн хэсгүүдийн нэг юм.

ТАЙЛБАР

IR код бичигч вэб програм нь дараахь шалтгааны улмаас энд хэлэлцүүлгийн нэг хэсэг биш юм.

  • Та Arduino Sketch ашиглан кодыг гараар барьж, шугамаар тусгаарласан хэсгүүдэд хувааж, боловсруулсан вэб програм суулгахгүйгээр мэдээллийн санд хадгалах боломжтой.
  • Энэхүү IBLE -ээс ялгаатай нь IR Recorder нь Arduino -аас Raspberry Pi хүртэлх урвуу харилцаанд анхаарлаа төвлөрүүлдэг

Тиймээс энэ төслийн талаархи дэлгэрэнгүй мэдээлэл нь өөр IBLE -ийн сэдэв болно

Алхам 2: Танд хэрэгтэй зүйл - Тоног төхөөрөмж

Танд хэрэгтэй зүйл - Тоног төхөөрөмж
Танд хэрэгтэй зүйл - Тоног төхөөрөмж
Танд хэрэгтэй зүйл - Тоног төхөөрөмж
Танд хэрэгтэй зүйл - Тоног төхөөрөмж

Ажиллаж буй Raspberry Pi 2.0 - Ubuntu Mate -ийг суулгахыг зөвлөж байна, учир нь энэ нь Raspberry Pi дээр бичигдсэн энэхүү баримтжуулалтыг баримтжуулах зайлшгүй шаардлагатай байсан OpenLibre Office -ийг багтаасан болно.

Нэмж дурдахад Pi -д танд дараахь гадаад зүйлс хэрэгтэй болно.

  • Arduino Uno загварчлалын платформ эсвэл клон
  • Хэт улаан туяаны дамжуулагч LED - Би Amazon.com -аас Гурван хөл нэртэй брэнд ашигласан
  • 330 эсвэл 220 Ом эсэргүүцэл-Би хэд хэдэн авсаархан байсан тул 220 (өнгөний код Улаан-Улаан-Браун) -ийг ашигласан.
  • Ердийн талхны самбар, холбогч, Arduino орчин суулгасан компьютер
  • Туршилтын нэр дэвшигч - хаа сайгүй байдаг алсын удирдлагатай Samsung LED дэлгэц

Алхам 3: Танд хэрэгтэй зүйл бол програм хангамж юм

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

Raspberry Pi дээр дараахь зүйлийг суулгах шаардлагатай болно

  • Arduino IDE нь ноорог бүтээж, НҮБ -д харуулдаг
  • Arduino -д зориулсан Python модуль - НҮБ ба Пи -ийн хооронд цуваа холболт хийх зориулалттай
  • Python SignalR үйлчлүүлэгчийн номын сан - Та энд хавсаргасан зааврыг үзэх боломжтой

Дараах хөгжүүлэлтийн орчинтой Windows машин

  • Microsoft Visual Studio Express 2013 -ийн үнэгүй хувилбар нь SignalR Hub болон Вэб клиент програмыг бүтээдэг
  • SQL Server 2012 Express-ийн үнэгүй хувилбар нь мэдээллийн сангийн загварыг боловсруулж, бүтээдэг

Windows Интернет мэдээллийн сервер (IIS) байршуулах орчин:

  • SignalR Hub ба Вэб клиентийг бүтээж, туршиж үзсэний дараа үүнийг орон нутгийн IIS сервер дээр байршуулах шаардлагатай болно.
  • Миний хувьд, би гэрийн сүлжээнд Windows 7 -ийг IIS -тэй ажилладаг хуучин зөөврийн компьютер ашиглахаар төлөвлөж байна

ТАЙЛБАР

Бүх заавар нь Python 2.7.x хувилбарт хамаарна. 3.0 хувилбарыг дахин бичих шаардлагатай байж магадгүй юм

Алхам 4: SQL Server мэдээллийн сан

SQL Server мэдээллийн сан
SQL Server мэдээллийн сан

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

AutoHubCode хүснэгт

Энэ хүснэгтийн хоёр чухал багана нь:

AutoCodeKey - кодын түлхүүрийг ашиглахад тохиромжтой нэрийг хадгалдаг

Кодын түлхүүр бүрийг автоматжуулалтын үйлчлүүлэгч дамжуулдаг - бидний хувьд вэб хуудсан дээрх HTML товчлуур

AutoCodeVal - IR кодын дарааллыг хадгалдаг

Энэ бол SignalR Hub -ийн хариуд үйлчлүүлэгчид буцааж дамжуулдаг бодит IR код юм

Энэ тохиолдолд Hub -тэй байнга харилцдаг Python үйлчлүүлэгч нь IR кодын дарааллыг хүлээн авч, Arduino UNO руу цуваа портоор дамжуулдаг.

AutoHubLog хүснэгт

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

Дээр дурдсанчлан, би SQL Server 2012 -ийг өөрийн мэдээллийн баазын платформ болгон ашиглаж байсан. Та энэхүү энгийн загварыг MySQL, Oracle гэх мэт мэдээллийн сангийн өөр платформ дээр дахин үүсгэж болно.

Гэсэн хэдий ч энэхүү мэдээллийн санг үүсгэх SQL скриптийг энд хавсаргасан болно

ТАЙЛБАР

  1. SignalR Hub -ийн код нь SQL Server 2012 мэдээллийн санд холбогдох зориулалттай
  2. Өөр мэдээллийн сантай ажиллах нь өөр мэдээллийн сангийн драйвер ашиглахын тулд Hub -ийг өөрчилнө гэсэн үг юм

Алхам 5: ASP. NET SignalR Hub вэб програм

ASP. NET SignalR Hub вэб програм
ASP. NET SignalR Hub вэб програм
ASP. NET SignalR Hub вэб програм
ASP. NET SignalR Hub вэб програм

ASP. NET SignalR Hub вэб програм нь хавсаргасан схемд заасан дараах бүрэлдэхүүн хэсгүүдээс бүрдэнэ.

1 -р хэсэг - Үйлчлүүлэгчээс ирсэн хүсэлтийг хүлээн авч хариу өгөх SignalR Hub

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

3 -р хэсэг - HTML клиентийн автоматжуулалтын төвтэй холбогдоход ашигладаг jQuery SignalR API

5 -р хэсэг - SignalR Hub нь мэдээллийн санд шууд холбогддоггүй. Үүнийг Entity Framework ашиглан үүсгэсэн завсрын ангиудаар дамжуулан хийдэг

Эдгээр ангиуд нь мэдээллийн сангийн дэлгэрэнгүй мэдээллийг урд талын програмаас хураангуйлдаг

6 -р хэсэг - Entity Framework ангиудыг ашиглан SQL өгөгдлийн санд (өмнө тайлбарласан) унших -бичих үйлдлийг гүйцэтгэхэд тусалдаг мэдээллийн сангийн үйлчилгээний анги.

ASP. NET ба SignalR нь Microsoft -ийн технологи бөгөөд энэхүү гарын авлага нь энгийн SignalR програмыг хэрхэн бүтээж, ашиглах талаар танд заавар өгөх болно.

Миний энд бүтээсэн зүйл бол энэ хичээлээс олж авсан үндсэн ойлголтууд дээр үндэслэсэн болно. Өргөдөл гаргахдаа програм нь хоёр дахь зурагт үзүүлсэн вэб хуудастай төстэй байх ёстой

КОДЫН ТАЙЛБАР

Кодын хуулсан хувилбарыг агуулсан ZIP файлыг хавсаргав

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

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

Түүнчлэн индекс.html хуудсан дээрх jQuery скриптүүдийн лавлагааг jeb -ийн вэб програмыг бүтээх үед автоматаар нэмж оруулах jQuery SignalR клиент номын сангийн хамгийн сүүлийн хувилбарыг тусгахын тулд өөрчлөх шаардлагатай болно.

Эцэст нь хэлэхэд, холболтын мөрийг Web.config* гэх мэт нэртэй файлуудын өгөгдлийн санд тааруулахын тулд өөрчлөх шаардлагатай болно.

Алхам 6: Python SignalR үйлчилгээний үйлчлүүлэгч

Python SignalR үйлчилгээний үйлчлүүлэгч
Python SignalR үйлчилгээний үйлчлүүлэгч

HTML SignalR Client нь урд талын хэрэглэгчийн интерфэйс боловч Python Client нь арын үйлчилгээний програм бөгөөд гол үүрэг нь төвөөс дамжуулсан IR кодыг хүлээн авч, Arduino UNO руу цуваа холболтоор дамжуулах явдал юм.

Хавсаргасан код нь өөрөө тайлбартай бөгөөд түүний үйл ажиллагааг тайлбарлахад хангалттай баримтжуулсан болно

Нийлмэл дэлгэцийн зураг дээр харуулснаар HTML Client болон Python Service клиент нь SignalR Hub -ээр дараах байдлаар харилцдаг.

  1. Автоматжуулалтын системийн хэрэглэгч товчлуур дээр дарж Hub -д тушаал өгдөг
  2. Товчлуур бүр нь IR түлхүүр кодтой холбоотой бөгөөд дарахад энэ код Hub руу дамждаг
  3. Hub нь энэ кодыг хүлээн авч мэдээллийн санд холбогдож, IR дохионы түүхий кодыг сэргээж, холбогдсон бүх үйлчлүүлэгч рүү буцааж дамжуулдаг.

    Үүний зэрэгцээ, Hub нь AutoHubLog мэдээллийн баазын хүснэгтэд бүртгэл, алслагдсан үйлчлүүлэгчдийн хүссэн огноо, цагийг бүртгэдэг

  4. Python үйлчилгээний үйлчлүүлэгч нь IR кодыг хүлээн авч, цаашид боловсруулах зорилгоор Arduino UNO руу дамжуулдаг

Алхам 7: Arduino UNO IR дамжуулах ноорог ба код

Arduino UNO IR дамжуулах ноорог ба код
Arduino UNO IR дамжуулах ноорог ба код
Arduino UNO IR дамжуулах ноорог ба код
Arduino UNO IR дамжуулах ноорог ба код
Arduino UNO IR дамжуулах ноорог ба код
Arduino UNO IR дамжуулах ноорог ба код

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

  • Өнгөгүй IR LED нь UNO дээрх Digital PIN 3 -тэй холбогдсон байх ёстой - энэ бол IRLib Arduino номын сангийн шаардлага юм.
  • IRLib номын сантай холбоотой хэсэгт алсын удирдлагыг хуулбарлах тухай миний өмнөх IBLE -д тайлбарласан болно
  • Дижитал ПИН 4 -т холбогдсон Ногоон LED нь НҮБ нь Raspberry Pi дээр ажилладаг Python үйлчлүүлэгчээс IR кодын бүх хэсгийг хүлээн авахад гэрэлтдэг харааны үзүүлэлт юм.
  • Энэхүү LED гэрлийг асаах нь Raspberry Pi болон НҮБ -ын хоорондох цуваа холбоо ажиллаж байгааг батлах болно
  • Цуваа холболтыг идэвхжүүлэхийн тулд НҮБ нь Raspberry Pi -т USB портоор холбогддог
  • Хавсаргасан Arduino Sketch нь функцийг тайлбарлахад хангалттай тайлбар өгсөн болно
  • Кодын дээд хэсэгт байгаа тайлбарууд нь хэлхээг хэрхэн яаж холбохыг тайлбарладаг

ТАЙЛБАР

Практик дээр Arduino болон Pi -ийг Pi, Arduino -ийг жолоодох хангалттай хүчирхэг USB төвд холбож, мөн IR LED -ээр дамжуулан хүчтэй дохио дамжуулж болно.

Алхам 8: Залгаад системийг туршиж үзээрэй

Системийг холбож, турших
Системийг холбож, турших
Системийг холбож, турших
Системийг холбож, турших
Системийг холбож, турших
Системийг холбож, турших
  1. HTML клиент болох ASP. NET SignalR Hub -ийг SQL Server 2012 мэдээллийн баазын хамт өөрийн дотоод сүлжээнд байрлах Интернет мэдээллийн сервер (IIS) дээр байрлуулж, байршуулах.
  2. HTML SignalR клиентийг HTTP -ээр нээж вэб аппликэйшнд нэвтрэх

    энэ хуудасны URL нь ихэвчлэн https:// yourComputer: port_number/байх болно

  3. Хяналтын самбар дээрх товчлуур дээр дарна уу, хэрэв програмыг зөв байрлуулсан бол Hub нь IR кодыг буцааж өгч хяналтын самбарын хажууд байрлах саарал самбар дээр харуулна.

    Санаж байна уу! Та IR хүлээн авагчийн номын санг тохируулж, миний өмнөх IBLE -д тодорхойлсон кодыг авах замаар кодыг мэдээллийн санд оруулах хэрэгтэй болно

  4. Arduino -ийг USB -ээр Raspberry Pi -тэй холбоно уу - Pi дээрх Arduino IDE -ийг нээж, НҮБ нь Pi -тэй холбоо тогтоох боломжтой эсэхийг шалгаарай.

    Эдгээр Arduino -ийн зааварчилгааны нийтлэлүүд танд үүнийг хурдан авахад туслах ёстой

  5. Python кодыг нээгээд орчиндоо тохируулан дараах өөрчлөлтүүдийг хийнэ үү

    • 4 -р алхамаас олж авсан НҮБ -ын Цуваа боомтын хаяг
    • SignalR төвийн URL нь 2 -р алхамаас таны локал URL -тэй нийцэх болно - энэ жишээнд энэ нь https:// yourComputer: port_number/signalr байх болно.
  6. Эцэст нь Raspberry Pi дээрх Arduino IDE дахь Arduino Sketch -ийг нээгээд НҮБ -д үзүүлээрэй.
  7. Цахилгаан хэлхээг хянадаг төхөөрөмжтэй ойрхон байрлуулсан талхны хавтанг байрлуулна уу - IR LED нь төхөөрөмжийн IR хүлээн авагчийн порттой тодорхой харсан байх ёстой.
  8. Python IDLE хэрэгслийн самбар дээрх F5 товчийг дарж Raspberry Pi дээрх Python програмыг эхлүүлнэ үү
  9. HTML клиент програмын хяналтын самбар руу буцаж очно уу (2 -р алхам), товчлуурыг дарна уу (жишээлбэл асаах эсвэл дууг нэмэгдүүлэх гэх мэт).

Хэрэв системийг зөв тохируулсан бол та өөрийн гар утас, таблет дээрх HTML клиент хуудсыг авчирч, HTML клиент хуудсан дээрх товчлууруудаар төхөөрөмжөө удирдах боломжтой байх ёстой.

Алхам 9: Систем ажиллаж байна

Ажиллаж буй систем
Ажиллаж буй систем
Ажиллаж буй систем
Ажиллаж буй систем
Ажиллаж буй систем
Ажиллаж буй систем
Ажиллаж буй систем
Ажиллаж буй систем

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

Энэхүү IBLE -ийг нийтэлснээс хойш би VIZIO LED ТВ -ээсээ хэд хэдэн IR кодыг авч интерфэйсийг өргөжүүлсэн

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

Дараагийн дүрслэлд таблетыг урд талд нь зурагтаар, вэб интерфэйсээс өгсөн тушаалд хариу өгч байгааг харуулав.

  1. Power OFF команд - ТВ унтарна
  2. Power ON команд - ТВ асаж, дэлгэц асах үед "V" лого гарч ирнэ
  3. Дууг хаах команд - Хэвтээ баар нь чанга яригчийг хаасан үед гарч ирнэ

Бүх туршилтын явцад саарал хэсэг нь таблетын дэлгэц дээрх хяналтын самбарын хажууд үйлчлүүлэгчийн өгсөн командыг харуулдаг бөгөөд алсын зайнаас SignalR Hub -ээс буцааж илгээдэг.

Алхам 10: Автоматжуулалтын систем болон холбогдох засваруудыг сайжруулах

Янз бүрийн системээс авсан олон кодыг нэмж энэ системийг өргөтгөх боломжтой. Энэ хэсэг нь хялбар боловч өөр хоёр хүчин зүйлийг анхаарч үзэх хэрэгтэй.

Сайжруулалт 1 (Түргэн): Янз бүрийн урттай IR дохиогоор ажиллах

  1. Янз бүрийн системийн IR кодууд нь нэг үйлдвэрлэгчийн хоёр бүтээгдэхүүний хооронд ч гэсэн өөр өөр урттай байдаг.

    Жишээлбэл, энэ тохиолдолд LED ТВ -ийн IR кодын массивын урт 67, Samsung Sound Bar -ийнх 87 орчим байна

  2. Хэрэв би эхлээд Sound Bar -ийг асаасан бол Arduino -ийн ноорог дээрх IR Buffer массивыг 87 код агуулсан IR кодын дарааллаар дүүргэх болно гэсэн үг юм.
  3. Үүнийг дагаад хэрэв би LED ТВ -ийг асаасан бол IR Buffer массивыг ердөө 67 кодоор дүүргэх байсан ч өмнөх үйлдлийн үлдсэн 20 код байсаар байх болно.

Үр дүн? IR кодын буфер нь өмнөх үйлдлээс цэвэрлэгдээгүй нэмэлт 20 кодоор гэмтсэн тул LED ТВ асахгүй байна!

1 -ийг засах (гарах хялбар арга, зөвлөдөггүй)

Arduino Sketch -ийг дараах байдлаар өөрчилнө үү.

Дараах функцийн дуудлагыг loop () {} функц дээр өөрчилнө үү

transmitIRCode ();

IRCode (c) дамжуулах;

Дээрх функцын гарын үсэг дээр өөрчлөлт оруулна уу.

void transmitIRCode (int codeLen) {// RAWBUF тогтмолыг codeLen IRTransmitter. IRSendRaw:: send (IRCodeBuffer, codeLen, 38) -ээр сольсон; }

Хэдийгээр энэ нь хялбар боловч массив хэзээ ч бүрэн цэвэрлэгддэггүй тул энэ нь тийм ч цэвэр шийдэл биш юм

2 -ийг засах (хэцүү биш, зөвлөж байна)

Сэтгэгдэл бичих хэсгийн дараа нэмэлт хувьсагчийг Arduino Sketch -ийн дээд хэсэгт зарлана уу.

гарын үсэггүй int EMPTY_INT_VALUE;

Үүнийг setup () функцийн дээд хэсэгт нэмнэ үү.

// Хоосон гарын үсэггүй бүхэл тоон хувьсагчийн байгалийн төлөвийг авахEMPTY_INT_VALUE = IRCodeBuffer [0];

Доошоо гүйлгэж, transmitIRCode () функцын дараа ноорог дээр шинэ функц нэмнэ үү.

void clearIRCodeBuffer (int codeLen) {// Массивын бүх кодыг арилгах // ТАЙЛБАР: массивын элементүүдийг 0 болгож тохируулах нь шийдэл биш юм! for (int i = 1; i <= codeLen; i ++) {IRCodeBuffer [i-1] = EMPTY_INT_VALUE;}}

Эцэст нь loop () функцын дараах байршилд дээрх шинэ функцийг дуудна уу.

// Дахин тохируулах - Цуваа PortclearIRCodeBuffer (c) -ийг үргэлжлүүлэн унших;…

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

Сайжруулалт 2 (Илүү их оролцдог): Зарим төхөөрөмжүүдэд IR дохионы дамжуулалтыг давтах

Зарим төхөөрөмжүүд хариулахын тулд нэг дохиог олон удаа дамжуулах шаардлагатай байдаг. Жишээ нь: Энэ тохиолдолд Samsung Sound Bar нь 1 секундын зайтай ижил кодыг хоёр удаа илгээхийг шаарддаг

Fix in Concept -ийг энд хэлэлцсэн бөгөөд энэ нь арай илүү оролцож байгаа тул туршилт хийх шаардлагатай болно

Ardunio Sketch дээр давтагдах функцийг нэмж оруулснаар та гэрийн автоматжуулалтын системд шинэ төхөөрөмж нэмэх бүрдээ ноорогоо анивчих шаардлагатай болно гэсэн үг юм.

Үүний оронд энэхүү засварыг HTML SignalR клиент болон Python SignalR Service програмд нэмж оруулснаар уг шийдэл илүү уян хатан болно. Үүнд зарчмын хувьд дараахь байдлаар хүрч болно.

Давтагдсан мэдээллийг Hub руу дамжуулахын тулд SignalR HTML клиентийг өөрчилнө үү

Index.html -ийг нээгээд давтах утгыг HTML товчлуур дээр дараах байдлаар оруулна уу.

утга = "SMSNG-SB-PWR-ON" нь утга болно. "SMSNG-SB-PWR-ON_2_1000"

Энд 2 бол давталтын утга, 1000 бол хоёр давталтын дохионы хооронд миллисекундээр хойшлогдсон утга юм

Та энэ товчлуур дээр дарахад SignalR төв нь Key Code+Repeat_Spec -ийг хүлээн авах болно

Зөвхөн түлхүүр кодыг задлахын тулд SignalR серверийн аргуудыг өөрчилнө үү

  • IR кодыг өгөгдлийн сангаас ердийн байдлаар авахын тулд түлхүүр кодыг ашиглана уу
  • Түлхүүр код+Repeat_Spec болон IRCode -ийг ердийн байдлаар SingalR үйлчлүүлэгчдэд дамжуулна уу

Дахин давтах утгыг ашиглан дохио дамжуулахын тулд Python SignalR Service програмыг өөрчилнө үү

Python клиентийг нээгээд дараах хоёр функцийг өөрчилнө үү.

def print_command_from_hub (buttonId, cmdSrc):

# давтах кодыг buttonId утгаас задлан шинжилнэ

def transmitToArduino (IRSignalCode, delim, endPrefix):

# дохиог хүссэн давтамжтайгаар дамжуулахын тулд хэсэг хугацаанд эсвэл давталт тохируулна уу

  • Ингэснээр Arduino -г дахин дахин асаах шаардлагагүй болно
  • Энэ системд ямар ч тооны давтамжийг суулгаж болно
  • Үүнээс гадна, хэрэв та НҮБ -ыг ашиглаж байгаа бол Sketch -ийн хэмжээгээр хязгаарлах боломжтой!

Алхам 11: Мэдэгдэж буй асуудал ба аюулгүй байдлын асуудал

Анх бүтээсэн системүүдийн нэгэн адил энэ нь туршилтын явцад гарч ирсэн хэд хэдэн асуудалтай байна.

Асуудал 1: Товчлуур дарах хооронд секундээс бага хугацаа хоцорч тушаалуудыг дараалан ажиллуулснаар эхний хоёр удаа хариу өгсний дараа систем хариу өгөхгүй болсон.

  • Python SignalR үйлчлүүлэгчийг дахин эхлүүлснээр системийг хэвийн үйл ажиллагаанд нь буцаана
  • Python SignalR Client болон Arduino Sketch хоёуланд нь дибаг хийх хүсээгүй гаралтыг устгаж, эдгээр туршилтыг давтах нь нэн даруй шийдэгдэх болно.
  • Өөр нэг анхаарах зүйл бол Цуваа холбоо өөрөө байх болно - буферийг хурдан угаахын тулд код нэмэх боломжтой юу?

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

Асуудал 2: HTML дэлгэц удаан хугацаанд идэвхгүй байсны дараа товчлуур дээр дарахад хариу өгөхөө болино

Хуудсыг сэргээх нь ихэвчлэн энэ зан үйлийг шийддэг боловч энэ зан үйлийн шалтгаан тодорхойгүй хэвээр байна

АЮУЛГҮЙ БАЙДАЛ

Энэ систем нь зөвхөн орон нутгийн (гэрийн) сүлжээнд зориулагдсан бөгөөд интернетээр ашиглахад шаардлагатай аюулгүй байдлын хамгаалалт байхгүй байна

Тиймээс SignalR Hub -ийг дотоод/гэрийн сүлжээндээ локал машинд байрлуулахыг зөвлөж байна

Миний IBLE -ийг уншсанд баярлалаа, танд хөгжилтэй байх болно гэж найдаж байна!

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