Sadržaj:
- Korak 1: Hardverski zahtjevi
- Korak 2: Sigurnost
- Korak 3: Odbrana
- Korak 4: Zabava
- Korak 5: IOT aplikacija Watson na IBM Bluemixu [prvi dio]
- Korak 6: Čvor Crveni tokovi
Video: Pregled: Kućna zabava i sigurnosni sistem: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
O aplikaciji
Ovaj IOT sistem je sistem za kućnu zabavu i sigurnost.
-
Sigurnost
- Dodirnite RFID kartica i ulaz se sprema u Firebase.
- Ako ste ovlašteni, možete mirno ući i slika se snima i postavlja na S3
- Ako je neovlašteno, dolazi odjeljak za odbranu i LCD ekran će reći da niste ovlašteni.
- Odbrana
- Pritisnite dugme na kontrolnoj tabli.
- Laserske kupole napadat će nasumičnim rafalom i brzinom.
- Zabava
- Ako se detektira pokret, igra će započeti.
- Nakon što korisnik odigra igru, rezultat se sprema u Firebase.
- LDR vrijednosti će se uzeti i ispisati na nadzornoj ploči.
Ovom aplikacijom se može upravljati i vidjeti je putem IBM Node-Red web poslužitelja. Koristimo AWS i IBM Cloud Services, a kao bazu podataka koristili smo Firebase.
Sažetak koraka koji će biti opisani
- Hardverski zahtevi
- Sigurnost - Kako stvoriti sigurnosni sistem koji koristi RFID ulaz i softver za prepoznavanje slika
- Odbrana - Kako stvoriti lasersku kupolu
- Zabava - Kako stvoriti igru Simon -say
- IOT App Watson na IBM Bluemixu - Kako integrirati sve sisteme u jednu nadzornu ploču
Samo naprijed i pristupite pdf datoteci za detaljnije objašnjenje o tome kako stvoriti ovaj projekt.
Korak 1: Hardverski zahtjevi
Ovo će vam trebati
-
Sigurnost
- 1 Raspberry Pi
- 1 LCD
- 1 RFID čitač
- 1 PiCam
- 2 RFID kartice/dugmad
- X Ženski -> Muški kratkospojni kablovi
- Odbrana
- 1 Raspberry Pi
- 2 10 ㏀ otpornik (za dugmad)
- 2 Mikro servo
- 1 Modul laserskog odašiljača 650nm
- 2 Pritisnite dugme
- 1 zujalica
- 3 male gumice/vezice za kablove (za učvršćivanje)
- X Ženski -> Muški kratkospojni kablovi
- X Obični kabeli za preskakanje
- 1 Tranzistor
- 1 Kondenzator
- Zabava
- 1 Raspberry Pi
- 3 1 ㏀ Otpornik (za LED diode)
- 1 10㏀ otpornik (za LDR)
- 3 LED diode (različite boje)
- 3 dugmeta
- 1 LDR
- 1 LCD
- 1 Pir senzor pokreta
- X Ženski -> Muški kratkospojni kablovi
- X Obični kabeli za preskakanje
Korak 2: Sigurnost
Kreiranje hardvera sigurnosnog sistema
Spojite krugove kao što je prikazano na dijagramu fritzinga
Kreiranje softvera sigurnosnog sistema
- Konfigurirajte AWS stvaranjem stvari
- Instalirajte AWS Python biblioteku
- Instalirajte LCD biblioteku
- Instalirajte RFID biblioteku
- Postavite Firebase
- Postavljanje S3 pohrane
- Instalirajte Boto na Raspberry Pi
- Instalirajte AWS ClI na Raspberry Pi
- Kreirajte AWS vjerodajnice
- Konfigurirajte AWS
- Otpremite security.py u RPi
- Otpremite imagerecognition.py u RPi
security.py je kôd koji će čitati rfid ulaze i otkriti je li korisnik uljez ili ne. Ako je korisnik prepoznat, slika će biti snimljena i postavljena na s3. Kod se takođe objavljuje u temi u aws MQTT
Korak 3: Odbrana
Stvaranje hardverske laserske kupole
- Lasersku kupolu izrađujemo pomoću 2 serva i 1 laserskog modula
- Spojite krugove kao što je prikazano na dijagramu fritzinga
Izrada softvera laserske kupole
Donji kod će omogućiti da laserska kupola puca u nasumičnim smjerovima, nasumičnim rafalima i brzinom
laserturret.py
sa gpiozero uvoz LED, zujalica, dugme, servoimport vreme od uvoza signala pauza uvoz nasumično
#led = LED (12)
#pir = MotionSensor (19, sample_rate = 5, queue_len = 1) buzzer_pin = Buzzer (17) attack = Button (5, pull_up = False) #reset = Button (6, pull_up = False) servo1 = Servo (18) servo2 = Servo (24)
def ledON ():
led.on () print ("LED je uključen") def ledOFF (): led.off () print ("LED je isključen")
def fire ():
ispis ("oružje vruće") buzzer_pin.on () time.sleep (0.1) buzzer_pin.off ()
def laserturret ():
timeBetweenBurst = random.uniform (0.2, 1) timeBetweenShots = random.uniform (0.05, 0.2) servo1start = random.randrange (-1, 1) servo1end = random.randrange (-1, 1) servo2start = random.randrange (-1, 1) servo2end = random.randrange (-1, 1) numShots = random.randrange (5, 20) servo1change = (servo1end - servo1start)/numShots servo2change = (servo2end - servo2start)/numShots servo1.value = servo1start servo2.value = servo2start time.sleep (0.1) shot = 0 detail = [timeBetweenBurst, timeBetweenShots, servo1.value, servo2.value, numShots] ispis (detalj) dok je snimljen <numshots: shot+= "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" fire () = "" time.sleep (timebetweenshots) = "" time.sleep (timebetweenburst)
bilješke = {
'B0': 31, 'C1': 33, 'CS1': 35, 'D1': 37, 'DS1': 39, 'EB1': 39, 'E1': 41, 'F1': 44, 'FS1 ': 46,' G1 ': 49,' GS1 ': 52,' A1 ': 55,' AS1 ': 58,' BB1 ': 58,' B1 ': 62,' C2 ': 65,' CS2 ': 69, 'D2': 73, 'DS2': 78, 'EB2': 78, 'E2': 82, 'F2': 87, 'FS2': 93, 'G2': 98, 'GS2': 104, 'A2': 110, 'AS2': 117, 'BB2': 123, 'B2': 123, 'C3': 131, 'CS3': 139, 'D3': 147, 'DS3': 156, 'EB3 ': 156,' E3 ': 165,' F3 ': 175,' FS3 ': 185,' G3 ': 196,' GS3 ': 208,' A3 ': 220,' AS3 ': 233,' BB3 ': 233, 'B3': 247, 'C4': 262, 'CS4': 277, 'D4': 294, 'DS4': 311, 'EB4': 311, 'E4': 330, 'F4': 349, 'FS4': 370, 'G4': 392, 'GS4': 415, 'A4': 440, 'AS4': 466, 'BB4': 466, 'B4': 494, 'C5': 523, 'CS5 ': 554,' D5 ': 587,' DS5 ': 622,' EB5 ': 622,' E5 ': 659,' F5 ': 698,' FS5 ': 740,' G5 ': 784,' GS5 ': 831, 'A5': 880, 'AS5': 932, 'BB5': 932, 'B5': 988, 'C6': 1047, 'CS6': 1109, 'D6': 1175, 'DS6': 1245, 'EB6': 1245, 'E6': 1319, 'F6': 1397, 'FS6': 1480, 'G6': 1568, 'GS6': 1661, 'A 6 ': 1760,' AS6 ': 1865,' BB6 ': 1865,' B6 ': 1976,' C7 ': 2093,' CS7 ': 2217,' D7 ': 2349,' DS7 ': 2489,' EB7 ': 2489, 'E7': 2637, 'F7': 2794, 'FS7': 2960, 'G7': 3136, 'GS7': 3322, 'A7': 3520, 'AS7': 3729, 'BB7': 3729, 'B7': 3951, 'C8': 4186, 'CS8': 4435, 'D8': 4699, 'DS8': 4978}
def buzz (frekvencija, dužina): #kreirajte funkciju "zujanje" i unesite joj visinu i trajanje)
if (frekvencija == 0):
time.sleep (dužina) povratni period = 1.0 / frekvencija #frequency delayValue = period / 2 #izračunati vrijeme za polovinu talasa numCycles = int (dužina * frekvencija) #broj talasa = duratime x frekvencija za i u opsegu (numCycles): #pokretanje petlje od 0 do varijable "ciklusi" izračunato iznad buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)
def play (melodija, tempo, pauza, tempo = 0.800):
za i u dometu (0, len (melodija)): # Reproduciraj pjesmu noteDuration = tempo/tempo zujanje (melodija , noteDuration) # Promijeni frekvenciju uz pauzu nota pjesme Između napomena = nota trajanje * vrijeme pauze.spavanje (pauseBet BetweenNotes)
dok je True:
laserturret () prekid;
Korak 4: Zabava
Kreiranje hardvera za zabavu
Kreiramo igru sa gumbima Simon-say, koju morate slijediti prema LED lampicama koje svijetle i pritisnuti odgovarajuće tipke. Otprema rezultate i vremensku oznaku u Firebase NoSQL bazu podataka za daljnju upotrebu na nadzornim pločama.
Spojite krugove kao što je prikazano na dijagramu Fritzing.
Kreiranje softvera za zabavu
entertainment.py
uvoz RPi. GPIO kao GPIOimport put threading import random uvoz os uvoz tweepy od rpi_lcd uvoz LCD od podproces uvoz poziv iz vremena uvoz sna od datetime uvoz datetime od Firebase uvoza Firebase CONSUMER_KEY = 'h5Sis7TXdoUVncrpjSzGAvhBH' CONSUMER_SECRET = 'ZfDVxc4aTd9doGmBQO3HiSKKzxSTKT4C3g0B3AGx8eETCJm2rY' ACCESS_KEY = '988333099669901312- YDLEQN1weW2n1JP4lxJcFPppCsbvzQh 'ACCESS_SECRET =' K2IlUPur6jx7DO5S0HhhZW29H5AQFOvkMMevSsk9ZzwLk 'auth = tweepy. OAuthHandler (CONSUMER_KEY, CONSUMER_SECRET) auth.secure = True auth.set_access_token (ACCESS_KEY, ACCESS_SECRET) api = tweepy. API (auth) Firebase = firebase. FirebaseApplication (' https:// iotca2 -12f48.firebaseio.com ', nema) lcd = LCD () lcd.text (' Zabavite se! ', 1) lcd.text (' Sretno! ', 2) spavajte (1) # Crveno, Žuto, Zeleno LIGHTS = [40, 38, 36] DUGMETI = [37, 33, 35] NAPOMENE = ["E3", "A4", "E4"] # vrijednosti koje možete promijeniti koje utječu na brzinu igre = 0,5 # zastavice koje se koriste za signaliziranje igre status is_displaying_pattern = Netačno is_won_curr ent_level = False is_game_over = False # stanje igre current_level = 1 current_step_of_level = 0 pattern = def initialize_gpio (): GPIO.setmode (GPIO. BOARD) GPIO.setup (LIGHTS, GPIO. OUT, initial = GPIO. LOW) GPIO. postavljanje (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) za i u rasponu (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, verify_player_selection) def verify_player_selection (channel): global current_step_vel_vel_, is_game_over ako nije is_displaying_tern, a ne is_won_current_level i nije is_game_over: flash_led_for_button (channel) if channel == BUTTONS [pattern [current_step_of_level]: current_step_of_level += 1 if_ current_level_level flash_led_for_button (button_channel): led = LIGHTS [BUTTONS.index (button_channel)] GPIO.izlaz (led, GPIO. HIGH) time.sleep (0.4) GPIO.output (led, GPIO. LOW) def add_new_color_to_pattern (): global is_won_current, cur rent_step_of_level is_won_current_level = Netačno current_step_of_level = 0 next_color = random.randint (0, 2) pattern.append (next_color) def display_pattern_to_player (): globalni is_displaying_pattern is_displaying_pattern = ISTIČNI IZLAZ: GPIO.output (LIGHTS [pattern , GPIO. HIGH) time.sleep (speed) GPIO.output (LIGHTS [pattern , GPIO. LOW) time.sleep (speed) is_displaying_pattern = False def wait_for_player_to_repeat_pattern (): dok nije is_won_current_level, a ne is_game_over: time.sleep (0.1) def reset_board_for_new_game (): globalna_isplaying_tern, is_won_current_level, is_game_verge_telesna_razina = pogrešna_struja GPIO.izlaz (LIGHTS, GPIO. LOW) def send_data (rezultat): lcd.text ('Kraj igre', 1) lcd.text ('Vidimo se uskoro!', 2) datestr = str (datum i vrijeme. now ()) while True: print (datestr) print (score) data = {'Date': datestr, 'Score': score} rezultat = firebase.post ('/scores/', data) ispis (rezultat) ako je rezultat> 2: status = 'Neko je postigao pogodak' +(str (rezultat))+'na'+datestr+'!' api.update_status (status = status) break def start_game (): while True: add_new_color_to_pattern () display_pattern_to_player () wait_for_player_to_repeat_pattern () if is_game_over: send_data (trenutni_razina - 1) print ("Boja igre! rezultat je n" {}.format (trenutni_razina - 1)) spavanje (2) ispis ("Hvala na igri! / n") lcd.text ('', 1) lcd.text ('', 2) vrijeme prekida.sleep (2) def start_game_monitor (): t = threading. Thread (target = start_game) t.daemon = True t.start () t.join () def main (): try: os.system ('cls' if os.name == 'nt 'else' clear ') print ("Započni novu rundu! / n") initialize_gpio () start_game_monitor () konačno: GPIO.cleanup () if _name_ ==' _main_ ': main ()
Korak 5: IOT aplikacija Watson na IBM Bluemixu [prvi dio]
Postavite Blumix IoT uslugu
- Postavljanje vrste uređaja pristupnika
- Podesite uređaj
Uradite korake 1 i 2 3 puta. Jedan RPi je za jednu sekciju (Sigurnost/Odbrana/Zabava)
Postavite Node-Red
Pokrenite node-red
node-red start
- Idite na paletu za upravljanje u meniju hamburgera (gore desno)
-
Preuzmite sljedeće palete
- node-red-dashboard
- node-red-contrib-firebase
- node-red-contrib-ibm-watson-iot
Korak 6: Čvor Crveni tokovi
Preuzmite datoteke i izvezite u svoj node-red.
Sigurnosni čvor-crveno
nijedan
Odbrana Rpi čvor-crvena
laserturret.txt
Zabava Rpi Node-Red
- zabava rpi flow.txt
- ldr rpi flow.txt
IBM Bluemix čvor-crveni
Preporučuje se:
Domaći sigurnosni sistem pomoću fuzije senzora: 5 koraka
Domaći sigurnosni sistem koji koristi Sensor Fusion: Ideja iza ovog projekta je stvoriti jeftin i jednostavan za izradu sigurnosni senzor koji se može upozoriti kada vas neko pređe. Prvobitni cilj je bio stvoriti nešto što bi me moglo obavijestiti kad neko ode uz stepenice, ali i ja
Elektronski sigurnosni sistem sa RTC -om i korisničkim PIN kodom: 7 koraka
Elektronski sigurnosni sistem sa RTC -om i korisničkim PIN kodom: Zdravo momci! Ovo je projekt koji sam napravio pomoću mikrokontrolera za slike, njegov elektronički sigurnosni sistem sa PIN kodom sa satom u stvarnom vremenu i mogućnostima definiranja korisničkog koda koje definiše korisnik. Ova stranica sadrži sve detalje kako biste ga sami napravili
Sigurnosni sistem ključa za otiske prstiju: 8 koraka
Sigurnosni sistem ključeva za otiske prstiju: Ova aplikacija je korisna za osiguranje svakodnevnih ključeva (zaključavanje). Ponekad imamo neke uobičajene ključeve poput kuće, garaže, parkiranja između dvije ili više osoba. Na tržištu postoji niz biometrijskih sistema koji mogu
Napravite vlastiti GPS sigurnosni sistem za praćenje SMS -a: 5 koraka (sa slikama)
Napravite vlastiti GPS SMS sigurnosni sistem za praćenje: U ovom projektu ću vam pokazati kako kombinirati SIM5320 3G modul s Arduinom i piezoelektričnim pretvaračem kao senzor udara kako biste stvorili sigurnosni sistem za praćenje koji će vam poslati lokaciju vaše dragocjeno vozilo putem SMS -a kada
Sigurnosni sistem Pizero Motion Detect web kamere: 3 koraka
Sigurnosni sistem Pizero Motion Detect web kamere: Ovaj sistem koristi pizero, wifi dongle i staru web kameru u prilagođenom kućištu za šibice. Snima video zapise o otkrivanju pokreta pri 27 kadrova u sekundi o bilo kakvom značajnijem kretanju na mom prilazu. Zatim otprema isječke na dropbox račun. Takođe možete pregledati dnevnike i c