Orodha ya maudhui:

Raspberry Pi-Arduino-SignalR Kituo cha Kuendesha Nyumbani: Hatua 11 (na Picha)
Raspberry Pi-Arduino-SignalR Kituo cha Kuendesha Nyumbani: Hatua 11 (na Picha)

Video: Raspberry Pi-Arduino-SignalR Kituo cha Kuendesha Nyumbani: Hatua 11 (na Picha)

Video: Raspberry Pi-Arduino-SignalR Kituo cha Kuendesha Nyumbani: Hatua 11 (na Picha)
Video: Building a Raspberry Pi Robot Arm with .NET 5 , Blazor and SignalR with Peter Gallagher (2021-07) 2024, Julai
Anonim
Raspberry Pi-Arduino-SignalR Kituo cha Kuendesha Nyumbani
Raspberry Pi-Arduino-SignalR Kituo cha Kuendesha Nyumbani

Kufuatia utangulizi wangu wa IBLE zilizochapishwa hapa na hapa, mradi huu unachukua hatua ya kwanza kuelekea ujenzi wa toleo la msingi la Kitovu cha Kuendesha Nyumbani kinachofanya kazi.

Nimetumia teknolojia kadhaa tofauti katika jaribio la kuelewa jinsi ninavyoweza kutumia vitu vyote ambavyo nimejifunza hapo zamani na vitu vipya ambavyo ninaendelea kujifunza kadiri siku zinavyoendelea.

Kwa hivyo, hii Hub ya Automation inajumuisha vifaa vifuatavyo:

Hifadhidata ya SQL Server 2012 ambayo:

  • huhifadhi orodha ya nambari zilizowekwa tayari za infrared (IR) kwenye meza pamoja na "kitufe cha msimbo" cha kipekee
  • vitufe vya nambari vimeitwa kwa jina la mtumiaji (na mtumiaji) ili kubaini kusudi la nambari zao zinazohusiana za IR

Maombi ya Wavuti ya ASP. NET SignalR Hub ambayo:

  • inasubiri na inapokea "funguo za msimbo" kama amri kutoka kwa mtumiaji anayemkabili mteja wa HTML
  • inapopokelewa, inaunganisha kwenye hifadhidata ya SQL na inapata Nambari ya IR kwa kutumia kitufe cha nambari kilichopewa
  • hupeleka msimbo uliopatikana wa IR kwa mteja wa SignalR ya Python

Mtumiaji anayekabiliwa na mteja wa Dashibodi ya HTML SignalR ambayo:

  • inawasiliana na kitufe cha kipekee cha nambari kwa Hub kupitia API za wateja wa jQuery SignalR
  • kila kitufe kwenye Dashibodi kitawakilisha kitufe cha kipekee cha nambari zilizorekodiwa kwenye jedwali la hifadhidata ya SQL

Programu ya huduma ya msingi ya Python SignalR inayoendesha Raspberry Pi 2.0 ambayo:

  • hupokea nambari za IR kama amri kutoka kwa Hub
  • hutafuta watenganishaji katika Nambari ya IR na kuvunja nambari ndefu sana kuwa sehemu
  • inawasiliana juu ya bandari ya Serial kwa Arduino na inaandika kila sehemu mfululizo

Mchoro wa Transmitter IR ya Arduino ambayo:

  • inasubiri na inapokea kila sehemu ya nambari za IR juu ya bandari ya Serial
  • hukusanya sehemu za nambari katika safu ya bafa ya Nambari za IR
  • vifurushi bafa ndani ya amri ya Kusambaza IR kwa kutumia maktaba ya IRLib Arduino

Ikiwa kifaa kinacholengwa kiko karibu na Transmitter ya IR, basi kifaa hicho (kinaweza) kuguswa na ishara ya IR inayosambazwa na Arduino

KUMBUKA

Ingawa, kifaa cha kulenga ambacho ninatumia katika onyesho hili huguswa na ishara za IR, unaweza kutaka kusoma sehemu hii ya IBLE yangu nyingine kwa sababu kwanini nasema kwamba kifaa hicho (kinaweza) kuguswa na ishara ya IR.

