Hvordan bygge en Arduino Pest Repeller på Linux (del 1)

I denne todelte serien vi skal bygge en kul Arduino enhet som spiller lyder utløst av en bevegelsesdetektor. Jeg er sikker på at du kan tenke på mange søknader til dette: besøkende varsler, skremmer katter off kjøkken tellere, høres et varsel når du sovner i stolen og velte, nisje invasjon alarm ...

(Part 2 er tilgjengelig til å bygge en Arduino Pest Repeller på Linux (del 2))

Jeg liker det for å beskytte min hage fra sultne skadedyr. Her ute i min lille hjørne av verden vi mennesker okkupere fem prosent av fylket. Fettet hjort, stinkdyr, vaskebjørn, og resten av det lokale dyreriket som elsker hagen min kan jolly godt spise et annet sted.


Arduino er både en åpen embedded hardware plattform, og en åpen programvareplattform. Det er en flott introduksjon til innebygd programmering, elektronikk, robotikk, og rapid prototyping. For å fullføre dette prosjektet må du vite hvordan å lodde og de-solder, og hvordan du skal lese en skjematisk. Hvis du er ny på elektronikk og Arduino, så bør du studere disse først:

Weekend Prosjekt: Læring Ins og Outs av Arduino Weekend Prosjekt: Legge programmer til Arduino Arduino TutorialArduino Leksjon 1. Blink



Shopping List

Det er mange nettbutikker full av moro Arduino gear. Jeg handler på Adafruit Industries, Jameco, Sparkfun, og Digikey. Adafruit er en usedvanlig god ressurs full av flott utstyr, opplæring og produktdokumentasjon. Ca $ 250 kjøper alt du trenger for dette prosjektet, inkludert verktøy og lodding. Hvis du allerede har verktøy ditt materialer kostnadene er under $ 100. Du trenger:

Arduino Uno

WAVE skjold for Arduino, pluss et SD-kort og høyttaler. Høyttalere reddet fra PCer eller bærbare jobbe greatMaxBotix LV-EZ1 Ultralyd Range Finder

Hvis du kjøper en startpakke får du nyttige tilleggsfunksjoner. Det er alltid godt å ha ekstra ting.

WAVE skjoldet kommer un-montert, så du trenger for å sette det sammen. Et vanlig problem er å vite hvor du skal lodde høyttalerledningene. Hvis du studerer WAVE styret skjematisk du se at høyttalerutgangen er de to pinnene rett bak hodetelefonutgang. I figur 3 ser du svarte og røde høyttalerkablene loddet til høyttalernålene. Det spiller ingen rolle hvilken ledning går på hvilke pin.


Eller du kan utelate høyttaleren og bruke hodetelefonkontakten i stedet, ved hjelp av en adapter for å koble til en høyttaler. Utgangs speaker pins levere en heidundrende 1/8 watt i 8 ohm eller 1/4 watt i 4 ohm. Hodetelefonkontakten har en litt kraftigere utgang. Du må røret din utgang via en ekstern forsterker for å få noen betydelig volum med én. Du kan få en brukbar volumnivået for innendørs bruk ved forsiktig å trykke en andre TS922 forsterker chip på toppen av den eksisterende på WAVE skjoldet.

Merk at WAVE skjoldet bare spiller mono 16-bits 22050 MHz WAV-filer og SD-kortet bør være formatert i FAT16 eller FAT32.

Testing Avspilling

Last ned WaveHC bibliotek og pakk det inn i /usr /share /Arduino /bibliotek /. Du kan teste fint WAVE bord med daphc.pde skissen som er inkludert i WaveHC biblioteket. Denne skissen spiller hver WAV-fil på SD-kortet og skriver ut filnavnene i Arduino IDE serie monitor. Så, selvfølgelig, trenger du noen lydfiler på SD-kortet. Feste nøye Wave skjold til Arduino. Koble Arduino til datamaskinen, laste daphc.pde skisse (Fil > Eksempler og gt; WaveHC), og hvis den spilles, hurra! Åpne Serial Monitor for å se meldingene som skisse runs (figur 4). Hvis den ikke gjør det så får du øve feilsøking



Feste MaxBotix Sonar avstandsmåler

MaxBotix er mer enn en enkel bevegelsesdetektor.; Det er en sonar avstandsmåler med et område på 6 til 254 inches. Den sender ut en høyfrekvent (42kHz) lyd og måler hvor lang tid det tar for et ekko å sprette tilbake. Denne målingen er av spenning, slik at høyere spenning jo lenger bort gjenstanden. Dette er ikke et super-presisjon avstandsmåler, men det er nøyaktig nok for våre formål. Den EZ1 har en smal stråle retningsdeteksjon. De andre Maxbotix sonaravstandsmålere har enda smalere deteksjonsklasser.

Grab din lodding jern og koble noen ledninger til GND, 5, og AN pinnene på EZ1 (figur 5).

Koble Arduino fra PCen og koble fra WAVE skjold fra din Arduino. Koble GND ledningen på EZ1 til GND på WAVE skjold, 5-5, og AN til analog I # 0 (figur 6). GND er jordledningen, og 5 er den 5-volts strømforsyning. WAVE skjold har 6 analoge innganger pins, som er passthroughs til Arduino styret. Disse er analog-til-digital (A /D) omformere, og brukes til å lese analoge sensorer. De kan også brukes til generell inngang og utgang (GPIO)


Nå la oss teste EZ1 med denne enkle skissen.

 //ez1_measure.ino; skrive ut i inches //hvor langt unna gjenstander er ugyldige setup () {Serial.begin (9600); } Void loop () {float a0value = analogRead (0); flyte inches = 0,496 * a0value; Serial.print ("Verdien fanget fra pin A0 er:"); Serial.println (a0value); Serial.print ("The avstand i inches er"); Serial.println (inches); forsinkelse (3000); } 

Last denne skissen og hold gjenstander foran sensoren på forskjellige avstander, og du vil lett se hvor nøyaktig den er. Det bør være innenfor en tomme eller så (figur 7).


De EZ1 Quickstart Guidedescribes den matematiske brukes til å konvertere spenning til en avstandsmåling. Men ved hjelp av formelen i Quickstart Guide er ikke nok, fordi EZ1 bruker en 9-bit faktor, og Arduino A /D-konverter er 10-bit. Den 9-bit ligningen ser slik ut:


 (5.0V /512) = 0.009766V per inch * 1 000 = 9.766mV per inch 

Den 9-bit formel deler spenning av den maksimale binære verdien (9 bits = 2 9 = 512), og da jeg multiplisere med 1000 til konvertere disse Itty Bitty brøk volt til millivolt fordi det er lettere å lese.

Så hvordan å konvertere til 10-bit? Multiplisere med to, fordi en mer bit er 2 10 = 1024. Så konvertering til 10-bit skiller volt ved maksimal binær verdi av 1024 biter, deretter multipliserer med to for å få tilsvarende 9-biters verdi, og deretter konverteringen til millivolt:

 (5.0V /1024) * 2 = 0.009765625V per inch = * 1000 = 9.765mV per inch 

Hvordan konvertere dette til inches? Ta den maksimale rekkevidden av EZ1, 254 inches, dividere med maksimal digital verdi, 1024, multiplisere med to, og da har vi 0,496. Deretter multiplisere 0,496 av verdien fanges fra Analog Pin # 0, og du har en avstandsmåling i inches.

Det er en god start for dette prosjektet, så vi stopper her. Se del to for full Arduino skisse og endelige detaljene om å sette opp enheten.