Satura rādītājs:

Raspberry Pi-Arduino-SignalR mājas automatizācijas centrs: 11 soļi (ar attēliem)
Raspberry Pi-Arduino-SignalR mājas automatizācijas centrs: 11 soļi (ar attēliem)

Video: Raspberry Pi-Arduino-SignalR mājas automatizācijas centrs: 11 soļi (ar attēliem)

Video: Raspberry Pi-Arduino-SignalR mājas automatizācijas centrs: 11 soļi (ar attēliem)
Video: How to build a robot arm with .NET 7, Raspberry Pi, Blazor, and SignalR 2024, Jūlijs
Anonim
Raspberry Pi-Arduino-SignalR mājas automatizācijas centrs
Raspberry Pi-Arduino-SignalR mājas automatizācijas centrs

Pēc pāris maniem šeit un šeit publicētajiem IBLE ievadiem šis projekts sper pirmo soli, lai izveidotu funkcionālas mājas automatizācijas centrmezgla pamatversiju.

Esmu izmantojis vairākas dažādas tehnoloģijas, cenšoties saprast, kā es varētu izmantot visas iepriekš apgūtās lietas un jaunās lietas, ko turpinu apgūt dienu gaitā.

Tāpēc šis automatizācijas centrs sastāv no šādiem komponentiem:

SQL Server 2012 datu bāze, kas:

  • saglabā tabulā iepriekš noteiktu infrasarkano (IR) kodu sarakstu kopā ar unikālu "koda atslēgu"
  • koda atslēgas intuitīvi nosauc (lietotājs), lai noteiktu ar tām saistīto IS kodu mērķi

Reāllaika ASP. NET SignalR Hub tīmekļa lietojumprogramma, kas:

  • gaida un saņem "koda atslēgas" kā komandas no lietotāja, kurš saskaras ar HTML klientu
  • kad saņemts, izveido savienojumu ar SQL datu bāzi un izgūst IR kodu, izmantojot komplektā iekļauto koda atslēgu
  • pārsūta iegūto IR kodu Python SignalR klientam

Lietotājs saskaras ar HTML SignalR informācijas paneļa klientu, kas:

  • nosūta centrmezglam unikālu koda atslēgu, izmantojot jQuery SignalR Client API
  • katra poga informācijas panelī attēlo unikālu koda atslēgu, kas ierakstīta SQL datu bāzes tabulā

Python SignalR fona pakalpojuma lietojumprogramma, kas darbojas Raspberry Pi 2.0:

  • saņem IR kodus kā komandas no centrmezgla
  • meklē atdalītājus IR kodeksā un sadala ļoti garo kodu segmentos
  • sazinās pa seriālo portu ar Arduino un izraksta katru segmentu pēc kārtas

Arduino IR raidītāja skice, kas:

  • gaida un saņem katru IS koda segmentu, izmantojot seriālo portu
  • apkopo koda segmentus IR koda bufera masīvā
  • Iepako buferi IR pārraides komandā, izmantojot IRLib Arduino bibliotēku

Ja mērķa ierīce atrodas IS raidītāja tuvumā, ierīce (var) reaģēt uz Arduino pārraidīto IR signālu

PIEZĪME

Lai gan šajā demonstrācijā izmantotā mērķa ierīce reaģē uz IR signāliem, iespējams, vēlēsities izlasīt šo mana IBLE sadaļu iemeslu dēļ, kāpēc es saku, ka ierīce (var) reaģēt uz IR signālu.

Laiks ripot.

1. solis: kas jums nepieciešams, pirms tā, kas jums nepieciešams

Kas jums nepieciešams, pirms tam, kas jums nepieciešams
Kas jums nepieciešams, pirms tam, kas jums nepieciešams
Kas jums nepieciešams, pirms tam, kas jums nepieciešams
Kas jums nepieciešams, pirms tam, kas jums nepieciešams
Kas jums nepieciešams, pirms tam, kas jums nepieciešams
Kas jums nepieciešams, pirms tam, kas jums nepieciešams

