Као инжењери / програмери, увек се ослањамо на прикупљене податке да бисмо дизајнирали или побољшали систем. Снимање података и њихова анализа уобичајена је пракса у већини индустрија, овде градимо Ардуино Дата Логгер Пројецт где ћемо научити како можемо да евидентирамо податке у одређеном временском интервалу. Користићемо Ардуино плочу за читање неких података (овде температура, влажност, датум и време) и истовремено их сачувати на СД картици и рачунару.
Сачувани подаци могу се лако отворити у Екцел табели за даље анализе. За одржавање датума и времена користићемо познати РТЦ модул ДС3231, а за добијање температуре и влажности користићемо сензор ДХТ11. На крају пројекта ћете научити
- Како пријавити податке на СД картицу са вредностима датума, времена и сензора.
- Како записати податке директно у Екцел Схеет на рачунару путем серијске комуникације.
Потребни материјали:
- Бреадбоард
- Ардуино УНО (било која Ардуино плоча)
- ДХТ11 Сензор температуре
- ДС3231 РТЦ модул
- Модул СД картице
- СД картица
- Повезивање жица
- Рачунар / Лаптоп
Кружни дијаграм:
Дијаграм кола за овај пројекат Ардуино температурног дневника приказан је испод.
Као што је приказано на дијаграму кола, везе су врло једноставне, јер смо их користили као модуле, можемо их директно изградити на плочи. Везе су даље класификоване у доњој табели
Ардуино Пин |
Пин модула |
Сензор температуре - ДХТ11 |
|
Вцц |
5В |
Гнд |
Гнд |
Нц |
Нц |
Напоље |
Пин 7 |
РТЦ модул ДС3231 |
|
Вцц |
5В |
Гнд |
Гнд |
СЦЛ |
Пин А5 |
СДА |
Пин А4 |
Модул СД картице |
|
Вцц |
5В |
Гнд |
Гнд |
МИСО |
Пин 12 |
МОСИ |
Пин 11 |
СЦК |
Пин 13 |
ЦС |
Пин 4 |
Можете заменити температурни сензор ДХТ11 било којим сензором са којег треба да забележите вредности. Можете да проверите ЛМ35 са Ардуином да очита температуру.
РТЦ модул ДС3231 повезан је са Ардуином помоћу И2Ц комуникације (СЦЛ, СДА), а модул СД картице повезан је СПИ комуникацијом (МИСО, МОСИ, СЦК, ЦС). Пинови 4 и 7 дефинирани су као ЦС пин и излазни пин помоћу програма Ардуино, по потреби их можете промијенити на било који други пин. Претходно смо повезали СД картицу са Ардуином у пројекту Музички плејер.
Објашњење програма Ардуино:
Морамо да напишемо програм Ардуино који може учинити следеће.
- Читајте податке са сензора ДТХ11 (или било које друге податке које желите да пријавите).
- Иницијализујте И2Ц магистралу за читање података са РТЦ модула.
- Иницијализујте СПИ магистралу да бисте повезали модул СД картице са Ардуином.
- Спремите датум, време, температуру и влажност на СД картицу.
- Спремите датум, време, температуру и влажност на Екцел табелу која ради на рачунару / преносном рачунару.
Горњи кораци могу звучати сложено, али су врло једноставни јер библиотеке раде тежак посао уместо нас. Морате да преузмете следеће две библиотеке
- Библиотека сензора ДХТ11 компаније ГитХуб
- Библиотека модула ДС3231 РТЦ компаније Ринки-Динк Елецтроницс
Када преузмете библиотеку, додајте их у свој Ардуино ИДЕ следећи
Скица-> Укључи библиотеку -> Додај.ЗИП библиотеку
Да бисмо податке из Ардуина живахно убацили у Екцел лист на рачунару, такође ћемо морати да инсталирамо софтвер под називом ПЛКС-ДАК који обезбеђује Параллак Инц. Пратите везу да бисте преузели датотеку и инсталирали их на основу вашег оперативног система. Ово је требало да створи директоријум ПЛС-ДАК на вашој радној површини. О томе ћемо се побринути касније у нашем радном одељку.
Након додавања обе библиотеке и након инсталирања софтвера, можете да користите Комплетни код (наведен на дну водича) и да их отпремите на свој Ардуино. Трудио сам се да код буде што једноставнији, а објашњења се дају и кроз одељке за коментаре. Даље, објаснићу важне сегменте у наставку.
1. Читање података са ДС3231:
ДС3231 је РТЦ (сат у реалном времену) модул. Користи се за одржавање датума и времена за већину пројеката Електронике. Овај модул има сопствено напајање ћелијске кованице помоћу којег одржава датум и време чак и када је главно напајање уклоњено или је МЦУ прошао кроз хард ресет. Дакле, једном када поставимо датум и време у овом модулу, он ће их увек пратити.
Коришћење овог модула је врло једноставно због библиотеке коју пружа Ардуино.
// Покрените ДС3231 користећи хардверски интерфејс ДС3231 ртц (СДА, СЦЛ); воид Инитиализе_РТЦ () {// Иницијализација ртц објекта ртц.бегин (); // #### следећи редови се могу некоментарисати да би се први пут поставили датум и време ### / * ртц.сетДОВ (ПЕТАК); // Подесимо Дан у недељи на НЕДЕЉУ ртц.сетТиме (18, 46, 45); // подесимо време на 12:00:00 (24-часовни формат) ртц.сетДате (6, 30, 2017); // Подесите датум на 1. јануар 2014. * /}
Напомена: Када први пут користите овај модул, морате да подесите датум и време. То се може учинити једноставним уклањањем коментара као што је горе поменуто и уписивањем датума и времена. Обавезно их коментаришите и пренесите, иначе ће сваки пут када покренете таблу датум и време бити поново постављени. Такође можете користити РТЦ ИЦ ДС1307 за очитавање времена са Ардуином.
2. Читање података са ДХТ11:
ДХТ11 је температурни сензор влажности. Вредности температуре и влажности шаље као 8-битне податке серијски кроз излазни пин модула. Библиотека чита ове податке користећи серијску функцију софтвера Ардуино.
#дефине ДХТ11_ПИН 7 // Излазни пин сензора повезан је на пин 7 дхт ДХТ; // Објекат сензора именован као ДХТ воид Реад_ДХТ11 () {инт цхк = ДХТ.реад11 (ДХТ11_ПИН); }
Овде сам спојио излазни пин на пин 7, као пример можете одабрати било који пин који подржава софтверски серијски. Позивање ДХТ.реад (пин број); очитаће вредност температуре и влажности и сачуваће је у параметру ДХТ.температуре односно ДХТ.Хумидити . Такође проверите ово Ардуино мерење температуре засновано на ДХТ11.
3. Иницијализација модула СЦ картице:
воид Инитиализе_СДцард () {// погледајте да ли је картица присутна и може ли се покренути: иф (! СД.бегин (цхипСелецт)) {Сериал.принтлн ("Картица није успела или није присутна"); // не ради ништа више: ретурн; } // отварање датотеке. имајте на уму да истовремено може бити отворена само једна датотека, // зато морате ову да затворите пре него што отворите другу. Датотека датаФиле = СД.опен ("ЛоггерЦД.ткт", ФИЛЕ_ВРИТЕ); // ако је датотека доступна, напишите јој: иф (датаФиле) {датаФиле.принтлн ("Датум, време, температура, влажност"); // Напишите први ред екцелове датотеке датаФиле.цлосе (); }}
Коришћење СД картице са Ардуином је једноставно због библиотеке СД картица која ће се подразумевано додати у Ардуино ИДЕ. У функцији иницијализације СД картице креираћемо текстуалну датотеку под називом „ЛоггерЦД.ткт“ и написат ћемо први ред нашег садржаја. Овде раздвајамо вредности помоћу „,“ као граничника. Што значи када се постави зарез значи да морамо да пређемо на следећу ћелију у Екцел листу.
4. Записивање података на СД картицу
воид Врите_СДцард () {// отвори датотеку. имајте на уму да истовремено може бити отворена само једна датотека, // зато морате ову да затворите пре него што отворите другу. Датотека датаФиле = СД.опен ("ЛоггерЦД.ткт", ФИЛЕ_ВРИТЕ); // ако је датотека доступна, напишите јој: иф (датаФиле) {датаФиле.принт (ртц.гетДатеСтр ()); // Складиштење датума на СД картици датаФиле.принт (","); // Прелазак на следећу колону помоћу „,“ датаФиле.принт (ртц.гетТимеСтр ()); // Складиштење датума на СД картици датаФиле.принт (","); // Прелазак на следећу колону помоћу "," датаФиле.принт (ДХТ.температуре); // Складиштење датума на СД картици датаФиле.принт (","); // Прелазак на следећу колону помоћу "," датаФиле.принт (ДХТ.хуминити); // Складиштење датума на СД картици датаФиле.принт (","); // Прелазак на следећу колону помоћу "," датаФиле.принтлн (); // прелазак на крај реда у следећи ред датаФиле.цлосе ();// Затворимо датотеку} елсе Сериал.принтлн ("ООПС !! Писање СД картице није успело"); }
Као што је раније речено, наша намера је да сачувамо датум, време, температуру и влажност на нашој СД картици. Уз помоћ библиотеке ДС3231 и библиотеке ДХТ11, наш Ардуино ће бити у стању да прочита сва ова четири параметра и ускладишти их у следеће параметре као што је приказано у доњој табели
Датум |
ртц.гетДатеСтр ()); |
време |
ртц.гетТимеСтр ()); |
Температура |
ДХТ.температуре |
Влажност |
ДХТ.влажност |
Сада ове параметре можемо директно користити за њихово складиштење на СД картици помоћу линије за штампање
датаФиле.принт (параметар);
Можете приметити да је сваки параметар одвојен зарезом како би изгледао читко и датаФиле.принтлн (); користи се за означавање краја реда.
5. Уписивање података у ПЛКС-ДАК
ПЛКС-ДАК је додатак за Мицрософт Екцел који нам помаже да записујемо вредности из Ардуина директно у Екцел датотеку на нашем преносном рачунару или рачунару. Ово је мој лични фаворит из два разлога:
1. Можете истовремено писати и надгледати податке и пружа нам начин да их уцртамо у графиконе.
2. Не треба вам РТЦ модул попут ДС3231 да бисте пратили датум и време. Можете једноставно користити датум и време који се покрећу на вашем преносном рачунару / рачунару и сачувати их директно у програму Екцел.
Да бисмо користили овај софтвер са Ардуином, податке морамо серијски слати у одређеном обрасцу, баш као и приказивање вредности на серијском монитору. Кључне линије су објашњене у наставку:
воид Инитиализе_ПлкДак () {Сериал.принтлн ("ЦЛЕАРДАТА"); // брише све податке преостале из претходних пројеката Сериал.принтлн ("ЛАБЕЛ, Дате, Тиме, Температуре, Хумидити"); // увек напиши ЛАБЕЛ, да га означиш као први ред} воид Врите_ПлкДак () {Сериал.принт ("ДАТА"); // увек напиши "ДАТА" да би означио следеће као Дата Сериал.принт (","); // Прелазак на следећу колону помоћу „,“ Сериал.принт („ДАТЕ“); // Датум складиштења у програму Екцел Сериал.принт (","); // Прелазак на следећу колону помоћу "," Сериал.принт ("ТИМЕ"); // Датум складиштења у програму Екцел Сериал.принт (","); // Прелазак на следећу колону помоћу "," Сериал.принт (ДХТ.температуре); // Датум складиштења у програму Екцел Сериал.принт (","); // Прелазак на следећу колону помоћу "," Сериал.принт (ДХТ.хумидити);// Датум складиштења у програму Екцел Сериал.принт (","); // Прелазак на следећу колону помоћу "," Сериал.принтлн (); // прелазак краја реда у следећи ред}
Софтвер може препознати кључне речи попут ЛАБЕЛ, ДАТА, ТИМЕ, ДАТЕ итд. Као што је приказано у функцији Инитиализе, кључна реч „ЛАБЕЛ“ користи се за писање првог РЕДА Екцел листа. Касније у функцији Врите користимо кључну реч „ДАТА“ да означимо да следеће податке треба сматрати ДАТА-ом. Да бисмо назначили да морамо да пређемо на следећи ред, морамо да користимо зарез („,“). Да бисмо означили крај реда, морамо послати Сериал.принтлн ();.
Као што је раније речено, системски датум и време можемо написати слањем кључних речи „ДАТУМ“ и „ВРЕМЕ“, како је горе приказано.
Напомена: Не користите серијски монитор када користите овај ПЛКС_ДАК софтвер.
Објашњење:
Рад Ардуино Дата Логгера је једноставан. Једном када су хардвер и софтвер спремни, време је да нарежете програм на Ардуино Боард. Чим се ваш програм отпреми, ваше вредности температуре и влажности почеће да се чувају на вашој СД картици. Морате да следите доленаведене кораке да бисте ПЛКС-ДАК омогућили пријаву на Екцел лист на рачунару.
Корак 1: Отворите датотеку „Плк-Дак Спреадсхеет“ која је креирана на вашој радној површини током инсталације.
Корак 2: Ако постоји сигурносни блок, кликните на Оптионс-> Енабле тхе цонтент -> Финисх -> ОК да бисте добили следећи екран.
Корак 3: Сада одаберите брзину преноса података као „9600“ и порт на који је повезан ваш Ардуино и кликните на Цоннецт. Вредности би требало да почну да се евидентирају као што је приказано на слици испод.
Можете оставити овај екцел лист отвореним и надгледати вредности како се евидентирају. Како се ово догађа, наша СД картица такође би сачувала исте вредности. Да бисте проверили да ли ради, једноставно извадите СД картицу и отворите је на рачунару. У њему бисте требали пронаћи текстуалну датотеку под називом „ЛоггерЦД.ткт“ . Када би се отворио, изгледало би отприлике овако.
Ова датотека има податке, али било би тешко анализирати их у бележници. Стога га можемо отворити у програму Екцел као ЦСВ датотеку (вредности одвојене зарезом), што га чини ефикаснијим. Отворити у Екцелу
1. Отворите Екцел. Кликните Филе-> Опен и одаберите „Алл филе“ у доњем десном углу и одаберите „ЛоггерЦД“ датотеку са СД картице. Отвориће се чаробњак за увоз текста.
2. Кликните на „Даље“ и изаберите зарез као граничник. Поново кликните на „Даље“. Затим Заврши.
3. Сада ће се ваше вредности отворити у Екцел датотеци као што је приказано доле
Логирао сам вредности на сваких 5 секунди; можете их пријавити за било које жељено време променом функције одлагања у програму. За детаљно разумевање рада погледајте видео испод.
Надам се да вам се свидео пројекат, ако сумњате, напишите их у одељку за коментаре испод, а ја ћу вам помоћи.
Побољшање бонуса - Бежично евидентирање података коришћењем Ардуина:
Једном када успете до овог тренутка, са неколико напретка и само додавањем неколико редова кода можете бежично евидентирати податке.
Једноставно повежите Блуетоотх уређај као што је ХЦ-05 и упишите податке у ПЛКС-ДАК путем Блуетоотх-а уместо серијског. То је заменити Сериал.принт (параметар); са БлуетоотхНаме.принт (параметар); и повежите свој преносни рачунар са својим Блуетоотх модулом, одаберите ЦОМ порт на који су повезани ваши преносни рачунари и Таадааа…… Убрзо имате бежични систем за евидентирање података.