Sadržaj:
- Korak 1: Zahtjevi hardvera
- Korak 2: Sigurnost
- Korak 3: Obrana
- Korak 4: Zabava
- Korak 5: IOT aplikacija Watson na IBM Bluemixu [prvi dio]
- Korak 6: Čvor Crveni tokovi
Video: Pregled: Sustav kućne zabave i sigurnosti: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
O aplikaciji
Ovaj IOT sustav je sustav 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, a slika se snima i postavlja na S3
- Ako je neovlašteno, dolazi odjeljak za obranu i LCD zaslon će reći da niste ovlašteni.
- Obrana
- Pritisnite gumb na nadzornoj ploči.
- Laserske kupole napadat će nasumičnim rafalom i brzinom.
- Zabava
- Ako se detektira kretanje, 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 se aplikacijom 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 zahtjevi
- Sigurnost - Kako stvoriti sigurnosni sustav koji koristi RFID ulaz i softver za prepoznavanje slika
- Obrana - Kako stvoriti lasersku kupolu
- Zabava - Kako stvoriti igru Simon -say
- IOT App Watson na IBM Bluemixu - Kako integrirati sve sustave u jednu nadzornu ploču
Samo naprijed i pristupite pdf datoteci za detaljnije objašnjenje o tome kako stvoriti ovaj projekt.
Korak 1: Zahtjevi hardvera
Ovo će vam trebati
-
Sigurnost
- 1 Malina Pi
- 1 LCD
- 1 RFID čitač
- 1 PiCam
- 2 RFID kartice/tipke
- X Ženski -> Muški prespojni kabeli
- Obrana
- 1 Malina Pi
- 2 10 ㏀ otpornik (za gumbe)
- 2 mikro servo
- 1 Modul laserskog odašiljača 650nm
- 2 Pritisnite gumb
- 1 zujalica
- 3 male gumice/vezice za kablove (za učvršćivanje)
- X Ženski -> Muški prespojni kabeli
- X obični kabeli za preskakanje
- 1 Tranzistor
- 1 kondenzator
- Zabava
- 1 Malina Pi
- 3 1 ㏀ Otpornik (za LED diode)
- 1 10㏀ otpornik (za LDR)
- 3 LED diode (različite boje)
- 3 gumba
- 1 LDR
- 1 LCD
- 1 Pir senzor pokreta
- X Ženski -> Muški prespojni kabeli
- X obični kabeli za preskakanje
Korak 2: Sigurnost
Stvaranje hardvera sigurnosnog sustava
Spojite krugove kao što je prikazano na dijagramu frcanja
Izrada softvera sigurnosnog sustava
- Konfigurirajte AWS stvaranjem stvari
- Instalirajte AWS Python knjižnicu
- Instalirajte LCD knjižnicu
- Instalirajte RFID knjižnicu
- Postavi Firebase
- Postavljanje S3 pohrane
- Instalirajte Boto na Raspberry Pi
- Instalirajte AWS ClI na Raspberry Pi
- Izradite vjerodajnice AWS -a
- Konfigurirajte AWS
- Prenesite security.py u RPi
- Prenesite 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đer objavljuje na temi u aws MQTT
Korak 3: Obrana
Stvaranje laserske kupole Hardver
- Lasersku kupolu izrađujemo pomoću 2 serva i 1 laserskog modula
- Spojite krugove kao što je prikazano na dijagramu frcanja
Izrada softvera laserske kupole
Donji kôd učinit će da laserska kupola puca u nasumičnim smjerovima, nasumičnim rafalima i brzinom
laserturret.py
od gpiozero LED za uvoz, zujalica, gumb, vrijeme servoimporta od uvoza signala pauza uvoz slučajni
#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 snimljeno <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, duljina): #kreirajte funkciju "zujanje" i unesite joj visinu i trajanje)
ako (učestalost == 0):
vrijeme.spavanje (duljina) povratno razdoblje = 1,0 / frekvencija #frequency delayValue = period / 2 #izračunati vrijeme za polovicu vala numCycles = int (duljina * frekvencija) #broj valova = trajanje x frekvencija za i u rasponu (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 rasponu (0, len (melodija)): # Reproduciraj pjesmu noteDuration = pace/tempo zujanje (melodija , noteDuration) # Promijeni frekvenciju uz pauzu nota pjesme Između napomena = notaTrajanje * vrijeme pauze.spavanje (pauseBet BetweenNotes)
dok je istina:
laserturret () prekid;
Korak 4: Zabava
Stvaranje hardvera za zabavu
Kreiramo igru s gumbima Simon-say, koju morate slijediti prema LED lampicama koje svijetle i pritisnuti odgovarajuće tipke. On prenosi 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.
Stvaranje softvera za zabavu
zabava.py
uvoz RPi. GPIO kao GPIOimport navoja uvoz Vrijeme uvoz slučajnim uvoz OS uvoz tweepy od rpi_lcd uvoza LCD od potprocesa uvoza poziv Vrijeme uvoza sna od DATETIME uvoza datetime od firebase uvoz 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 (AUT) 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 SVJETLO = [40, 38, 36] GUMBI = [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 = Laž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 (SVJETLA, GPIO. OUT, početno = 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 (kanal): globalna trenutna_razina_razina, trenutna_razina_razina, is_game_over ako nije is_displaying_pattern, a nije is_won_current_level, a 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) vrijeme.spavanje (0,4) GPIO.izlaz (led, GPIO. LOW) def add_new_color_to_pattern (): global is_won_current, cur rent_step_of_level is_won_current_level = False 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 opseg: 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 i nije is_game_over: time.sleep (0.1) def reset_board_for_new_game (): global is_displaying_tern, is_won_current_level, is_game_over global_level = current_period GPIO.output (LIGHTS, GPIO. LOW) def send_data (score): lcd.text ('Kraj igre', 1) lcd.text ('Vidimo se uskoro!', 2) datestr = str (datetime. now ()) while True: print (datestr) print (score) data = {'Date': datestr, 'Score': score} rezultat = firebase.post ('/scores/', data) ispis (rezultat) ako je rezultat> 2: status = 'Netko 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 (current_level - 1) print ("Igra je gotova! n rezultat je {}").format (current_level - 1)) sleep (2) print ("Hvala što ste svirali! / n") lcd.text ('', 1) lcd.text ('', 2) break time.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
- Postavite vrstu uređaja pristupnika
- Postavljanje uređaja
Učinite korake 1 i 2 3 puta. Jedan RPi je za jedan odjeljak (Sigurnost/Obrana/Zabava)
Postavite Node-Red
Pokreni node-red
čvor-crveni početak
- Idite na paletu za upravljanje u izborniku 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
Obrana Rpi Čvor-Red
laserturret.txt
Zabava Rpi Node-Red
- zabava rpi flow.txt
- ldr rpi flow.txt
IBM Bluemix čvor-crveni
Preporučeni:
Sustav kućne sigurnosti: 5 koraka
Kućni sigurnosni sustav: Napravite vlastiti sigurnosni sustav za kuću pomoću Raspberry pi
Sustav sigurnosti automobila protiv alkohola: 3 koraka
Sustav zaštite od alkohola u automobilu: Sada se dnevno dogodi mnogo nesreća zbog vožnje u pijanom stanju i moraju zaustaviti ljude da voze nakon pijanog stanja. Sigurnosni sustav za automobile s alkoholom pruža sigurnosni sustav koji sprječava takve nesreće u alkoholiziranom položaju. Ovaj sustav koristi senzori i korištenje
Arduino LCD sustav upozorenja o požarnoj sigurnosti: 9 koraka
Arduino LCD sustav upozorenja o požarnoj sigurnosti: Ovo je studentski projekt koji kombinira funkcije LCD zaslona, zujalice, RGB i DHT osjetnika temperature. Trenutna temperatura okoline prikazuje se i ažurira na LCD zaslonu. Poruka ispisana na LCD zaslonu obavještava
Sustav zabave Super Wood: 9 koraka (sa slikama)
Sustav zabave Super Wood: S ponosom predstavljam svoje potpuno ispravne drvene sustave zabave Super Nintendo. Prije nego što sam objavio svoj priručnik o tome kako izgraditi drveni Super Nintendo gamepad, a sada je vrijeme da vam pokažem kako izgraditi konzolu. Drveno kućište izrađeno je od više
Kako napraviti zvučni sustav u košarici za ulične zabave: 10 koraka
Kako napraviti zvučni sustav u košarici za ulične zabave: Ova uputa pokazat će vam korake za stvaranje samostalnog mobilnog zvučnog sustava u košarici. Ova postavka može se koristiti za sve vrste javnih okupljanja, uključujući prosvjede, ulične plesne zabave, parkiranje na puno rap bitaka, pa čak i nadmašene