Table des matières:
- Étape 1: Configuration matérielle requise
- Étape 2: Sécurité
- Étape 3: Défense
- Étape 4: Divertissement
- Étape 5: IOT App Watson sur IBM Bluemix [Première partie]
- Étape 6: Flux de nœuds rouges
Vidéo: Aperçu : Système de divertissement à domicile et de sécurité : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
À propos de l'application
Ce système IOT est un système de divertissement et de sécurité à domicile.
-
Sécurité
- Appuyez sur Carte RFID et les entrées sont enregistrées dans Firebase.
- Si autorisé, vous pouvez entrer paisiblement et la photo est prise et téléchargée sur S3
- Si non autorisé, la section de défense entre et un écran LCD dira que vous n'êtes pas autorisé.
-
La défense
- Appuyez sur le bouton du tableau de bord.
- Les tourelles laser attaqueront en rafale et en vitesse aléatoires.
-
Divertissement
- Si un mouvement est détecté, le jeu démarre.
- Une fois que l'utilisateur a joué au jeu, le score est enregistré dans Firebase.
- Les valeurs LDR seront prises et affichées sur le tableau de bord.
Cette application est contrôlable et consultable via le serveur Web IBM Node-Red. Nous utilisons AWS et IBM Cloud Services et nous avons utilisé Firebase comme base de données.
Résumé des étapes qui seront décrites
- Exigences matérielles
- Sécurité - Comment créer un système de sécurité qui utilise l'entrée RFID et un logiciel de reconnaissance d'images
- Défense - Comment créer une tourelle laser
- Divertissement - Comment créer un jeu Simon-says
- IOT App Watson sur IBM Bluemix - Comment intégrer tous les systèmes dans un seul tableau de bord
Allez-y et accédez au fichier pdf pour une explication plus détaillée sur la façon de créer ce projet.
Étape 1: Configuration matérielle requise
C'est ce dont vous aurez besoin
-
Sécurité
- 1 Framboise Pi
- 1 écran LCD
- 1 lecteur RFID
- 1 caméra vidéo
- 2 cartes/boutons RFID
- X Femelle -> Câbles de démarrage mâle
-
La défense
- 1 Framboise Pi
- 2 10 ㏀ Résistance (pour les boutons)
- 2 micro servos
- 1 module émetteur laser 650 nm
- 2 bouton poussoir
- 1 sonnerie
- 3 petits élastiques/attaches de câble (pour la fixation)
- X Femelle -> Câbles de démarrage mâle
- X câbles de saut réguliers
- 1 transistor
- 1 condensateur
-
Divertissements
- 1 Framboise Pi
- 3 1 ㏀ Résistance (pour LED)
- 1 résistance 10㏀ (pour LDR)
- 3 LED (Différentes Couleurs)
- 3 boutons
- 1 LDR
- 1 écran LCD
- 1 capteur de mouvement Pir
- X Femelle -> Câbles de démarrage mâle
- X câbles de saut réguliers
Étape 2: Sécurité
Création du matériel du système de sécurité
Connectez les circuits comme indiqué dans le schéma de frittage
Création du logiciel du système de sécurité
- Configurer AWS en créant un objet
- Installer la bibliothèque AWS Python
- Installer la bibliothèque LCD
- Installer la bibliothèque RFID
- Configurer Firebase
- Configurer le stockage S3
- Installer Boto sur Raspberry Pi
- Installer AWS ClI sur Raspberry Pi
- Créer des informations d'identification AWS
- Configurer AWS
- Télécharger security.py sur RPi
- Télécharger imagerecognition.py sur RPi
security.py est un code qui lira les entrées rfid et détectera si l'utilisateur est un intrus ou non. Si l'utilisateur est reconnu, une image sera prise et téléchargée sur s3. Le code est également publié dans un sujet dans aws MQTT
Étape 3: Défense
Création de la tourelle laser Hardware
- Nous créons la tourelle laser en utilisant 2 servos et 1 module laser
- Connectez les circuits comme indiqué dans le schéma de frittage
Création du logiciel de la tourelle laser
Le code ci-dessous fera tirer la tourelle laser dans des directions aléatoires, en rafales et à une vitesse aléatoires
laserturret.py
depuis gpiozero import LED, buzzer, bouton, temps de servoimport depuis le signal import pause import aléatoire
#led = LED(12)
#pir = MotionSensor (19, sample_rate=5, queue_len=1) buzzer_pin = Buzzer (17) attack = Button (5, pull_up=False) #reset = Button (6, pull_up=False) servo1 = Servo (18) servo2 = Servo(24)
def ledON():
led.on() print("La LED est allumée") def ledOFF(): led.off() print("La LED est éteinte")
def feu():
print("armes chaudes") buzzer_pin.on() time.sleep(0.1) buzzer_pin.off()
def lasertourelle():
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)
remarques = {
'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(fréquence, longueur): #créer la fonction "buzz" et lui donner le pitch et la durée)
si(fréquence==0):
time.sleep(length) période de retour = 1,0 / fréquence #fréquence delayValue = period / 2 #calculer le temps pour la moitié de l'onde numCycles = int(length * fréquence) #num of waves = durée x freq for i in range(numCycles): #commencer une boucle de 0 à la variable "cycles" calculée ci-dessus buzzer_pin.on() time.sleep(delayValue) buzzer_pin.off() time.sleep(delayValue)
def play (mélodie, tempo, pause, rythme = 0,800):
pour i dans la plage (0, len(melody)): # Jouer la chanson noteDuration = rythme/tempo buzz(melody, noteDuration) # Changer la fréquence le long de la chanson note pauseBetweenNotes = noteDuration * pause time.sleep(pauseEntreNotes)
tant que vrai:
tourelle laser () pause;
Étape 4: Divertissement
Création du matériel de divertissement
Nous créons le jeu de boutons Simon-says, où vous devez suivre le schéma des LED qui s'allument et appuyer sur les boutons correspondants. Il télécharge les scores et l'horodatage dans la base de données NoSQL de firebase pour une utilisation ultérieure dans les tableaux de bord.
Connectez les circuits comme indiqué sur le schéma de Fritzing.
Création du logiciel de divertissement
divertissement.py
importation RPi. GPIO comme GPIOimport filetage import temps tweepy import os aléatoire d'importation à l'importation de LCD d'importation rpi_lcd d'appel d'importation subprocess de temps de sommeil d'importation de datetime datetime importation de firebase d'importation 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', Aucun) lcd=LCD() lcd.text('Amusez-vous bien !', 1) lcd.text('Bonne chance !', 2) sleep(1) # LUMIÈRES rouges, jaunes, vertes = [40, 38, 36] BOUTONS = [37, 33, 35] NOTES = ["E3", "A4", "E4"] # valeurs que vous pouvez modifier qui affectent la vitesse de jeu = 0.5 # drapeaux utilisés pour signaler le jeu status is_displaying_pattern = Faux is_won_curr ent_level = False is_game_over = False # état du jeu 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. configuration (BUTTONS, GPIO. IN, pull_up_down=GPIO. PUD_DOWN) pour i dans la plage (3): GPIO.add_event_detect(BUTTONS, GPIO. FALLING, verify_player_selection) def verify_player_selection(channel): global current_step_of_level, current_level, is_won_current_level is_game_over sinon is_displaying_pattern et non is_won_current_level et non is_game_over: flash_led_for_button(channel) if channel == BOUTONS[pattern[current_step_of_level]: current_step_of_level += 1 if current_step_of_level >= True current_level: current_level += 1 is_game_level = 1 is_game_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, 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 = Truecurrent GPIO.output(LIGHTS for, GPIO. LOW): 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 (): bien que non is_won_current_level et non 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 0 is_won = False is_won_level = current_step_of_level = False 0 is_won = False is_won GPIO.output(LIGHTS, GPIO. LOW) def send_data(score): lcd.text('Fin de partie, ', 1) lcd.text('A bientôt !', 2) datestr = str(datetime. now()) tandis que True: print(datestr) print(score) data={ 'Date': datestr, 'Score': score } result = firebase.post('/scores/', data) print(result) if score > 2: status='Quelqu'un a marqué ' + (str(score)) +' sur '+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 est {} couleurs!\n".format(current_level - 1)) sleep(2) print("Merci d'avoir joué !\n") lcd.text('', 1) lcd.text('', 2) pause 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("Begin new round!\n") initialize_gpio() start_game_monitor() enfin: GPIO.cleanup() if _name_ == '_main_': main()
Étape 5: IOT App Watson sur IBM Bluemix [Première partie]
Configurer le service Blumix IoT
- Configurer un type de périphérique de passerelle
- Configurer un appareil
Faites les étapes 1 et 2 3 fois. Un RPi est pour une section (Sécurité/Défense/Divertissement)
Configurer Node-Red
Exécuter node-red
démarrage nœud-rouge
- Aller à gérer la palette dans le menu hamburger (en haut à droite)
-
Téléchargez les palettes suivantes
- node-red-tableau de bord
- node-red-contrib-firebase
- noeud-rouge-contrib-ibm-watson-iot
Étape 6: Flux de nœuds rouges
Téléchargez les fichiers et exportez-les dans votre node-red.
Nœud de sécurité-Rouge
rien
Défense Rpi Noeud-Rouge
laserturret.txt
Divertissement Rpi Node-Rouge
- divertissement rpi flow.txt
- ldr rpi flux.txt
IBM Bluemix Node-Red
Conseillé:
Système de divertissement Super Nintendo en bois (SNES) : 11 étapes
Système de divertissement Super Nintendo (SNES) en bois : lors d'un atelier de fabrication à Vienne, je suis tombé par hasard sur un système de divertissement Super Nintendo (SNES) en bois. J'avais l'habitude de jouer avec une telle console de jeu avec mon frère aîné quand j'étais enfant. Alors que je reconnaissais redevenir accro à Super Mario, le
Alarme de sécurité à domicile laser TF03 : 5 étapes
Alarme de sécurité à domicile laser TF03 : avec le développement de la société, les gens accordent plus d'attention à la sécurité. La sécurité traditionnelle, qui est effectuée par des patrouilles constantes par le personnel de sécurité, ne convient pas au public en raison des prix élevés.Bien que je sois récemment entré en contact avec
Système de divertissement Super Wood : 9 étapes (avec photos)
Système de divertissement Super Wood : je suis fier de présenter mes systèmes de divertissement Super Nintendo en bois entièrement fonctionnels. Avant, j'ai publié mon manuel sur la façon de construire une manette de jeu Super Nintendo en bois et il est maintenant temps de vous montrer comment construire la console. La caisse en bois est composée de plusieurs s
Sécurité à domicile avec système embarqué : 12 étapes (avec photos)
Sécurité à domicile avec système intégré : Bonjour lecteurs, il s'agit d'un Instructables pour construire un système de sécurité à domicile différent de tous les autres systèmes de sécurité. Ce système a une fonctionnalité améliorée TRAP et PANIC Mode connectant le propriétaire, le voisin et le poste de police de la maison de la victime sur le réseau. Dans
Horloge à cartouche du système de divertissement Nintendo : 7 étapes (avec photos)
Horloge à cartouche Nintendo Entertainment System : Il y a quelque temps, mon amie Carolyn Main a fabriqué des horloges à cartouche NES pour des amis pour Noël. Ils ont basculé. La génialité de l'horloge à cartouche NES doit être répandue dans tous les pays. Maintenant, vous pouvez aller en ligne et en acheter une… MAIS : 1) Nous savons tous que makin