Πίνακας περιεχομένων:

Επισκόπηση: Οικιακή ψυχαγωγία και σύστημα ασφαλείας: 6 βήματα
Επισκόπηση: Οικιακή ψυχαγωγία και σύστημα ασφαλείας: 6 βήματα

Βίντεο: Επισκόπηση: Οικιακή ψυχαγωγία και σύστημα ασφαλείας: 6 βήματα

Βίντεο: Επισκόπηση: Οικιακή ψυχαγωγία και σύστημα ασφαλείας: 6 βήματα
Βίντεο: 5 πράγματα που πρέπει να κάνεις στο σεξ για να κολλήσει μαζί σου 2024, Ιούνιος
Anonim
Επισκόπηση: Οικιακή ψυχαγωγία και σύστημα ασφαλείας
Επισκόπηση: Οικιακή ψυχαγωγία και σύστημα ασφαλείας
Επισκόπηση: Οικιακή ψυχαγωγία και σύστημα ασφαλείας
Επισκόπηση: Οικιακή ψυχαγωγία και σύστημα ασφαλείας
Επισκόπηση: Οικιακή ψυχαγωγία και σύστημα ασφαλείας
Επισκόπηση: Οικιακή ψυχαγωγία και σύστημα ασφαλείας

Σχετικά με την Εφαρμογή

Αυτό το σύστημα IOT είναι σύστημα οικιακής ψυχαγωγίας και ασφάλειας.

  1. Ασφάλεια

    1. Πατήστε Κάρτα RFID και η είσοδος αποθηκεύονται στο Firebase.
    2. Εάν εξουσιοδοτηθείτε, μπορείτε να εισέλθετε ειρηνικά και η εικόνα λαμβάνεται και μεταφορτώνεται στο S3
    3. Εάν είναι μη εξουσιοδοτημένο, μπαίνει το τμήμα άμυνας και μια οθόνη LCD θα σας πει ότι δεν είστε εξουσιοδοτημένοι.
  2. Αμυνα

    1. Πατήστε το κουμπί στο ταμπλό.
    2. Τα Laser Turrets θα επιτεθούν σε τυχαία έκρηξη και ταχύτητα.
  3. Ψυχαγωγία

    1. Εάν εντοπιστεί κίνηση, το παιχνίδι θα ξεκινήσει.
    2. Αφού ο χρήστης παίξει το παιχνίδι, το σκορ αποθηκεύεται στο Firebase.
    3. Οι τιμές LDR θα ληφθούν και θα εμφανιστούν στον πίνακα ελέγχου.

Αυτή η εφαρμογή είναι ελεγχόμενη και ορατή μέσω του διακομιστή ιστού IBM Node-Red. Χρησιμοποιούμε AWS και IBM Cloud Services και χρησιμοποιήσαμε το Firebase ως βάση δεδομένων μας.

Περίληψη των βημάτων που θα περιγραφούν

  • Απαιτήσεις υλικού
  • Ασφάλεια - Πώς να δημιουργήσετε ένα σύστημα ασφαλείας που χρησιμοποιεί είσοδο RFID και ένα λογισμικό αναγνώρισης εικόνας
  • Άμυνα - Πώς να δημιουργήσετε έναν πυργίσκο λέιζερ
  • Entυχαγωγία - Πώς να δημιουργήσετε ένα παιχνίδι Simon -thotë
  • IOT App Watson στο IBM Bluemix - Πώς να ενσωματώσετε όλα τα συστήματα σε ένα ταμπλό

Προχωρήστε και αποκτήστε πρόσβαση στο αρχείο pdf για μια πιο λεπτομερή εξήγηση σχετικά με τον τρόπο δημιουργίας αυτού του έργου.

Βήμα 1: Απαιτήσεις υλικού

Αυτό είναι που θα χρειαστείτε

  1. Ασφάλεια

    • 1 Raspberry Pi
    • 1 LCD
    • 1 αναγνώστης RFID
    • 1 PiCam
    • 2 κάρτες/κουμπιά RFID
    • X Γυναικεία -> Ανδρικά καλώδια με άλτη
  2. Αμυνα

    • 1 Raspberry Pi
    • 2 10 ㏀ Αντίσταση (για κουμπιά)
    • 2 Micro Servo
    • 1 μονάδα πομπού λέιζερ 650nm
    • 2 Πλήκτρο
    • 1 Buzzer
    • 3 μικρές λαστιχένιες ζώνες/γραβάτες καλωδίων (για στερέωση)
    • X Γυναικεία -> Ανδρικά καλώδια με άλτη
    • X Κανονικά καλώδια άλματος
    • 1 τρανζίστορ
    • 1 πυκνωτής
  3. Ψυχαγωγίες

    • 1 Raspberry Pi
    • 3 1 ㏀ Αντίσταση (για LED)
    • 1 10㏀ Αντίσταση (για LDR)
    • 3 LED (διαφορετικά χρώματα)
    • 3 κουμπιά
    • 1 LDR
    • 1 LCD
    • Αισθητήρας κίνησης 1 Pir
    • X Γυναικεία -> Ανδρικά καλώδια με άλτη
    • X Κανονικά καλώδια άλματος

Βήμα 2: Ασφάλεια

Ασφάλεια
Ασφάλεια
Ασφάλεια
Ασφάλεια
Ασφάλεια
Ασφάλεια

Δημιουργία υλικού συστήματος ασφαλείας

Συνδέστε τα κυκλώματα όπως φαίνεται στο διάγραμμα ψεκασμού

Δημιουργία λογισμικού συστήματος ασφαλείας

  1. Διαμορφώστε το AWS δημιουργώντας ένα πράγμα
  2. Εγκαταστήστε τη βιβλιοθήκη AWS Python
  3. Εγκαταστήστε τη Βιβλιοθήκη LCD
  4. Εγκαταστήστε τη βιβλιοθήκη RFID
  5. Ρύθμιση Firebase
  6. Ρύθμιση S3 Storage
  7. Εγκαταστήστε το Boto στο Raspberry Pi
  8. Εγκαταστήστε το AWS ClI στο Raspberry Pi
  9. Δημιουργήστε διαπιστευτήρια AWS
  10. Διαμόρφωση AWS
  11. Ανεβάστε το security.py στο RPi
  12. Ανεβάστε το imagerecognition.py στο RPi

Το security.py είναι ένας κώδικας που διαβάζει τις εισόδους rfid και εντοπίζει αν ο χρήστης είναι εισβολέας ή όχι. Εάν ο χρήστης αναγνωριστεί, θα ληφθεί μια εικόνα και θα μεταφορτωθεί στο s3. Ο κώδικας δημοσιεύεται επίσης σε ένα θέμα στο aws MQTT

Βήμα 3: Άμυνα

Αμυνα
Αμυνα
Αμυνα
Αμυνα
Αμυνα
Αμυνα

Δημιουργία υλικού του πύργου λέιζερ

  1. Δημιουργούμε τον πυργίσκο λέιζερ χρησιμοποιώντας 2 servos και 1 Laser Module
  2. Συνδέστε τα κυκλώματα όπως φαίνεται στο διάγραμμα ψεκασμού

Δημιουργία λογισμικού πυργίσκου λέιζερ

Ο παρακάτω κώδικας θα κάνει τον πυργίσκο λέιζερ να πυροβολεί σε τυχαίες κατευθύνσεις, σε τυχαίες εκρήξεις και ταχύτητα

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. Ρύθμιση συσκευής

Κάντε τα βήματα 1 και 2 για 3 φορές. Ένα RPi είναι για ένα τμήμα (Ασφάλεια/Άμυνα/ertainυχαγωγία)

Ρύθμιση Node-Red

Εκτέλεση κόμβου-κόκκινου

κόμβος-κόκκινο ξεκίνημα

  1. Μεταβείτε για να διαχειριστείτε την παλέτα στο μενού χάμπουργκερ (επάνω δεξιά)
  2. Κατεβάστε τις παρακάτω παλέτες

    1. κόμβος-κόκκινο-ταμπλό
    2. κόμβος-κόκκινο-συνεισφορά-πυρκαγιά
    3. κόμβος-κόκκινο-συνεισφορά-ibm-watson-iot

Βήμα 6: Κόμβος Κόκκινες Ροές

Κόμβος Κόκκινες Ροές
Κόμβος Κόκκινες Ροές
Κόμβος Κόκκινες Ροές
Κόμβος Κόκκινες Ροές
Κόμβος Κόκκινες Ροές
Κόμβος Κόκκινες Ροές
Κόμβος Κόκκινες Ροές
Κόμβος Κόκκινες Ροές

Κατεβάστε τα αρχεία και εξάγετε στον κόμβο σας με κόκκινο χρώμα.

Κόμβος ασφαλείας-Κόκκινο

κανένας

Κόμβος άμυνας Rpi-Red

laserturret.txt

Piυχαγωγία Rpi Node-Red

  • rpi entertainment.txt
  • ldr rpi flow.txt

IBM Bluemix Node-Red

Συνιστάται: