Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
I denne opplæringen lærer vi om hvordan du lager en smart søppelbøtte ved hjelp av Magicbit dev. brett med Arduino IDE. La oss komme i gang.
Rekvisita
- Magicbit
- USB-A til mikro-USB-kabel
- Ultralydssensor - HC -SR04 (Generisk)
- SG90 Mikroservomotor
Trinn 1: Historie
Før vi går inn i prosjektet, kan vi se på hva som er Smart søppelkasse. Det er en eller flere søppelkasser i hvert hjem. I mange ganger dekket du det. Fordi det vil lukte hjemme. Så når du vil legge søppel i søppelkassen, må du åpne den. Men hvis, når du går nær søppelkassen for å legge søppelet og det automatisk åpner dekselet, så ser det ut. Gal aaa …. så det er den smarte søppelkassen.
Trinn 2: Teori og metodikk
Teorien er veldig enkel. Når du går nær søppelkassen, vil den oppdage deg. Hvis avstanden mellom deg og søppeldunken er mindre enn en definert avstand, åpnes dekselet til søppeldunken automatisk. For å fullføre begge disse objektene bruker vi HC-SRO4 ultralydssensor og små servomotorer. Du kan få hvilken som helst type digital servomotor.
Trinn 3: Maskinvareoppsett
For dette prosjektet brukte vi hovedsakelig tre maskinvarekomponenter. De er Magicbit, servomotor og ultralydsensor. Forbindelsen mellom alle disse delene er vist i figuren ovenfor.
Ultralydsensor brukte 3,3 v for oppstart. Derfor brukte vi høyre nedre port på Magicbit -kortet for å koble ultralydssensor til Magicbit. Men servomotor brukes 5V for riktig bruk, derfor brukte vi venstre nedre port for å koble servomotor med Magicbit. I dette tilfellet bruker vi Magic bit servokontaktmodul. Men hvis du ikke har den modulen, kan du bruke tre jumper -ledninger til å koble 5V til 5V, Gnd til Gnd og signalpinne til 26 -pins på magicbit.
La oss nå se på den mekaniske siden av prosjektet vårt. For å åpne dekselet bruker vi en veldig enkel spakemekanisme. Vi koblet den ene siden servo håndklemmen til servoen. Deretter koblet vi hjørnehullet i klippet og søppeldekselet med sterk metalltråd. Metalltråden kan rotere med hensyn til servoklips og søppelkassedeksel. Ved å studere toppbilde og video kan du bygge det veldig enkelt.
Trinn 4: Programvareoppsett
Programvaredelen er også veldig enkel. La oss se på Arduino IDE -koden og hvordan den koden fungerer.
For å kjøre servo bruker vi ESP32 servobibliotek. Dette biblioteket inkluderer nesten i magic bit board manager i Arduino IDE. For å håndtere ultralydssensor bruker vi newPing -biblioteket. Dette kan lastes ned fra følgende lenke.
bitbucket.org/teckel12/arduino-new-ping/d…
Last ned zip -filen og gå til verktøy> inkluder bibliotek> legg til zip -bibliotek i Arduino. velg nå den nedlastede zip -filen til det nye pin -biblioteket. i koden deklarerer vi først servo- og ultralydsensorbiblioteker. I sløyfefunksjonen sjekker vi alltid avstanden fra søppelkasse til nærmeste frontobjekt. Hvis det rivjernet er 200, er avstandsutgangen til biblioteket 0. Når avstanden er lavere enn 60 cm, utføres den for sløyfe for å åpne dekselet ved å rotere servo. Hvis avstanden er større enn 60 cm, vil lokket settes ned. Ved å bruke boolsk variabel sjekker vi alltid tilstanden til omslaget. Hvis dekselet er nede, åpnes bare det. Også omvendt. Velg nå riktig COM -port og tavle som magcibit, og last deretter opp koden. Nå er din smarte søppelbøtte klar til bruk.
Trinn 5: Arduino -kode
#inkludere
#define TRIGGER_PIN 21 #define ECHO_PIN 22 #define MAX_DISTANCE 200 NewPing ekkolodd (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); #include // inkludere servobibliotek int distanse; Servo RadarServo; ugyldig oppsett () {Serial.begin (115200); RadarServo.attach (26); // Definerer hvilken pin som er servomotoren festet forsinkelse (3000); } void loop () {// roterer servomotoren fra 15 til 165 grader for (int i = 0; i <= 180; i ++) {RadarServo.write (i); forsinkelse (50); distance = sonar.ping_cm (); // Kaller en funksjon for å beregne avstanden målt av ultralydsensoren for hver grad for (int j = 0; j0) {pause; } Serial.print (i); // Sender gjeldende grad til Serial Port Serial.print (","); // Sender tilleggstegn rett ved siden av den forrige verdien som trengs senere i Processing IDE for indeksering av Serial.print (j); // Sender gjeldende grad til Serial Port Serial.print ("*"); Serial.print (1); // Sender avstandsverdien til Serial Port Serial.print ("/"); // Sender tilleggstegn rett ved siden av den forrige verdien som trengs senere i Processing IDE for indeksering av Serial.print (avstand); // Sender avstandsverdien til Serial Port Serial.print ("."); // Sender tilleggstegn rett ved siden av den forrige verdien som trengs senere i Processing IDE for indeksering}} // Gjentar de foregående linjene fra 165 til 15 grader for (int i = 180; i> = 0; i-) {RadarServo.skrive (i); forsinkelse (50); avstand = sonar.ping_cm (); for (int j = 75; j> = 0; j- = 25) {if (i == 180 && (j == 75 || j == 50 || j == 25)) {fortsette; } Serial.print (i); // Sender gjeldende grad til Serial Port Serial.print (","); // Sender tilleggstegn rett ved siden av den forrige verdien som trengs senere i Processing IDE for indeksering av Serial.print (j); // Sender gjeldende grad til Serial Port Serial.print ("*"); Serial.print (-1); // Sender avstandsverdien til Serial Port Serial.print ("/"); // Sender tilleggstegn rett ved siden av den forrige verdien som trengs senere i Processing IDE for indeksering av Serial.print (avstand); // Sender avstandsverdien til Serial Port Serial.print ("."); // Sender tilleggstegn rett ved siden av den forrige verdien som trengs senere i Processing IDE for indeksering}}}