Πίνακας περιεχομένων:
- Βήμα 1: Απαιτήσεις υλικού
- Βήμα 2: Ασφάλεια
- Βήμα 3: Άμυνα
- Βήμα 4: ertainυχαγωγία
- Βήμα 5: IOT App Watson στο IBM Bluemix [Μέρος Πρώτο]
- Βήμα 6: Κόμβος Κόκκινες Ροές
Βίντεο: Επισκόπηση: Οικιακή ψυχαγωγία και σύστημα ασφαλείας: 6 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:37
Σχετικά με την Εφαρμογή
Αυτό το σύστημα IOT είναι σύστημα οικιακής ψυχαγωγίας και ασφάλειας.
-
Ασφάλεια
- Πατήστε Κάρτα RFID και η είσοδος αποθηκεύονται στο Firebase.
- Εάν εξουσιοδοτηθείτε, μπορείτε να εισέλθετε ειρηνικά και η εικόνα λαμβάνεται και μεταφορτώνεται στο S3
- Εάν είναι μη εξουσιοδοτημένο, μπαίνει το τμήμα άμυνας και μια οθόνη LCD θα σας πει ότι δεν είστε εξουσιοδοτημένοι.
-
Αμυνα
- Πατήστε το κουμπί στο ταμπλό.
- Τα Laser Turrets θα επιτεθούν σε τυχαία έκρηξη και ταχύτητα.
-
Ψυχαγωγία
- Εάν εντοπιστεί κίνηση, το παιχνίδι θα ξεκινήσει.
- Αφού ο χρήστης παίξει το παιχνίδι, το σκορ αποθηκεύεται στο Firebase.
- Οι τιμές LDR θα ληφθούν και θα εμφανιστούν στον πίνακα ελέγχου.
Αυτή η εφαρμογή είναι ελεγχόμενη και ορατή μέσω του διακομιστή ιστού IBM Node-Red. Χρησιμοποιούμε AWS και IBM Cloud Services και χρησιμοποιήσαμε το Firebase ως βάση δεδομένων μας.
Περίληψη των βημάτων που θα περιγραφούν
- Απαιτήσεις υλικού
- Ασφάλεια - Πώς να δημιουργήσετε ένα σύστημα ασφαλείας που χρησιμοποιεί είσοδο RFID και ένα λογισμικό αναγνώρισης εικόνας
- Άμυνα - Πώς να δημιουργήσετε έναν πυργίσκο λέιζερ
- Entυχαγωγία - Πώς να δημιουργήσετε ένα παιχνίδι Simon -thotë
- IOT App Watson στο IBM Bluemix - Πώς να ενσωματώσετε όλα τα συστήματα σε ένα ταμπλό
Προχωρήστε και αποκτήστε πρόσβαση στο αρχείο pdf για μια πιο λεπτομερή εξήγηση σχετικά με τον τρόπο δημιουργίας αυτού του έργου.
Βήμα 1: Απαιτήσεις υλικού
Αυτό είναι που θα χρειαστείτε
-
Ασφάλεια
- 1 Raspberry Pi
- 1 LCD
- 1 αναγνώστης RFID
- 1 PiCam
- 2 κάρτες/κουμπιά RFID
- X Γυναικεία -> Ανδρικά καλώδια με άλτη
-
Αμυνα
- 1 Raspberry Pi
- 2 10 ㏀ Αντίσταση (για κουμπιά)
- 2 Micro Servo
- 1 μονάδα πομπού λέιζερ 650nm
- 2 Πλήκτρο
- 1 Buzzer
- 3 μικρές λαστιχένιες ζώνες/γραβάτες καλωδίων (για στερέωση)
- X Γυναικεία -> Ανδρικά καλώδια με άλτη
- X Κανονικά καλώδια άλματος
- 1 τρανζίστορ
- 1 πυκνωτής
-
Ψυχαγωγίες
- 1 Raspberry Pi
- 3 1 ㏀ Αντίσταση (για LED)
- 1 10㏀ Αντίσταση (για LDR)
- 3 LED (διαφορετικά χρώματα)
- 3 κουμπιά
- 1 LDR
- 1 LCD
- Αισθητήρας κίνησης 1 Pir
- X Γυναικεία -> Ανδρικά καλώδια με άλτη
- X Κανονικά καλώδια άλματος
Βήμα 2: Ασφάλεια
Δημιουργία υλικού συστήματος ασφαλείας
Συνδέστε τα κυκλώματα όπως φαίνεται στο διάγραμμα ψεκασμού
Δημιουργία λογισμικού συστήματος ασφαλείας
- Διαμορφώστε το AWS δημιουργώντας ένα πράγμα
- Εγκαταστήστε τη βιβλιοθήκη AWS Python
- Εγκαταστήστε τη Βιβλιοθήκη LCD
- Εγκαταστήστε τη βιβλιοθήκη RFID
- Ρύθμιση Firebase
- Ρύθμιση S3 Storage
- Εγκαταστήστε το Boto στο Raspberry Pi
- Εγκαταστήστε το AWS ClI στο Raspberry Pi
- Δημιουργήστε διαπιστευτήρια AWS
- Διαμόρφωση AWS
- Ανεβάστε το security.py στο RPi
- Ανεβάστε το imagerecognition.py στο RPi
Το security.py είναι ένας κώδικας που διαβάζει τις εισόδους rfid και εντοπίζει αν ο χρήστης είναι εισβολέας ή όχι. Εάν ο χρήστης αναγνωριστεί, θα ληφθεί μια εικόνα και θα μεταφορτωθεί στο s3. Ο κώδικας δημοσιεύεται επίσης σε ένα θέμα στο aws MQTT
Βήμα 3: Άμυνα
Δημιουργία υλικού του πύργου λέιζερ
- Δημιουργούμε τον πυργίσκο λέιζερ χρησιμοποιώντας 2 servos και 1 Laser Module
- Συνδέστε τα κυκλώματα όπως φαίνεται στο διάγραμμα ψεκασμού
Δημιουργία λογισμικού πυργίσκου λέιζερ
Ο παρακάτω κώδικας θα κάνει τον πυργίσκο λέιζερ να πυροβολεί σε τυχαίες κατευθύνσεις, σε τυχαίες εκρήξεις και ταχύτητα
laserturret.py
από LED εισαγωγής gpiozero, Buzzer, Button, Servoimport χρόνος από εισαγωγή σήματος παύση εισαγωγής τυχαία
#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 () εκτύπωση ("Το LED είναι αναμμένο") def ledOFF (): led.off () print ("LED is off")
def fire ():
εκτύπωση ("καυτά όπλα") 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 λεπτομέρεια = [timeBetweenBurst, timeBetweenShots, servo1.value, servo2.value, numShots] εκτύπωση (λεπτομέρεια) κατά τη λήψη <numshots: shot+= "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" fire () = "" time.sleep (timebetweenshots) = "" time.sleep (timebetweenburst)
σημειώσεις = {
«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 (συχνότητα, μήκος): #δημιουργήστε τη συνάρτηση "buzz" και τροφοδοτήστε τον τον τόνο και τη διάρκεια)
εάν (συχνότητα == 0):
time.sleep (μήκος) περίοδος επιστροφής = 1,0 / συχνότητα #καθυστέρηση συχνότηταςValue = period / 2 #υπολογίστε το χρόνο για το μισό του κύματος numCycles = int (μήκος * συχνότητα) #num των κυμάτων = διάρκεια ζωής x συχνότητα για i στο εύρος (numCycles): #ξεκινήστε έναν βρόχο από το 0 στη μεταβλητή "κύκλοι" που υπολογίζεται παραπάνω buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)
def play (μελωδία, τέμπο, παύση, ρυθμός = 0.800):
για i in range (0, len (μελωδία)): # Αναπαραγωγή σημείωσης τραγουδιούDuration = ρυθμός/τέμπο buzz (μελωδία , noteDuration) # Αλλαγή της συχνότητας κατά μήκος της σημείωσης τραγουδιού pauseBetweenNotes = noteDuration * pause time.sleep (pauseBetweenNotes)
ενώ True:
laserturret () διάλειμμα?
Βήμα 4: ertainυχαγωγία
Δημιουργία υλικού ψυχαγωγίας
Δημιουργούμε το παιχνίδι κουμπιών Simon-thotë, το οποίο πρέπει να ακολουθήσετε το μοτίβο των LED που ανάβουν και να πατήσετε τα αντίστοιχα κουμπιά. Ανεβάζει παρτιτούρες και χρονική σήμανση στη βάση δεδομένων NoSQL firebase για περαιτέρω χρήση στους πίνακες εργαλείων.
Συνδέστε τα κυκλώματα όπως φαίνεται στο διάγραμμα Fritzing.
Δημιουργία Λογισμικού υχαγωγίας
entertainment.py
εισαγωγής RPi. GPIO ως GPIOimport χρόνο threading εισαγωγή εισαγωγής τυχαία os εισαγωγή εισαγωγής tweepy από rpi_lcd εισαγωγή LCD από πρόσκληση υπο-εισαγωγή από την ώρα του ύπνου κατά την εισαγωγή από datetime datetime εισαγωγή από firebase firebase εισαγωγή CONSUMER_KEY = «h5Sis7TXdoUVncrpjSzGAvhBH» CONSUMER_SECRET = ACCESS_KEY «ZfDVxc4aTd9doGmBQO3HiSKKzxSTKT4C3g0B3AGx8eETCJm2rY» = «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 (ΑΠΘ) firebase = firebase. FirebaseApplication (' https:// iotca2 -12f48.firebaseio.com », Καμία) lcd = LCD () lcd.text (« Καλή διασκέδαση! », 1) lcd.text (« Καλή τύχη! », 2) ύπνος (1) # Κόκκινο, Κίτρινο, Πράσινο ΦΩΣ = [40, 38, 36] ΚΟΥΜΠΙΑ = [37, 33, 35] ΣΗΜΕΙΩΣΕΙΣ = ["E3", "A4", "E4"] # τιμές που μπορείτε να αλλάξετε και επηρεάζουν την ταχύτητα του παιχνιδιού = 0.5 # σημαίες που χρησιμοποιούνται για να σηματοδοτούν το παιχνίδι status is_displaying_pattern = False is_won_curr ent_level = False is_game_over = Λάθος # κατάσταση παιχνιδιού 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, verify_player_selection) def verify_player_selection (channel_velvel_velvel is_game_over if not is_displaying_pattern and not is_won_current_level και 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_vel = level_vel_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_wrent () κοπρίτης 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: 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 (): ενώ δεν is_won_current_level και δεν is_game_over: time.sleep (0,1) def reset_board_for_new_game (): παγκόσμια is_displaying_pattern, is_won_current_level, is_game_over παγκόσμια current_level, current_step_of_level, is_displaying_pattern μοτίβο = False is_won_current_level = False is_game_over = False current_level = 1 current_step_of_level = 0 μοτίβο = GPIO.output (LIGHTS, GPIO. LOW) def send_data (score): lcd.text ("Τέλος παιχνιδιού", 1) lcd.text ("Τα λέμε σύντομα!", 2) datestr = str (ώρα ημερομηνίας) τώρα ()) ενώ True: εκτύπωση (datestr) print (score) data = {'Date': datestr, 'Score': score} result = firebase.post ('/scores/', data) print (result) if score> 2: status = 'Κάποιος έχει σκοράρει' +(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 ("Over Game!").format (current_level - 1)) sleep (2) print ("Thank you for playing! / n") lcd.text ('', 1) lcd.text ('', 2) time break.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' αν os.name == 'nt 'else' clear ') print ("Begin new round! / n") initialize_gpio () start_game_monitor () τέλος: GPIO.cleanup () if _name_ ==' _main_ ': main ()
Βήμα 5: IOT App Watson στο IBM Bluemix [Μέρος Πρώτο]
Ρυθμίστε την υπηρεσία Blumix IoT
- Ρυθμίστε έναν τύπο συσκευής πύλης
- Ρύθμιση συσκευής
Κάντε τα βήματα 1 και 2 για 3 φορές. Ένα RPi είναι για ένα τμήμα (Ασφάλεια/Άμυνα/ertainυχαγωγία)
Ρύθμιση Node-Red
Εκτέλεση κόμβου-κόκκινου
κόμβος-κόκκινο ξεκίνημα
- Μεταβείτε για να διαχειριστείτε την παλέτα στο μενού χάμπουργκερ (επάνω δεξιά)
-
Κατεβάστε τις παρακάτω παλέτες
- κόμβος-κόκκινο-ταμπλό
- κόμβος-κόκκινο-συνεισφορά-πυρκαγιά
- κόμβος-κόκκινο-συνεισφορά-ibm-watson-iot
Βήμα 6: Κόμβος Κόκκινες Ροές
Κατεβάστε τα αρχεία και εξάγετε στον κόμβο σας με κόκκινο χρώμα.
Κόμβος ασφαλείας-Κόκκινο
κανένας
Κόμβος άμυνας Rpi-Red
laserturret.txt
Piυχαγωγία Rpi Node-Red
- rpi entertainment.txt
- ldr rpi flow.txt
IBM Bluemix Node-Red
Συνιστάται:
Ηλεκτρονικό σύστημα ασφαλείας με RTC και κωδικό Pin Define User: 7 Βήματα
Ηλεκτρονικό σύστημα ασφαλείας με RTC και καθορισμό από τον χρήστη κωδικό Pin: Γεια σας παιδιά! Αυτό είναι ένα έργο που έκανα χρησιμοποιώντας τον μικροελεγκτή pic, ένα ηλεκτρονικό σύστημα ασφαλείας κωδικού PIN με ρολόι σε πραγματικό χρόνο και ο χρήστης ορίζει χαρακτηριστικά κωδικού PIN, αυτή η σελίδα περιέχει όλες τις λεπτομέρειες για να το φτιάξετε μόνοι σας. ITS WORKING AND CONCEPT: Well
Ηλεκτρονικό σύστημα ασφαλείας με σύστημα ελέγχου ματιών Μέρος 2: 3 βήματα
Ηλεκτρονικό σύστημα ασφαλείας με σύστημα ελέγχου ματιών Μέρος 2: Γεια σας παιδιά! Αν δεν έχετε δει το Part-1 ΠΑΤΗΣΤΕ ΕΔΩ. Σε αυτό το έργο, θα δούμε μια απλή εφαρμογή Home Security που ονομάζεται Electronic Eye Controlled Security System χρησιμοποιώντας LDR ως κύριο αισθητήρα και μερικά άλλα εξαρτήματα. Το ηλεκτρονικό μάτι καλείται επίσης
Σύστημα ασφαλείας γυναικείας ασφάλειας One Touch: 3 Βήματα
Σύστημα Ασφάλειας Γυναικείας Ασφάλειας One Touch: Συναγερμός One Touch Σύστημα Ασφάλειας Γυναικών που χρησιμοποιεί μικροελεγκτή 8051Στον σημερινό κόσμο Η ασφάλεια των γυναικών είναι το πιο σημαντικό ζήτημα στην ίδια τη χώρα. Σήμερα οι γυναίκες ενοχλούνται και προβληματίζονται και μερικές φορές όταν απαιτείται επείγουσα βοήθεια. Δεν υπάρχει απαραίτητη τοποθεσία
DIY Voice/Internet ελεγχόμενη οικιακή αυτοματοποίηση και παρακολούθηση χρησιμοποιώντας ESP8266 και Google Home Mini: 6 βήματα
DIY Voice/Internet ελεγχόμενος αυτοματισμός και παρακολούθηση σπιτιού χρησιμοποιώντας ESP8266 και Google Home Mini: Γεια σας !! Μετά από ένα μακρύ διάλειμμα είμαι εδώ καθώς όλοι πρέπει να κάνουμε κάτι βαρετό (δουλειά) για να κερδίσουμε. Μετά από όλα τα άρθρα ΣΠΙΤΙΟΥ ΑΥΤΟΜΑΤΙΣΜΟΥ που έχω γράψει από το BLUETOOTH, IR, Local WIFI, Cloud δηλαδή τα δύσκολα, * ΤΩΡΑ * έρχεται το το πιο εύκολο αλλά το πιο αποτελεσματικό
Οικιακή ασφάλεια με ενσωματωμένο σύστημα: 12 βήματα (με εικόνες)
Οικιακή ασφάλεια με ενσωματωμένο σύστημα: Γεια σας αναγνώστες, αυτό είναι ένα εγχειρίδιο για την κατασκευή ενός συστήματος οικιακής ασφάλειας σε αντίθεση με κάθε άλλο σύστημα ασφαλείας. Αυτό το σύστημα διαθέτει βελτιωμένη λειτουργία TRAP και PANIC Mode Connecting ιδιοκτήτη, γείτονα και αστυνομικό σπίτι του θύματος μέσω δικτύου. Σε