Turinys:
- Prekės
- 1 žingsnis: dizaino apžvalga
- 2 žingsnis: kodo apžvalga
- 3 žingsnis: „Nema 17“pritvirtinimas prie pagrindo plokštės ir sraigto
- 4 žingsnis: L298N ir RTC prijungimas
- 5 žingsnis: kodavimas su komentarais
- 6 žingsnis: problemos ir kaip jas išspręsti
Video: Automatinis šunų tiektuvas: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
Tai yra mano „Auto Pet Feeder“projektas. Mano vardas Parkeris, aš esu 11 klasės mokinys, ir aš šį projektą sukūriau 2020 m. Lapkričio 11 d. Kaip šio projekto CCA (kurso kulminacinė veikla). Galite pasirinkti laiką, kurį galite pakeisti. Maistas bus išpilstytas per sraigtą ir pamaitins jūsų augintinius!
Prekės
Elektronika:
- Arduino UNO
- L298N - 10 $ - valdo „Nema 17“
- NEMA 17 - 10 $ - pasuka sraigtą taip, kad maistas būtų išleistas
- RTC (DS1307) - 10 $ - duoda laiko
- 12 V maitinimo šaltinis - 5 USD - gali viską
- „Mini Breadboard“- skirta papildomai laidams
- Trumpieji laidai - jungia viską
- Moterų ir vyrų laidai - jungia viską
Techninė įranga:
- 3D spausdinimo siūlas - skirtas 3D spausdintuvui
- 2 M4 varžtai - laikykite pagrindo plokštę
- 4 Nema 17 varžtai - laikykite nema žemyn
- PVC T 48 mm vidinis matmuo 66 mm išorinis matmuo - 3 USD
Įrankiai:
- 3D spausdintuvas
- Grąžtas
- Lituoklis
1 žingsnis: dizaino apžvalga
Naminių gyvūnėlių lesyklėlės dizainas yra labai paprastas. Bunkeris eina ant PVC T viršaus. Tada ant PVC T užpakalinės dalies (kaip parodyta paveikslėlyje) yra dangtelis, prie kurio pritvirtinta „Nema 17“. Tada „Nema 17“bus įstumtas į sraigto galą, kurį galima pamatyti aukščiau, o varžtas eis į šoną, kad jį laikytų vietoje, kad nesugadintų viršuje esančios skylės!
Tada sraigtas tiesiog išstums maistą iš vamzdžio ir į dubenį!
2 žingsnis: kodo apžvalga
„RTC & Stepper“turi biblioteką „RTClib.h“ir „Stepper.h“, kuri prideda supaprastintą „RTC & Stepper“kodą. Jei teiginiai yra labai paprasti, sakoma, jei valandos ir minutės yra lygi minėtam laikui, jis suks nema, kuri išleis maistą. Likusią kodo dalį labai lengva suprasti net tiems, kurie turi patirties dieną.
3 žingsnis: „Nema 17“pritvirtinimas prie pagrindo plokštės ir sraigto
Pirmiausia turite paimti pagrindo plokštę ir pritvirtinti ją prie „Nema 17“naudodami iš anksto paruoštas skylutes pagrindinėje plokštėje. Kai tai padarysite, norite pritvirtinti sraigtą prie „Nema“naudodami galinę skylę. Tada prijunkite pagrindo plokštę su sraigtu ir pritvirtinta Nema, tada įsukite M2 varžtus į kiekvieną pusę.
4 žingsnis: L298N ir RTC prijungimas
Šis žingsnis parodys, kaip prijungti L298N ir RTC
Pradėsime nuo 8, 9, 10, 11 kaiščių prie L298N
- 8 kaištis (baltas) prie IN1
- 9 kaištis (violetinė) į IN2
- 10 kaištis (rožinė) iki IN3
- PIN 11 (geltona) į IN4
Toliau prijungsime „Nema 17“prie „L298N“
- OUT1 iki 1 NEMA
- OUT2 iki 2 NEMA
- OUT3 iki 3 NEMA
- OUT4 iki 4 NEMA
12v ir „Arduino“prijungimas prie L298N (nepavyko rasti 12V, todėl įsivaizduokite 9V bateriją kaip maitinimą)
- Voltai iki 12V
- Žemė iki GND
- Nuo 5V iki 5V ant duonos lentos
RTC prijungimas prie „Arduino“
- GND į GND
- Nuo 5V iki 5V ant duonos lentos
- SDA - A5
- SCL į A4
Jumper Pins
Visi jungiamieji kaiščiai turėtų būti L298N
5 žingsnis: kodavimas su komentarais
Aukščiau esančiuose paveikslėliuose kodas aiškesnis
// Vardas: Parkeris Frederikas
// Projekto pavadinimas: Auto Pet Feeder // Data: 2020 m. Lapkričio 10 d., Antradienis // Mokytojas: M. Bonisteel // Aprašymas: Maitinkite savo augintinius nurodytu laiku!
// Liberalai dalykams, kuriuos naudojau #include #include #include "RTClib.h"
RTC_DS1307 rtc; // Sako, ką naudoja RTC
// Čia jūs nustatote maisto laiką
// Valandos int mornFeedTime = 12; int nightFeedTime = 7; // Minutės int mornFeedTimeM = 29; int nightFeedTimeM = 00; // Sekundės int mornFeedTimeS = 20; int nightFeedTimeS = 00;
char daysOfTheWeek [7] [12] = {"Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis"}; // Leidžia įprastoms dienoms virsti savaitės dienomis
const int feed = 200; // Tai yra jūsų veiksmai, taigi kiek kartų norite, kad jis suktųsi
Stepper myStepper (feed, 8, 9, 10, 11); // Jūsų smeigtukai Nema 17 ir daugeliui kitų žingsnių
void setup () {Serial.begin (9600);
while (! Serial); // Jei RTC neveikia, jis jį parodys serijos ekrane, jei (! Rtc.begin ()) {Serial.println ("Nepavyko rasti RTC"); tuo tarpu (1); }
// Tai parodys, ar veikia realiojo laiko laikrodis, ir parodys jį serijiniame ekrane, jei (! Rtc.isrunning ()) {Serial.println ("RTC veikia!");
rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Tai užtruks jūsų kompiuterio laiką ir naudos jį RTC
// Jei norite, kad vietoj kompiuterio laiko būtų nustatytas laikas, tai galite padaryti čia //rtc.adjust(DateTime(2020, 10, 29, 8, 28, 0)); // Metai/mėnuo/diena/valanda/minutė/sekundė} myStepper.setSpeed (200); // Greitis, kuriuo norite pasukti}
void loop () {DateTime now = rtc.now ();
// Tai padarys šiuos kintamuosius tą valandą, kuri yra dabar ir tt int hr = now.hour (); int mi = dabar.minute (); int se = dabar.sekundė ();
// Koduokite taip, kad nustatytu laiku jis išleistų maistą ir jis suktųsi 5 kartus, jei tai būtų rytinis pašaras
if (hr == mornFeedTime && mi == mornFeedTimeM && mornFeedTimeS == se) {Serial.println ("Pusryčiai!"); myStepper.step (-sklaidos kanalas); vėlavimas (700);
myStepper.step (-sklaidos kanalas); vėlavimas (700);
myStepper.step (-sklaidos kanalas); vėlavimas (700);
myStepper.step (-sklaidos kanalas); vėlavimas (700);
myStepper.step (-sklaidos kanalas); vėlavimas (700);
myStepper.step (-sklaidos kanalas); vėlavimas (700);
myStepper.step (-sklaidos kanalas); vėlavimas (700);
}
// Koduokite taip, kad nustatytu laiku jis išleistų maistą ir suktųsi 5 kartus, tai yra naktinis pašaras
if (hr == nightFeedTime && mi == nightFeedTimeM && nightFeedTimeS == se) {Serial.println ("Vakarienė!"); myStepper.step (-sklaidos kanalas); vėlavimas (700);
myStepper.step (-sklaidos kanalas); vėlavimas (700);
myStepper.step (-sklaidos kanalas); vėlavimas (700);
myStepper.step (-sklaidos kanalas); vėlavimas (700);
myStepper.step (-sklaidos kanalas); vėlavimas (700);
myStepper.step (-sklaidos kanalas); vėlavimas (700);
myStepper.step (-sklaidos kanalas); vėlavimas (700); }
// Tai parodys YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
Serijinis atspaudas (dabar.metai (), DEC); Serial.print ('/'); Serijinis atspaudas (dabar. Mėnuo (), DEC); Serial.print ('/'); Serijinis atspaudas (dabar.diena (), DEC); Serial.print ("("); Serial.print (daysOfTheWeek [now.dayOfTheWeek ()]); Serial.print (")"); Serijinis atspaudas (now.hour (), DEC); Serial.print (':'); Serijinis atspaudas (dabar.minutė (), DEC); Serial.print (':'); Serial.print (dabar.second (), DEC); Serial.println (); }
Svetainė, kurią naudojau RTC, ištryniau daugumą dalykų, išskyrus teiginius, kuriuose teigiama, ar RTC įjungtas, ar ne. Aš daugiausia naudojuosi šia svetaine norėdamas sužinoti, kaip programuoti RTC
Svetainė, kurią naudojau „Stepper“varikliui, tai padėjo man suprasti, kaip užprogramuoti žingsnį, kad aš paleisčiau. Tai tiesiog padėjo man suprasti, kaip jį koduoti
6 žingsnis: problemos ir kaip jas išspręsti
Turėjau keletą problemų
- Man reikėjo 12 V maitinimo šaltinio, aš turėjau tik 9 V bateriją, vieną radau ir ji buvo greitai išspręsta.
- Kai prijungiau L298N su NEMA 17, A ir A laidai buvo netinkami, todėl jis šiek tiek drebėjo. Aš tai tiesiog pataisiau, pakeisdamas laidus kitu būdu.
- Bandė kodą padaryti paprastesnį, nes if teiginyje myStepper.step (-feed); vėl ir vėl atrodė netvarkingai. Taigi turėjau jį pakeisti atgal.
- Turėjau netinkamo dydžio pagrindo plokštę, kaip parodyta paveikslėlyje, todėl turėjau šiek tiek 3D atspausdinti naują ir ji puikiai tiko!
- Mano problema yra tai, kad jis užstringa, nes sraigtas yra per mažas, todėl jį užstringa paprastas būdas, kurį galiu išspręsti, yra nedidelis sraigto padidinimas!
Rekomenduojamas:
Automatinis šunų tiektuvas !!: 4 žingsniai
Automatinis šunų tiektuvas !!: Lengvas, naudingas ir sveikas
Šunų šunų dresuotojas: 5 žingsniai
Šunų šunų dresuotojas: Pasak AKC, (https://www.akc.org/expert-advice/nutrition/how-many-times-a-day-should-a-dog-eat/) valgio porcijos dydis pašarai yra būtini šunims, o dėžutės dydis taip pat apribojo pašarų, kuriuos šuo galėjo suvalgyti per dieną, skaičių: „Veterinarija
„Alexa“valdomas šunų tiektuvas: 6 žingsniai (su nuotraukomis)
„Alexa“kontroliuojamas šunų šėrykla: tai mūsų šuo Bailey. Ji yra pasienio kolis ir Australijos galvijų šuo, todėl kartais ji yra protingesnė už savo gerovę, ypač kai reikia pasakyti laiką ir žinoti, kada ji turėtų valgyti vakarienę. Paprastai mes stengiamės ją pamaitinti apie 18 val
Automatinis šunų tiektuvas: 5 žingsniai
Automatinis šunų tiektuvas: tai žingsnis po žingsnio pamoka, kaip padaryti automatinį šunų tiektuvą naudojant „Arduino“. Tai puikiai tinka, jei didžiąją dienos dalį esate namuose. Šis prietaisas vietoj to, kad jūsų šuo turėtų visą dieną laukti maisto ar priversti antį namo jį maitinti, šis prietaisas
„Raspberry Pi“automatinis šunų tiektuvas ir tiesioginė vaizdo transliacija: 3 žingsniai
„Raspberry Pi“automatinis šunų tiektuvas ir tiesioginė vaizdo transliacija: tai mano „Raspberry PI“varomas automatinis šunų tiektuvas. Anksčiau dirbau nuo 11 iki 21 val. Mano šuo išprotėja, jei laiku jo nemaitinu. Naršydami „Google“įsigijote automatinius maisto tiektuvus, jų nėra Indijoje ir brangus importuojantis