Šī pamācība paceļas kopā ar kādu iepriekš paveikto darbu, kā rezultātā tapa arī mana pēdējā IBLE.

Tātad, pirms mēs iedziļināmies šajā IBLE nepieciešamajā, ieteicams izlasīt šo pamācību, lai uzzinātu, kā:

  1. Tika izveidota Arduino IRLib infrasarkanā bibliotēka
  2. Kā šajā IBLE izmantotie IR kodi tika uztverti, izmantojot IR uztvērēju
  3. Kā iegūtie IR kodi tika izmantoti, lai kontrolētu mērķa ierīci, izmantojot IR raidītāju

Pēc šīs IBLE pabeigšanas es izvietoju tīmekļa lietojumprogrammu ASP. NET IR Code Recorder, kas:

  • Pieņemiet uzņemto IR kodu kopā ar intuitīvi nosauktu koda atslēgu kā ievadi, izmantojot tīmekļa veidlapu
  • Sadaliet ļoti garo IR kodu mazāk nekā 64 rakstzīmes garos segmentos, lai nepārsniegtu Arduino Uno sērijas bufera ierobežojumu
  • Pēdējais kodu segments tiks iepriekš fiksēts ar "E", kas Arduino norāda, ka tas ir saņēmis pēdējo koda segmentu
  • Katru segmentu pirms atdalīšanas garā virknē atdala cauruļu norobežotājs
  • Visbeidzot, segmentētais IR kods kopā ar tā koda atslēgu tika saglabāts SQL Server 2012 datu bāzē

Šī SQL datu bāze veido vienu no šajā IBLE izstrādātajiem mājas automatizācijas centrmezgla komponentiem.

PIEZĪME

IR koda ierakstītāja tīmekļa lietojumprogramma šeit nav iekļauta diskusijā šādu iemeslu dēļ:

  • Jūs varat manuāli uztvert kodus, izmantojot Arduino Sketch, sadalīt tos ar caurulēm norobežotās sadaļās un saglabāt tos datu bāzē, neveidojot sarežģītu tīmekļa lietojumprogrammu
  • Atšķirībā no šī IBLE, IR ierakstītājs koncentrējas uz reverso saziņu no Arduino uz Raspberry Pi

Tāpēc informācija par šo projektu būtu cita IBLE tēma

2. darbība. Kas jums nepieciešams - aparatūra

Kas jums nepieciešams - aparatūra
Kas jums nepieciešams - aparatūra
Kas jums nepieciešams - aparatūra
Kas jums nepieciešams - aparatūra

Funkcionējoša Raspberry Pi 2.0 - es iesaku instalēt Ubuntu Mate, jo tam ir bagātāks funkciju kopums, tostarp OpenLibre Office, kas, starp citu, bija neaizstājams, dokumentējot šo pamācību, tieši tur, Raspberry Pi.

Turklāt Pi, jums būs nepieciešami šādi ārējie elementi:

  • Arduino Uno prototipu veidošanas platforma vai klons
  • IR raidītāju LED - es izmantoju zīmolu ar nosaukumu Three Legs no Amazon.com
  • 330 vai 220 omi rezistori-es izmantoju 220 (krāsu kods sarkans-sarkans-brūns), jo man bija vairāki pa rokai
  • Parastais maizes dēlis, savienotāji un dators ar instalētu Arduino vidi
  • Pārbaudes kandidāts - piemēram, visuresošais Samsung LED monitors ar tālvadības pulti

3. darbība. Kas jums nepieciešams - programmatūra

Lai visus gabalus apvienotu, būs jāinstalē un jāpalaiž šāda programmatūras iestatīšana:

Raspberry Pi jums būs jāinstalē:

  • Arduino IDE - izmantoja, lai izveidotu skici un parādītu to UNO
  • Python modulis Arduino - sērijveida saziņai starp UNO un Pi
  • Python SignalR klientu bibliotēka - varat atsaukties uz šeit pievienotajiem norādījumiem

Windows mašīna ar šādu izstrādes vidi:

  • Microsoft Visual Studio Express 2013 bezmaksas izdevums, lai izveidotu SignalR Hub un tīmekļa klienta lietojumprogrammu
  • Bezmaksas SQL Server 2012 Express izdevums, lai izstrādātu un izveidotu aizmugures datu bāzi

Windows interneta informācijas servera (IIS) mitināšanas vide:

  • Kad SignalR Hub un Web klients ir izveidots un pārbaudīts, tas būs jāizvieto lokālajā IIS serverī
  • Manā gadījumā es plānoju savā mājas tīklā izmantot veco klēpjdatoru, kurā darbojas sistēma Windows 7 ar IIS

PIEZĪME

Visi norādījumi attiecas uz Python 2.7.x versiju. Versijai 3.0 var būt nepieciešama pārrakstīšana

4. darbība. SQL servera datu bāze

SQL servera datu bāze
SQL servera datu bāze

Pievienotajā shēmā parādīta šajā lietojumprogrammā izmantotās SQL Server pamata datu bāzes struktūra, un tajā ir tikai divas tabulas.

Tabula AutoHubCode

Divas svarīgas slejas šajā tabulā ir:

AutoCodeKey - saglabā lietotājam draudzīgu koda atslēgas nosaukumu

Katru no koda atslēgām pārraida automatizācijas klients - mūsu gadījumā HTML poga no Web lapas

AutoCodeVal - saglabā neapstrādāto IR koda secību

Šis ir faktiskais IR kods, ko SignalR Hub reaģē atpakaļ uz klientu

Šajā gadījumā Python klients, kas pastāvīgi sazinās ar centrmezglu, saņem IR koda secību un pārsūta to pa seriālo portu uz Arduino UNO

Tabula AutoHubLog

  • Reģistrē automatizācijas klienta pieprasīto kodu.
  • Šis ir pasākums, lai izsekotu, kas un kad izmantoja sistēmu un kāds kods tika pieprasīts

Kā jau minēts, kā savu izvēlēto datu bāzes platformu esmu izmantojis SQL Server 2012. Jūs varat atjaunot šo vienkāršo dizainu citā datu bāzes platformā, piemēram, MySQL, Oracle utt.

Tomēr SQL skripts šīs datu bāzes izveidei ir pievienots šeit

PIEZĪME

  1. SignalR centrmezgla kods ir izveidots, lai izveidotu savienojumu ar SQL Server 2012 datu bāzi
  2. Darbs ar citu datu bāzi nozīmētu mainīt Hub, lai izmantotu citu datu bāzes draiveri

5. darbība: tīmekļa lietojumprogramma ASP. NET SignalR Hub

ASP. NET SignalR Hub tīmekļa lietojumprogramma
ASP. NET SignalR Hub tīmekļa lietojumprogramma
ASP. NET SignalR Hub tīmekļa lietojumprogramma
ASP. NET SignalR Hub tīmekļa lietojumprogramma

ASP. NET SignalR Hub tīmekļa lietojumprogramma kopā sastāv no šādiem komponentiem, kā norādīts pievienotajā shēmā:

1. sadaļa - SignalR centrmezgls, kas saņem klienta pieprasījumus un atbild uz tiem

2., 4. sadaļa - HTML klienta tīmekļa lapa un tās stila lapa, kas kopā veido automatizācijas sistēmas priekšpusi un izdod komandas automatizācijas centram

3. sadaļa - jQuery SignalR API, ko HTML klients izmanto, lai sazinātos ar automatizācijas centru

5. iedaļa - SignalR Hub tieši nesazinās ar datu bāzi. Tas tiek darīts, izmantojot starpklases, kas ģenerētas, izmantojot entītiju ietvaru

Šīs klases abstrakti datu bāzes informāciju no priekšgala lietojumprogrammas

6. sadaļa - Datu bāzes pakalpojumu klase, kas palīdz veikt lasīšanas un rakstīšanas darbības SQL datu bāzē (aprakstīta iepriekš), izmantojot Entity Framework klases

ASP. NET un SignalR ir Microsoft tehnoloģijas, un šī apmācība palīdzēs jums uzzināt, kā tiek veidota un izvietota vienkārša SignalR lietojumprogramma.

Šeit uzbūvētais ir balstīts uz pamatiem, kas iegūti no šīs apmācības. Izvietojot, lietojumprogrammai vajadzētu izskatīties līdzīgi tīmekļa lapai, kas parādīta otrajā attēlā

PIEZĪME PAR KODU

Ir pievienots ZIP fails, kurā ir nojaukta koda versija

Mapju struktūra ir tāda, kā parādīts vizuālajā attēlā - tomēr visas ietvara klases un jQuery skripti ir noņemti, lai samazinātu pielikuma lielumu

Ieteikums ir izmantot šo kodu kā ceļvedi, jo, izveidojot jaunu SignalR tīmekļa lietojumprogrammu, sekojot iepriekš norādītajai apmācības saitei, jaunākās jQuery bibliotēkas un ASP. NET ietvara klases tiks pievienotas automātiski

Turklāt atsauces uz jQuery skriptiem lapā index.html būs jāmaina, lai atspoguļotu jaunāko jQuery SignalR klientu bibliotēku versiju, kas tiks automātiski pievienota, veidojot tīmekļa lietojumprogrammu.

Visbeidzot, savienojuma virkne būs jāmaina, lai tā atbilstu jūsu datu bāzei failos ar nosaukumu Web.config*

6. darbība: Python SignalR pakalpojumu klients

Python SignalR pakalpojumu klients
Python SignalR pakalpojumu klients

Lai gan HTML SignalR klients ir lietotāja saskarne, kas vērsta uz priekšu, Python klients ir aizmugures pakalpojumu lietojumprogramma, kuras galvenā funkcija ir uztvert centrmezgla nosūtīto IR kodu un nosūtīt to uz Arduino UNO, izmantojot seriālo komunikāciju.

Pievienotais kods ir pašsaprotams un ir pietiekami dokumentēts, lai aprakstītu tā funkcionalitāti

Kā parādīts saliktajā ekrānuzņēmumā, HTML klients un Python Service klients sazinās, izmantojot SignalR Hub šādi:

  1. Automatizācijas sistēmas lietotājs dod komandu Hub, noklikšķinot uz pogas
  2. Katra poga ir saistīta ar IR atslēgas kodu, un, noklikšķinot uz tās, šis kods tiek pārsūtīts uz centrmezglu
  3. Centrs saņem šo kodu, izveido savienojumu ar datu bāzi un izgūst neapstrādāto IR signāla kodu un nosūta to atpakaļ visiem saistītajiem klientiem

    Tajā pašā laikā centrmezgls reģistrē ierakstu AutoHubLog datu bāzes tabulā, ierakstot kodu un datumu un laiku, kad to pieprasīja attālie klienti

  4. Python pakalpojumu klients saņem IR kodu un nosūta to Arduino UNO tālākai apstrādei

7. solis: Arduino UNO IR pārraides skice un kods

Arduino UNO IR pārraides skice un kods
Arduino UNO IR pārraides skice un kods
Arduino UNO IR pārraides skice un kods
Arduino UNO IR pārraides skice un kods
Arduino UNO IR pārraides skice un kods
Arduino UNO IR pārraides skice un kods

Arduino ķēde, kā parādīts attēlos, šai sistēmai ir diezgan vienkārša, un tāpēc tā ir īsi aprakstīta:

  • Bezkrāsainajam IR LED jābūt savienotam ar ciparu PIN 3 UNO - tā ir IRLib Arduino bibliotēkas prasība
  • Iemesli ir aprakstīti manā iepriekšējā IBLE par tālvadības pults klonēšanu sadaļā, kas saistīta ar IRLib bibliotēku
  • Zaļā gaismas diode, kas savienota ar ciparu PIN 4, ir vizuāls indikators, kas iedegas, kad UNO ir saņēmis visas IR koda sadaļas no Python klienta, kas darbojas ar Raspberry Pi.
  • Ja iedegas šī gaismas diode, tas apstiprinās, ka seriālā komunikācija starp Raspberry Pi un UNO darbojas
  • Lai iespējotu seriālo komunikāciju, UNO ir savienots ar Raspberry Pi, izmantojot USB portu
  • Pievienotā Arduino skice ir pietiekami komentēta, lai aprakstītu tās funkciju
  • Komentāri koda augšdaļā arī apraksta, kā ķēde ir jāpievieno

PIEZĪME

Praksē Arduino un Pi varētu kopīgi savienot ar pietiekami spēcīgu USB centrmezglu, lai vadītu Pi, Arduino un arī pārraidītu spēcīgu signālu, izmantojot IR LED

8. darbība: sistēmas pievienošana un pārbaude

Sistēmas pievienošana un pārbaude
Sistēmas pievienošana un pārbaude
Sistēmas pievienošana un pārbaude
Sistēmas pievienošana un pārbaude
Sistēmas pievienošana un pārbaude
Sistēmas pievienošana un pārbaude
  1. Izveidojiet un izvietojiet ASP. NET SignalR Hub, HTML klientu kopā ar SQL Server 2012 datu bāzi interneta informācijas serverī (IIS) vietējā mājas tīklā
  2. Piekļūstiet tīmekļa lietojumprogrammai, atverot HTML SignalR klientu, izmantojot

    šīs lapas URL parasti ir https:// yourDator: port_number/

  3. Vadības panelī noklikšķiniet uz pogas, un, ja lietojumprogramma ir pareizi izvietota, centrmezgls atbildēs, atdodot IR kodu un parādot to pelēkajā panelī blakus vadības panelim

    Atcerieties! Jums būs jāielādē kodi savā datu bāzē, iestatot IR uztvērēja bibliotēku un ierakstot kodus, kā aprakstīts manā iepriekšējā IBLE

  4. Savienojiet Arduino ar Raspberry Pi, izmantojot USB - atveriet Arduino IDE uz Pi un pārliecinieties, ka UNO var izveidot savienojumu ar Pi

    šiem Arduino apmācības rakstiem vajadzētu palīdzēt jums to iegūt diezgan ātri

  5. Atveriet Python kodu un veiciet tālāk norādītās izmaiņas atbilstoši savai videi

    • jūsu UNO seriālā porta adresi, kas iegūta, veicot 4. darbību
    • SignalR centrmezgla URL, kas atbilst jūsu vietējam URL no 2. darbības - šajā piemērā tas būtu https:// yourDator: port_number/signalr
  6. Visbeidzot, atveriet Arduino skici Arduino IDE Raspberry Pi un parādiet to UNO
  7. Novietojiet maizes dēli, kas tur ķēdi, tuvu kontrolējamai ierīcei - IR gaismas diodei ir jābūt skaidrai redzamībai ar ierīces IR uztvērēja pieslēgvietu
  8. Palaidiet programmu Python Raspberry Pi, nospiežot F5 pogu Python IDLE rīkjoslā
  9. Atgriezieties HTML klienta programmas vadības panelī (2. darbība) un noklikšķiniet uz pogas (piemēram, ieslēgšana vai skaļuma palielināšana)

Ja sistēma ir pareizi iestatīta, jums vajadzētu būt iespējai tālrunī vai planšetdatorā atvērt HTML klienta lapu un vadīt ierīci, izmantojot pogas HTML klienta lapā.

9. darbība: sistēma darbībā

Sistēma darbībā
Sistēma darbībā
Sistēma darbībā
Sistēma darbībā
Sistēma darbībā
Sistēma darbībā
Sistēma darbībā
Sistēma darbībā

Iepriekš redzamajā vizuālajā attēlā redzama mājas automatizācijas sistēma darbībā, kad tā ir iestatīta.

Kopš šīs IBLE publicēšanas esmu paplašinājis saskarni, iemūžinot dažus IR kodus no sava VIZIO LED televizora

Kā pirmajā vizuālajā attēlā parādīts blakus rūpnīcas TV tālvadības pultim, dažas šīs tālvadības pults galvenās funkcijas ir iebūvētas tīmekļa lietotāja saskarnē, kurai var piekļūt, izmantojot manu planšetdatoru

Turpmākajos vizuālajos attēlos planšetdators ir priekšplānā ar televizoru aizmugurē, atbildot uz komandām, kas izdotas no tīmekļa saskarnes:

  1. Izslēgšanas komanda - televizors izslēdzas
  2. Ieslēgšanas komanda - televizors ieslēdzas un ekrāna ieslēgšanas brīdī parādās logotips "V"
  3. Izslēgt ieslēgšanas komandu - horizontāla josla parādās, kad skaļrunis ir izslēgts

Visos testos pelēkajā zonā līdzās paneļa ekrānam planšetdatora ekrānā tiek parādīta klienta izdotā komanda un attālā SignalR Hub nosūtītā atbilde

10. darbība. Automatizācijas sistēmas un saistīto labojumu uzlabošana

Šo sistēmu var paplašināt, pievienojot vairāk kodu, kas uzņemti no dažādām sistēmām. Lai gan šī daļa ir vienkārša, jums ir jāņem vērā vēl divi faktori.

1. uzlabojums (ātrs): darbs ar dažāda garuma IR signāliem

  1. Dažādu sistēmu IR kodi ir dažāda garuma, pat starp diviem viena ražotāja produktiem.

    Piemēram, šajā gadījumā LED televizora IR koda masīva garums ir 67, bet Samsung skaņas joslas ap 87

  2. Tas nozīmē, ka, ja es vispirms ieslēgtu skaņas joslu, IR bufera masīvs Arduino skicē tiktu aizpildīts ar IR koda secību, kurā ir 87 kodi
  3. Pēc tam, ja ieslēgtu LED televizoru, tas aizpildītu IR bufera masīvu tikai ar 67 kodiem, bet atlikušie 20 kodi no iepriekšējās darbības joprojām būtu aptuveni

Rezultāts? LED televizors neieslēdzas, jo IR koda buferis ir bojāts ar papildu 20 kodiem, kas nav iztīrīti no iepriekšējās darbības!

Labot 1 (vienkāršā izeja, nav ieteicams)

Mainiet Arduino skici šādi:

Funkcijā loop () {} mainiet šādus funkciju izsaukumus

sendIRCode ();

pārraidītIRCode (c);

Veiciet izmaiņas iepriekš minētās funkcijas parakstā:

void transferIRCode (int codeLen) {// RAWBUF konstante aizstāta ar codeLen IRTransmitter. IRSendRaw:: send (IRCodeBuffer, codeLen, 38); }

Lai gan tas ir viegli, masīvs nekad netiek pilnībā notīrīts, un tāpēc tas nav ļoti tīrs risinājums

Labot 2 (nav grūti, ieteicams)

Deklarējiet papildu mainīgo Arduino skices augšdaļā pēc komentāru sadaļas:

neparakstīts int EMPTY_INT_VALUE;

Pievienojiet to iestatīšanas () funkcijas augšdaļai:

// Tveriet tukša, neparakstīta vesela skaitļa mainīgā dabisko stāvokliEMPTY_INT_VALUE = IRCodeBuffer [0];

Ritiniet uz leju un pievienojiet skicei jaunu funkciju tūlīt pēc funkcijas sendIRCode ():

void clearIRCodeBuffer (int codeLen) {// Notīrīt visus kodus no masīva // PIEZĪME: masīva elementu iestatīšana uz 0 nav risinājums! for (int i = 1; i <= codeLen; i ++) {IRCodeBuffer [i-1] = EMPTY_INT_VALUE;}}

Visbeidzot, izsauciet jaunu funkciju iepriekš šajā cilpas () funkcijas vietā:

// Atiestatīt - atsākt lasīt Serial PortclearIRCodeBuffer (c);…

Šī ir tīrāka pieeja, jo tā faktiski atiestata visas IR bufera masīva atrašanās vietas, kuras tika aizpildītas ar jaunāko IR koda signālu, neko neatstājot nejaušībai.

2. uzlabojums (vairāk iesaistīts): atkārtota IR signāla pārraide noteiktām ierīcēm

Lai atbildētu uz dažām ierīcēm, viens un tas pats signāls jāpārraida vairākas reizes

Labojums koncepcijā ir apspriests šeit, jo tas ir nedaudz vairāk iesaistīts un būs jāpārbauda

Atkārtotas funkcionalitātes pievienošana Ardunio skicei nozīmē, ka jums būs jāatspoguļo skice katru reizi, kad pievienojat jaunu ierīci savai mājas automatizācijas sistēmai.

Tā vietā, pievienojot šo labojumu HTML SignalR klientam un lietojumprogrammai Python SignalR, risinājums kļūst daudz elastīgāks. Un to principā varētu panākt šādi:

Modificējiet SignalR HTML klientu, lai pārraidītu Hub atkārtotu informāciju

Atveriet index.html un ieguliet atkārtošanas vērtību HTML pogā šādi:

value = "SMSNG-SB-PWR-ON" kļūs par value = "SMSNG-SB-PWR-ON_2_1000"

Kur 2 ir atkārtojuma vērtība un 1000 ir aizkaves vērtība milisekundēs starp diviem atkārtošanas signāliem

Noklikšķinot uz šīs pogas, SignalR centrmezgls saņems atslēgas kodu+Repeat_Spec

Modificējiet SignalR servera puses metodes, lai parsētu tikai atslēgas kodu:

  • Izmantojiet atslēgas kodu, lai izgūtu IS kodu no datu bāzes kā parasti
  • Nosūtiet atslēgas kodu+Repeat_Spec un IRCode SingalR klientiem, kā parasti

Modificējiet Python SignalR pakalpojumu lietojumprogrammu, lai pārraidītu signālus, izmantojot atkārtošanas vērtības:

Atveriet Python klientu un mainiet šādas divas funkcijas:

def print_command_from_hub (buttonId, cmdSrc):

# parsējiet atkārtoto kodu no pogasId vērtības

def sendToArduino (IRSignalCode, delim, endPrefix):

# iestatiet kādu laiku vai cilpu, lai pārraidītu signālu vēlamajā frekvencē

  • Tādā veidā Arduino nav jāmirgo atkārtoti
  • Šajā sistēmā varētu tikt iebūvēts jebkurš atkārtotu frekvenču skaits
  • Turklāt, ja izmantojat UNO, jūsu skice var palielināties!

11. darbība. Zināmās problēmas un bažas par drošību

Tāpat kā gadījumā, kad sistēmas tika izveidotas pirmo reizi, arī šai ir dažas problēmas, kas parādījās testēšanas laikā.

1. problēma. Komandu ātra palaišana ar kavēšanos mazāk nekā sekundē starp pogu klikšķiem izraisīja sistēmas nereaģēšanu pēc pirmās pāris reizes.

  • Restartējot Python SignalR klientu, sistēma tiek atjaunota normālā režīmā
  • Tūlītēji risinājumi var būt nevēlamo atkļūdošanas izvadu noņemšana abos, Python SignalR klientā un arī Arduino skicē, un atkārtojiet šos testus
  • Vēl viena vieta, kur izpētīt, būtu pati seriālā komunikācija - vai būtu iespējams pievienot kodu, lai ātri izskalotu buferi?

Tomēr esmu ievērojis, ka mans televizors slikti reaģē uz rūpnīcas tālvadības pulti - tāpēc arī mana televizora IS komunikācijas raksturs var būt veicinošs faktors.

2. problēma: HTML ekrāns pārstāj reaģēt uz pogu klikšķiem pēc ilgstošas neaktivitātes

Parasti lapas atsvaidzināšana novērš šo uzvedību - tomēr šīs uzvedības iemesls joprojām nav skaidrs

DROŠĪBAS RŪPES

Šī sistēma ir paredzēta lietošanai tikai vietējā (mājas) tīklā, un tai nav vajadzīgo drošības pasākumu, lai to varētu izmantot internetā

Tāpēc ieteicams SignalR Hub izvietot lokālajā mašīnā jūsu vietējā/mājas tīklā

Paldies, ka izlasījāt manu IBLE, un es ceru, ka jums būs jautri!

Ieteicams: