- Компоненте потребне за подсетник за аутоматску медицину помоћу Ардуина
- Подсетник за медицину Ардуино користећи Ардуино Цирцуит
- Рад аутоматског система подсећања на медицину
- Програмирање Ардуино УНО за медицински подсетник
Када су у питању наши вољени, увек желимо да останемо здрави и у форми. Али шта ће се догодити ако се разболе и забораве да узимају лекове на време. Били бисмо забринути, зар не? У болницама има много пацијената и тешко је сваког пацијента подсетити да узима лекове на време. Традиционални начини захтевају људске напоре да их подсете да узимају лекове на време. Дигитална ера то не прати и за то можемо користити машине. Примена паметног медицинског подсетника је веома широка и могу га користити пацијенти код куће, лекари у болницама и на многим другим местима. Што се тиче подсећања, постоји много начина да га подсетимо:
- Покажите га на дисплеју
- Пошаљите обавештење е-поштом или телефоном
- Коришћење мобилних апликација
- Бузз аларм
- Коришћење Блуетоотх-а / Ви-Фи-ја
- Позовите
- Подсетите на следеће време за лек, подсећајући на тренутно време
Можемо комбиновати начине у зависности од потребе. Да би овде ствари биле једноставне, направили смо једноставан лекарски подсетник користећи Ардуино који нас подсећа да узимамо лекове 1 или 2 или 3 пута дневно. Временски слот се може одабрати помоћу тастера. Такође, приказује тренутни датум и време. Даље ћемо га проширити на долазне чланке о ИоТ пројекту где ће се кориснику послати обавештење е-поштом или СМС-ом. Овај подсетник за лекове такође се може интегрисати са системом за надзор пацијента.
Компоненте потребне за подсетник за аутоматску медицину помоћу Ардуина
- Ардуино Уно (Можемо користити и друге Ардуино плоче, као што су Про мини, Нано)
- РТЦ ДС3231 модул
- ЛЦД екран од 16к2
- Зујалица
- Лед (било која боја)
- Бреадбоард
- Тастери
- 10К потенциометар
- Отпорници 10К, 1К
- Јумпер Вирес
Подсетник за медицину Ардуино користећи Ардуино Цирцуит
Комплетна шема кола за изградњу паметне кутије за лекове помоћу Ардуина приказана је испод
Испод су пин везе Ардуина са различитим периферним уређајима
Ардуино Пинс Периферне игле
- 2 -----------------------------> Д7 од 16к2 ЛЦД екрана
- 3 -----------------------------> Д6 од 16к2 ЛЦД екрана
- 4 -----------------------------> Д5 од 16к2 ЛЦД екрана
- 5 -----------------------------> Д4 од 16к2 ЛЦД екрана
- 7 -----------------------------> 3. тастер
- 8 -----------------------------> друго дугме
- 9 -----------------------------> 1. тастер
- 11 -----------------------------> ЕН иглица ЛЦД екрана од 16к2
- 12 -----------------------------> РС пин на ЛЦД дисплеју од 16к2
- 13 -----------------------------> + Ве Пин од зујалице и водио
- А0 -----------------------------> Стоп тастер
- А4 -----------------------------> СДА ДС3231
- А5 -----------------------------> СЦЛ за ДС3231
- 3,3 В -----------------------------> Вцц ДС3231
- Гнд -----------------------------> Гнд
У овом пројекту подсећања на медицину, РТЦ ДС3231 повезан је преко И2Ц протокола са Ардуино Уно. Такође можете да користите РТЦ ИЦ ДС1307 за очитавање времена са Ардуином. РТЦ ДС3231 такође има уграђену 32к меморију која се може користити за чување додатних података. РТЦ модул се напаја преко 3.3В пина Ардуино уно. ЛЦД екран од 16к2 повезан је помоћу СПИ. Буззе Р се користи за узбуну и подсећају да је време да узимају лекове. Користе се четири тастера где сваки има засебну функцију одабира. Прво дугме служи за подсећање на узимање лекова једном дневно. Друго дугме служи за подсећање два пута дневно, а треће дугме служи за подсећање три пута дневно. Четврто дугме служи за заустављање зујања када корисник зачује упозорење.
Рад аутоматског система подсећања на медицину
Пилула Подсетник аларма се напаја помоћу 5В напајање. Када се први пут покрене, приказује масажу добродошлице као „ Добродошли у Цирцуит Дигест “. ЛЦД екран је подешен на циклус на три екрана. На 1 ст екран показује масажа као " остану здрави, Гет Велл Соон ". Други екран је екран за помоћ који говори да притиснете дугме за одабир да бисте изабрали било који временски слот који желите подсетити (једном / два пута / три пута дневно). Временски интервал је променљив у програму и може се конфигурисати у складу с тим. Тренутно смо то поправили у три трајања, тј. 8:00, 14:00 и 20:00.
Подијелили смо временске термине у три начина. Моде 1 бира да узимају лекове једном / дневно у 8х када корисник притисне 1 ул кнопочного. Режим 2 бира да узимају лекове два пута / дан у 8х и 8 увече када корисник притисне 2 ј кнопочного. Режим 3 одабире узимање лекова три пута дневно у 8:00, 14:00 и 20:00 ако корисник притисне 3. дугме.
Такође можемо додати функцију за одлагање зујалице за 10 минута (није укључено у овај пројекат). Када корисник одабере жељене слотове притиском на тастере, кориснички унос се снима и време се узима из РТЦ-а. Када се време подудара са одабраним временским интервалом, зујало почиње да зуји. Корисник може зауставити зујалицу притиском на тастер СТОП. Исти поступак се наставља и за следећи подсетник за слот. Комплетан процес приказан је у видеу датом на крају овог чланка.
Програмирање Ардуино УНО за медицински подсетник
Веома је лако написати програм након што смислите начине да подсетите на узимање таблета. Овде ће приказати подсетник на екрану, огласити зујалицу и приказати га помоћу ЛЕД-а. Такође има опцију да одабере три временска интервала (једном / два пута / три пута дневно) и када време достигне започиње упозоравање пацијента зујањем зујалице. Тада ће цео систем изгледати овако:
Корисник добија упутства за помоћ на екрану> Корисник бира временске термине (једном / дан, два пута / дан, три пута / дан)> Порука о потврди штампања на екрану> Време започето> Зујалица и ЛЕД лампица почињу када се време поклапа са одабраним корисничким слотом> Корисник зауставља притискањем дугмета за заустављање> Крај
Можемо да променимо програм и хардвер ако желимо да додамо још функција. Да бисмо разумели на много једноставнији начин, рашчланили смо програм на мале функције. Функције су једноставне за разумевање и примену. Комплетан програм дат је на крају овог пројекта. Почнимо са програмом.
Од тада смо користили друге периферне уређаје попут ЛЦД екрана 16к2, РТЦ ДС3231, тако да прво морамо укључити библиотеке за то или оно. Потребне библиотеке су следеће:
ЕЕПРОМ библиотека се користи за праћење уноса одабира корисника ако Ардуино није укључен. А када корисник укључи Ардуино, он добија претходно стање тастера помоћу ЕЕПРОМ библиотеке. Библиотека Вире.х се користи пошто се модул РТЦ ДС3231 комуницира помоћу И2Ц.
Увек проверите да ли је РТЦ правилно ожичен или није оштећен, јер ће РТЦ играти важну улогу у задржавању времена целокупног система подсетника.
иф (! ртц.бегин ()) {// проверити да ли је ртц повезан Сериал.принтлн („РТЦ није могуће пронаћи“); док (1); } иф (ртц.лостПовер ()) { Сериал.принтлн ("РТЦ је изгубио напајање, омогућава подешавање времена!"); }
Прилагођавање времена може се извршити на два начина, или аутоматски користећи време компајлирања система или ручним уносом. Након што смо поставили време, коментаришите доње редове уколико не желите поново да промените РТЦ време.
ртц.адјуст (ДатеТиме (Ф (__ ДАТЕ__), Ф (__ ТИМЕ__))); //ртц.адјуст(ДатеТиме(2019, 1, 10, 7, 59, 52));
Овај израз прекидача користи се за читање претходно сачуваног стања тастера и настављање стања за одговарајуће и тачно време подсетника.
вал2 = ЕЕПРОМ.реад (аддр); // читамо претходно сачувану вредност дугмета да бисмо кренули од места где је претходно остављено прекидач (вал2) { случај 1: Сериал.принтлн ("Подеси за 1 / дан"); пусх1стате = 1; пусх2стате = 0; пусх3стате = 0; пусхВал = 01; пауза; случај 2: Сериал.принтлн ("Сет фор 2 / даи"); пусх1стате = 0; пусх2стате = 1; пусх3стате = 0; пусхВал = 10; пауза; случај 3: Сериал.принтлн ("Сет фор 3 / даи"); пусх1стате = 0; пусх2стате = 0; пусх3стате = 1; пусхВал = 11; пауза; }
Ова изјава се користи да се милис користи за одређивање времена и контролу дефинисаног интервалног циклуса на екрану.
цуррентМиллисЛЦД = миллис (); // старт милис за пребацивање ЛЦД екрана у одређеном временском интервалу
Почните да читате дигиталне игле повезане на тастере.
пусх1стате = дигиталРеад (пусх1пин); пусх2стате = дигиталРеад (пусх2пин); пусх3стате = дигиталРеад (пусх3пин); стопинСтате = дигиталРеад (стопПин);
Испод се користи функција за очитавање стања тастера и записивање на ЕЕПРОМ. Кад год се притисне тастер, стање се записује у ЕЕПРОМ. Такође штампа поруку на ЛЦД екрану одабраног избора корисничког уноса. Слично се користе функције пусх2 () и пусх3 () .
воид пусх1 () {// функција за подешавање подсетника једном дневно ако (пусх1стате == 1) { пусх1стате = 0; пусх2стате = 0; пусх3стате = 0; // пусхПресс = труе; ЕЕПРОМ.врите (адреса, 1); Сериал.принт ("Пусх1 Вриттен:"); Сериал.принтлн (ЕЕПРОМ.реад (аддр)); // за отклањање грешака пусхВал = 1; // чување стања тастера-1 лцд.цлеар (); лцд.сетЦурсор (0, 0); лцд.принт („Сет подсетника“); лцд.сетЦурсор (0, 1); лцд.принт ("фор Онце / даи!"); кашњење (1200); лцд.цлеар (); } }
Испод се користи функција за заустављање зујалице и водиоца. Увек је добро давати предлоге. Одштампајте поруку предлога на екрану „Узмите лек са топлом водом“.
воид стопПинс () {// функција за заустављање зујања када корисник притисне дугме за заустављање иф (стопинСтате == 1) { // стопинСтате = 0; // пусхПресс = труе; притиснуто = 1; лцд.цлеар (); лцд.сетЦурсор (0, 0); лцд.принт („Узми лек“); лцд.сетЦурсор (0, 1); лцд.принт ("са топлом водом"); кашњење (1200); лцд.цлеар (); } }
Следећа функција је независна од вођења рачуна времена, али увек ради на три екрана што помаже кориснику. Како бринемо о пацијентима, омогућава нам да исписујемо поздравну поруку, јер знамо да је емоционална подршка веома корисна за брже излечење пацијената. Можете одабрати своју креативну поруку. Штампајмо поруку као „Останите здрави, оздравите ускоро“.
Други екран даје упутства пацијентима као „Притисните тастере за подсетник..“. Трећи екран се користи за једноставно приказивање тренутног датума и времена.
воид цхангеСцреен () {// функција за Сцреен Цицлинг // Покрени пребацивање екрана на сваки дефинисани интервалЛЦД ако (цуррентМиллисЛЦД - превиоусМиллисЛЦД> интервалЛЦД) // сачувај последњу промену приказа { превиоусМиллисЛЦД = цуррентМиллисЛЦД; сцреен ++; иф (екрани> макСцреен) { екрани = 0; // сви екрани преко -> почињу од 1. } исСцреенЦхангед = труе; } // Почните приказивати тренутни екран ако је (исСцреенЦхангед) // ажурирајте екран само ако је екран промењен. { исСцреенЦхангед = нетачно; // ресетовање за следећу итерацију прекидача (екрани) { цасе гетВеллсоон: гвсМессеге (); // порука за оздрављење ускоро пауза; случај ХЕЛП_СЦРЕЕН: хелпСцреен (); // прекид екрана инструкција ; случај ТИМЕ_СЦРЕЕН: тимеСцреен (); // за штампање датума и временске паузе; подразумевано: // НОТ СЕТ. пауза; } } }
Ова функција се користи за истовремено зујање и трептање ЛЕД диоде ако је изабрано време достигло.
воид стартБузз () {// функција за покретање зујања када време достигне дефинисани интервал // иф (пусхПресс == фалсе) { иф (пусхпрессед == 0) { Сериал.принтлн ("пусхпрессед је фалсе у трептају"); унсигнед лонг цуррентМиллис = миллис (); иф (цуррентМиллис - превиоусМиллис> = интервал) { превиоусМиллис = цуррентМиллис; // сачувајте последњи пут када сте трепнули ЛЕД Сериал.принтлн („Старт Зујање“); иф (ледСтате == ЛОВ) {// ако је ЛЕД искључена, укључите је и обрнуто: ледСтате = ХИГХ; } елсе { ледСтате = ЛОВ; } дигиталВрите (ледПин, ледСтате); } } елсе иф (пусхпрессед == 1) { Сериал.принтлн ("пусхпрессед је тачно"); ледСтате = ЛОВ; дигиталВрите (ледПин, ледСтате); } }
Ова функција се користи за упоређивање временског термина који је изабрао корисник у 8 сати ујутро и почиње да зуји зујалицом и трепће ЛЕД док корисник не притисне дугме за заустављање. Слично томе, функције воид ат2пм () и воид ат8пм се користе за покретање сирене и воде се у 14:00 и 20:00.
воид ат8ам () {// функција за почетак зујања у 8:00 ДатеТиме сада = ртц.нов (); иф (инт (нов.хоур ())> = бузз8амХХ) { иф (инт (нов.минуте ())> = бузз8амММ) { иф (инт (нов.сецонд ())> бузз8амСС) { ////// ///////////////////////////////////////////////// стартБузз (); //////////////////////////////////////////////////// /// } } } }
На овај начин можете једноставно да направите сопствени аутоматски подсетник за лек користећи Ардуино. Такође можете да користите ЕСП8266 са Ардуином да бисте од њега направили ИоТ пројекат који ће моћи да пошаље упозорење е-поштом кориснику.
Комплетни код и демонстрацијски видео приказан је у наставку.