Inhaltsverzeichnis:
- Schritt 1: Hardware-Anforderung
- Schritt 2: Sicherheit
- Schritt 3: Verteidigung
- Schritt 4: Unterhaltung
- Schritt 5: IOT-App Watson auf IBM Bluemix [Teil eins]
- Schritt 6: Rote Flüsse des Knotens
Video: Übersicht: Home-Entertainment- und Sicherheitssystem - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:20
Über die Anwendung
Dieses IOT-System ist ein Home-Entertainment- und Sicherheitssystem.
-
Sicherheit
- Tippen Sie auf RFID-Karte und die Eingaben werden in Firebase gespeichert.
- Wenn Sie autorisiert sind, können Sie friedlich eintreten und das Bild wird aufgenommen und auf S3 hochgeladen
- Wenn nicht autorisiert, kommt der Verteidigungsabschnitt und ein LCD-Bildschirm zeigt an, dass Sie nicht autorisiert sind.
-
Verteidigung
- Drücken Sie die Taste auf dem Armaturenbrett.
- Laser Turrets greifen in zufälliger Explosion und Geschwindigkeit an.
-
Entertainment
- Wenn eine Bewegung erkannt wird, startet das Spiel.
- Nachdem der Benutzer das Spiel gespielt hat, wird die Punktzahl in Firebase gespeichert.
- 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
-
Sicherheit
- 1 Himbeer-Pi
- 1 LCD
- 1 RFID-Lesegerät
- 1 PiCam
- 2 RFID-Karten/Knöpfe
- X Female -> Male Überbrückungskabel
-
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
-
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
Erstellen der Hardware des Sicherheitssystems
Schließen Sie die Stromkreise wie im Fritzing-Diagramm gezeigt an
Erstellen der Sicherheitssystemsoftware
- Konfigurieren Sie AWS, indem Sie ein Ding erstellen
- Installieren Sie die AWS Python-Bibliothek
- LCD-Bibliothek installieren
- RFID-Bibliothek installieren
- Firebase einrichten
- S3-Speicher einrichten
- Boto auf Raspberry Pi installieren
- Installieren Sie AWS CLI auf Raspberry Pi
- AWS-Anmeldeinformationen erstellen
- AWS konfigurieren
- Security.py auf RPi. hochladen
- 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
Erstellen der Laserrevolver-Hardware
- Wir erstellen den Laserrevolver mit 2 Servos und 1 Lasermodul
- 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
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
- Einrichten eines Gateway-Gerätetyps
- 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
- Gehen Sie im Hamburger-Menü (oben rechts) zur Palette verwalten
-
Laden Sie die folgenden Paletten herunter
- Knoten-Rot-Dashboard
- node-red-contrib-firebase
- node-red-contrib-ibm-watson-iot
Schritt 6: Rote Flüsse des Knotens
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:
KS-Garten:Übersicht: 9 Schritte
KS-Garden:Übersicht: KS-Garden kann verwendet werden, um Ihren Garten / Ihre Gewächshauspflanzen im Hinterhof oder Ihre Indoor-Growbox-Pflanzen zu bewässern / zu lüften / zu beleuchten (Modularer Aufbau) Das KS-Garden-System besteht hauptsächlich aus den folgenden Modulen - Main Systembox - Relais- und Netzteilbox
Smart Home mit Arduino MKR1000 und M.I.T. Android-App: 4 Schritte
Smart Home mit Arduino MKR1000 und M.I.T. Android App: In diesem Tutorial beschreibe ich, wie Sie mit wenigen Komponenten Ihr Smart Home verbessern können. (Massachusetts Institu
Home-Erinnerung: 5 Schritte
Heimerinnerung: Dieses Projekt kann Ihre Familie daran erinnern, dass Sie zu Hause sind, wenn sie mit Hausarbeit oder anderen Dingen beschäftigt ist. Der Grund, warum ich diese Erinnerung erstelle, ist, dass meine Mutter jeden Tag, wenn ich von der Schule nach Hause komme, normalerweise kocht und sie nicht hören konnte, dass ich b
Elektronisches augengesteuertes Sicherheitssystem Teil 2: 3 Schritte
Elektronisches augengesteuertes Sicherheitssystem Teil 2: Hey Leute! Wenn Sie Teil 1 nicht gesehen haben, KLICKEN SIE HIER. In diesem Projekt sehen wir eine einfache Heimsicherheitsanwendung namens Electronic Eye Controlled Security System, die LDR als Hauptsensor und einige andere Komponenten verwendet. Das elektronische Auge heißt auch
So einfach wie ein Fingerabdruck-Sicherheitssystem täuschen – wikiHow
So täuschen Sie ein Fingerabdruck-Sicherheitssystem so einfach wie das ABC: Diese Anleitung zeigt Ihnen, wie Sie ein Fingerabdruck-Sicherheitssystem so einfach wie das ABC täuschen. IBM möchte nie, dass Sie davon erfahren. Es funktioniert auch für die meisten Fingerabdruck-Sicherheitssysteme. Zum Beispiel z.B. Tür, Handy….Diese Anleitung kommt mit v