Wakati wa kusonga.

Hatua ya 1: Unachohitaji, Kabla ya kile Unachohitaji

Unachohitaji, Kabla ya kile Unachohitaji
Unachohitaji, Kabla ya kile Unachohitaji
Unachohitaji, Kabla ya kile Unachohitaji
Unachohitaji, Kabla ya kile Unachohitaji
Unachohitaji, Kabla ya kile Unachohitaji
Unachohitaji, Kabla ya kile Unachohitaji

Hii inaweza kufundisha na kazi iliyofanywa hapo awali ambayo pia ilisababisha IBLE yangu ya mwisho.

Kwa hivyo, kabla ya kuingia katika kile tunachohitaji kwa IBLE hii, inashauriwa usome hii inayoweza kufundishwa kwa msingi fulani juu ya jinsi:

  1. Maktaba ya infrared ya Arduino IRLib ilianzishwa
  2. Jinsi nambari za IR zinazotumiwa katika IBLE hii zilinaswa kwa kutumia Mpokeaji wa IR
  3. Jinsi nambari za IR zilizopigwa zilitumika kudhibiti vifaa vya kulenga kupitia Transmitter ya IR

Kufuatia kukamilika kwa IBLE hii, nilipeleka programu ya wavuti ya ASP. NET IR Code Recorder ambayo inaweza:

  • Kubali Nambari ya IR iliyonaswa pamoja na ufunguo wa nambari iliyoitwa intuitively kama pembejeo kupitia fomu ya wavuti
  • Vunja nambari ya urefu wa IR katika vipande chini ya herufi 64 ili kukaa chini ya kikomo cha bafa ya Serial ya Arduino Uno
  • Sehemu ya mwisho ya nambari ingerekebishwa mapema na "E" ambayo inaonyesha Arduino kwamba imepokea sehemu ya mwisho ya nambari
  • Kila sehemu ingetengwa na bomba la bomba kabla ya kukusanywa tena kwenye kamba ndefu
  • Mwishowe, Nambari ya IR iliyogawanywa pamoja na ufunguo wa nambari ilihifadhiwa kwenye hifadhidata ya SQL Server 2012

Ni hifadhidata hii ya SQL inayounda moja ya vifaa vya Kitengo cha Kuendesha Nyumbani kilichofafanuliwa katika IBLE hii.

KUMBUKA

Programu ya Wavuti ya Kirekodi cha IR haifanyi sehemu ya majadiliano hapa kwa sababu zifuatazo:

  • Unaweza kukamata nambari za mkono kwa kutumia Mchoro wa Arduino, uzigawanye katika sehemu zilizopangwa kwa bomba na kuzihifadhi kwenye hifadhidata bila kuunda Maombi ya Mtandaoni
  • Tofauti na IBLE hii, Kinasa IR kinazingatia mawasiliano ya nyuma kutoka Arduino hadi Raspberry Pi

Kwa hivyo maelezo juu ya mradi huu yatakuwa mada kwa IBLE nyingine

Hatua ya 2: Unachohitaji - vifaa

Unachohitaji - vifaa
Unachohitaji - vifaa
Unachohitaji - vifaa
Unachohitaji - vifaa

Raspberry Pi 2.0 inayofanya kazi - Ninapendekeza kusanikisha Ubuntu Mate kwani ina seti nyingi za huduma ikiwa ni pamoja na Ofisi ya OpenLibre ambayo kwa njia ilikuwa ya lazima katika kuandika hii inayoweza kufundishwa, hapo hapo kwenye Raspberry Pi.

Kwa kuongeza, Pi, utahitaji mambo ya nje yafuatayo:

  • Jukwaa la kuiga Arduino Uno au kigingi
  • Vipeperushi vya IR LED - nilitumia chapa inayoitwa Miguu Mitatu kutoka Amazon.com
  • Vipinga 330 au 220 Ohm - nilitumia 220 (nambari ya rangi Nyekundu-Nyekundu-Kahawia) kwa sababu nilikuwa na msaada kadhaa
  • Bodi ya mkate wa kawaida, viungio, na PC iliyo na Mazingira ya Arduino imewekwa
  • Mtihani wa jaribio - kama vile ufuatiliaji wa Samsung LED unaojulikana na kijijini

Hatua ya 3: Unachohitaji - Programu

Ili kupata vipande vyote pamoja, usanidi wa programu ufuatao utalazimika kusanikishwa na kuendesha:

Kwenye Raspberry Pi, utahitaji kusakinisha zifuatazo:

  • IDE ya Arduino - ilitumika kujenga Mchoro na kuiwasha kwa UNO
  • Moduli ya Python ya Arduino - kwa mawasiliano ya serial kati ya UNO na Pi
  • Maktaba ya mteja wa Python SignalR - Unaweza kutaja maagizo yaliyowekwa hapa

Mashine ya Windows iliyo na mazingira yafuatayo ya maendeleo imewekwa:

  • Toleo la bure la Microsoft Visual Studio Express 2013 ili kujenga SignalR Hub na programu ya mteja wa Wavuti
  • Toleo la bure la SQL Server 2012 Express kubuni na kujenga hifadhidata ya mwisho-mwisho

Mazingira ya Uhifadhi ya Windows Server Server (IIS):

  • Mara tu Kituo cha SignalR na mteja wa Wavuti kujengwa na kupimwa, itahitaji kupelekwa kwa seva ya ndani ya IIS
  • Kwa upande wangu, nina mpango wa kutumia kompyuta ndogo ya zamani inayoendesha Windows 7 na IIS kwenye mtandao wangu wa nyumbani

KUMBUKA

Maagizo yote yanatumika kwa toleo la Python 2.7.x. Toleo la 3.0 linaweza kuhitaji kuandikwa tena

Hatua ya 4: Hifadhidata ya Seva ya SQL

Hifadhidata ya SQL Server
Hifadhidata ya SQL Server

Skimu iliyoambatanishwa inaonyesha muundo wa hifadhidata ya msingi ya SQL Server iliyotumiwa katika programu hii na ina meza mbili tu.

Jedwali AutoHubCode

Nguzo mbili muhimu katika jedwali hili ni:

AutoCodeKey - huhifadhi jina linaloweza kutumiwa na kitufe cha Nambari

Kila funguo za nambari hupitishwa na mteja wa kiotomatiki - kwa upande wetu, kitufe cha HTML kutoka ukurasa wa Wavuti

AutoCodeVal - huhifadhi mlolongo wa Nambari mbichi ya IR

Hii ndio nambari halisi ya IR ambayo hupitishwa kwa mteja kwa kujibu na SignalR Hub

Katika kesi hii, mteja wa Python katika mawasiliano ya kila wakati kwa Hub hupokea mlolongo wa nambari ya IR na kuipitisha juu ya Bandari ya Siri kwa Arduino UNO

Jedwali AutoHubLog

  • Kumbukumbu code kuombwa na mteja otomatiki.
  • Hii ni hatua ya kufuatilia ni nani na lini mfumo ulitumika, na nambari gani iliombwa

Kama ilivyoelezwa, nimetumia SQL Server 2012 kama jukwaa langu la hifadhidata la chaguo. Unaweza kurudia muundo huu rahisi kwenye jukwaa tofauti la hifadhidata kama MySQL, Oracle, n.k.

Walakini, Hati ya SQL kuunda hifadhidata hii imeambatanishwa hapa

KUMBUKA

  1. Nambari ya Kituo cha SignalR imeundwa kuungana na hifadhidata ya SQL Server 2012
  2. Kufanya kazi na hifadhidata tofauti kunamaanisha kubadilisha Hub kutumia dereva tofauti ya hifadhidata

Hatua ya 5: Maombi ya Wavuti ya ASP. NET SignalR Hub

Maombi ya Wavuti ya ASP. NET SignalR Hub
Maombi ya Wavuti ya ASP. NET SignalR Hub
Maombi ya Wavuti ya ASP. NET SignalR Hub
Maombi ya Wavuti ya ASP. NET SignalR Hub

Maombi ya Wavuti ya ASP. NET SignalR Hub kwa pamoja inajumuisha vifaa vifuatavyo kama inavyoonyeshwa katika skimu iliyoambatanishwa:

Sehemu ya 1 - Kituo cha SignalR kinachopokea maombi kutoka na kujibu mteja

Vifungu 2, 4 - Ukurasa wa wavuti wa mteja wa HTML na karatasi ya mtindo ambayo kwa pamoja huunda mwisho wa mbele wa mfumo wa Automation na inatoa maagizo kwa Kituo cha Kujiendesha

Sehemu ya 3 - API za jQuery SignalR zinazotumiwa na mteja wa HTML kuwasiliana na Kituo cha Kujiendesha

Sehemu ya 5 - The SignalR Hub haiwasiliani moja kwa moja na hifadhidata. Inafanya hivyo kupitia madarasa ya kati yaliyotengenezwa kwa kutumia Mfumo wa Taasisi

Madarasa haya yanaondoa maelezo ya hifadhidata kutoka kwa programu ya mbele

Sehemu ya 6 - Darasa la huduma ya Hifadhidata ambayo inasaidia kufanya shughuli za Soma-Andika kwenye Hifadhidata ya SQL (iliyoelezewa hapo awali) kwa kutumia madarasa ya Mfumo wa Taasisi.

ASP. NET na SignalR ni teknolojia za Microsoft na mafunzo haya yatakutembeza jinsi programu rahisi ya SignalR inavyojengwa na kupelekwa.

Kile nimejenga hapa ni kwa msingi wa misingi iliyopatikana kutoka kwa mafunzo haya. Wakati unatumwa, programu inapaswa kuonekana sawa na ukurasa wa wavuti ulioonyeshwa kwenye picha ya pili

KUMBUKA KWENYE CODE

Faili ya ZIP iliyo na toleo lililovuliwa la nambari imeambatishwa

Muundo wa folda umeonyeshwa kwa kuona - hata hivyo, darasa zote za mfumo, na hati za jQuery zimeondolewa ili kupunguza ukubwa wa kiambatisho.

Mapendekezo ni kwamba nambari hii itumiwe kama mwongozo kwa sababu unapounda programu mpya ya wavuti ya SignalR kwa kufuata kiunga cha mafunzo hapo juu, maktaba za jQuery za hivi karibuni na madarasa ya mfumo wa ASP. NET yataongezwa kiatomati

Pia, marejeleo ya hati za jQuery kwenye ukurasa wa index.html itabidi ibadilishwe ili kuonyesha toleo la hivi karibuni la maktaba za wateja wa jQuery SignalR ambazo zitaongezwa kiotomatiki unapojenga programu yako ya Wavuti.

Mwishowe, kamba ya unganisho itabidi ibadilishwe ili ilingane na hifadhidata yako kwenye faili zilizoitwa kama Web.config *

Hatua ya 6: Mteja wa Huduma ya SignalR

Mteja wa Huduma ya SignalR
Mteja wa Huduma ya SignalR

Wakati Mteja wa SignalR ya HTML ni Kiolesura cha Mtumiaji kinachokabili mbele, Mteja wa Python ni maombi ya huduma ya mwisho ambao kazi yake kuu ni kupokea Nambari ya IR inayosambazwa na Hub na kuipeleka kwa Arduino UNO juu ya mawasiliano ya Serial.

Nambari iliyoambatanishwa inaelezea yenyewe na imeandikwa kwa kutosha kuelezea utendaji wake

Kama inavyoonyeshwa kwenye picha ya skrini iliyojumuishwa, Mteja wa HTML na mteja wa Huduma ya Python wanawasiliana kupitia SignalR Hub kama ifuatavyo:

  1. Mtumiaji wa mfumo wa kiotomatiki hutoa amri kwa Hub kupitia bonyeza kitufe
  2. Kila kifungo kinahusishwa na nambari ya ufunguo wa IR na ikibonyezwa, nambari hii hupitishwa kwa Hub
  3. Hub hupokea nambari hii, inaunganisha kwenye hifadhidata na kupata nambari mbichi ya Ishara ya IR na kuipeleka kwa wateja wote waliounganishwa

    Wakati huo huo, Hub huingiza kuingia kwenye jedwali la hifadhidata ya AutoHubLog kurekodi nambari na tarehe na saa iliyoombwa na wateja wa mbali

  4. Mteja wa huduma ya Python anapokea Nambari ya IR na kuipeleka kwa Arduino UNO kwa usindikaji zaidi

Hatua ya 7: Mchoro na Nambari ya Usambazaji ya Arduino UNO IR

Mchoro na Nambari ya Usambazaji ya Arduino UNO IR
Mchoro na Nambari ya Usambazaji ya Arduino UNO IR
Mchoro na Nambari ya Usambazaji ya Arduino UNO IR
Mchoro na Nambari ya Usambazaji ya Arduino UNO IR
Mchoro na Nambari ya Usambazaji ya Arduino UNO IR
Mchoro na Nambari ya Usambazaji ya Arduino UNO IR

Mzunguko wa Arduino kama inavyoonyeshwa kwenye vielelezo ni rahisi sana kwa mfumo huu na kwa hivyo inaelezewa kwa ufupi:

  • LED isiyo na rangi ya IR lazima iwe na waya kwa Dijiti ya Dijiti 3 kwenye UNO - hii ni sharti la maktaba ya IRLib Arduino
  • Sababu zimeelezewa katika IBLE yangu ya mapema juu ya kuunda kijijini katika sehemu inayohusiana na maktaba ya IRLib
  • LED ya Kijani iliyounganishwa na PIN ya Dijitali 4 ni kiashiria cha kuona kinachowaka wakati UNO imepokea sehemu zote za Nambari ya IR kutoka kwa mteja wa Python anayeendesha Raspberry Pi.
  • Kuwa na taa hii ya LED itathibitisha kuwa mawasiliano ya serial kati ya Raspberry Pi na UNO inafanya kazi
  • Ili kuwezesha mawasiliano ya serial, UNO imeunganishwa na Raspberry Pi kupitia Bandari ya USB
  • Mchoro wa Arduino ulioambatanishwa umetolewa maoni ya kutosha kuelezea kazi yake
  • Maoni juu ya nambari pia yanaelezea jinsi mzunguko unahitaji kuunganishwa

KUMBUKA

Kwa mazoezi, Arduino na Pi zinaweza kushikamana kwa pamoja kwenye kitovu cha USB chenye nguvu ya kutosha kuendesha Pi, Arduino na pia kusambaza ishara kali kupitia IR ya IR

Hatua ya 8: Kushikamana na Kupima Mfumo

Kuunganisha na Kupima Mfumo
Kuunganisha na Kupima Mfumo
Kuunganisha na Kupima Mfumo
Kuunganisha na Kupima Mfumo
Kuunganisha na Kupima Mfumo
Kuunganisha na Kupima Mfumo
  1. Jenga na upeleke ASP. NET SignalR Hub, mteja wa HTML pamoja na hifadhidata ya SQL Server 2012 kwa Seva ya Habari ya Mtandaoni (IIS) kwenye mtandao wako wa nyumbani
  2. Fikia programu ya wavuti kwa kufungua mteja wa HTML SignalR juu ya

    URL ya ukurasa huu kawaida ingekuwa https:// yourComputer: port_number /

  3. Bonyeza kitufe kwenye jopo la kudhibiti, na ikiwa programu imetumwa kwa usahihi, Kitovu kitajibu kwa kurudisha Nambari ya IR na kuionyesha kwenye jopo la Grey linalounganisha jopo la kudhibiti.

    Kumbuka! Itabidi upakie nambari kwenye hifadhidata yako kwa kuanzisha maktaba ya mpokeaji wa IR na kunasa nambari kama ilivyoelezewa katika IBLE yangu ya awali

  4. Unganisha Arduino kwenye Raspberry Pi juu ya USB - fungua IDE ya Arduino kwenye Pi na uhakikishe kuwa UNO inaweza kuanzisha uhusiano na Pi

    nakala hizi za mafunzo ya Arduino zinapaswa kukusaidia kupata hii haraka sana

  5. Fungua nambari ya chatu na ufanye mabadiliko yafuatayo kama yanavyofaa kwa mazingira yako

    • anwani ya Port Port ya UNO yako kama ilivyopatikana kutoka Hatua ya 4
    • URL ya kitovu cha SignalR ili kulinganisha URL yako ya karibu kutoka Hatua ya 2 - kwa mfano huu, itakuwa https:// yourComputer: port_number / signalr
  6. Mwishowe, fungua Mchoro wa Arduino kwenye IDE ya Arduino kwenye Raspberry Pi na uangaze kwa UNO
  7. Weka ubao wa mkate ambao unashikilia mzunguko karibu na kifaa kinachodhibitiwa - IR LED lazima iwe na laini wazi ya maono na bandari ya mpokeaji ya IR ya kifaa
  8. Anza programu ya Python kwenye Raspberry Pi kwa kubonyeza kitufe cha F5 kwenye mwambaa zana wa IDLE ya Python
  9. Rudi kwenye jopo la Udhibiti kwenye programu ya mteja wa HTML (Hatua ya 2) na bonyeza kitufe (kama vile Power On au Volume Up)

Ikiwa mfumo umewekwa kwa usahihi, basi unapaswa kuwa na uwezo wa kuleta ukurasa wa mteja wa HTML kwenye simu yako au kompyuta kibao na kudhibiti vifaa vyako na vifungo kwenye ukurasa wako wa mteja wa HTML.

Hatua ya 9: Mfumo unafanya kazi

Mfumo Unatumika
Mfumo Unatumika
Mfumo Unatumika
Mfumo Unatumika
Mfumo Unatumika
Mfumo Unatumika
Mfumo Unatumika
Mfumo Unatumika

Vielelezo hapo juu vinaonyesha Mfumo wa Uendeshaji wa Nyumbani ukifanya kazi mara tu utakapowekwa.

Tangu kuchapisha IBLE hii, nimeongeza kiwambo kwa kunasa Nambari kadhaa za IR kutoka kwa TV yangu ya VIZIO LED

Kama inavyoonyeshwa bega kwa mbali na Kiwanda cha mbali cha Televisheni katika mwonekano wa kwanza, kazi chache muhimu za kijijini hiki zimejengwa kwenye UI ya Wavuti inayopatikana kupitia kibao changu.

Vielelezo vya baadaye vinaonyesha kibao mbele na TV nyuma ikijibu amri zilizotolewa kutoka kwa kiolesura cha Wavuti:

  1. Amri ya KUZIMA - Televisheni imezimwa
  2. Power ON amri - TV inawasha na nembo ya "V" inaonekana wakati skrini inaimarisha
  3. Nyamazisha amri - Bar ya usawa inakuja na spika imenyamazishwa

Katika majaribio yote, eneo la Grey kando ya dashibodi kwenye skrini ya kompyuta kibao linaonyesha amri iliyotolewa na mteja, na majibu yanayorudishwa na SignalR Hub ya mbali

Hatua ya 10: Kuimarisha Mfumo wa Uendeshaji na Marekebisho yanayohusiana

Mfumo huu unaweza kupanuliwa kwa kuongeza nambari zaidi zilizonaswa kutoka kwa mifumo tofauti. Wakati sehemu hii ni rahisi, kuna mambo mengine mawili ambayo itabidi uzingatie.

Uboreshaji 1 (Haraka): Kufanya kazi na Ishara za IR za urefu tofauti

  1. Nambari za IR za mifumo tofauti huja na urefu tofauti, hata kati ya bidhaa mbili kutoka kwa mtengenezaji mmoja.

    Kwa mfano, katika kesi hii, urefu wa safu ya nambari za IR kwa TV ya LED ni 67 wakati ile ya Samsung Sound Bar iko karibu 87

  2. Maana yake, ikiwa ningewasha Sauti ya Sauti kwanza, safu ya Bafa ya IR kwenye mchoro wa Arduino ingejazwa na mlolongo wa Nambari ya IR iliyo na nambari 87
  3. Kufuatia hii, ikiwa ningewasha Runinga ya LED, ingejaza safu ya Bafa ya IR na nambari 67 tu, lakini nambari 20 zilizobaki kutoka kwa operesheni ya zamani bado zingekuwa karibu

Matokeo? TV ya LED haiwashi kwa sababu bafa ya msimbo wa IR imeharibiwa na nambari 20 zaidi ambazo hazijasafishwa kutoka kwa operesheni iliyopita!

Rekebisha 1 (njia rahisi ya kutoka, haifai)

Badilisha Mchoro wa Arduino kama ifuatavyo:

Badilisha simu zifuatazo za kazi katika kitanzi () {} kazi

kusambaza IRCode ();

kusambaza CodeCIR (c);

Fanya mabadiliko kwenye saini ya kazi hapo juu:

transmit batiliIRCode (int codeLen) {// RAWBUF mara kwa mara kubadilishwa na codeLen IRTransmitter. IRSendRaw:: send (IRCodeBuffer, codeLen, 38); }

Ingawa hii ni rahisi, safu haifutwa kabisa na kwa hivyo hii sio suluhisho safi sana

Rekebisha 2 (Sio ngumu, ilipendekezwa)

Tangaza ubadilishaji wa ziada juu kabisa ya Mchoro wa Arduino, baada ya sehemu ya maoni:

haijasajiliwa EMPTY_INT_VALUE;

Ongeza hii juu ya kazi ya kuanzisha ():

// Nasa hali ya asili ya ubadilishaji wa nambari isiyosainiwa isiyosainiwa EMPTY_INT_VALUE = IRCodeBuffer [0];

Tembeza chini na uongeze kazi mpya kwenye mchoro mara tu baada ya kazi ya transmitIRCode ():

batili clearIRCodeBuffer (int codeLen) {// Futa nambari zote kutoka kwa safu // KUMBUKA: kuweka vitu vya safu kuwa 0 sio suluhisho! kwa (int i = 1; i <= codeLen; i ++) {IRCodeBuffer [i-1] = EMPTY_INT_VALUE;}}

Mwishowe, piga kazi mpya hapo juu katika eneo lifuatalo katika kazi ya kitanzi ():

// Rudisha - Endelea kusoma Serial PortclearIRCodeBuffer (c);…

Hii ni njia safi zaidi kwani inabadilisha tena maeneo yote katika safu ya bafa ya IR ambayo ilikuwa na idadi kubwa zaidi ya ishara ya hivi karibuni ya IR Code bila kuacha chochote kwa bahati.

Uboreshaji 2 (Kuhusika zaidi): Kurudia Usafirishaji wa Ishara ya IR kwa vifaa fulani

Vifaa vingine vinahitaji ishara sawa kupitishwa mara kadhaa ili kujibu Mfano: Katika kesi hii, Bar ya Sauti ya Samsung inahitaji nambari ile ile kutumwa mara mbili na pengo la sekunde 1

Kurekebisha katika Dhana imejadiliwa hapa kwani inahusika zaidi na itahitaji kupima

Kuongeza utendaji wa kurudia kwenye Mchoro wa Ardunio itamaanisha kuwa italazimika kuwasha Mchoro kila wakati unapoongeza kifaa kipya kwenye Mfumo wako wa Kujiendesha wa Nyumbani.

Badala yake, kuongeza urekebishaji huu kwa mteja wa HTML SignalR na programu tumizi ya Huduma ya SignalR inafanya suluhisho iwe rahisi zaidi. Na hii inaweza kupatikana kwa kanuni kama ifuatavyo:

Rekebisha mteja wa SignalR HTML kusambaza habari inayorudia kwa Hub

Fungua index.html na upachike thamani ya kurudia kwenye kitufe cha HTML kama hivyo:

thamani = "SMSNG-SB-PWR-ON" itakuwa thamani = "SMSNG-SB-PWR-ON_2_1000"

Ambapo, 2 ni thamani ya kurudia na 1000 ni thamani ya kuchelewa kwa millisecond kati ya ishara mbili za kurudia

Unapobofya kitufe hiki, kitovu cha SignalR kitapokea Nambari muhimu + Rudia_Spec

Rekebisha njia za upande wa Seva ya SignalR kuchanganua tu Nambari muhimu:

  • Tumia Nambari ya Msimbo ili kupata Nambari ya IR kutoka kwa hifadhidata kama kawaida
  • Peleka Nambari muhimu + Rudia_Spec na IRCode kwa Wateja wa SingalR kama kawaida

Rekebisha Matumizi ya Huduma ya SignalR kusambaza ishara kwa kutumia maadili ya Kurudia:

Fungua mteja wa Python na urekebishe kazi mbili zifuatazo:

def print_command_from_hub (buttonId, cmdSrc):

# soma nambari ya kurudia kutoka kwa kitufeId thamani

def transmitToArduino (IRSignalCode, delim, endPrefix):

# kuanzisha kwa muda au kwa kitanzi ili kusambaza ishara kwa masafa unayotaka

  • Kwa njia hii, Arduino haifai kuangaza mara kwa mara
  • Idadi yoyote ya masafa ya kurudia inaweza kujengwa katika mfumo huu
  • Kwa kuongeza, ikiwa unatumia UNO, kuna kikomo kwa saizi Mchoro wako unaweza kukua kuwa!

Hatua ya 11: Maswala Yanayojulikana na wasiwasi wa Usalama

Kama ilivyo kwa mifumo iliyojengwa mara ya kwanza kabisa, hii ina maswala kadhaa ambayo yalitoka wakati wa kujaribu.

Suala la 1: Amri za kurusha kwa mfululizo haraka na ucheleweshaji chini ya sekunde kati ya kubofya vitufe ilisababisha mfumo kutosikia baada ya kujibu kwa mara kadhaa za kwanza.

  • Kuanzisha upya mteja wa SignalR ya Python hurejesha mfumo kwa shughuli za kawaida
  • Maazimio ya haraka yanaweza kuwa ni kuondoa matokeo yasiyotakikana ya Utatuaji katika zote mbili, Mteja wa SignalR ya Python na pia Mchoro wa Arduino na kurudia majaribio haya
  • Mahali pengine pa kutazama ni mawasiliano ya serial yenyewe - ingewezekana kuongeza nambari ili kuvuta bafa haraka?

Hiyo ilisema, nimeona kuwa Runinga yangu haijibu vizuri kwa kijijini chake cha kiwanda - kwa hivyo asili ya mawasiliano ya IR ya Runinga yangu inaweza kuwa sababu inayochangia pia.

Suala la 2: Skrini ya HTML inaacha kujibu kubofya vitufe baada ya kipindi kirefu cha kutokuwa na shughuli

Kawaida kuburudisha ukurasa hutatua tabia hii - sababu ya tabia hii hata hivyo bado haijulikani

MAWASILIANO YA USALAMA

Mfumo huu umebuniwa kwa matumizi ya mtandao wa nyumbani (nyumbani) tu na hauna vizuizi muhimu vya usalama vinavyoweza kutumiwa kwenye wavuti

Kwa hivyo inashauriwa kuwa Kituo cha SignalR kipelekwe kwa mashine ya ndani kwenye mtandao wako wa nyumbani / nyumbani

Asante kwa kusoma IBLE yangu na natumahi kuwa na furaha!

Ilipendekeza: