Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Tämä on projektini automaattisesta lemmikkieläinten syöttölaitteesta. Nimeni on Parker, olen luokalla 11 ja tein tämän projektin 11. marraskuuta 2020 CCA: na (Course Culminating Activity) tässä projektissa. Voit valita ajan, jonka voit muuttaa. Ruoka annostellaan ruuvin läpi ja ruokkii lemmikkisi!
Tarvikkeet
Elektroniikka:
- Arduino UNO
- L298N - 10 $ - Ohjaa Nema 17: tä
- NEMA 17 - 10 $ - Kierrä ruuvia niin, että ruoka jakautuu
- RTC (DS1307) - 10 $ - antaa aikaa
- 12 V: n virtalähde - 5 dollaria - Virtalähde kaikkeen
- Mini Breadboard - lisää johdotustilaa
- Jumper Johdot - Yhdistää kaiken
- Naaras -urosjohdot - Yhdistää kaiken
Laitteisto:
- 3D -tulostuslanka - 3D -tulostimelle
- 2 M4 ruuvia - Pidä pohjalevyä paikallaan
- 4 Nema 17 pulttia - Pidä nema painettuna
- PVC T 48mm sisämitta 66mm ulkomitat - 3 $
Työkalut:
- 3D tulostin
- Porata
- Juotosase
Vaihe 1: Yleiskatsaus suunnitteluun
Lemmikkieläinten syöttölaitteen rakenne on hyvin yksinkertainen. Säiliö menee PVC T: n päälle. Sitten PVC T: n takaosaan (kuten kuvassa) tulee kansi, johon on kiinnitetty Nema 17. Sitten Nema 17 työnnetään ruuvin takaosaan, joka näkyy yllä ja pultti menee sivulle pitämään sitä paikallaan, jotta se ei vääristä yllä näkyvää reikää!
Sitten ruuvi yksinkertaisesti työntää ruuan putkesta kulhoon!
Vaihe 2: Koodin yleiskatsaus
RTC & Stepperillä on kirjasto nimeltä RTClib.h ja Stepper.h, joka lisää yksinkertaistetun koodin RTC & Stepperille. Jos lausunnot ovat hyvin yksinkertaisia, sen sanonta, jos tunti ja minuutit ovat yhtä suuret kuin mainittu aika, se pyörittää nemaa, joka jakaa ruoan. Loput koodista ovat erittäin helppoja ymmärtää jopa niille, joilla on päivän kokemus.
Vaihe 3: Nema 17: n kiinnittäminen pohjalevyyn ja ruuviin
Ensin haluat ottaa pohjalevyn ja kiinnittää sen Nema 17 -laitteeseen pohjalevyn valmiiden reikien avulla. Kun olet valmis, haluat kiinnittää ruuvin Nemaan käyttämällä sen takareikää. Liitä sitten pohjalevy ruuvilla ja Nema kiinnitettynä ja ruuvaa sitten M2 -pultit molemmille puolille.
Vaihe 4: Johdotus L298N & RTC
Tässä vaiheessa kerrotaan, miten L298N ja RTC kytketään
Aloitamme L298N: n nastoilla 8, 9, 10, 11
- Nasta 8 (valkoinen) - IN1
- Nasta 9 (violetti) - IN2
- Nasta 10 (vaaleanpunainen) - IN3
- PIN 11 (keltainen) - IN4
Seuraavaksi yhdistämme Nema 17: n L298N: ään
- OUT1 - 1 NEMA: ssa
- OUT2 - 2 NEMA: ssa
- OUT3 - 3 NEMA: ssa
- OUT4 - 4 NEMA: ssa
12 V: n ja Arduinon kytkeminen L298N: ään (12 V ei löytynyt, joten kuvittele 9 V: n akku virtalähteeksi)
- Jännite 12V
- Maasta GND: hen
- 5–5 V leipätaululla
RTC: n yhdistäminen Arduinoon
- GND - GND
- 5–5 V leipätaululla
- SDA - A5
- SCL - A4
Neulepuserot
Kaikkien hyppytappien on oltava L298N: ssä
Vaihe 5: Koodaus kommenttien avulla
Koodi selkeämpi yllä olevissa kuvissa
// Nimi: Parker Frederick
// Projektin nimi: Automaattinen lemmikkieläinten syöttölaite // Päivämäärä: tiistai, 10. marraskuuta 2020 // Opettaja: M. Bonisteel // Kuvaus: Syötä lemmikkisi tiettyyn aikaan!
// Liberaalit käyttämistäni asioista #include #include #include "RTClib.h"
RTC_DS1307 rtc; // Sanoo, mitä RTC käyttää
// Tässä asetat ruuan ajan
// Tunnit int mornFeedTime = 12; int nightFeedTime = 7; // Minuuttia int mornFeedTimeM = 29; int nightFeedTimeM = 00; // Sekuntia int mornFeedTimeS = 20; int nightFeedTimeS = 00;
char daysOfTheWeek [7] [12] = {"sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"}; // Normaalit päivät muuttuvat viikonpäiviksi
const int syöte = 200; // Tämä on sinun vaiheesi, joten kuinka monta kertaa haluat sen pyöriä
Stepper myStepper (syöte, 8, 9, 10, 11); // Nastasi Nema 17: lle ja useimmille muille steppereille
void setup () {Serial.begin (9600);
while (! Sarja); // Jos RTC ei toimi, se näyttää sen sarjanäytössä, jos (! Rtc.begin ()) {Serial.println ("RTC: tä ei löytynyt"); kun taas (1); }
// Tämä kertoo, onko reaaliaikakello käynnissä vai ei, ja se näyttää sen sarjanäytössä, jos (! Rtc.isrunning ()) {Serial.println ("RTC on käynnissä!");
rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Tämä vie tietokoneesi aikaa ja käyttää sitä RTC: ssä
// Jos haluat asettaa tietyn ajan tietokoneen ajan sijaan, voit tehdä sen täällä //rtc.adjust(DateTime(2020, 10, 29, 8, 28, 0)); // Vuosi/kuukausi/päivä/tunti/minuutti/sekunti} myStepper.setSpeed (200); // Nopeus, jonka haluat sen kääntyvän}
void loop () {DateTime now = rtc.now ();
// Tämä tekee näistä muuttujista sen hetken tunnin jne. Int hr = now.hour (); int mi = nyt.minute (); int se = nyt.second ();
// Koodaa niin, että se annostelee ruoan asetettuna ajankohtana ja se pyörii 5 kertaa, mikäli kyseessä on aamuruoka
if (hr == mornFeedTime && mi == mornFeedTimeM && mornFeedTimeS == se) {Serial.println ("Aamiainen!"); myStepper.step (-syöttö); viive (700);
myStepper.step (-syöttö); viive (700);
myStepper.step (-syöttö); viive (700);
myStepper.step (-syöttö); viive (700);
myStepper.step (-syöttö); viive (700);
myStepper.step (-syöttö); viive (700);
myStepper.step (-syöttö); viive (700);
}
// Koodaa niin, että asetettuun aikaan se annostelee ruoan ja se pyörii 5 kertaa, tämä koskee yöaikaista rehua
if (hr == nightFeedTime && mi == nightFeedTimeM && nightFeedTimeS == se) {Serial.println ("Illallinen!"); myStepper.step (-syöttö); viive (700);
myStepper.step (-syöttö); viive (700);
myStepper.step (-syöttö); viive (700);
myStepper.step (-syöttö); viive (700);
myStepper.step (-syöttö); viive (700);
myStepper.step (-syöttö); viive (700);
myStepper.step (-syöttö); viive (700); }
// Tämä näyttää sarjassa YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
Sarjanjälki (nyt.vuosi (), DEC); Serial.print ('/'); Serial.print (nyt.kuukausi (), DEC); Serial.print ('/'); Serial.print (now.day (), DEC); Serial.print ("("); Serial.print (daysOfTheWeek [now.dayOfTheWeek ()]); Serial.print (")"); Serial.print (now.hour (), DEC); Serial.print (':'); Serial.print (now.minute (), DEC); Serial.print (':'); Serial.print (nyt.second (), DEC); Sarja.println (); }
RTC: ssä käyttämäni verkkosivusto Poistin useimmat muut asiat kuin if -lausunnot, joissa kerrotaan, onko RTC käytössä vai ei. Käytin pääasiassa tätä verkkosivustoa RTC: n ohjelmoinnin opettamiseen
Verkkosivusto, jota käytin askelmoottorilla, tämä auttoi minua ymmärtämään, kuinka ohjelmoin askelmallin toimimaan, en todellakaan pitänyt siitä mitään. Se vain auttoi minua ymmärtämään, miten se koodataan
Vaihe 6: Ongelmat ja niiden korjaaminen
Muutamia ongelmia minulla oli
- Tarvitsin 12 voltin virtalähteen, minulla oli vain 9 voltin akku, jonka löysin ja se ratkaistiin nopeasti.
- Kun kytket L298N: n NEMA 17: een, johdot olivat väärin kohdissa A ja A-, mikä teki siitä hieman tärisevää. Korjasin sen vain vaihtamalla johdot toiseen suuntaan.
- Yritti tehdä koodista yksinkertaisemman, koska if-lauseessa myStepper.step (-feed); kerta toisensa jälkeen näytti sotkuiselta. Joten minun piti vaihtaa se takaisin.
- Minulla oli väärän kokoinen pohjalevy, kuten kuvassa näkyy, joten minun piti tulostaa hieman uusi 3D ja se sopi täydellisesti!
- Ongelmani on, että se tukkeutuu, koska ruuvi on liian pieni, joten se tukkeutuu yksinkertaisella tavalla, jonka voin korjata suurentamalla ruuvia pienellä määrällä!