Turinys:
- 1 žingsnis: aparatinės įrangos reikalavimas
- 2 žingsnis: saugumas
- 3 žingsnis: gynyba
- 4 žingsnis: Pramogos
- 5 veiksmas: „IOT App Watson“„IBM Bluemix“[pirmoji dalis]
- 6 žingsnis: mazgas raudonas srautas
Video: Apžvalga: Namų pramogų ir saugumo sistema: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Apie Paraišką
Ši IOT sistema yra namų pramogų ir saugumo sistema.
-
Saugumas
- Bakstelėkite RFID kortelė ir įvestis išsaugoma „Firebase“.
- Jei turite leidimą, galite ramiai įeiti, o nuotrauka nufotografuojama ir įkeliama į S3
- Jei neleistina, įeina gynybos skyrius ir LCD ekranas pasakys, kad nesate įgaliotas.
- Gynyba
- Paspauskite mygtuką prietaisų skydelyje.
- Lazeriniai bokšteliai puls atsitiktine tvarka ir greičiu.
-
Pramogos
- Jei aptinkamas judesys, žaidimas prasidės.
- Kai vartotojas žaidžia žaidimą, rezultatas išsaugomas „Firebase“.
- LDR vertės bus paimtos ir išvestos prietaisų skydelyje.
Ši programa yra valdoma ir matoma per „IBM Node-Red“žiniatinklio serverį. Mes naudojame AWS ir „IBM Cloud Services“, o kaip duomenų bazę naudojome „Firebase“.
Apibūdinamų veiksmų santrauka
- Techninės įrangos reikalavimai
- Sauga - kaip sukurti apsaugos sistemą, kuri naudoja RFID įvestį ir vaizdo atpažinimo programinę įrangą
- Gynyba - kaip sukurti lazerinį bokštelį
- Pramogos - kaip sukurti žaidimą „Simonas sako“
- „IOT App Watson“„IBM Bluemix“- kaip integruoti visas sistemas į vieną prietaisų skydelį
Eikite į priekį ir pasiekite pdf failą, kad gautumėte išsamesnį paaiškinimą, kaip sukurti šį projektą.
1 žingsnis: aparatinės įrangos reikalavimas
Tai jums reikės
-
Saugumas
- 1 „Raspberry Pi“
- 1 LCD
- 1 RFID skaitytuvas
- 1 „PiCam“
- 2 RFID kortelės/mygtukai
- X Female -> Vyriški jungiamieji kabeliai
- Gynyba
- 1 „Raspberry Pi“
- 2 10 ㏀ rezistorius (mygtukams)
- 2 „Micro Servo“
- 1 650 nm lazerio siųstuvo modulis
- 2 Paspauskite mygtuką
- 1 garsinis signalas
- 3 mažos guminės juostos/kabelių kaklaraiščiai (tvirtinimui)
- X Female -> Vyriški jungiamieji kabeliai
- X Įprasti šuoliai
- 1 tranzistorius
- 1 kondensatorius
-
Pramogos
- 1 „Raspberry Pi“
- 3 1 ㏀ Rezistorius (šviesos diodams)
- 1 10㏀ rezistorius (LDR)
- 3 šviesos diodai (skirtingų spalvų)
- 3 mygtukai
- 1 LDR
- 1 LCD
- 1 Pir judesio jutiklis
- X Female -> Vyriški jungiamieji kabeliai
- X Įprasti šuoliai
2 žingsnis: saugumas
Apsaugos sistemos aparatūros kūrimas
Prijunkite grandines, kaip parodyta šlifavimo diagramoje
Apsaugos sistemos programinės įrangos kūrimas
- Konfigūruokite AWS sukurdami daiktą
- Įdiekite „AWS Python“biblioteką
- Įdiekite LCD biblioteką
- Įdiekite RFID biblioteką
- Nustatykite „Firebase“
- S3 saugyklos nustatymas
- Įdiekite „Boto“„Raspberry Pi“
- Įdiekite AWS ClI „Raspberry Pi“
- Sukurkite AWS kredencialus
- Konfigūruokite AWS
- Įkelkite security.py į RPi
- Įkelkite imagerecognition.py į RPi
security.py yra kodas, kuris skaitys RFID įvestis ir nustatys, ar vartotojas yra įsibrovėlis, ar ne. Jei vartotojas atpažįstamas, vaizdas bus nufotografuotas ir įkeltas į „s3“. Kodas taip pat skelbiamas „aws MQTT“temoje
3 žingsnis: gynyba
Lazerio bokšto aparatūros kūrimas
- Mes sukuriame lazerinį bokštelį naudodami 2 servo ir 1 lazerio modulį
- Prijunkite grandines, kaip parodyta šlifavimo diagramoje
Lazerinio bokšto programinės įrangos kūrimas
Žemiau pateiktas kodas privers lazerinį bokštelį šaudyti atsitiktinėmis kryptimis, atsitiktiniais pliūpsniais ir greičiu
laserturret.py
iš „gpiozero“importo šviesos diodas, garsinis signalas, mygtukas, servoimporto laikas nuo signalo importavimo pauzės importavimo atsitiktinis
#led = LED (12)
#pir = MotionSensor (19, sample_rate = 5, queue_len = 1) buzzer_pin = Buzzer (17) ataka = Button (5, pull_up = False) #reset = Button (6, pull_up = False) servo1 = Servo (18) servo2 = Servo (24)
def ledON ():
led.on () print ("LED šviečia") def ledOFF (): led.off () print ("LED yra išjungtas")
prieš ugnį ():
spausdinti („karšti ginklai“) buzzer_pin.on () time.sleep (0,1) buzzer_pin.off ()
def laserturret ():
timeBetweenBurrst = atsitiktinis.uniforminis (0,2, 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 = servo2pradėjimo laikas.sleep (0.1) shot = 0 detail = [timeBetweenBurrst, timeBetweenShots, servo1.value, servo2.value, numShots] spausdinti (detaliai) fotografuojant <numshots: shot+= "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" fire () = "" time.sleep (timebetweenshots) = "" time.sleep (timebetweenburst)
užrašai = {
„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 (dažnis, ilgis): #sukurkite funkciją „buzz“ir padėkite jai žingsnį bei trukmę)
jei (dažnis == 0):
time.sleep (ilgis) grąžinimo laikotarpis = 1,0 / dažnis #dažnio uždelsimas): #pradėkite ciklą nuo 0 iki kintamojo „ciklai“, apskaičiuotų aukščiau buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)
def play (melodija, tempas, pauzė, tempas = 0,800):
i diapazone (0, len (melodija)): # Groti dainos užrašąDuration = tempas/tempas buzz (melodija , noteDuration) # Pakeiskite dainos dažnį dainos pauseBetweenNotes = noteDuration * pause time.sleep (pauseBetweenNotes)
nors tiesa:
laserturret () pertrauka;
4 žingsnis: Pramogos
Pramogų aparatūros kūrimas
Sukuriame „Simon-say“mygtukų žaidimą, kurį turite sekti šviečiančių šviesos diodų modeliu ir paspausti atitinkamus mygtukus. Jis įkelia balus ir laiko žymę į „Firebase NoSQL“duomenų bazę, kad būtų galima toliau naudoti prietaisų skydeliuose.
Prijunkite grandines, kaip parodyta Fritzing diagramoje.
Pramogų programinės įrangos kūrimas
pramoga.py
importo RPi. GPIO kaip GPIOimport sriegimo importavimo metu importo atsitiktinai importo os importo tweepy nuo rpi_lcd importo LCD nuo MIME importo skambučio nuo laiko importo miego nuo datetime importo datetime nuo firebase importo firebase CONSUMER_KEY = 'h5Sis7TXdoUVncrpjSzGAvhBH "CONSUMER_SECRET =' ZfDVxc4aTd9doGmBQO3HiSKKzxSTKT4C3g0B3AGx8eETCJm2rY 'ACCESS_KEY =' 988333099669901312- YDLEQN1weW2n1JP4lxJcFPppCsbvzQh "ACCESS_SECRET = 'K2IlUPur6jx7DO5S0HhhZW29H5AQFOvkMMevSsk9ZzwLk" auth = tweepy. OAuthHandler (CONSUMER_KEY, CONSUMER_SECRET) auth.secure = Tiesa auth.set_access_token (ACCESS_KEY, ACCESS_SECRET) API = tweepy. API (auth) firebase = firebase. FirebaseApplication ("https:// iotca2 -12f48.firebaseio.com ", Nėra = [40, 38, 36] BUTTONS = [37, 33, 35] PASTABOS = ["E3", "A4", "E4"] # reikšmių, kurias galite pakeisti, turinčios įtakos žaidimo greičiui = 0,5 # vėliavos, naudojamos žaidimui signalizuoti status is_displaying_pattern = Netiesa is_won_curr ent_level = False is_game_over = Netiesa # žaidimo būsena 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. sąranka (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN), skirta „i“diapazone (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, ellenőriz_player_selection) def correct_player_selection (kanalas): global current_step_of_lewlevel, is_game_over, jei ne, is_displaying_pattern, o ne is_won_current_level, o ne is_game_over: flash_led_for_button (channel) if channel == BUTTONS [modelis [dabartinis_pakopas_luoksnis]: dabartinis_pakopas_luoksnis flash_led_for_button (button_channel): LED = ŠVIESOS [BUTTONS.index (button_channel)] GPIO.output (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 = False current_step_of_level = 0 next_color = random.randint (0, 2) pattern.append (next_color) def display_pattern_to_player (): global is_displaying_pattern is_displaying_pattern = tikrasis GPIO.out_ (dabartinis GPIO): GPIO.output (LIGHTS [modelis , GPIO. HIGH) time.sleep (greitis) GPIO.output (LIGHTS [modelis , GPIO. LOW) time.sleep (greitis) is_displaying_pattern = Klaidingas def wait_for_player_to_repeat_pattern (): nors ne is_won_current_level, o ne is_game_over: time.sleep (0.1) def reset_board_for_new_game (): global is_displaying_pattern, is_won_current_level, is_game_over = dabartinis_pasakymas = dabartinis_skelbimas GPIO.output (LIGHTS, GPIO. LOW) def send_data (rezultatas): lcd.text ('Žaidimo pabaiga', 1) lcd.text ('Iki pasimatymo!', 2) datestr = str (datetime. dabar ()), o tiesa: spausdinti (datestr) print (score) data = {'Data': datestr, 'Score': score} result = firebase.post ('/score/', data) print (rezultatas), jei balas> 2: status = 'Kažkas įmušė' +(str (rezultatas))+'on'+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 ("Žaidimas baigtas! rezultatas" {}.format (current_level - 1)) sleep (2) print ("Ačiū, kad žaidėte! / n") lcd.text ('', 1) lcd.text ('', 2) break time.sleep (2) def start_game_monitor (): t = sriegimas. Siūlas (target = start_game) t.daemon = True t.start () t.join () def main (): try: os.system ('cls' if os.name == 'nt 'else' clear ') print ("Pradėti naują raundą! / n") initialize_gpio () start_game_monitor () pagaliau: GPIO.cleanup () if _name_ ==' _main_ ': main ()
5 veiksmas: „IOT App Watson“„IBM Bluemix“[pirmoji dalis]
Nustatykite „Blumix IoT Service“
- Nustatykite šliuzo įrenginio tipą
- Nustatykite įrenginį
Atlikite 1 ir 2 veiksmus 3 kartus. Vienas RPi skirtas vienai sekcijai (saugumas/gynyba/pramogos)
Nustatykite raudoną mazgą
Paleiskite mazgą raudonai
mazgo raudona pradžia
- Eiti valdyti paletę mėsainių meniu (viršuje dešinėje)
-
Atsisiųskite šiuos padėklus
- mazgas-raudonas-prietaisų skydelis
- node-red-contrib-firebase
- node-red-contrib-ibm-watson-iot
6 žingsnis: mazgas raudonas srautas
Atsisiųskite failus ir eksportuokite į raudoną mazgą.
Apsaugos mazgas-raudonas
nė vienas
Gynybos Rpi mazgas-raudonas
laserturret.txt
Pramogos „Rpi Node-Red“
- pramogų rpi flow.txt
- ldr rpi flow.txt
„IBM Bluemix Node-Red“
Rekomenduojamas:
Medinė „Super Nintendo“pramogų sistema (SNES): 11 žingsnių
Medinė „Super Nintendo“pramogų sistema (SNES): Vienos gamintojo faire atsitiktinai susidūriau su medine „Super Nintendo“pramogų sistema (SNES). Vaikystėje su vyresniuoju broliu žaisdavau su tokia žaidimų konsole. Kai atpažinau, kad vėl priklausau nuo „Super Mario“
Sukurkite savo GPS SMS saugumo stebėjimo sistemą: 5 žingsniai (su nuotraukomis)
Sukurkite savo GPS SMS saugumo sekimo sistemą: Šiame projekte aš jums parodysiu, kaip sujungti SIM5320 3G modulį su „Arduino“ir pjezoelektriniu keitikliu kaip smūgio jutiklį, kad būtų sukurta saugumo sekimo sistema, kuri atsiųs jums jūsų buvimo vietą brangi transporto priemonė SMS žinute, kai aš
„Super Wood“pramogų sistema: 9 žingsniai (su nuotraukomis)
„Super Wood“pramogų sistema: išdidžiai pristatau visiškai veikiančias medines „Super Nintendo“pramogų sistemas. Prieš paskelbdamas savo vadovą, kaip sukurti medinę „Super Nintendo Gamepad“, dabar atėjo laikas parodyti, kaip sukurti konsolę. Medinis dėklas pagamintas iš kelių
10 USD nuotolinis namų saugumo įsilaužimas: 7 žingsniai
10 USD nuotolinis namų saugumo įsilaužimas: paverskite paprastą nebrangią internetinę kamerą į paslėptą namų apsaugos sistemą, kurią bet kurioje pasaulio vietoje galima pamatyti iš savo mobiliojo telefono! Tikiuosi, kad jums tai patinka, ir jei norite geriau jaustis projektu, galite pažiūrėti mano vaizdo įrašą
„Nintendo“pramogų sistemos kasetės laikrodis: 7 žingsniai (su nuotraukomis)
„Nintendo“pramogų sistemos kasetės laikrodis: prieš kurį laiką mano draugė Carolyn Main Kalėdoms draugams pagamino keletą NES kasetinių laikrodžių. Jie sukrėtė. NES kasetinio laikrodžio nuostabumas turi būti išplitęs po visas šalis. Dabar galite prisijungti prie interneto ir nusipirkti vieną … BET: 1) Visi žinome, kad makin