Kardiostimulátor pre Raspberry Pi; Softvér pre mikrokontroléry časť 4; Helmut Karger

Helmut Karger> Projekty> Monitorovanie Raspberry Pi> Kardiostimulátor pre Raspberry Pi - časť 4: Softvér mikrokontroléra

helmut

V predchádzajúcom článku som popísal, ako sme nastavili programovacie prostredie pre mikrokontrolér ATtiny 13A. Po úspešnom prenesení prvého náčrtu na µC sme teraz pripravení na skutočný Softvér kardiostimulátora. Tento článok je o Softvérová časť, ten na Mikrokontrolér bežiaci. ATtiny by mali počúvať pravidelnú zmenu signálu Raspberry Pi cez pripájací kolík. Ak sa tento tlkot srdca v danom čase neobjaví, musíme predpokladať, že Raspberry Pi už nie je aktívny. Obesil sa alebo je v nekonečnej slučke, z ktorej sa už nemôže vyslobodiť - v každom prípade už nerobí svoju prácu. V tomto okamihu zasiahne mikrokontrolér a krátko vypne napájanie Raspberry Pi. RasPi sa potom môže reštartovať, obnoviť svoju funkciu a mikrokontrolér zase začne znova monitorovať.

Funkcia softvéru kardiostimulátora

V úvode som už zhruba opísal, čo kardiostimulátor robí. Pripomíname, že tu je opäť bloková schéma. Mikrokontrolér má dve hlavné úlohy:

  1. monitorovanie na timeout a
  2. Výpadok v prípade timeoutu

Presne to robí hlavná časť programu, ako uvidíme o chvíľu.

Softvér kardiostimulátora

Pre mikrokontrolér nie je softvér zvyčajne napísaný v Pythone ako v prípade Raspberry Pi, ale v Programovací jazyk C. Arduino IDE už má na palube všetky komponenty na zostavenie programu C a jeho flashovanie do mikrokontroléra.

Tu môj Program kardiostimulátora v C.:

Ako vidíte, program je veľmi kompaktný. Prejdime si to jeden po druhom. Na začiatku budú nejaké parameter Sú definované:

  • BOOT TIME predstavuje čas v milisekundách, ktorý má Raspberry Pi povolené na zavedenie. Tu 30. roky.
  • AUSZEIT je doba prerušenia napájania na spustenie reštartu. Tu 5s.
  • OUTPUT je označenie kolíka pre pripojenie na vypnutie napájania. Tu PB3 = pin číslo 2.
  • INPUT je označenie kolíka pre vstup signálu srdca. Tu PB1 = pin číslo 6.
  • waitTime je maximálny čas, ktorý môže uplynúť bez srdcového rytmu pred spustením reštartu. Tu veľkorysé 60. roky

Časy je možné samozrejme upraviť, ak napríklad reštart trvá dlhšie ako 30 sekúnd.

Na začiatku programu je navyše definovaný variabilný posledný tep, ktorý šetrí čas poslednej detekovanej zmeny signálu.

Vstupy a výstupy sú definované a spojené vo funkcii setup (). VÝSTUP je nastavený na LOW. Musíme si uvedomiť, že sme tu s Reverzná logika musí urobiť, pretože MOSFET invertuje signál. Platí nasledujúce:

  • VÝSTUP = NÍZKY: zapnuté
  • VÝSTUP = VYSOKÝ: vypnuté

Potom je prednastavený premenný posledný tep so súčasným časom a a Prerušenie manipulácie vybavené linkou:

attachInterrupt (digitalPinToInterrupt (INPUT), isr, CHANGE);

To znamená, že pripojenie INPUT je neustále monitorované a v prípade zmeny polarity (CHANGE) je volaná funkcia isr. Táto funkcia, ako je vidno ďalej v programe, nerobí nič iné, ako dodá premennému posledný tep aktuálny čas znova. Toto sa teraz deje automaticky pri každej zmene z HIGH na LOW a z LOW na HIGH na kolíku INPUT .

Poslednou akciou funkcie setup () je zapnutie napájania pomocou funkcie stromAn (). Nájdeme ich na konci programu. stromAn () najskôr nastaví VÝSTUP na LOW, aby zapol napájanie Raspberry Pi, a potom počká na ČAS ZAVÁDZANIA. Potom je premennej posledný tep znovu priradený aktuálny čas.

Analogicky k stromAn () existuje aj funkcia stromOff (). Nerobí nič iné, ako nastaviť VÝSTUP na VYSOKÝ, aby sa vyplo napájanie Raspberry Pi a počkal na zadaný ČAS VYPNUTIA.

The Hlavný program loop () teraz spája všetky funkcie a je stále dosť jednoduchý. Kontroluje, či TimeOut vypršal je. To je prípad, keď je rozdiel medzi aktuálnym časom a časom posledného zisteného srdcového rytmu väčší ako zadaný čas čakania. Až potom sa volajú stromAus () a stromAn () jeden za druhým, aby prinútili Raspberry Pi bootovať. V opačnom prípade čaká iba 100 ms a potom sa začne odznova.

Softvér Flash kardiostimulátora

Ak chcete spustiť program na a ATtiny 13A skopírujeme zdrojový text na túto stránku a prilepíme ho na novú stránku servera Arduino IDE a. Nezabudnite uložiť! Keď je programovací hardvér (pozri obvod) pripravený, je možné náčrt ľahko zobraziť na ATtiny stlačením klávesu Kláves Shift a súčasne kliknite na ikonu s šípka doprava. Svetlá na programátore (Nano) krátko bliknú, potom je proces blesku dokončený. Ak Arduino IDE nevyvolá žiadne chyby, môže byť ATtiny odstránený z kontaktného poľa a vložený do skutočného obvodu kardiostimulátora.