Satura rādītājs:
- 1. darbība. Aparatūras prasības
- 2. darbība. Drošība
- 3. solis: Aizsardzība
- 4. solis: izklaide
- 5. darbība: IOT lietotne Watson uz IBM Bluemix [pirmā daļa]
- 6. solis: mezgla sarkanās plūsmas
Video: Pārskats: Mājas izklaides un drošības sistēma: 6 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Par pieteikumu
Šī IOT sistēma ir mājas izklaides un drošības sistēma.
- Drošība
- Pieskarieties RFID kartei un ievadītā informācija tiek saglabāta Firebase.
- Ja ir atļauts, varat mierīgi ieiet, un attēls tiek uzņemts un augšupielādēts S3
- Ja tas nav atļauts, tiek parādīta aizsardzības sadaļa, un LCD ekrānā būs redzams, ka neesat pilnvarots.
- Aizsardzība
- Nospiediet pogu uz paneļa.
- Lāzera torņi uzbruks nejaušā sprādzienā un ātrumā.
-
Izklaide
- Ja tiek konstatēta kustība, spēle sāksies.
- Pēc tam, kad lietotājs ir spēlējis spēli, rezultāts tiek saglabāts Firebase.
- LDR vērtības tiks ņemtas un parādītas informācijas panelī.
Šo lietojumprogrammu var kontrolēt un apskatīt, izmantojot IBM Node-Red tīmekļa serveri. Mēs izmantojam AWS un IBM mākoņpakalpojumus, un kā datu bāzi izmantojām Firebase.
Apkopoto darbību kopsavilkums
- Prasības aparatūrai
- Drošība - kā izveidot drošības sistēmu, kas izmanto RFID ievadi un attēlu atpazīšanas programmatūru
- Aizsardzība - kā izveidot lāzera torni
- Izklaide - kā izveidot Simona saka spēli
- IOT lietotne Watson uz IBM Bluemix - kā integrēt visas sistēmas vienā informācijas panelī
Dodieties uz priekšu un piekļūstiet pdf failam, lai iegūtu sīkāku skaidrojumu par šī projekta izveidi.
1. darbība. Aparatūras prasības
Tas jums būs vajadzīgs
- Drošība
- 1 Raspberry Pi
- 1 LCD
- 1 RFID lasītājs
- 1 PiCam
- 2 RFID kartes/pogas
- X Female -> Vīriešu džemperu kabeļi
- Aizsardzība
- 1 Raspberry Pi
- 2 10 ㏀ Rezistors (pogām)
- 2 Mikro servo
- 1 650 nm lāzera raidītāja modulis
- 2 Nospiediet pogu
- 1 skaņas signāls
- 3 mazas gumijas lentes/kabeļu saites (fiksēšanai)
- X Female -> Vīriešu džemperu kabeļi
- X parastie lēcienu kabeļi
- 1 tranzistors
- 1 kondensators
-
Izklaide
- 1 Raspberry Pi
- 3 1 ㏀ Rezistors (gaismas diodēm)
- 1 10㏀ rezistors (LDR)
- 3 gaismas diodes (dažādas krāsas)
- 3 pogas
- 1 LDR
- 1 LCD
- 1 Pir kustības sensors
- X Female -> Vīriešu džemperu kabeļi
- X parastie lēcienu kabeļi
2. darbība. Drošība
Drošības sistēmas aparatūras izveide
Pievienojiet ķēdes, kā parādīts fritēšanas diagrammā
Drošības sistēmas programmatūras izveide
- Konfigurējiet AWS, izveidojot lietu
- Instalējiet AWS Python bibliotēku
- Instalējiet LCD bibliotēku
- Instalējiet RFID bibliotēku
- Iestatiet Firebase
- Iestatiet S3 krātuvi
- Instalējiet Boto vietnē Raspberry Pi
- Instalējiet AWS ClI Raspberry Pi
- Izveidojiet AWS akreditācijas datus
- Konfigurējiet AWS
- Augšupielādējiet security.py uz RPi
- Augšupielādējiet imagerecognition.py RPi
security.py ir kods, kas nolasa RFID ievadi un nosaka, vai lietotājs ir iebrucējs vai nē. Ja lietotājs tiek atpazīts, attēls tiks uzņemts un augšupielādēts s3. Kods tiek publicēts arī tēmā aws MQTT
3. solis: Aizsardzība
Lāzera torņa aparatūras izveide
- Mēs izveidojam lāzera tornīti, izmantojot 2 servo un 1 lāzera moduli
- Pievienojiet ķēdes, kā parādīts fritēšanas diagrammā
Lāzera torņa programmatūras izveide
Tālāk esošais kods lāzeru tornim liks šaut nejaušos virzienos, nejaušos pārrāvumos un ātrumā
laserturret.py
no gpiozero importēšanas gaismas diodes, skaņas signāls, poga, servoimporta laiks no signāla importēšanas pauzes importēšanas nejaušība
#led = LED (12)
#pir = MotionSensor (19, sample_rate = 5, queue_len = 1) buzzer_pin = Buzzer (17) uzbrukums = Button (5, pull_up = False) #reset = Button (6, pull_up = False) servo1 = Servo (18) servo2 = Servo (24)
def ledON ():
led.on () print ("LED ir ieslēgts") def ledOFF (): led.off () print ("LED ir izslēgts")
ugunsgrēks ():
drukāt ("karsti ieroči") buzzer_pin.on () time.sleep (0,1) buzzer_pin.off ()
def laserturret ():
timeBetweenBurrst = 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 = servo2sākšanas laiks.sleep (0,1) shot = 0 detaļa = [timeBetweenBurrst, timeBetweenShots, servo1.value, servo2.value, numShots] drukāt (detalizēti), kamēr tiek uzņemts <numshots: shot+= "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" fire () = "" time.sleep (timebetweenshots) = "" time.sleep (timebetweenburst)
piezīmes = {
“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 (biežums, garums): #izveidojiet funkciju "buzz" un ievadiet tai piķi un ilgumu)
ja (biežums == 0):
time.sleep (ilgums) atgriešanās periods = 1,0 / frekvence #frekvences aiztureVērtība = periods / 2 #aprēķiniet laiku pusei viļņa numCycles = int (garums * frekvence) #viļņu skaits = ilgums x biežums i diapazonā (numCycles): #start ciklu no 0 līdz mainīgajam "cikliem", kas aprēķināts virs buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)
def play (melodija, temps, pauze, temps = 0,800):
i diapazonā (0, len (melodija)): # Atskaņot dziesmu noteDuration = temps/temps buzz (melodija , noteDuration) # Mainiet frekvenci dziesmas piezīmē pauseBetweenNotes = noteDuration * pause time.sleep (pauseBetweenNotes)
kamēr taisnība:
laserturret () pārtraukums;
4. solis: izklaide
Izklaides aparatūras izveide
Mēs izveidojam pogu Simona saka poga, kurai ir jāievēro iedegas gaismas diodes un jānospiež atbilstošās pogas. Tā augšupielādē punktus un laika zīmogu firebase NoSQL datu bāzē, lai tos turpmāk izmantotu informācijas paneļos.
Pievienojiet ķēdes, kā parādīts Fritzing diagrammā.
Izklaides programmatūras izveide
izklaide.py
imports RPi. GPIO kā GPIOimport vītņu imports laika imports nejauši importa os importa tweepy no rpi_lcd importa LCD no subprocess importa zvanu no laika importa miega no datetime importa datetime no firebase imports 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 (autorizāciju) firebase = firebase. FirebaseApplication ("https:// iotca2 -12f48.firebaseio.com ', nav) lcd = LCD () lcd.text (' Have fun! ', 1) lcd.text (' Good luck! ', 2) sleep (1) # Sarkana, dzeltena, zaļa = [40, 38, 36] POGAS = [37, 33, 35] PIEZĪMES = ["E3", "A4", "E4"] # vērtības, kuras varat mainīt un kas ietekmē spēles ātrumu = 0,5 # karodziņi, kas tiek izmantoti spēles signālam statuss is_displaying_pattern = Nepareizs ir_uzvarēts_curr ent_level = False is_game_over = False # spēles stāvoklis 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. iestatīšana (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) i diapazonā (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, ellenőriz_player_selection) def verifikācijas_spēles_izvēle (kanāls): globālais pašreizējais_solis_līmeņu līmenis, is_game_over ja nav is_displaying_pattern un nav is_won_current_level un not is_game_over: flash_led_for_button (kanāls), ja kanāls == POGAS [modelis [current_step_of_level]: current_step_of_level += 1 ja current_step_of_leve_level flash_led_for_button (button_channel): led = GAISMAS [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 (): globālā is_displaying_pattern is_displaying_pattern = globālā is_displayingpattern: GPIO.output (LIGHTS [modelis , GPIO. HIGH) time.sleep (ātrums) GPIO.output (LIGHTS [modelis , GPIO. LOW) time.sleep (ātrums) is_displaying_pattern = False def wait_for_player_to_repeat_pattern (): kamēr nav is_won_current_level un nav is_game_over: time.sleep (0.1) def reset_board_for_new_game (): global is_displaying_pattern, is_won_current_level, is_game_over_vel_verfle_fle_fle_fun_free GPIO.output (LIGHTS, GPIO. LOW) def send_data (score): lcd.text ('Spēles beigas', 1) lcd.text ('Tiekamies drīz!', 2) datestr = str (datetime. tagad ()), kamēr True: print (datestr) print (score) data = {'Date': datestr, 'Score': score} result = firebase.post ('/score/', data) print (result) if score> 2: status = 'Kāds ir guvis vārtus' +(str (score))+'on'+datestr+'!' api.update_status (statuss = statuss) break def start_game (): kamēr 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 ("Game Over! score ir {}.format (current_level - 1)) sleep (2) print ("Paldies, ka spēlējāt! / n") lcd.text ('', 1) lcd.text ('', 2) break time.sleep (2) def start_game_monitor (): t = vītņošana. Vītne (target = start_game) t.daemon = True t.start () t.join () def main (): try: os.system ('cls' if os.name == 'nt 'else' clear ') print ("Begin new round! / n") initialize_gpio () start_game_monitor () beidzot: GPIO.cleanup () if _name_ ==' _main_ ': main ()
5. darbība: IOT lietotne Watson uz IBM Bluemix [pirmā daļa]
Iestatiet Blumix IoT pakalpojumu
- Iestatiet vārtejas ierīces tipu
- Iestatiet ierīci
Veiciet 1. un 2. darbību 3 reizes. Viens RPi ir paredzēts vienai sadaļai (Drošība/Aizsardzība/Izklaide)
Iestatiet mezglu-sarkanu
Palaist mezglu sarkanu
mezgla sarkans sākums
- Dodieties uz paletes pārvaldīšanu hamburgeru izvēlnē (augšējā labajā stūrī)
-
Lejupielādējiet šādas paletes
- mezgls-sarkans-informācijas panelis
- node-red-contrib-firebase
- mezgls-sarkans-ieguldījums-ibm-vatsons-iot
6. solis: mezgla sarkanās plūsmas
Lejupielādējiet failus un eksportējiet tos uz sarkano mezglu.
Drošības mezgls-sarkans
neviena
Aizsardzbas Rpi mezgls-sarkans
laserturret.txt
Izklaide Rpi Node-Red
- izklaides rpi flow.txt
- ldr rpi flow.txt
IBM Bluemix mezgls-sarkans
Ieteicams:
Koka Super Nintendo izklaides sistēma (SNES): 11 soļi
Koka Super Nintendo izklaides sistēma (SNES): Vīnes makšķerniekā es nejauši uzdūros koka Super Nintendo izklaides sistēmai (SNES). Bērnībā ar šādu spēļu konsoli spēlēju kopā ar vecāko brāli. Kā es sapratu, ka esmu atkal kļuvis atkarīgs no Super Mario
IOT mājas drošības sistēma: 3 soļi
IOT mājas drošības sistēma: Viena no visnoderīgākajām IoT lietojumprogrammām ir mājas drošība. Iedomājieties, ka zaglis, pārraujot jūsu drošības kameras vadu, mēģina ielauzties jūsu mājā, tas nenotiks, ja jūsu drošības sistēma būs bezvadu un gudra. Pērkot mājas drošību no plauktiem
Mājas drošības sistēma: 5 soļi
Mājas drošības sistēma: izveidojiet savu mājas drošības sistēmu, izmantojot Raspberry pi
Viena pieskāriena sieviešu drošības drošības sistēma: 3 soļi
Sieviešu drošības pieskāriena sistēma ar vienu pieskārienu: viena pieskāriena signalizācija Sieviešu drošības sistēma, izmantojot 8051 mikrokontrolleri Mūsdienu pasaulē sieviešu drošība ir vissvarīgākā problēma valstī. Šodien sievietes tiek uzmāktas un satrauktas, un dažreiz, kad nepieciešama steidzama palīdzība. Nav obligāta atrašanās vieta
Super Wood izklaides sistēma: 9 soļi (ar attēliem)
Super Wood izklaides sistēma: ar lepnumu prezentēju savas pilnībā strādājošās koka Super Nintendo izklaides sistēmas. Pirms es ievietoju manu rokasgrāmatu, kā izveidot koka Super Nintendo Gamepad, un tagad ir pienācis laiks parādīt, kā izveidot konsoli. Koka korpuss ir izgatavots no vairākiem