Sommario:
- Passaggio 1: requisiti hardware
- Passaggio 2: sicurezza
- Fase 3: Difesa
- Passaggio 4: intrattenimento
- Passaggio 5: IOT App Watson su IBM Bluemix [Parte prima]
- Passaggio 6: flussi rossi del nodo
Video: Panoramica: Home Entertainment e sistema di sicurezza: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:03
Informazioni sull'applicazione
Questo sistema IOT è un sistema di Home Entertainment e di sicurezza.
- Sicurezza
- Tocca Scheda RFID e l'input viene salvato in Firebase.
- Se autorizzato si può entrare serenamente e la foto viene scattata e caricata su S3
- Se non autorizzato, entra la sezione di difesa e uno schermo LCD dirà che non sei autorizzato.
- Difesa
- Premere il pulsante sul cruscotto.
- Le torrette laser attaccheranno a raffica e velocità casuali.
-
Divertimento
- Se viene rilevato un movimento, il gioco inizierà.
- Dopo che l'utente ha giocato, il punteggio viene salvato in Firebase.
- I valori LDR verranno presi e visualizzati sul dashboard.
Questa applicazione è controllabile e visualizzabile tramite il server Web IBM Node-Red. Utilizziamo AWS e IBM Cloud Services e abbiamo utilizzato Firebase come nostro database.
Riepilogo dei passaggi che verranno descritti
- Requisiti hardware
- Sicurezza - Come creare un sistema di sicurezza che utilizzi l'input RFID e un software di riconoscimento delle immagini
- Difesa - Come creare una torretta laser
- Intrattenimento - Come creare un gioco come dice Simon
- IOT App Watson su IBM Bluemix - Come integrare tutti i sistemi in un'unica dashboard
Vai avanti e accedi al file pdf per una spiegazione più dettagliata su come creare questo progetto.
Passaggio 1: requisiti hardware
Questo è ciò di cui avrai bisogno
- Sicurezza
- 1 lampone pi
- 1 LCD
- 1 lettore RFID
- 1 PiCam
- 2 schede/pulsanti RFID
- X Cavi jumper femmina -> maschio
- Difesa
- 1 lampone pi
- 2 Resistenza 10 ㏀ (per pulsanti)
- 2 micro servi
- 1 modulo trasmettitore laser da 650 nm
- 2 pulsanti
- 1 cicalino
- 3 piccoli elastici/fascette (per il fissaggio)
- X Cavi jumper femmina -> maschio
- X Cavi di Salto Regolari
- 1 transistor
- 1 condensatore
-
Intrattenimenti
- 1 lampone pi
- 3 1 ㏀ Resistenza (per LED)
- 1 Resistenza da 10㏀ (per LDR)
- 3 LED (diversi colori)
- 3 pulsanti
- 1 LDR
- 1 LCD
- 1 sensore di movimento Pir
- X Cavi jumper femmina -> maschio
- X Cavi di Salto Regolari
Passaggio 2: sicurezza
Creazione dell'hardware del sistema di sicurezza
Collegare i circuiti come mostrato nello schema fritzing
Creazione del software del sistema di sicurezza
- Configura AWS creando qualcosa
- Installa AWS Python Library
- Installa la libreria LCD
- Installa la libreria RFID
- Imposta Firebase
- Configurazione della memoria S3
- Installa Boto su Raspberry Pi
- Installa AWS ClI su Raspberry Pi
- Crea credenziali AWS
- Configura AWS
- Carica security.py su RPi
- Carica imagerecognition.py su RPi
security.py è un codice che legge gli input rfid e rileva se l'utente è un intruso o meno. Se l'utente viene riconosciuto, verrà scattata un'immagine e caricata su s3. Il codice pubblica anche su un argomento in aws MQTT
Fase 3: Difesa
Creazione dell'hardware della torretta laser
- Creiamo la torretta laser utilizzando 2 servocomandi e 1 modulo laser
- Collegare i circuiti come mostrato nello schema fritzing
Creazione del software della torretta laser
Il codice seguente farà sparare la torretta laser in direzioni casuali, in raffiche e velocità casuali
laserturret.py
da gpiozero import LED, Buzzer, Button, Servoimport tempo da segnale import pausa import random
#led = LED(12)
#pir = MotionSensor(19, sample_rate=5, queue_len=1) buzzer_pin = Buzzer(17) attacco = Button(5, pull_up=False) #reset = Button(6, pull_up=False) servo1 = Servo(18) servo2 = Servo(24)
def ledON():
led.on() print("LED acceso") def ledOFF(): led.off() print("LED spento")
def fuoco():
print("armi calde") buzzer_pin.on() time.sleep(0.1) buzzer_pin.off()
def torretta laser():
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(dettaglio) while shot<numshots: shot+="1" servo1.value="servo1start" servo2.value="servo2start" servo1start="servo1change" servo2start="servo2change" time.sleep(timebetweenburst)
note = {
'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, 'RE2': 73, 'DS2': 78, 'EB2': 78, 'MI2': 82, 'F2': 87, 'FS2': 93, 'S2': 98, 'GS2': 104, 'LA2': 110, 'AS2': 117, 'BB2': 123, 'B2': 123, 'DO3': 131, 'CS3': 139, 'RE3': 147, 'DS3': 156, 'EB3 ': 156, 'MI3': 165, 'FA3': 175, 'FS3': 185, 'sol3': 196, 'GS3': 208, 'LA3': 220, 'LA3': 233, 'BB3': 233, 'B3': 247, 'DO4': 262, 'CS4': 277, 'RE4': 294, 'DS4': 311, 'EB4': 311, 'MI4': 330, 'FA4': 349, 'FS4': 370, 'G4': 392, 'GS4': 415, 'A4': 440, 'AS4': 466, 'BB4': 466, 'B4': 494, 'C5': 523, 'CS5 ': 554, 'RE5': 587, 'DS5': 622, 'EB5': 622, 'MI5': 659, 'FA5': 698, 'FS5': 740, 'sol5': 784, 'GS5': 831, 'LA5': 880, 'LA5': 932, 'BB5': 932, 'LA5': 988, 'DO6': 1047, 'CS6': 1109, 'RE6': 1175, 'DS6': 1245, 'EB6': 1245, 'E6': 1319, 'F6': 1397, 'FS6': 1480, 'G6': 1568, 'GS6': 1661, 'A 6': 1760, 'LA6': 1865, 'BB6': 1865, 'LA6': 1976, 'DO7': 2093, 'CS7': 2217, 'RE7': 2349, 'DS7': 2489, 'EB7': 2489, 'E7': 2637, 'F7': 2794, 'FS7': 2960, 'G7': 3136, 'GS7': 3322, 'LA7': 3520, 'AS7': 3729, 'BB7': 3729, 'B7': 3951, 'DO8': 4186, 'CS8': 4435, 'RE8': 4699, 'DS8': 4978 }
def buzz(frequency, length): #crea la funzione "buzz" e inserisci intonazione e durata)
if(frequenza==0):
time.sleep(length) return period = 1.0 / frequency #frequency delayValue = period / 2 #calcola il tempo per metà dell'onda numCycles = int(length * frequency) #num of wave = duratime x freq for i in range(numCycles): #avvia un ciclo da 0 alla variabile "cycles" calcolata sopra buzzer_pin.on() time.sleep(delayValue) buzzer_pin.off() time.sleep(delayValue)
def play(melodia, tempo, pausa, ritmo=0.800):
for i in range(0, len(melody)): # Riproduci song noteDuration = pace/tempo buzz(melody, noteDuration) # Cambia la frequenza lungo la nota della canzone pauseBetweenNotes = noteDuration * pause time.sleep(pausa tra le note)
mentre vero:
torretta laser() interruzione;
Passaggio 4: intrattenimento
Creare l'hardware per l'intrattenimento
Creiamo il gioco dei pulsanti Simon-says, in cui devi seguire lo schema dei LED che si accendono e premere i pulsanti corrispondenti. Carica punteggi e timestamp nel database NoSQL di Firebase per un ulteriore utilizzo nei dashboard.
Collegare i circuiti come mostrato nello schema di Fritzing.
Creazione del software di intrattenimento
intrattenimento.py
importazione RPi. GPIO come GPIOimport tempo filettatura importazione tweepy importazione casuale import os importazione da LCD rpi_lcd importazione dalla chiamata sottoprocesso importazione di tanto sonno importazione da datetime datetime import da Firebase CONSUMER_KEY importazione Firebase = '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', Nessuno) lcd=LCD() lcd.text('Buon divertimento!', 1) lcd.text('Buona fortuna!', 2) sleep(1) # LUCI rosse, gialle, verdi = [40, 38, 36] PULSANTI = [37, 33, 35] NOTE = ["E3", "A4", "E4"] # valori modificabili che influenzano la velocità di gioco = 0.5 # flag usati per segnalare il gioco status is_displaying_pattern = False is_won_curr ent_level = False is_game_over = False # 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. setup(BUTTONS, GPIO. IN, pull_up_down=GPIO. PUD_DOWN) for i in range(3): GPIO.add_event_detect(BUTTONS, GPIO. FALLING, verificare_player_selection) def verificare_player_selection(canale): global current_step_of_level, current_level, is,won_current_level is_game_over if not is_displaying_pattern e not is_won_current_level e not is_game_over: flash_led_for_button(canale) if channel == BUTTONS[pattern[current_step_of_level]: current_step_of_level += 1 if current_step_of_level >= true_level_other = current_level è def_current_level += 1_current_level è 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, cura 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(): globale is_displaying_pattern is_displaying_pattern = True GPIO.output(currentS, GPIO_range): 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 e not 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 = current_step_level = current_step = livello_corrente_falso è_falso_livello di gioco 1 GPIO.output(LIGHTS, GPIO. LOW) def send_data(score): lcd.text('End of game, ', 1) lcd.text('A presto!', 2) datestr = str(datetime. now()) mentre True: print(datestr) print(score) data={ 'Date': datestr, 'Score': score } result = firebase.post('/scores/', data) print(result) if score > 2: status='Qualcuno ha segnato ' + (str(punteggio)) +' su '+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! il punteggio è {} colori!\n".format(current_level - 1)) sleep(2) print("Grazie per aver giocato!\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("Inizia un nuovo round!\n") initialize_gpio() start_game_monitor() infine: GPIO.cleanup() if _name_ == '_main_': main()
Passaggio 5: IOT App Watson su IBM Bluemix [Parte prima]
Configura il servizio Blumix IoT
- Configurare un tipo di dispositivo gateway
- Configura un dispositivo
Eseguire i passaggi 1 e 2 per 3 volte. Un RPi è per una sezione (Sicurezza/Difesa/Intrattenimento)
Configura Nodo-Rosso
Esegui node-red
inizio nodo rosso
- Vai a gestire la tavolozza nel menu dell'hamburger (in alto a destra)
-
Scarica i seguenti pallet
- nodo-rosso-dashboard
- nodo-rosso-contrib-firebase
- nodo-rosso-contrib-ibm-watson-iot
Passaggio 6: flussi rossi del nodo
Scarica i file ed esportali nel tuo node-red.
Nodo di sicurezza-rosso
nessuno
Nodo Rpi Difesa-Rosso
laserturret.txt
Intrattenimento Rpi Nodo-Rosso
- intrattenimento rpi flow.txt
- ldr rpi flusso.txt
IBM Bluemix Node-Rosso
Consigliato:
Sistema di sicurezza fatto in casa che utilizza Sensor Fusion: 5 passaggi
Sistema di sicurezza fatto in casa che utilizza Sensor Fusion: l'idea alla base di questo progetto è creare un sensore di sicurezza economico e facile da realizzare che possa essere utilizzato per avvisarti quando qualcuno lo ha attraversato. L'obiettivo originale era creare qualcosa che potesse avvisarmi quando qualcuno saliva le scale, ma ho anche
Sistema di sicurezza elettronico con RTC e codice PIN definito dall'utente: 7 passaggi
Sistema di sicurezza elettronico con RTC e codice PIN definito dall'utente: Ciao ragazzi! Questo è un progetto che ho realizzato utilizzando il microcontrollore pic, è un sistema di sicurezza con codice PIN elettronico con orologio in tempo reale e funzioni del codice pin definite dall'utente, questa pagina contiene tutti i dettagli per crearne uno da soli. FUNZIONA E CONCETTO: Bene
Sistema di sicurezza con chiave digitale fai-da-te: 8 passaggi
Sistema di sicurezza delle chiavi fai-da-te con impronte digitali: questa applicazione è utile per proteggere le chiavi (lucchetto) richieste quotidianamente. A volte abbiamo alcune chiavi comuni come casa, garage, parcheggio tra due o più persone. Ci sono un certo numero di sistemi biometrici disponibili in un mercato, ma mai
Pulsante di sicurezza wireless per la sicurezza del PLC: 6 passaggi (con immagini)
Pulsante di sicurezza wireless per la sicurezza del PLC: questo progetto è la mia prova di concetto per l'utilizzo dell'IoT e (eventualmente) della robotica per creare un ulteriore livello di sicurezza per gli impianti di produzione pericolosi. Questo pulsante può essere utilizzato per avviare o arrestare più processi, incluso il controllo del segnale
Sistema di sicurezza per la sicurezza delle donne One Touch: 3 passaggi
Sistema di sicurezza per la sicurezza delle donne One Touch: sistema di sicurezza per le donne con allarme One Touch che utilizza il micro controller 8051 Nel mondo di oggi la sicurezza delle donne è la questione più importante in ogni paese. Oggi le donne sono molestate e turbate e talvolta quando è necessario un aiuto urgente. Non ci sono posizioni obbligatorie