Mundarija:

Raspberry Pi-Arduino-SignalR uy avtomatlashtirish markazi: 11 qadam (rasmlar bilan)
Raspberry Pi-Arduino-SignalR uy avtomatlashtirish markazi: 11 qadam (rasmlar bilan)

Video: Raspberry Pi-Arduino-SignalR uy avtomatlashtirish markazi: 11 qadam (rasmlar bilan)

Video: Raspberry Pi-Arduino-SignalR uy avtomatlashtirish markazi: 11 qadam (rasmlar bilan)
Video: Building a Robot Arm with .NET 5, Raspberry Pi, Blazor and Signal R - Peter Gallagher 2024, Iyul
Anonim
Raspberry Pi-Arduino-SignalR uy avtomatlashtirish markazi
Raspberry Pi-Arduino-SignalR uy avtomatlashtirish markazi

Bu erda va bu erda nashr etilgan bir nechta IBLE -larimdan so'ng, ushbu loyiha uyni avtomatlashtirish markazining asosiy versiyasini yaratish yo'lida birinchi qadamni qo'yadi.

Men ilgari o'rgangan narsalarimni va kunlar o'tishi bilan o'rganishda davom etayotgan yangi narsalarni qanday ishlatishim mumkinligini tushunishga harakat qilib, turli texnologiyalardan foydalandim.

Shunday qilib, ushbu avtomatlashtirish markazi quyidagi komponentlardan iborat:

SQL Server 2012 ma'lumotlar bazasi:

  • oldindan belgilangan infraqizil (IQ) kodlari ro'yxatini noyob "kod kaliti" bilan birga jadvalda saqlaydi.
  • kod kalitlari intuitiv ravishda nomlanadi (foydalanuvchi tomonidan), ular bilan bog'liq bo'lgan IR kodlarining maqsadini aniqlash uchun

Haqiqiy vaqtda ASP. NET SignalR Hub veb-ilovasi:

  • HTML -mijozga qaragan foydalanuvchidan buyruqlar sifatida "kod kalitlari" ni kutadi va oladi
  • qabul qilinganda, SQL ma'lumotlar bazasiga ulanadi va berilgan kodli kalit yordamida IR kodini oladi
  • olingan IR kodini Python SignalR mijoziga o'tkazadi

HTML SignalR boshqaruv paneli mijoziga qaragan foydalanuvchi:

  • jQuery SignalR Client API -lari orqali Hub -ga yagona kod kalitini yuboradi
  • Boshqaruv panelidagi har bir tugma SQL ma'lumotlar bazasi jadvalida yozilgan noyob kod kalitini ifodalaydi

Raspberry Pi 2.0 da ishlaydigan Python SignalR fon xizmatining ilovasi:

  • Hubdan buyruq sifatida IR kodlarini oladi
  • IR kodida chegarachilarni qidiradi va juda uzun kodni segmentlarga ajratadi
  • ketma -ket port orqali Arduino bilan bog'lanadi va har bir segmentni ketma -ket yozadi

Arduino IQ transmitterining eskizi:

  • Seriya porti orqali IR kodining har bir segmentini kutadi va oladi
  • kod segmentlarini IR kod bufer qatoriga yig'adi
  • buferni IRLib Arduino kutubxonasi yordamida IQ uzatish buyrug'iga to'playdi

Agar maqsadli qurilma IQ uzatgichi yaqinida bo'lsa, qurilma Arduino uzatadigan IQ signaliga javob berishi mumkin.

ESLATMA

Garchi, men ko'rsatishda ishlatadigan maqsadli qurilma IQ signallariga javob bersa ham, men boshqa IBLE bo'limimni o'qishni xohlashingiz mumkin, chunki men nima uchun qurilma IQ signaliga javob berishi mumkin.

Yugurish vaqti.

1 -qadam: Sizga kerak bo'lgan narsadan oldin

Sizga kerak bo'lgan narsadan oldin
Sizga kerak bo'lgan narsadan oldin
Sizga kerak bo'lgan narsadan oldin
Sizga kerak bo'lgan narsadan oldin
Sizga kerak bo'lgan narsadan oldin
Sizga kerak bo'lgan narsadan oldin

Bu ko'rsatma oldin bajarilgan ba'zi ishlar bilan boshlanadi, bu esa mening oxirgi IBLE ga olib keladi.

Shunday qilib, biz IBLE -ga kerak bo'lgan narsaga kirishdan oldin, ushbu ko'rsatmalarni o'qish tavsiya etiladi:

  1. Arduino IRLib infraqizil kutubxonasi o'rnatildi
  2. Ushbu IBLE -da ishlatilgan IR kodlari IQ qabul qilgich yordamida qanday olingan
  3. IQ uzatuvchi orqali maqsadli qurilmani boshqarish uchun qo'lga kiritilgan IR kodlari qanday ishlatilgan

Ushbu IBLE tugagandan so'ng, men ASP. NET IR kod yozuvchisi veb -ilovasini joylashtirdim:

  • Qabul qilingan IR kodini intuitiv ravishda nomlangan kodli kalit bilan veb -shakl orqali kirish sifatida qabul qiling
  • Arduino Uno -ning ketma -ket bufer chegarasida qolish uchun IQ kodini 64 belgidan kam bo'laklarga bo'ling.
  • Kodlarning oxirgi qismi "E" belgisi bilan oldindan tuzilgan bo'lishi kerak, bu Arduino-ga kodning oxirgi segmentini olganligini ko'rsatadi.
  • Har bir segment uzun ipga yig'ilishidan oldin quvur ajratuvchi bilan ajratilgan bo'lar edi
  • Nihoyat, segmentlangan IR kodi va uning kalit kaliti SQL Server 2012 ma'lumotlar bazasida saqlandi

Aynan mana shu SQL ma'lumotlar bazasi, bu IBLE -da ishlab chiqilgan uy avtomatlashtirish markazining tarkibiy qismlaridan birini tashkil qiladi.

ESLATMA

IR kod yozuvchisi veb -ilovasi quyidagi sabablarga ko'ra bu erda muhokama qilinmaydi:

  • Siz Arduino Sketch yordamida kodlarni qo'lda yozib olishingiz, ularni quvurlar bilan ajratilgan bo'limlarga ajratishingiz va ma'lumotlar bazasida saqlashingiz mumkin.
  • Ushbu IBLEdan farqli o'laroq, IR yozuvchisi Arduino -dan Raspberry Pi -ga teskari aloqaga e'tibor qaratadi

Shuning uchun ushbu loyiha tafsilotlari boshqa IBLE uchun mavzu bo'ladi

2 -qadam: Sizga nima kerak - apparat

Sizga nima kerak - apparat
Sizga nima kerak - apparat
Sizga nima kerak - apparat
Sizga nima kerak - apparat

Ishlayotgan Raspberry Pi 2.0 - Men Ubuntu Mate -ni o'rnatishni maslahat beraman, chunki u boy xususiyatlarga ega, shu jumladan OpenLibre Office, bu ma'lumotni Raspberry Pi -da hujjatlashtirishda zarur edi.

Pi -ga qo'shimcha ravishda sizga quyidagi tashqi vositalar kerak bo'ladi.

  • Arduino Uno prototiplash platformasi yoki klon
  • IQ uzatuvchi LED - men Amazon.com saytidan Uch oyoqli brenddan foydalanardim
  • 330 yoki 220 Ohmli rezistorlar-Men 220 (rang kodi Qizil-Qizil-Qora) ishlatardim, chunki menda bir nechta qulay narsalar bor edi.
  • Oddiy non paneli, ulagichlar va Arduino Environment o'rnatilgan kompyuter
  • Sinovga nomzod - masalan, hamma joyda joylashgan Samsung LED monitor, masofadan boshqarish pulti

3 -qadam: Sizga kerak bo'lgan narsa - dasturiy ta'minot

Barcha qismlarni birlashtirish uchun quyidagi dasturiy ta'minotni o'rnatish va ishga tushirish kerak bo'ladi:

Raspberry Pi -da siz quyidagilarni o'rnatishingiz kerak bo'ladi:

  • Arduino IDE - eskizni yaratish va UNOga ko'rsatish uchun ishlatilgan
  • Arduino uchun Python moduli - UNO va Pi o'rtasidagi ketma -ket aloqa uchun
  • Python SignalR mijozlar kutubxonasi - Siz bu erda biriktirilgan ko'rsatmalarga murojaat qilishingiz mumkin

Quyidagi ishlab chiqish muhiti o'rnatilgan Windows mashinasi:

  • SignalR uyasi va veb -mijoz dasturini yaratish uchun Microsoft Visual Studio Express 2013 -ning bepul nashri
  • Ma'lumotlar bazasini yaratish va yaratish uchun SQL Server 2012 Express-ning bepul nashri

Windows Internet axborot serveri (IIS) xosting muhiti:

  • SignalR uyasi va veb -mijozi qurilib, sinovdan o'tkazilgach, uni mahalliy IIS serveriga joylashtirish kerak bo'ladi.
  • Menimcha, men uy tarmog'imda Windows 7 IIS bilan ishlaydigan eski noutbukdan foydalanishni rejalashtiryapman

ESLATMA

Barcha ko'rsatmalar Python 2.7.x versiyasiga tegishli. 3.0 versiyasi qayta yozishni talab qilishi mumkin

4 -qadam: SQL Server ma'lumotlar bazasi

SQL Server ma'lumotlar bazasi
SQL Server ma'lumotlar bazasi

Ilova qilingan sxema ushbu dasturda ishlatiladigan va faqat ikkita jadvalni o'z ichiga olgan asosiy SQL Server ma'lumotlar bazasining tuzilishini ko'rsatadi.

AutoHubCode jadvali

Jadvaldagi ikkita muhim ustun:

AutoCodeKey - kod kalitining foydalanuvchilarga qulay nomini saqlaydi

Har bir kod tugmachasi avtomatlashtirish mijozi tomonidan uzatiladi - bizning holda, veb -sahifadagi HTML tugmasi

AutoCodeVal - infraqizil kodning ketma -ketligini saqlaydi

Bu SignalR Hub javoban mijozga qaytariladigan haqiqiy IR kod

Bunday holda, uyaga doimiy aloqada bo'lgan Python mijozi IQ kodi ketma -ketligini oladi va uni ketma -ket port orqali Arduino UNOga uzatadi.

AutoHubLog jadvali

  • Avtomatlashtirish mijozi talab qilgan kodni qayd qiladi.
  • Bu tizim kim tomonidan va qachon ishlatilganligini va qaysi kod so'ralganligini kuzatish o'lchovidir

Aytganimdek, men tanlagan ma'lumotlar bazasi platformasi sifatida SQL Server 2012 -dan foydalandim. Siz ushbu oddiy dizaynni boshqa ma'lumotlar bazasi platformasida, masalan, MySQL, Oracle va boshqalarda qayta yaratishingiz mumkin.

Shunga qaramay, bu ma'lumotlar bazasini yaratish uchun SQL Skript bu erda biriktirilgan

ESLATMA

  1. SignalR uyasi uchun kod SQL Server 2012 ma'lumotlar bazasiga ulanish uchun mo'ljallangan
  2. Boshqa ma'lumotlar bazasi bilan ishlash Hub -ni boshqa ma'lumotlar bazasi drayveridan foydalanishni o'zgartirishni anglatadi

5 -qadam: ASP. NET SignalR Hub veb -ilovasi

ASP. NET SignalR Hub veb -ilovasi
ASP. NET SignalR Hub veb -ilovasi
ASP. NET SignalR Hub veb -ilovasi
ASP. NET SignalR Hub veb -ilovasi

ASP. NET SignalR Hub veb -ilovasi birgalikda biriktirilgan sxemada ko'rsatilgan quyidagi komponentlardan iborat:

1 -bo'lim - mijozdan so'rovlarni qabul qiladigan va ularga javob beradigan SignalR uyasi

2, 4 -bo'limlar - HTML mijozining veb -sahifasi va uning uslublar jadvali, bu avtomatlashtirish tizimining old qismini birlashtiradi va avtomatlashtirish markaziga buyruqlar beradi.

3 -bo'lim - HTML mijozi tomonidan avtomatlashtirish markaziga ulanish uchun ishlatiladigan jQuery SignalR API -lari.

5 -bo'lim - SignalR uyasi ma'lumotlar bazasi bilan bevosita aloqa qilmaydi. Buni Entity Framework yordamida yaratilgan oraliq sinflar orqali amalga oshiradi

Bu sinflar ma'lumotlar bazasi tafsilotlarini oldingi ilovadan mavhumlashtiradi

6 -bo'lim - SQL ma'lumotlar bazasida o'qish -yozish operatsiyalarini bajarishga yordam beradigan ma'lumotlar bazasi xizmatlari sinfi (ilgari tasvirlangan) Entity Framework sinflari yordamida.

ASP. NET va SignalR - bu Microsoft texnologiyalari va bu qo'llanma sizga oddiy SignalR ilovasi qanday qurilishi va joylashishi haqida ma'lumot beradi.

Men bu erda qurgan narsalarim bu darslikdan olingan asoslarga asoslangan. Qachon joylashtirilsa, dastur ikkinchi rasmda ko'rsatilgan veb -sahifaga o'xshash bo'lishi kerak

KODDA QAYD

Kodning o'chirilgan versiyasi bo'lgan ZIP fayli biriktirilgan

Jildning tuzilishi vizualda ko'rsatilgandek, lekin qo'shimchaning hajmini kamaytirish uchun barcha ramka sinflari va jQuery skriptlari olib tashlangan.

Tavsiya shundaki, bu kodni qo'llanma sifatida ishlatish kerak, chunki yuqoridagi o'quv havolasini bosib yangi SignalR Web ilovasini yaratganingizda, eng yangi jQuery kutubxonalari va ASP. NET ramka sinflari avtomatik ravishda qo'shiladi.

Shuningdek, index.html sahifasidagi jQuery skriptlariga havolalar jQuery SignalR mijoz kutubxonalarining so'nggi versiyasini aks ettirishi uchun o'zgartirilishi kerak, ular veb -ilovangizni yaratganingizda avtomatik ravishda qo'shiladi.

Nihoyat, Web.config* nomli fayllardagi ma'lumotlar bazasiga mos keladigan ulanish satrini o'zgartirish kerak bo'ladi.

6 -qadam: Python SignalR xizmati mijozi

Python SignalR xizmati mijozi
Python SignalR xizmati mijozi

HTML SignalR mijozi old tomonga qaraydigan foydalanuvchi interfeysi bo'lsa -da, Python mijozi - bu xizmat ko'rsatuvchi dastur bo'lib, uning asosiy vazifasi Hub tomonidan uzatiladigan IR kodini qabul qilish va uni ketma -ket aloqa orqali Arduino UNOga yuborishdir.

Qo'shilgan kod o'z-o'zidan tushunarli va uning funksionalligini tasvirlash uchun etarli darajada hujjatlashtirilgan

Kompozit ekran tasvirida ko'rsatilgandek, HTML Client va Python Service mijozi SignalR Hub orqali quyidagicha aloqa o'rnatadilar:

  1. Avtomatlashtirish tizimining foydalanuvchisi tugmani bosish orqali Hubga buyruq beradi
  2. Har bir tugma IR kalit kodi bilan bog'liq va bosilganda bu kod Hubga uzatiladi
  3. Hub ushbu kodni oladi, ma'lumotlar bazasiga ulanadi va IR signalining xom kodini oladi va uni barcha ulangan mijozlarga qaytaradi.

    Shu bilan birga, Hub AutoHubLog ma'lumotlar bazasi jadvaliga kirishni qayd qiladi va u uzoq mijozlar talab qilgan sana va vaqtni yozib qo'yadi

  4. Python xizmat mijozi IR kodini oladi va uni qayta ishlash uchun Arduino UNOga uzatadi

7 -qadam: Arduino UNO IR uzatish eskizi va kodi

Arduino UNO IR uzatish eskizi va kodi
Arduino UNO IR uzatish eskizi va kodi
Arduino UNO IR uzatish eskizi va kodi
Arduino UNO IR uzatish eskizi va kodi
Arduino UNO IR uzatish eskizi va kodi
Arduino UNO IR uzatish eskizi va kodi

Vizualda ko'rsatilgan Arduino sxemasi bu tizim uchun juda oddiy va shuning uchun qisqacha tasvirlangan:

  • Rangsiz IQ LEDni UNO raqamli PIN 3 ga ulash lozim - bu IRLib Arduino kutubxonasining talabidir.
  • Sabablari IRLib kutubxonasi bilan bog'liq bo'limda masofadan boshqarish pultini klonlash haqidagi oldingi IBLE -da tasvirlangan
  • Raqamli PIN 4 -ga ulangan Yashil LED - bu BMT Raspberry Pi -da ishlaydigan Python mijozidan IR kodining barcha bo'limlarini olganida yonib turadigan vizual ko'rsatkich.
  • Ushbu LED yoritgichi Raspberry Pi va UNO o'rtasidagi ketma -ket aloqa ishlayotganligini tasdiqlaydi
  • Serial aloqani yoqish uchun UNO Raspberry Pi -ga USB port orqali ulangan
  • Qo'shilgan Arduino Sketch o'z vazifasini tasvirlash uchun etarlicha izohlangan
  • Kodning yuqori qismidagi izohlar, shuningdek, kontaktlarning zanglashiga olib kelishi kerakligini tasvirlaydi

ESLATMA

Amalda, Arduino va Pi birgalikda Pi, Arduino -ni boshqaradigan, shuningdek IQ LED orqali kuchli signal uzatadigan kuchli USB uyasiga ulanishi mumkin.

8 -qadam: tizimni ulash va sinovdan o'tkazish

Tizimni ulash va sinovdan o'tkazish
Tizimni ulash va sinovdan o'tkazish
Tizimni ulash va sinovdan o'tkazish
Tizimni ulash va sinovdan o'tkazish
Tizimni ulash va sinovdan o'tkazish
Tizimni ulash va sinovdan o'tkazish
  1. HTML mijozi ASP. NET SignalR uyasini, SQL Server 2012 ma'lumotlar bazasi bilan birgalikda mahalliy uy tarmog'ingizdagi Internet axborot serveriga (IIS) yarating va joylashtiring.
  2. HTML SignalR mijozini HTTP orqali ochish orqali veb -ilovaga kiring

    bu sahifaning URL manzili odatda https:// yourComputer: port_number/

  3. Boshqarish panelidagi tugmani bosing va agar dastur to'g'ri joylashtirilgan bo'lsa, Hub javob beradi, IR kodini qaytaradi va uni boshqaruv paneli yonidagi kulrang panelda ko'rsatadi.

    Eslab qoling! IQ qabul qiluvchilar kutubxonasini o'rnatish va oldingi IBLE -da tasvirlangan kodlarni olish orqali kodlarni ma'lumotlar bazangizga yuklashingiz kerak bo'ladi

  4. Arduino -ni Raspberry Pi -ga USB orqali ulang - Pi -da Arduino IDE -ni oching va UNO Pi bilan aloqa o'rnatishi mumkinligiga ishonch hosil qiling.

    Arduino -dagi o'quv qo'llanmalari bunga tezda erishishga yordam beradi

  5. Python kodini oching va muhitingizga mos ravishda quyidagi o'zgartirishlarni kiriting

    • 4 -qadamdan olingan UNO -ning ketma -ket port manzili
    • SignalR markazining URL manzili 2 -bosqichdagi mahalliy URL manzilingizga mos keladi - bu misolda u https:// yourComputer: port_number/signalr bo'ladi.
  6. Nihoyat, Raspberry Pi -dagi Arduino IDE -dagi Arduino eskizini oching va UNO -ga yoqing.
  7. Devorni ushlab turadigan non taxtasini nazorat qilinadigan asbob bilan yaqin joylashtiring - IQ LED, qurilmaning IQ qabul qilish porti bilan aniq ko'rish chizig'iga ega bo'lishi kerak.
  8. Python IDLE asboblar panelidagi F5 tugmasini bosib Raspberry Pi -da Python dasturini ishga tushiring
  9. HTML mijoz dasturining Boshqarish paneliga qayting (2 -qadam) va tugmani bosing (Quvvatni yoqish yoki Ovozni ko'tarish kabi).

Agar tizim to'g'ri sozlangan bo'lsa, siz telefoningiz yoki planshetingizdagi HTML mijoz sahifasini ochib, HTML -mijoz sahifangizdagi tugmalar yordamida qurilmangizni boshqarishingiz kerak.

9 -qadam: Tizim amalda

Amaldagi tizim
Amaldagi tizim
Amaldagi tizim
Amaldagi tizim
Amaldagi tizim
Amaldagi tizim
Amaldagi tizim
Amaldagi tizim

Yuqoridagi tasvirlar uyni avtomatlashtirish tizimi o'rnatilgandan so'ng ishlayotganini ko'rsatadi.

IBLE nashr etilganidan beri men VIZIO LED televizoridan bir nechta IR kodlarini yozib, interfeysni kengaytirdim

Birinchi vizual qurilmada masofadan boshqarish pulti bilan yonma -yon ko'rsatilgandek, bu masofadan boshqarish pultining bir nechta muhim funktsiyalari mening planshetim orqali kiradigan veb -interfeysga o'rnatilgan.

Keyingi ingl. Veb -interfeysdan berilgan buyruqlarga javob berib, televizor orqa tomonda planshetni birinchi o'ringa qo'yadi.

  1. Quvvatni o'chirish buyrug'i - televizor o'chadi
  2. Quvvatni yoqish buyrug'i - televizor yoqiladi va ekran yoqilganda "V" belgisi paydo bo'ladi
  3. Ovozni o'chirish buyrug'i - gorizontal chiziq karnayning ovozini o'chiradi

Barcha testlarda, kulrang maydon planshet ekranidagi asboblar paneli yonida mijoz tomonidan berilgan buyruq va masofadan signal SignalR uyasi tomonidan qaytariladi.

10 -qadam: Avtomatlashtirish tizimini va tegishli tuzatishlarni kuchaytirish

Bu tizimni turli tizimlardan olingan ko'proq kodlarni qo'shish orqali uzaytirish mumkin. Bu qism oson bo'lsa -da, yana ikkita omilni hisobga olish kerak.

Yaxshilash 1 (tez): turli uzunlikdagi IQ signallari bilan ishlash

  1. Turli tizimlarning IQ kodlari har xil uzunliklarda, hatto bitta ishlab chiqaruvchining ikkita mahsuloti orasida ham bo'ladi.

    Masalan, bu holda LED televizorining IQ kodli massiv uzunligi 67, Samsung Sound Barniki esa 87 ga yaqin

  2. Bu shuni anglatadiki, agar men birinchi navbatda Sound Bar -ni yoqgan bo'lsam, Arduino eskizidagi IQ Buffer qatori 87 kodni o'z ichiga olgan IR kod ketma -ketligi bilan to'ldiriladi.
  3. Agar men LED -televizorni yoqgan bo'lsam, u IQ Bufer massivini atigi 67 ta kod bilan to'ldiradi, lekin oldingi operatsiyadan qolgan 20 ta kod hali ham shunday bo'ladi.

Natija? LED -televizor yoqilmaydi, chunki IR kodining buferi oldingi operatsiyadan tozalanmagan qo'shimcha 20 ta kod buzilgan!

Tuzatish 1 (chiqishning oson yo'li, tavsiya etilmaydi)

Arduino eskizini quyidagicha o'zgartiring:

Loop () {} funktsiyasida quyidagi funktsiya chaqiruvlarini o'zgartiring

transmitIRCode ();

IRCode (c) ni yuborish;

Yuqoridagi funktsiyani imzosiga o'zgartirishlar kiriting:

void transmitIRCode (int codeLen) {// RAWBUF doimiysi codeLen bilan almashtirildi IRTransmitter. IRSendRaw:: send (IRCodeBuffer, codeLen, 38); }

Bu oson bo'lsa -da, qator hech qachon to'liq tozalanmaydi va shuning uchun bu juda toza echim emas

Tuzatish 2 (qiyin emas, tavsiya etiladi)

Sharhlar bo'limidan so'ng, Arduino Sketch -ning yuqori qismida qo'shimcha o'zgaruvchini e'lon qiling:

imzosiz int EMPTY_INT_VALUE;

Buni setup () funktsiyasining yuqori qismiga qo'shing:

// Bo'sh imzo qo'yilmagan butun sonli o'zgaruvchining tabiiy holatini olingEMPTY_INT_VALUE = IRCodeBuffer [0];

Pastga siljiting va transmitIRCode () funktsiyasidan so'ng darhol eskizga yangi funksiya qo'shing:

void clearIRCodeBuffer (int codeLen) {// Barcha kodlarni massivdan tozalash // QAYD: qator elementlarini 0 ga o'rnatish-bu yechim emas! (int i = 1; i <= codeLen; i ++) {IRCodeBuffer [i-1] = EMPTY_INT_VALUE;}}

Nihoyat, loop () funktsiyasining quyidagi joyida yuqoridagi yangi funktsiyani chaqiring:

// Nolga o'rnatish - ketma -ket PortclearIRCodeBuffer (c) o'qishni davom ettiring;…

Bu yanada aniqroq yondashuv, chunki u IR -bufer massividagi IR manzilining so'nggi signallari bilan to'ldirilgan barcha joylarni hech narsaga yo'l qo'ymasdan qaytaradi.

2 -sonli takomillashtirish (Qo'shimcha): Ba'zi qurilmalar uchun IR signal uzatilishini takrorlash

Ba'zi qurilmalar javob berish uchun bir xil signalni bir necha marta uzatishni talab qiladi, masalan: Bunday holda, Samsung Sound Bar bir xil kodni 2 soniya bo'shliq bilan ikki marta yuborilishini talab qiladi

Kontseptsiyani tuzatish bu erda muhokama qilingan, chunki u biroz ko'proq ishtirok etadi va sinovdan o'tishi kerak

Ardunio Sketch -ga takroriy funktsiyani qo'shish, siz uy avtomatlashtirish tizimiga har safar yangi qurilmani qo'shganingizda, eskizni o'chirishingiz kerakligini bildiradi.

Buning o'rniga, HTML SignalR mijoziga va Python SignalR Service ilovasiga ushbu tuzatish qo'shilishi, bu yechimni ancha moslashuvchan qiladi. Va bunga printsipial ravishda quyidagicha erishish mumkin:

Hubga takroriy ma'lumotlarni uzatish uchun SignalR HTML mijozini o'zgartiring

Index.html -ni oching va takrorlash qiymatini HTML tugmasiga joylashtiring:

value = "SMSNG-SB-PWR-ON" qiymati = "SMSNG-SB-PWR-ON_2_1000" bo'ladi.

Bu erda, 2 - takroriy qiymat va 1000 - ikkita takroriy signal orasidagi millisekundlarda kechikish qiymati

Bu tugmani bosganingizda, SignalR uyasi Key Code+Repeat_Spec -ni oladi

SignalR Server usullarini o'zgartiring, faqat kalit kodini ajratib oling:

  • IR kodini ma'lumotlar bazasidan odatdagidek olish uchun kalit kodidan foydalaning
  • SingalR mijozlariga odatdagidek kalit kodi+Repeat_Spec va IRCode -ni yuboring

Takrorlash qiymatlari yordamida signallarni uzatish uchun Python SignalR Service ilovasini o'zgartiring:

Python mijozini oching va quyidagi ikkita funktsiyani o'zgartiring:

def print_command_from_hub (buttonId, cmdSrc):

# takrorlash kodini buttonId qiymatidan ajrating

def transmitToArduino (IRSignalCode, delim, endPrefix):

# signalni kerakli chastotada uzatish uchun bir muncha vaqt yoki tsiklni o'rnating

  • Shunday qilib, Arduino -ni qayta -qayta chaqirish shart emas
  • Ushbu tizimga har qanday takroriy chastotalar kiritilishi mumkin
  • Bundan tashqari, agar siz UNO -dan foydalansangiz, sizning eskizingiz hajmining chegarasi bor!

11 -qadam: Ma'lum muammolar va xavfsizlik muammolari

Birinchi marta qurilgan tizimlarda bo'lgani kabi, bu sinov paytida paydo bo'lgan bir nechta muammolarga ega.

1 -masala: Buyruqlarni ketma -ket ishga tushirish, tugmachalarni bosish orasida bir soniyadan kamroq vaqtga kechikishlar bilan, tizim birinchi ikki marta javob berganidan keyin javob bermay qo'ydi.

  • Python SignalR mijozini qayta ishga tushirish tizimni normal ishlashiga qaytaradi
  • Python SignalR Client -da, Arduino Sketch -da keraksiz disk raskadrovka chiqishini olib tashlash va bu testlarni takrorlash darhol hal qilinishi mumkin.
  • Ko'rib chiqiladigan yana bir joy - ketma -ket aloqaning o'zi - buferni tezda tozalash uchun kod qo'shish mumkinmi?

Aytgancha, men televizorim zavod masofadan boshqarish pultiga yaxshi javob bermayotganini payqadim, shuning uchun televizorimning IQ -aloqa texnologiyasi ham bunga hissa qo'shishi mumkin.

2 -masala: HTML ekrani uzoq vaqt harakatsizlikdan so'ng tugmachalarni bosishga javob berishni to'xtatadi

Odatda sahifani yangilash bu xatti -harakatni hal qiladi - bu xatti -harakatning sababi hali aniq emas

XAVFSIZLIK Xavotirlar

Bu tizim faqat mahalliy (uy) tarmoqdan foydalanish uchun mo'ljallangan va Internetda foydalanish uchun zarur xavfsizlik choralariga ega emas

Shuning uchun SignalR uyasini mahalliy/uy tarmog'ingizdagi mahalliy mashinaga joylashtirish tavsiya etiladi

IBLE -ni o'qiganingiz uchun tashakkur va umid qilamanki, siz zavqlanasiz!

Tavsiya: