Hoe maak je een slimme prullenbak met Arduino?
De wereld beweegt snel, en de technologie beweegt ook mee op het gebied van elektronica. Alles in dit moderne tijdperk wordt slimmer. Waarom maken we de vuilnisbakken niet slim? Het is een veelvoorkomend probleem dat in onze omgeving wordt gezien dat de meeste vuilnisbakken van bovenaf bedekt zijn. Mensen voelen zich ongemakkelijk bij het aanraken van het deksel en het openen om hun uitslag erin te gooien. We kunnen dit probleem van sommige mensen oplossen door het deksel van de prullenbak te automatiseren.
Een Arduino en een ultrasone sensor samen met de servomotor kunnen worden geïntegreerd om een slimme prullenbak te maken. Als de bak vuilnis voor zich detecteert, opent deze automatisch zijn deksel en wordt het deksel na een vertraging van enkele seconden gesloten.
Hoe automatisch het deksel van de vuilnisbak openen en sluiten met Arduino?
Nu we de samenvatting van het project kennen, laten we verder gaan en beginnen met het verzamelen van meer informatie over de componenten, de werking en het schakelschema om onmiddellijk aan het project te beginnen.
Stap 1: De componenten verzamelen
Als u ongemak midden in een project wilt voorkomen, kunt u het beste een volledige lijst maken van alle componenten die we gaan gebruiken. De tweede stap, voordat u begint met het maken van het circuit, is om al deze componenten kort te bestuderen. Hieronder vindt u een lijst met alle componenten die we nodig hebben in dit project.
Stap 2: de componenten bestuderen
Nu we een volledige lijst van alle componenten hebben, gaan we een stap voorwaarts en gaan we door een korte studie van de werking van elk onderdeel.
Arduino Nano is een breadboard-vriendelijke microcontroller-kaart die wordt gebruikt om verschillende taken in een circuit te besturen of uit te voeren. We verbranden een C-code op Arduino Nano om het microcontrollerbord te vertellen hoe en welke bewerkingen moeten worden uitgevoerd. Arduino Nano heeft exact dezelfde functionaliteit als Arduino Uno, maar dan in een vrij klein formaat. De microcontroller op het Arduino Nano-bord is ATmega328p.als je geen Arduino Nano hebt, kun je ook Arduino Uno of Arduino Maga gebruiken.
HC-SR04-bord is een ultrasone sensor die wordt gebruikt om de afstand tussen twee objecten te bepalen. Het bestaat uit een zender en een ontvanger. De zender zet het elektrische signaal om in een ultrasoon signaal en de ontvanger zet het ultrasone signaal weer om in het elektrische signaal. Wanneer de zender een ultrasone golf uitzendt, reflecteert deze na een botsing met een bepaald object. De afstand wordt berekend door gebruik te maken van de tijd die het ultrasone signaal nodig heeft om van de zender te gaan en terug te komen naar de ontvanger.
EEN Servomotoris een roterende of lineaire actuator die in exacte stappen kan worden aangestuurd en verplaatst. Deze motoren verschillen van DC-motoren. Deze motoren maken een nauwkeurige regeling van hoek- of roterende bewegingen mogelijk. Deze motor is gekoppeld aan een sensor die feedback geeft over zijn beweging.
Stap 3: Inzicht in de werking
We maken een vuilnisbak waarvan het deksel automatisch open en dicht gaat en het is niet nodig om hem fysiek aan te raken. We zullen gewoon het afval voor de vuilnisbak moeten brengen. De ultrasone sensor detecteert automatisch het afval en opent het deksel met behulp van een servomotor. Als het deksel open is, gooien we de prullenbak in de prullenbak en als we klaar zijn, wordt het deksel na een vertraging van enkele seconden automatisch gesloten. Dit is het simpele werkingsprincipe achter dit project.
Stap 4: De componenten monteren
- Bevestig een breadboard aan de zijkant van een bak. Plaats er een Arduino Nano-bord in.
- Bevestig een ultrasone sensor voor de bak. de sensor moet iets naar boven wijzen met een kleine hellingshoek.
- Neem de servomotor en bevestig er een servo-arm in. Bevestig de servomotor op het gewricht van de bak en het deksel met behulp van hete lijm.
- Maak nu alle verbindingen door middel van verbindingsdraden. Verbind de Vin en de aarde van de motor en de ultrasone sensor met de 5V en aarde van Arduino. Verbind de triggerpin van de sensor met de pin2 en de echopin met de pin3 van de Arduino. Verbind de PWM-pin van de servomotor met de pin5 van de Arduino.
- Nu alle verbindingen van het circuit zijn gemaakt, zou het er als volgt uit moeten zien:
Stap 5: Aan de slag met Arduino
Als u nog niet bekend bent met de Arduino IDE, hoeft u zich geen zorgen te maken, want hieronder wordt een stapsgewijze procedure voor het instellen en gebruiken van de Arduino IDE met een microcontrollerbord uitgelegd.
- Download de nieuwste versie van Arduino IDE van Arduino.
- Sluit je Arduino Nano-bord aan op je laptop en open het configuratiescherm. klik in het configuratiescherm opHardware en geluid. Klik nu opApparaten en printers.Zoek hier de poort waarop uw microcontroller-kaart is aangesloten. In mijn geval wel COM14maar het is anders op verschillende computers.
- Klik op het menu Tool. en zet het bord op Arduino Nano uit het vervolgkeuzemenu.
- Stel in hetzelfde Tool-menu de poort in op het poortnummer dat u eerder in het Apparaten en printers.
- Stel in hetzelfde toolmenu de processor in op ATmega328P (oude bootloader).
- Om code te schrijven om de servomotoren te bedienen, hebben we een speciale bibliotheek nodig die ons helpt bij het schrijven van verschillende functies voor servomotoren. Deze bibliotheek is samen met de code bijgevoegd in de onderstaande link. Om de bibliotheek op te nemen, klikt u op Schets> Bibliotheek opnemen> ZIP toevoegen. Bibliotheek.
- Download de onderstaande code en plak deze in uw Arduino IDE. Klik op de uploaden knop om de code op uw microcontroller-bord te branden.
Klik hier om de code te downloaden.
Stap 6: de code begrijpen
De code is redelijk goed becommentarieerd, maar toch wordt het hieronder kort uitgelegd.
1. Bij de start is er een bibliotheek meegeleverd zodat we ingebouwde functies kunnen gebruiken om de servomotor te bedienen. Twee pinnen van het Arduino Nano-bord worden ook geïnitialiseerd, zodat ze kunnen worden gebruikt voor de trigger- en echopin van de ultrasone sensor. Er is ook een object gemaakt zodat het gebruikt kan worden om waarden voor de servomotoren in te stellen. Er worden ook twee variabelen gedeclareerd, zodat de waarde van de afstand en tijd van het ultrasone signaal kan worden opgeslagen en vervolgens in de formule kan worden gebruikt.
#inclusief// Inclusief bibliotheek voor servomotor servoservo; // Declareer een object voor servomotor int const trigPin = 2; // Verbind pin2 van arduino met triggers van ultrasone sensor int const echoPin = 3; // Verbind pin3 van arduino met echo van ultrasone sensor int duur, afstand; // Declareer variabelen om de afstand en het type van het ultrasone signaal op te slaan
2. leegte setup ()is een functie waarin we de pinnen van het Arduino-bord initialiseren om te worden gebruikt als INPUT of OUTPUT. De triggerpin wordt gebruikt als uitvoer en een echopin wordt als invoer gebruikt. We hebben het object gebruikt servo-, om de motor aan te sluiten op pin 5 van de Arduino nano. Pin5 kan worden gebruikt om het PWM-signaal te verzenden. De baudrate wordt ook in deze functie ingesteld. De baudrate is de bits per seconde waarmee de microcontroller met de externe apparaten communiceert.
leegte setup () {Serial.begin (9600); // instellen van de baudrate van de microcontroller pinMode (trigPin, OUTPUT); // trig-pin wordt gebruikt als output pinMode (echoPin, INPUT); // echo pin zal worden gebruikt als input servo.attach (5); // Sluit de servomotor aan op pin5 van arduino}
3. leegte lus ()is een functie die keer op keer in een lus wordt uitgevoerd. In deze lus wordt een ultrasone golf in de omgeving gestuurd en terug ontvangen. De afgelegde afstand wordt gemeten door de tijd te gebruiken die het signaal nodig heeft om de sensor te verlaten en er weer op terug te komen. Vervolgens wordt de voorwaarde dienovereenkomstig op de afstand toegepast.
void loop () {digitalWrite (trigPin, HIGH); // verzenden van een ultrasoon signaal in de omringende vertraging (1); digitalWrite (trigPin, LOW); // Meet de pulsingang in echopin-duur = pulseIn (echoPin, HIGH); // Afstand is de helft van de duur gedeeld door 29,1 (uit datasheet) afstand = (duur / 2) / 29,1; // if afstand minder dan 0,5 meter en meer dan 0 (0 of minder betekent meer dan bereik) if (afstand <= 50 && afstand> = 0) {servo.write (50); vertraging (3000); } anders {servo.write (160); }}
Nu we alle stappen kennen die we moeten doorlopen om dit geweldige project te maken, schiet op en geniet van het maken van je slimme prullenbak.