Inhaltsverzeichnis:

Übersicht: Home-Entertainment- und Sicherheitssystem - Gunook
Übersicht: Home-Entertainment- und Sicherheitssystem - Gunook

Video: Übersicht: Home-Entertainment- und Sicherheitssystem - Gunook

Video: Übersicht: Home-Entertainment- und Sicherheitssystem - Gunook
Video: Die besten SMARTEN ALARMSYSTEME 2023 | Smarte Alarmsysteme Test | Homematic, Ring, Abus 2024, November
Anonim
Übersicht: Home-Entertainment- und Sicherheitssystem
Übersicht: Home-Entertainment- und Sicherheitssystem
Übersicht: Home-Entertainment- und Sicherheitssystem
Übersicht: Home-Entertainment- und Sicherheitssystem
Übersicht: Home-Entertainment- und Sicherheitssystem
Übersicht: Home-Entertainment- und Sicherheitssystem

Über die Anwendung

Dieses IOT-System ist ein Home-Entertainment- und Sicherheitssystem.

  1. Sicherheit

    1. Tippen Sie auf RFID-Karte und die Eingaben werden in Firebase gespeichert.
    2. Wenn Sie autorisiert sind, können Sie friedlich eintreten und das Bild wird aufgenommen und auf S3 hochgeladen
    3. Wenn nicht autorisiert, kommt der Verteidigungsabschnitt und ein LCD-Bildschirm zeigt an, dass Sie nicht autorisiert sind.
  2. Verteidigung

    1. Drücken Sie die Taste auf dem Armaturenbrett.
    2. Laser Turrets greifen in zufälliger Explosion und Geschwindigkeit an.
  3. Entertainment

    1. Wenn eine Bewegung erkannt wird, startet das Spiel.
    2. Nachdem der Benutzer das Spiel gespielt hat, wird die Punktzahl in Firebase gespeichert.
    3. LDR-Werte werden übernommen und auf dem Dashboard ausgegeben.

Diese Anwendung kann über den IBM Node-Red-Webserver gesteuert und angezeigt werden. Wir nutzen AWS und IBM Cloud Services und haben Firebase als Datenbank verwendet.

Zusammenfassung der Schritte, die beschrieben werden

  • Hardware-Anforderungen
  • Sicherheit - So erstellen Sie ein Sicherheitssystem, das RFID-Eingabe und eine Bilderkennungssoftware verwendet
  • Verteidigung - Wie erstelle ich einen Laserturm
  • Unterhaltung - So erstellen Sie ein Simon-says-Spiel
  • IOT App Watson on IBM Bluemix - So integrieren Sie alle Systeme in ein Dashboard

Gehen Sie weiter und greifen Sie auf die PDF-Datei zu, um eine detailliertere Erklärung zum Erstellen dieses Projekts zu erhalten.

Schritt 1: Hardware-Anforderung

Das brauchst du

  1. Sicherheit

    • 1 Himbeer-Pi
    • 1 LCD
    • 1 RFID-Lesegerät
    • 1 PiCam
    • 2 RFID-Karten/Knöpfe
    • X Female -> Male Überbrückungskabel
  2. Verteidigung

    • 1 Himbeer-Pi
    • 2 10 ㏀ Widerstand (für Tasten)
    • 2 Mikro-Servo
    • 1 650-nm-Lasersendermodul
    • 2 Drucktaste
    • 1 Summer
    • 3 kleine Gummibänder/Kabelbinder (zur Befestigung)
    • X Female -> Male Überbrückungskabel
    • X Normale Starthilfekabel
    • 1 Transistor
    • 1 Kondensator
  3. Unterhaltungen

    • 1 Himbeer-Pi
    • 3 1 ㏀ Widerstand (für LEDs)
    • 1 10㏀ Widerstand (für LDR)
    • 3 LEDs (verschiedene Farben)
    • 3 Tasten
    • 1 LDR
    • 1 LCD
    • 1 Pir-Bewegungssensor
    • X Female -> Male Überbrückungskabel
    • X Normale Starthilfekabel

Schritt 2: Sicherheit

Sicherheit
Sicherheit
Sicherheit
Sicherheit
Sicherheit
Sicherheit

Erstellen der Hardware des Sicherheitssystems

Schließen Sie die Stromkreise wie im Fritzing-Diagramm gezeigt an

Erstellen der Sicherheitssystemsoftware

  1. Konfigurieren Sie AWS, indem Sie ein Ding erstellen
  2. Installieren Sie die AWS Python-Bibliothek
  3. LCD-Bibliothek installieren
  4. RFID-Bibliothek installieren
  5. Firebase einrichten
  6. S3-Speicher einrichten
  7. Boto auf Raspberry Pi installieren
  8. Installieren Sie AWS CLI auf Raspberry Pi
  9. AWS-Anmeldeinformationen erstellen
  10. AWS konfigurieren
  11. Security.py auf RPi. hochladen
  12. Laden Sie imagerecognition.py auf RPi. hoch

security.py ist ein Code, der rfid-Eingaben liest und erkennt, ob der Benutzer ein Eindringling ist oder nicht. Wenn der Benutzer erkannt wird, wird ein Bild aufgenommen und auf s3 hochgeladen. Der Code wird auch zu einem Thema in aws MQTT veröffentlicht

Schritt 3: Verteidigung

Verteidigung
Verteidigung
Verteidigung
Verteidigung
Verteidigung
Verteidigung

Erstellen der Laserrevolver-Hardware

  1. Wir erstellen den Laserrevolver mit 2 Servos und 1 Lasermodul
  2. Schließen Sie die Stromkreise wie im Fritzing-Diagramm gezeigt an

Erstellen der Laserrevolversoftware

Der folgende Code lässt den Laserturm in zufällige Richtungen schießen, in zufälligen Bursts und Geschwindigkeit

laserturret.py

von gpiozero Import LED, Summer, Taste, Servoimport Zeit vom Signal Import Pause Import zufällig

#led = LED(12)

#pir = MotionSensor(19, Sample_Rate=5, Queue_len=1) Buzzer_Pin = Summer(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 ist an") def ledOFF(): led.off() print("LED ist aus")

def feuer():

print("Waffen heiß") 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" time.sleep(timebetweenburst)

Anmerkungen = {

'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(Frequenz, Länge): #Erstelle die Funktion "Buzz" und füttere sie mit Tonhöhe und Dauer)

if(Häufigkeit==0):

time.sleep(length) return period = 1.0 / frequency #frequency delayValue = period / 2 #berechnen Sie die Zeit für die Hälfte der Welle numCycles = int(length * frequency) #num of wave = Duratime x freq for i in range(numCycles): #starte eine Schleife von 0 bis zur oben berechneten Variable "cycles" Buzzer_pin.on() time.sleep(delayValue) summer_pin.off() time.sleep(delayValue)

def play(Melodie, Tempo, Pause, Pace=0.800):

for i in range(0, len(melody)): # Song abspielen noteDuration = pace/tempo summ(melody, noteDuration) # Ändere die Frequenz entlang des Songs note pauseBetweenNotes = noteDuration * pause time.sleep(PauseZwischenNotizen)

während Wahr:

Laserturm() Pause;

Schritt 4: Unterhaltung

Entertainment
Entertainment
Entertainment
Entertainment
Entertainment
Entertainment

Erstellen der Unterhaltungshardware

Wir erstellen das Simon-says-Tastenspiel, bei dem Sie dem Muster der aufleuchtenden LEDs folgen und die entsprechenden Tasten drücken müssen. Es lädt Scores und Zeitstempel zur weiteren Verwendung in den Dashboards in die Firebase NoSQL-Datenbank hoch.

Verbinden Sie die Stromkreise wie im Fritzing-Diagramm gezeigt.

Erstellen der Unterhaltungssoftware

unterhaltung.py

Import RPi. GPIO als GPIOimport Threading Importzeit Import Zufall import os import tweepy von rpi_lcd Import LCD von subprocess Import Anruf von Zeit Import Schlaf von Datetime-Import Datumzeit von Feuerbasis Import Feuerbasis 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) = Feuerbasis firebase. FirebaseApplication (' https:// iotca2 -12f48.firebaseio.com', None) lcd=LCD() lcd.text('Viel Spaß!', 1) lcd.text('Good Luck!', 2) sleep(1) # Rote, gelbe, grüne LICHT = [40, 38, 36] TASTEN = [37, 33, 35] HINWEISE = ["E3", "A4", "E4"] # Werte, die Sie ändern können, die die Spielgeschwindigkeit beeinflussen = 0.5 # Flags, die zum Signalisieren des Spiels verwendet werden status is_displaying_pattern = Falsch is_won_curr ent_level = False is_game_over = False # Spielstatus 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. setup(BUTTONS, GPIO. IN, pull_up_down=GPIO. PUD_DOWN) für i in range(3): GPIO.add_event_detect(BUTTONS, GPIO. FALLING, verify_player_selection) def verify_player_selection(channel): global current_step_of_level, current_level, is_, current_level is_game_over if not is_displaying_pattern and not is_won_current_level and not 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 >= aktueller_level: aktueller_level else: is_def = 1 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_level, heilen 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.output(LIGHTS, GPIO. LOW) für iGPIO.: 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 (): while not is_won_current_level und nicht is_game_over: time.sleep(0.1) def reset_board_for_new_game(): global is_displaying_pattern, is_won_current_level, is_game_over global current_level, current_step_of_level, pattern is_displaying_pattern = False_ist_won = False_aktuelles_level = False is_won = False_aktuelles_level = False_aktuelles_muster = False_aktuelles_level GPIO.output(LIGHTS, GPIO. LOW) def send_data(score): lcd.text('End of game, ', 1) lcd.text('Bis bald!', 2) datestr = str(datetime. now()) während True: print(datestr) print(score) data={ 'Date': datestr, 'Score': score } result = firebase.post('/scores/', data) print(result) if score > 2: status='Jemand hat gepunktet ' + (str(Score)) +' auf '+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 is {} colors!\n".format(current_level - 1)) sleep(2) print("Danke fürs Spielen!\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("Neue Runde beginnen!\n") initialize_gpio() start_game_monitor() finally: GPIO.cleanup() if _name_ == '_main_': main()

Schritt 5: IOT-App Watson auf IBM Bluemix [Teil eins]

Blumix IoT-Dienst einrichten

  1. Einrichten eines Gateway-Gerätetyps
  2. Ein Gerät einrichten

Führen Sie die Schritte 1 und 2 dreimal durch. Ein RPi ist für einen Abschnitt (Sicherheit/Verteidigung/Unterhaltung)

Node-Red einrichten

Knoten-rot ausführen

Knotenroter Start

  1. Gehen Sie im Hamburger-Menü (oben rechts) zur Palette verwalten
  2. Laden Sie die folgenden Paletten herunter

    1. Knoten-Rot-Dashboard
    2. node-red-contrib-firebase
    3. node-red-contrib-ibm-watson-iot

Schritt 6: Rote Flüsse des Knotens

Knoten rote Flüsse
Knoten rote Flüsse
Knoten rote Flüsse
Knoten rote Flüsse
Knoten rote Flüsse
Knoten rote Flüsse
Knoten rote Flüsse
Knoten rote Flüsse

Laden Sie die Dateien herunter und exportieren Sie sie in Ihr node-red.

Sicherheitsknoten-Rot

keiner

Verteidigungs-RPI-Knoten-Rot

laserturret.txt

Unterhaltung Rpi Node-Rot

  • Unterhaltung rpi flow.txt
  • ldr rpi flow.txt

IBM Bluemix Node-Rot

Empfohlen: