- Потребан материјал
- Кружни дијаграм
- 3Д модел за убацивање кућних љубимаца
- ДС3231 РТЦ модул
- Код и објашњење
- Рад аутоматске хранилице за кућне љубимце
Данас градимо аутоматску хранилицу за кућне љубимце засновану на Ардуину, која може аутоматски благовремено послужити храну вашем љубимцу. Има ДС3231 РТЦ (сат у реалном времену) модул, који се користи за подешавање времена и датума на који ће ваш љубимац добити храну. Дакле, подешавањем времена према распореду исхране вашег љубимца, уређај аутоматски испушта или пуни посуду са храном.
У овом колу користимо ЛЦД 16 * 2 за приказ времена помоћу ДС3231 РТЦ модула са Ардуино УНО. Такође, серво мотор се користи за ротирање контејнера како би се обезбедила храна и 4 * 4 матрична тастатура за ручно подешавање времена за храњење кућног љубимца. Можете подесити угао ротације и трајање отварања контејнера у складу са количином хране коју желите да послужите свом љубимцу. Количина хране такође може зависити од вашег љубимца, било да је то пас, мачка или птица.
Потребан материјал
- Ардуино УНО
- 4 * 4 матрична тастатура
- 16 * 2 ЛЦД
- Тастер
- Серво мотор
- Отпорник
- Повезивање жица
- Бреадбоард
Кружни дијаграм
У овом Феедер- у за мачке заснован на Ардуину, за добијање времена и датума користили смо РТЦ (сат у реалном времену) модул. Матричну тастатуру 4 * 4 користили смо да ручно подесимо време једења љубимца уз помоћ ЛЦД екрана 16к2. Серво мотор окреће посуду и испушта храну у време које је одредио корисник. ЛЦД се користи за приказ датума и времена. Комплетни рад можете пронаћи у видео запису датом на крају.
3Д модел за убацивање кућних љубимаца
Дизајнирали смо овај Ардуино контејнер за хранилице за кућне љубимце помоћу 3Д штампача. Такође можете одштампати исти дизајн преузимањем датотека одавде. Материјал који се користи за штампу овог модела је ПЛА. Има четири дела као што је приказано на доњој слици:
Саставите четири дела и повежите серво мотор како је приказано на доњој слици:
Ако сте нови у 3Д штампи, ово је почетни водич. СТЛ датотеке за ову хранилицу можете преузети овде.
ДС3231 РТЦ модул
ДС3231 је РТЦ (сат у реалном времену) модул. Користи се за одржавање датума и времена за већину пројеката Електронике. Овај модул има сопствено напајање ћелијским новчићем помоћу којег одржава датум и време чак и када је главно напајање уклоњено или је МЦУ прошао кроз хард ресет. Дакле, једном када поставимо датум и време у овом модулу, он ће их увек пратити. У нашем кругу користимо ДС3231 за храњење кућног љубимца према времену, које је поставио власник љубимца, попут аларма. Како сат досеже постављено време, он управља серво мотором да отвори капију контејнера и храна падне у посуду за храну кућног љубимца.
Напомена: Када први пут користите овај модул, морате да подесите датум и време. Такође можете да користите РТЦ ИЦ ДС1307 за очитавање времена са Ардуином.
Код и објашњење
На крају је дат комплетни Ардуино код Аутоматицс Феед Феед-а.
Ардуино има подразумеване библиотеке за коришћење Серво мотора и ЛЦД 16 * 2 са њим. Али да бисте користили ДС3231 РТЦ модул и 4 * 4 матричну тастатуру са Ардуином, морате да преузмете и инсталирате библиотеке. Линк за преузимање за обе библиотеке дат је у наставку:
- Библиотека модула ДС3231 РТЦ (сат у реалном времену)
- 4 * 4 Матрична библиотека тастатуре
У доњем коду дефинишемо библиотеке, „#инцлуде
#инцлуде
У доњем коду дефинишемо мапу тастатуре за матричну тастатуру 4 * 4 и додељујемо Ардуино пинове за ред и колоне тастатуре.
цхар тастери = {{'1', '2', '3', 'А'}, {'4', '5', '6', 'Б'}, {'7', '8', ' 9 ',' Ц '}, {' * ',' 0 ',' # ',' Д '}}; бајт ровПинс = {2, 3, 4, 5}; бајт цолПинс = {6, 7, 8, 9};
Овде креирамо тастатуру помоћу наредбе доле у коду.
Тастатура кпд = тастатура (макеКеимап (тастери), ровПинс, цолПинс, РОВС, ЦОЛС);
Додељивање А4 и А5 Ардуино пинова за повезивање са СЦЛ и СДА пиновима ДС3231. Такође, додељивање пинова ЛЦД-у и иницијализација серво мотора.
ДС3231 ртц (А4, А5); Серво серво_тест; // иницијализујемо серво објекат за повезани серво ЛикуидЦристал лцд (А0, А1, А2, 11, 12, 13); // Ствара ЛЦ објекат. Параметри: (рс, енабле, д4, д5, д6, д7)
У доњем коду декларишемо т1 до т6, кључ и низ р и феед.
инт т1, т2, т3, т4, т5, т6; логичка вредност = тачно; тастер цхар; инт р;
У доњем коду постављамо све компоненте за почетак. Као у овом коду „серво_тест.аттацх (10);“ Серво је причвршћен за 10. пин Ардуина. Дефинисање А0, А1 и А2 као излазног пина и иницијализација ЛЦД и РТЦ модула.
воид сетуп () {серво_тест.аттацх (10); // прикачимо сигнални пин сервоа на пин9 ардуино ртц.бегин (); лцд.бегин (16,2); серво_тест.врите (55); Сериал.бегин (9600); пинМоде (А0, ИЗЛАЗ); пинМоде (А1, ИЗЛАЗ); пинМоде (А2, ИЗЛАЗ); }
Сада је важан део разумевања како функционише петља. Кад год притиснете тастер, он прелази на средњу вредност 1, што се може прочитати помоћу „буттонПресс = дигиталРеад (А3)“ . Сада улази у наредбу 'иф' и позива функцију 'сетФеедингТиме' . Затим упоређује стварно време и време које је унео корисник. Ако је услов тачан, што значи да је стварно време и унето време исто, тада се серво мотор окреће за угао и угао од 100 степени и након 0,4 секунде кашњења враћа се у почетни положај.
воид лооп () {лцд.сетЦурсор (0,0); инт буттонПресс; буттонПресс = дигиталРеад (А3); иф (буттонПресс == 1) сетФеедингТиме (); лцд.принт ("Време:"); Низ т = ""; т = ртц.гетТимеСтр (); т1 = т.цхарАт (0) -48; т2 = т.цхарАт (1) -48; т3 = т.цхарАт (3) -48; т4 = т.цхарАт (4) -48; т5 = т.цхарАт (6) -48; т6 = т.цхарАт (7) -48; лцд.принт (ртц.гетТимеСтр ()); лцд.сетЦурсор (0,1); лцд.принт ("Датум:"); лцд.принт (ртц.гетДатеСтр ()); иф (т1 == р && т2 == р && т3 == р && т4 == р && т5 <1 && т6 <3 && феед == труе) {серво_тест.врите (100); // наредба за ротирање сервоа до наведеног кашњења угла (400); серво_тест.врите (55); феед = фалсе; }}
У воид сетФеедингТиме () функцијском коду, Након притиска дугмета можемо унети време храњења кућног љубимца, а затим морамо притиснути 'Д' да то време уштедимо. Када се сачувано време подудара са реалним временом, серво почиње да се окреће.
воид сетФеедингТиме () {феед = тачно; инт и = 0; лцд.цлеар (); лцд.сетЦурсор (0,0); лцд.принт ("Подеси време храњења"); лцд.цлеар (); лцд.принт ("ХХ: ММ"); лцд.сетЦурсор (0,1); вхиле (1) {кеи = кпд.гетКеи (); цхар ј; иф (кеи! = НО_КЕИ) {лцд.сетЦурсор (ј, 1); лцд.принт (кључ); р = тастер-48; и ++; ј ++; иф (ј == 2) {лцд.принт (":"); ј ++; } кашњење (500); } иф (кључ == 'Д') {кључ = 0; пауза; }}}
Рад аутоматске хранилице за кућне љубимце
Након учитавања кода на Ардуино Уно, време и датум ће бити приказани на ЛЦД-у 16 * 2. Када притиснете тастер, тражи се време храњења љубимца, а време морате унети помоћу 4 * 4 матричне тастатуре. На екрану ће се приказати унето време и притиском на „Д“ време се штеди. Када се поклапају реално време и унето време, он окреће серво мотор из почетног положаја 55⁰ на 100⁰ и након одлагања поново се враћа у почетни положај. Због тога је серво мотор повезан на капију контејнера за храну, па ће се, док се креће, капија отворити и нека количина хране падне у посуду или тањир. После кашњења од 0,4 секунде, серво мотор се поново окреће и затвара капију. Читав процес се завршава у року од неколико секунди. Тако ваш љубимац аутоматски добија храну у време када сте га унели.
Промените време и степен према храни