Reklaam

Tuvastage liikumine ja hirmutage seepeale sissetungijast kõrgete helisignaalide ja vilkuvate tuledega. Kas see kõlab lõbusalt? Muidugi. See on tänase Arduino projekti eesmärk, mis sobib algajatele. Kirjutame kirjutades täiesti nullist ja katsetades, nii et loodetavasti saate juba aimu installida, kui saate lihtsalt aimu, kuidas see kõik toimub.

Kohustustest loobumine: see ei kaitse tegelikult teie maja. See võiks Andke oma õele vastik šokk, kui ta teie tuppa hiilib.

Teil on vaja:

  • Arduino
  • Ultraheli "ping" andur, ma kasutan HC-SR04 Parem oleks PIR, kuid need on kallid. Pingianduri saab salaja ukseavasse paigutada ja teenida endiselt sama põhitööd ning see on ainult 5 dollarit
  • Piezo sumin
  • LED-ribavalgusti, sama juhtmega, mida kasutasime tagasi selles projektis Looge meediumikeskusele oma dünaamiline ümbritsev valgustusKui vaatate arvutis või meediumikeskuses palju filme, olen kindel, et olete seisnud silmitsi valgustusprobleemidega; kas lülitate kõik tuled täielikult välja? Kas hoiate neid täie hooga? Või ... Loe rohkem .
instagram viewer

Selle projekti ettevalmistamise ajal ärge eemaldage iga kord kõike - jätkake viimast plokki. Selleks ajaks, kui jõuate jaotisse “Alarmsüsteemi kodeerimine”, peaksid teil olema kõik bitid ja tükid ühendatud ja otsima midagi sellist:

valmis juhtmestik

Vilkuvad tuled

Kasutage ühendusskeemi sellest projektist Looge meediumikeskusele oma dünaamiline ümbritsev valgustusKui vaatate arvutis või meediumikeskuses palju filme, olen kindel, et olete seisnud silmitsi valgustusprobleemidega; kas lülitate kõik tuled täielikult välja? Kas hoiate neid täie hooga? Või ... Loe rohkem oma LED-riba haakida; ärge vahetage tihvte, kuna meil on vaja PWM-väljundit. Kasutage see kood juhtmestiku kiireks testimiseks. Kui kõik läheb hästi, peaks teil olema järgmine:

led-rgb-test

Kauguse andur

Moodulist SR04 leiate 4 tihvti. VCC ja GND minge vastavalt + 5 V raudteele ja maapinnale; TRIG on sonari signaali saatmiseks kasutatav tihvt, pange see tihvti 6 külge; ECHO kasutatakse signaali tagasi lugemiseks (ja seetõttu kauguse arvutamiseks) - pange see 7 peale.

sr04

Asjade uskumatult lihtsaks tegemiseks on olemas raamatukogu, mida saame kasutada NewPing. Laadige alla ja paigutage oma Arduino's Raamatukogu ja jätkake IDE-d enne jätkamist. Testige kasutades see kood; avage jadamonitor ja veenduge, et kiiruseks on seatud 115200 baud. Mis tahes õnne korral peaksite nägema, et mõned vahemaa mõõtmised saadetakse teile üsna suure kiirusega. Võite leida variatsiooni 1 või 2 sentimeetrit, kuid see on hea. Proovige käia anduri ees, liigutades seda üles ja alla, et jälgida muutuvaid näitu.

pingiväljund

Kood peaks olema üsna lihtsalt arusaadav. Stardis on mõni asjakohaste tihvtide deklaratsioon, sealhulgas maksimaalne vahemaa - see võib varieeruda sõltuvalt täpne andur, mis teil on, kuid seni, kuni teil on võimalik täpsusega alla ühe meetri saada, peaksite olema kenasti.

Selle testirakenduse ahelas kasutame ping () funktsioon sonaripingi saatmiseks, saades väärtuse millisekundites tagasi selle kohta, kui kaua väärtus tagasi tuli. Selle mõistmiseks kasutame konstantse väärtusega NewPing teeke US_ROUNDTRIP_CM, mis määratleb mitu mikrosekundit ühe sentimeetri läbimiseks. Pingide vahel on ka 50 ms viivitus, et vältida anduri ülekoormamist.

Piezo alarm

Piezo kristallsensor on lihtne ja odav helisignaal ning erinevate toonide tegemiseks saame kasutada PWM-i nööpnõela 3. Ühendage üks juhe pistikuga 3, teine ​​maandusrööpaga - sellel pole vahet, milline.

Kasutage see kood testida.

Ainus viis üsna ebameeldiva ja valju alarmi tapmiseks on pistikute tõmbamine. Koodi on natuke keeruline seletada, kuid see hõlmab siinuslainete kasutamist eristuva heli tekitamiseks. Niputage numbreid, et mängida erinevate toonidega.

Alarmsüsteemi kodeerimine

Nüüd, kui meil on kõik selle pusle tükid, ühendame need omavahel.

Minge edasi ja tehke uus visand, nn Äratus. Alustage kõigi muutujate ja nööpnõuete määratluste kombineerimisega, mis meil on testinäidetes seni.

# kaasata  // Valige, milliseid PWM-i võimelisi tihvte kasutatakse. #defineeri RED_PIN 10. #defineeri GREEN_PIN 11. #defineeri BLUE_PIN 9 #defineeri TRIGGER_PIN 6 // Arduino tihvt on ühendatud ultrahelianduri päästikutüübiga. #define ECHO_PIN 7 // Ultraheli anduri kajakinnitusega seotud Arduino tihvt. #defineerige MAX_DISTANCE 100 // Maksimaalne vahemaa, mille taha me pingutada tahame (sentimeetrites). #defineeri ALARM 3 ujuk sinVal; int toonVal; 

Alustage põhikirja kirjutamisest seadistamine () funktsioon - tegeleme praegu ainult tuledega. Lisasin 5-sekundise viivituse, enne kui põhisilmus käivitatakse, et anda meile natuke aega, et vajadusel teelt välja tulla.

void setup () {// seada pinModes RGB riba pinMode jaoks (RED_PIN, OUTPUT); pinMode (BLUE_PIN, VÄLJUND); pinMode (GREEN_PIN, VÄLJUND); // lähtestage tuled analogWrite (RED_PIN, 0); analogWrite (BLUE_PIN, 0); analogWrite (RED_PIN, 0); viivitus (5000); }

Kasutagem abistajafunktsiooni, mis võimaldab meil kiiresti ühe tulega RGB väärtuse välja kirjutada.

// abistaja funktsioon, mis võimaldab meil saata värvi ühe käsuga. tühine värv (signeerimata sigipunane, signeerimata söeroheline, signeerimata signe) // värvi genereeriv funktsioon. {analogWrite (RED_PIN, punane); analogWrite (BLUE_PIN, sinine); analoWrite (GREEN_PIN, roheline); }

Lõpuks koosneb meie ahel praegu lihtsast värvilisest välklambist punase ja kollase vahel (või, ükskõik, kui soovite, et teie äratus oleks - muutke lihtsalt RGB väärtusi).

tühine silmus () {värv (255,0,0); // punane viivitus (100); värv (255 255,0); // kollane viivitus (100); }

Laadige üles ja testige seda, et olla kindel õigel teel.

Integreerime nüüd vahemaa anduri, et need tuled sisse lülitada ainult siis, kui midagi asub näiteks 50 cm kaugusel (veidi vähem kui ukseraami laius). Oleme juba õiged tihvtid määratlenud ja raamatukogu importinud, seega enne teie seadistamine () funktsioon lisage selle realiseerimiseks järgmine rida:

NewPingi sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Nuppude NewPing häälestus ja maksimaalne vahemaa. 

Selle alla lisage muutuja, mis salvestab käivitatava või mitte käivitatava häire oleku, vaikeväärtusena muidugi vale.

tõeväärtus käivitatud = vale; 

Lisage rida reale seadistamine () funktsiooni, et saaksime jälgida väljundit jada- ja silumistes.

Seriaal.begin (115200); // Pingi tulemuste nägemiseks avage jadamonitor 115200 baud juures. 

Järgmisena nimetagem praegune silmus ümber alarm () - seda kutsutakse siis, kui häire on käivitatud.

tühine häire () {värv (255,0,0); // punane viivitus (100); värv (255 255,0); // kollane viivitus (100); }

Nüüd looge uus silmus () funktsiooni, mille käigus hangime uue pingi, loeme tulemusi ja käivitame häire, kui midagi tuvastatakse arvestivahemikus.

void loop () {if (käivitunud == true) {alarm (); } else {viivitus (50); // Ootage pingide vahel 50ms (umbes 20 ping / sek). 29 ms peaks olema lühim viivitus pingide vahel. allkirjastamata int uS = sonar.ping (); // Saada ping, hangi pingimise aeg mikrosekundites (uS). allkirjastamata kaugus = uS / US_ROUNDTRIP_CM; Serial.println (vahemaa); if (vahemaa <100) {käivitatud = tõene; } } }

Selgitan koodi lühidalt:

  • Alustuseks kontrollige, kas äratus on vallandatud, ja kui jah, siis lülitage häirefunktsioon välja (ainult tulede vilkumine).
  • Kui see pole veel käivitunud, hankige andurilt praegune näit.
  • Kui anduri näit on <100 cm, on midagi kiiret tagandanud (kohandage seda väärtust, kui see ilmub teie jaoks ilmselgelt liiga vara).

Enne kui tüütu piesosummuri lisame, proovige seda proovida.

Töötate? Suurepärane. Lisame nüüd selle summeri tagasi. Lisama pinMode juurde seadistamine () rutiin.

pinMode (ALARM, VÄLJUND); 

Seejärel lisage piezo-helisignaali alarmi funktsioon ():

jaoks (int x = 0; x <180; x ++) {// teisendades kraadid radiaanideks, saadakse siis sin väärtus sinVal = (sin (x * (3.1412 / 180))); // genereerib sageduse sin väärtusest toneVal = 2000+ (int (sinVal * 1000)); toon (ALARM, toneVal); }

Kui proovite sel hetkel kompileerida, siis võib teil tekkida tõrge - olen selle teadlikult jätnud, et saaksite näha mõnda tavalist probleemi. Sel juhul kasutavad nii NewPing kui ka standardtoonide teegid samu katkestusi - need on põhimõtteliselt vastuolulised ja nende parandamiseks pole vaja palju ära teha. Heldeke.

Pole siiski muret. See on tavaline probleem ja kellelgi on juba lahendus - laadige see alla ja lisage UusTone oma Arduino raamatukogude kausta. Kohandage oma programmi algust nii, et see hõlmaks järgmist:

# kaasata 

Ja kohandage rida:

 toon (ALARM, toneVal); 

kuni

 NewTone (ALARM, toneVal); 

selle asemel.

See selleks. Seadke oma magamistoa ukseavas äratus järgmise õnnetu võimaliku sissemurdja jaoks.

Või siis turske koer, kes tundus häiresignaalist täiesti vaba.

Kas teil on koodiga probleeme? Siin on täielik rakendus. Kui näete juhuslikke vigu, proovige need allpool kleepida ja ma näen, kas saan aidata.

Kujutise krediit: Tulekahjuhäire Flickri kaudu

Jamesil on tehisintellekti BSc ning ta on CompTIA A + ja Network + sertifikaadiga. Ta on MakeUseOfi juhtiv arendaja ja veedab oma vaba aega VR-i paintballi ja lauamänge mängides. Ta on lapsest peale arvutit ehitanud.