Indholdsfortegnelse:
- Trin 1: Krav til hardware
- Trin 2: Sikkerhed
- Trin 3: Forsvar
- Trin 4: Underholdning
- Trin 5: IOT App Watson på IBM Bluemix [1. del]
- Trin 6: Knude røde strømninger
![Oversigt: Home Entertainment og Security System: 6 trin Oversigt: Home Entertainment og Security System: 6 trin](https://i.howwhatproduce.com/images/002/image-5083-65-j.webp)
Video: Oversigt: Home Entertainment og Security System: 6 trin
![Video: Oversigt: Home Entertainment og Security System: 6 trin Video: Oversigt: Home Entertainment og Security System: 6 trin](https://i.ytimg.com/vi/ZkCOvETi0Hg/hqdefault.jpg)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
![Oversigt: Home Entertainment and Security System Oversigt: Home Entertainment and Security System](https://i.howwhatproduce.com/images/002/image-5083-66-j.webp)
![Oversigt: Home Entertainment and Security System Oversigt: Home Entertainment and Security System](https://i.howwhatproduce.com/images/002/image-5083-67-j.webp)
![Oversigt: Home Entertainment and Security System Oversigt: Home Entertainment and Security System](https://i.howwhatproduce.com/images/002/image-5083-68-j.webp)
Om ansøgningen
Dette IOT -system er et hjemmeunderholdnings- og sikkerhedssystem.
-
Sikkerhed
- Tryk på RFID -kort, og input gemmes i Firebase.
- Hvis du har tilladelse, kan du gå ind fredeligt, og billedet tages og uploades til S3
- Hvis det er uautoriseret, kommer forsvarsafsnittet ind, og en LCD -skærm siger, at du ikke er autoriseret.
-
Forsvar
- Tryk på knappen på instrumentbrættet.
- Lasertårne angriber i tilfældig burst og hastighed.
-
Underholdning
- Hvis der registreres bevægelse, starter spillet.
- Efter at brugeren har spillet spillet, gemmes scoren i Firebase.
- LDR -værdier tages og udsendes på instrumentbrættet.
Denne applikation kan kontrolleres og kan ses via IBM Node-Red webserveren. Vi gør brug af AWS og IBM Cloud Services, og vi brugte Firebase som vores database.
Resumé af de trin, der vil blive beskrevet
- Krav til hardware
- Sikkerhed - Sådan opretter du et sikkerhedssystem, der bruger RFID -input og en billedgenkendelsessoftware
- Forsvar - Sådan opretter du et lasertårn
- Underholdning - Sådan opretter du et Simon -siger -spil
- IOT App Watson på IBM Bluemix - Sådan integreres alle systemerne i et dashboard
Gå videre og få adgang til pdf -filen for en mere detaljeret forklaring på, hvordan du opretter dette projekt.
Trin 1: Krav til hardware
Dette er hvad du får brug for
-
Sikkerhed
- 1 Hindbær Pi
- 1 LCD
- 1 RFID -læser
- 1 PiCam
- 2 RFID -kort/knapper
- X Kvinde -> Han -jumperkabler
-
Forsvar
- 1 Hindbær Pi
- 2 10 ㏀ Modstand (til knapper)
- 2 Micro Servo
- 1 650nm lasersender modul
- 2 Tryk på knappen
- 1 summer
- 3 små gummibånd/kabelbindere (til fastgørelse)
- X Kvinde -> Han -jumperkabler
- X Regelmæssige springkabler
- 1 Transistor
- 1 kondensator
-
Underholdning
- 1 Hindbær Pi
- 3 1, modstand (til lysdioder)
- 1 10㏀ modstand (til LDR)
- 3 lysdioder (forskellige farver)
- 3 knapper
- 1 LDR
- 1 LCD
- 1 Pir -bevægelsessensor
- X Kvinde -> Han -jumperkabler
- X Regelmæssige springkabler
Trin 2: Sikkerhed
![Sikkerhed Sikkerhed](https://i.howwhatproduce.com/images/002/image-5083-69-j.webp)
![Sikkerhed Sikkerhed](https://i.howwhatproduce.com/images/002/image-5083-70-j.webp)
![Sikkerhed Sikkerhed](https://i.howwhatproduce.com/images/002/image-5083-71-j.webp)
Oprettelse af sikkerhedssystemets hardware
Tilslut kredsløbene som vist i fritz -diagrammet
Oprettelse af sikkerhedssystemets software
- Konfigurer AWS ved at oprette en ting
- Installer AWS Python Library
- Installer LCD -bibliotek
- Installer RFID -bibliotek
- Opsætning af Firebase
- Opsætning af S3 -lagring
- Installer Boto på Raspberry Pi
- Installer AWS ClI på Raspberry Pi
- Opret AWS -legitimationsoplysninger
- Konfigurer AWS
- Upload security.py til RPi
- Upload imagerecognition.py til RPi
security.py er en kode, der vil læse rfid -input og registrere, om brugeren er en ubuden gæst eller ej. Hvis brugeren genkendes, tages et billede og uploades til s3. Koden publiceres også til et emne i aws MQTT
Trin 3: Forsvar
![Forsvar Forsvar](https://i.howwhatproduce.com/images/002/image-5083-72-j.webp)
![Forsvar Forsvar](https://i.howwhatproduce.com/images/002/image-5083-73-j.webp)
![Forsvar Forsvar](https://i.howwhatproduce.com/images/002/image-5083-74-j.webp)
Oprettelse af lasertårnet Hardware
- Vi skaber lasertårnet ved hjælp af 2 servoer og 1 lasermodul
- Tilslut kredsløbene som vist i fritz -diagrammet
Oprettelse af lasertårnet Software
Koden herunder vil få lasertårnet til at skyde i tilfældige retninger, i tilfældige bursts og hastighed
laserturret.py
fra gpiozero import LED, summer, knap, servoimport tid fra signalimport pause import tilfældig
#led = LED (12)
#pir = MotionSensor (19, sample_rate = 5, queue_len = 1) buzzer_pin = summer (17) angreb = knap (5, pull_up = falsk) #reset = knap (6, pull_up = falsk) servo1 = Servo (18) servo2 = Servo (24)
def ledON ():
led.on () print ("LED er tændt") def ledOFF (): led.off () print ("LED er slukket")
def fire ():
print ("våben varmt") 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] print (detail) while shot <numshots: shot+= "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" fire () = "" time.sleep (timebetweenshots) = "" time.sleep (timebetweenburst)
noter = {
'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 (frekvens, længde): #creat funktionen "buzz" og fodre den med tonehøjde og varighed)
hvis (frekvens == 0):
time.sleep (længde) returperiode = 1,0 / frekvens #frekvensforsinkelseValue = periode / 2 #beregn tiden for halvdelen af bølgen numCycles = int (længde * frekvens) #antal bølger = varighed x freq for i inden for rækkevidde (numCycles): #start en sløjfe fra 0 til variablen "cyklusser" beregnet over buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)
def play (melodi, tempo, pause, tempo = 0.800):
for i inden for rækkevidde (0, len (melodi)): # Afspil sangnoteDuration = tempo/tempo buzz (melodi , noteDuration) # Skift frekvens langs sangnoten pauseBetweenNotes = noteDuration * pause tid. søvn (pauseBetweenNotes)
mens det er sandt:
laserturret () pause;
Trin 4: Underholdning
![Underholdning Underholdning](https://i.howwhatproduce.com/images/002/image-5083-75-j.webp)
![Underholdning Underholdning](https://i.howwhatproduce.com/images/002/image-5083-76-j.webp)
![Underholdning Underholdning](https://i.howwhatproduce.com/images/002/image-5083-77-j.webp)
Oprettelse af underholdningshardware
Vi skaber Simon-siger-knapspil, som du skal følge mønsteret for lysdioderne, der lyser og trykke på de tilsvarende knapper. Det uploader scoringer og tidsstempel til Firebase NoSQL -databasen for yderligere brug i dashboards.
Tilslut kredsløbene som vist i Fritzing -diagrammet.
Oprettelse af underholdningssoftware
underholdning.py
import RPi. GPIO som GPIOimport threading import tid import tilfældig import os import tweepy fra rpi_lcd import LCD fra underproces import opkald fra tid import søvn fra datetime import datetime fra Firebase import 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 ', Ingen) lcd = LCD () lcd.text (' God fornøjelse! ', 1) lcd.text (' Held og lykke! ', 2) søvn (1) # Rød, gul, grøn LYS = [40, 38, 36] BUTTONS = [37, 33, 35] NOTES = ["E3", "A4", "E4"] # værdier, du kan ændre, der påvirker spilhastighed = 0,5 # flag, der bruges til at signalere spil status is_displaying_pattern = Falsk er_won_curr ent_level = Falsk is_game_over = Falsk # game state 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. opsætning (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) for i inden for område (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, verify_player_selection) def verify_player_selection (channel): global current_step_of_level, current_, current_ is_game_over hvis ikke is_displaying_pattern og ikke is_won_current_level og ikke is_game_over: flash_led_for_button (channel) if channel == BUTTONS [pattern [current_step_of_level]: current_step_of_level += 1 if current_step_of_level> = current_ is_vel_ flash_led_for_button (button_channel): led = LIGHTS [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 = True GPIO. TSput: GPIO.output (LIGHTS [mønster , GPIO. HIGH) time.sleep (hastighed) GPIO.output (LIGHTS [mønster , GPIO. LOW) time.sleep (speed) is_displaying_pattern = Falsk def wait_for_player_to_repeat_pattern. GPIO.output (LIGHTS, GPIO. LOW) def send_data (score): lcd.text ('End of game', 1) lcd.text ('Vi ses snart!', 2) datestr = str (datetime. nu ()) mens True: print (datestr) print (score) data = {'Dato': datestr, 'Score': score} resultat = firebase.post ('/scores/', data) print (resultat) hvis score> 2: status = 'Nogen har scoret' +(str (score))+'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 ("Game Over! score er"} farver!.format (current_level - 1)) sleep (2) print ("Tak fordi du spillede! / 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 (): prøv: os.system ('cls' if os.name == 'nt 'andet' klart ') print ("Start ny runde! / n") initialiser_gpio () start_game_monitor () endelig: GPIO.cleanup () hvis _name_ ==' _main_ ': main ()
Trin 5: IOT App Watson på IBM Bluemix [1. del]
Opsæt Blumix IoT Service
- Konfigurer en Gateway -enhedstype
- Opsæt en enhed
Udfør trin 1 og 2 3 gange. Én RPi er for en sektion (Sikkerhed/forsvar/underholdning)
Opsæt Node-Red
Kør node-rød
knude-rød start
- Gå til håndteringspaletten i hamburgermenuen (øverst til højre)
-
Download følgende paller
- node-red-dashboard
- node-red-contrib-firebase
- node-red-contrib-ibm-watson-iot
Trin 6: Knude røde strømninger
![Node røde flyder Node røde flyder](https://i.howwhatproduce.com/images/002/image-5083-78-j.webp)
![Node røde flyder Node røde flyder](https://i.howwhatproduce.com/images/002/image-5083-79-j.webp)
![Node røde strømninger Node røde strømninger](https://i.howwhatproduce.com/images/002/image-5083-80-j.webp)
![Node røde flyder Node røde flyder](https://i.howwhatproduce.com/images/002/image-5083-81-j.webp)
Download filerne og eksporter til din knude-rød.
Sikkerhedsknude-rød
ingen
Forsvar Rpi Node-Red
laserturret.txt
Underholdning Rpi Node-Red
- underholdning rpi flow.txt
- ldr rpi flow.txt
IBM Bluemix Node-Red
Anbefalede:
KS-Garden: Oversigt: 9 trin
![KS-Garden: Oversigt: 9 trin KS-Garden: Oversigt: 9 trin](https://i.howwhatproduce.com/images/001/image-255-7-j.webp)
KS-Garden: Oversigt: KS-Garden kan bruges til at vande/udlufte./Tænde din have/drivhusplanter i baghaven eller dine indendørs vækstboksplanter (modulopbygget design) KS-Garden-systemet består hovedsageligt af følgende moduler-Main systemboks - Relæer og strømforsyningskasse
Smart bøje [Oversigt]: 8 trin (med billeder)
![Smart bøje [Oversigt]: 8 trin (med billeder) Smart bøje [Oversigt]: 8 trin (med billeder)](https://i.howwhatproduce.com/images/001/image-657-4-j.webp)
Smart bøje [Resumé]: Vi elsker alle havet. Som kollektiv strømmer vi til det for at holde ferie, for at nyde vandsport eller for at leve af vores levebrød. Men kysten er et dynamisk område på bølgernes nåde. Stigende havniveau nipper på strande og kraftfulde ekstreme begivenheder som hurri
8-bit computer på et brødbræt Oversigt: 3 trin
![8-bit computer på et brødbræt Oversigt: 3 trin 8-bit computer på et brødbræt Oversigt: 3 trin](https://i.howwhatproduce.com/images/004/image-11923-6-j.webp)
8-bit computer på et brødbræt Oversigt: Mit mål for dette projekt var at opbygge en bedre forståelse af computerarkitektur, hardwaredesign og sprog på samlingsniveau. Da jeg var junior på universitetet og studerede computerteknik, havde jeg for nylig afsluttet kurser i elektronik, laboratorier og
PCB Design & ætsning Oversigt: 5 trin
![PCB Design & ætsning Oversigt: 5 trin PCB Design & ætsning Oversigt: 5 trin](https://i.howwhatproduce.com/images/001/image-205-259-j.webp)
PCB Design og ætsning Oversigt: Der er flere måder at designe og ætse PCB'er på, fra de enkleste til de mest sofistikerede. I mellemtiden er det let at blive forvirret om, hvilken man skal vælge, hvilken der bedst passer til dine behov. For at afklare nogle spørgsmål som t
Crystal Ball Project Oversigt: 10 trin
![Crystal Ball Project Oversigt: 10 trin Crystal Ball Project Oversigt: 10 trin](https://i.howwhatproduce.com/images/001/image-2377-79-j.webp)
Crystal Ball Project Oversigt: Denne instruktive blev oprettet for at opfylde projektkravet fra Makecourse ved University of South Florida (www.makecourse.com) My Crystal ball project er en kombination af 1950'ernes Mattel legetøj Magic Eight-ball og en formue tlf