Mündəricat:

Baxış: Ev Əyləncə və Təhlükəsizlik Sistemi: 6 addım
Baxış: Ev Əyləncə və Təhlükəsizlik Sistemi: 6 addım

Video: Baxış: Ev Əyləncə və Təhlükəsizlik Sistemi: 6 addım

Video: Baxış: Ev Əyləncə və Təhlükəsizlik Sistemi: 6 addım
Video: Heydər Əliyev və Həyat yoldaşını Birdə belə görün #azerbaijan #president #prezident #xeberler #xeber 2024, Iyun
Anonim
Baxış: Ev Əyləncə və Təhlükəsizlik Sistemi
Baxış: Ev Əyləncə və Təhlükəsizlik Sistemi
Baxış: Ev Əyləncə və Təhlükəsizlik Sistemi
Baxış: Ev Əyləncə və Təhlükəsizlik Sistemi
Baxış: Ev Əyləncə və Təhlükəsizlik Sistemi
Baxış: Ev Əyləncə və Təhlükəsizlik Sistemi

Tətbiq haqqında

Bu IOT sistemi Ev Əyləncə və Təhlükəsizlik Sistemidir.

  1. Təhlükəsizlik

    1. RFID Kartına toxunun və giriş Firebase -də saxlanılır.
    2. İcazə verilsə, sülh yolu ilə daxil ola bilərsiniz və şəkil çəkilib S3 -ə yüklənir
    3. İcazəsizdirsə, müdafiə bölməsi daxil olur və bir LCD ekran sizə səlahiyyətli olmadığınızı söyləyəcək.
  2. Müdafiə

    1. Tablosundakı düyməni basın.
    2. Lazer Kuleleri təsadüfi partlayış və sürətlə hücum edəcək.
  3. Əyləncə

    1. Hərəkət aşkar edilərsə, oyun başlayacaq.
    2. İstifadəçi oyunu oynadıqdan sonra hesab Firebase -də saxlanılır.
    3. LDR dəyərləri alınacaq və tablosuna çıxacaq.

Bu proqram IBM Node-Red veb serveri vasitəsi ilə idarə oluna və görüntülənə bilər. AWS və IBM Bulud Xidmətlərindən istifadə edirik və verilənlər bazası olaraq Firebase -dən istifadə etdik.

Təsvir ediləcək addımların xülasəsi

  • Avadanlıq Tələbləri
  • Təhlükəsizlik - RFID girişini və görüntü tanıma proqramını istifadə edən bir təhlükəsizlik sistemi necə yaradılır
  • Müdafiə - Lazer qülləsi necə yaradılır
  • Əyləncə - Simon -deyir oyunu necə yaratmaq olar
  • IBM Bluemix -də IOT App Watson - Bütün sistemləri bir tablosuna necə inteqrasiya etmək olar

Davam edin və bu layihənin necə yaradılacağına dair daha ətraflı izahat üçün pdf faylına daxil olun.

Addım 1: Avadanlıq Tələbi

Ehtiyacınız olacaq budur

  1. Təhlükəsizlik

    • 1 Moruq Pi
    • 1 LCD
    • 1 RFID oxucu
    • 1 PiCam
    • 2 RFID Kartı/Düymələri
    • X Dişi -> Kişi tullanan kabellər
  2. Müdafiə

    • 1 Moruq Pi
    • 2 10 ㏀ Rezistor (Düymələr üçün)
    • 2 Mikro Servo
    • 1 650nm Lazer Verici Modulu
    • 2 Düymə
    • 1 Buzzer
    • 3 Kiçik Kauçuk Bantlar/Kabel Bağları (fiksasiya üçün)
    • X Dişi -> Kişi tullanan kabellər
    • X Daimi Atlama Kabelləri
    • 1 Transistor
    • 1 kondansatör
  3. Əyləncə

    • 1 Moruq Pi
    • 3 1 ㏀ Rezistor (LEDlər üçün)
    • 1 10㏀ Rezistor (LDR üçün)
    • 3 LED (Fərqli Rənglər)
    • 3 Düymələr
    • 1 LDR
    • 1 LCD
    • 1 Pir Hərəkət Sensoru
    • X Dişi -> Kişi tullanan kabellər
    • X Daimi Atlama Kabelləri

Addım 2: Təhlükəsizlik

Təhlükəsizlik
Təhlükəsizlik
Təhlükəsizlik
Təhlükəsizlik
Təhlükəsizlik
Təhlükəsizlik

Təhlükəsizlik sisteminin aparatının yaradılması

Sxemləri əyilmə diaqramında göstərildiyi kimi bağlayın

Təhlükəsizlik sistemi proqramının yaradılması

  1. Bir şey yaratmaqla AWS -ni konfiqurasiya edin
  2. AWS Python Kitabxanasını quraşdırın
  3. LCD Kitabxanasını quraşdırın
  4. RFID Kitabxanasını quraşdırın
  5. Firebase qurun
  6. S3 saxlama qurmaq
  7. Raspberry Pi -də Boto quraşdırın
  8. Raspberry Pi üzərində AWS ClI quraşdırın
  9. AWS etimadnaməsini yaradın
  10. AWS -i konfiqurasiya edin
  11. Security.py faylını RPi -yə yükləyin
  12. İmagerecognition.py faylını RPi -yə yükləyin

security.py, rfid girişlərini oxuyacaq və istifadəçinin müdaxiləçi olub olmadığını müəyyən edəcək bir koddur. İstifadəçi tanınarsa, şəkil çəkiləcək və s3 -ə yüklənəcək. Kod, həmçinin aws MQTT -də bir mövzu dərc edir

Addım 3: Müdafiə

Müdafiə
Müdafiə
Müdafiə
Müdafiə
Müdafiə
Müdafiə

Lazer qülləsinin qurğularının yaradılması

  1. 2 servo və 1 Lazer Modulu istifadə edərək lazer qülləsi yaradırıq
  2. Sxemləri əyilmə diaqramında göstərildiyi kimi bağlayın

Lazer qülləsi proqramının yaradılması

Aşağıdakı kod lazer qülləsinin təsadüfi istiqamətlərdə, təsadüfi partlayışlarda və sürətdə çəkilişini təmin edəcək

laserturret.py

gpiozero idxal LED -dən, Buzzer, Button, Servoimport siqnal idxalından fasilə idxalı təsadüfi

#led = LED (12)

#pir = MotionSensor (19, sample_rate = 5, queue_len = 1) buzzer_pin = Buzzer (17) hücum = Button (5, pull_up = False) #reset = Button (6, pull_up = False) servo1 = Servo (18) servo2 = Servo (24)

def ledON ():

led.on () çap ("LED yanar") def ledOFF (): led.off () çap ("LED söndürüldü")

def Fire ():

yazdır ("silahlar isti") 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 detal = [timeBetweenBurst, timeBetweenShots, servo1.value, servo2.value, numShots] çap edərkən (detal) vuruş zamanı <numshots: shot+= "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" fire () = "" time.sleep (timebetweenshots) = "" time.sleep (timebetweenburburst)

qeydlər = {

'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 (tezlik, uzunluq): #"buzz" funksiyasını yaradın və meydançanı və müddətini qidalandırın)

əgər (tezlik == 0):

vaxt.yuxu (uzunluq) geri dönmə müddəti = 1.0 / tezlik #frekans gecikməsiDəyər = dövr / 2 #dalğanın yarısı üçün vaxtı hesablayınCevrlər = int (uzunluq * tezlik) #dalğaların sayı = aralığa görə x müddəti): #-dən buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue) üzərində hesablanan dəyişən "dövrlərə" qədər bir döngə başlayın.

def play (melodiya, temp, fasilə, temp = 0.800):

i üçün diapazonda (0, len (melodiya)): # Mahnı notunu çalDuration = tempi/tempi buzz (melodiya , noteDuration) # Mahnı notu boyunca tezliyi dəyişdir pauseBetweenNotes = noteDuration * fasilə vaxtı.yuxu (Notes Arasında Notlar)

Doğru halda:

laserturret () fasilə;

Addım 4: Əyləncə

Əyləncə
Əyləncə
Əyləncə
Əyləncə
Əyləncə
Əyləncə

Əyləncə avadanlıqlarının yaradılması

Simonların dediyi düymə oyununu yaradırıq ki, LED-lərin yandırma modelinə riayət etməli və müvafiq düymələri basmalısan. Göstəriş panellərində daha da istifadə etmək üçün skorları və vaxt damğasını NoSQL firebase verilənlər bazasına yükləyir.

Fritzing diaqramında göstərildiyi kimi sxemləri bağlayın.

Əyləncə Proqramının Yaradılması

əyləncə.py

idxal RPi. GPIO = 'h5Sis7TXdoUVncrpjSzGAvhBH "CONSUMER_SECRET =' ZfDVxc4aTd9doGmBQO3HiSKKzxSTKT4C3g0B3AGx8eETCJm2rY" ACCESS_KEY = 'Firebase idxal Firebase CONSUMER_KEY olan datetime idxal datetime zaman idxal yuxu subprocess idxal zəng rpi_lcd idxal LCD GPIOimport Threading idxal vaxt idxal təsadüfi idxal os idxal tweepy kimi 988333099669901312- YDLEQN1weW2n1JP4lxJcFPppCsbvzQh "ACCESS_SECRET = 'K2IlUPur6jx7DO5S0HhhZW29H5AQFOvkMMevSsk9ZzwLk" İcazə = tweepy. OAuthHandler (CONSUMER_KEY, CONSUMER_SECRET) auth.secure = True auth.set_access_token (ACCESS_KEY, ACCESS_SECRET) api = tweepy. API (İcazə) Firebase = firebase. FirebaseApplication (https:// iotca2 -12f48.firebaseio.com ', Heç biri) lcd = LCD () lcd.text (' Əylən! ', 1) lcd.text (' Uğurlar! ', 2) yuxu (1) # Qırmızı, Sarı, Yaşıl İŞIQLAR = [40, 38, 36] DÜĞMƏLƏR = [37, 33, 35] QEYDLƏR = ["E3", "A4", "E4"] Oyun sürətinə təsir edən dəyişə biləcəyiniz # dəyər = oyuna siqnal vermək üçün istifadə olunan 0.5 # bayraq status is_displaying_pattern = Yanlış is_won_curr ent_level = False is_game_over = False # oyun vəziyyəti current_level = 1 current_step_of_level = 0 model = def initialize_gpio (): GPIO.setmode (GPIO. BOARD) GPIO.setup (LIGHTS, GPIO. OUT, initial = GPIO. LOW) GPIO. (3) aralığında i üçün quraşdırma (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, verify_player_selection) def verify_player_selection (kanal): global current_step_le_level_level_level_level is_game_over is_displaying_pattern deyil və is_won_current_level deyil is_game_over: flash_led_for_button (channel) if channel == BUTTONS [pattern [current_step_of_level]: current_step_of_level += 1 if current_stref_vel_vel_vel_vel_vel_vel_free_level_levelle 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 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 GPOTH: GPIO.output (LIGHTS [pattern , GPIO. HIGH) time.sleep (speed) GPIO.output (LIGHTS [pattern , GPIO. LOW) time.sleep (speed) is_displaying_pattern = Yanlış def wait_for_player_to_repeat_pattern (): is_won_current_level və is_game_over isə: def reset_board_for_new_game time.sleep (0.1) (): qlobal is_displaying_pattern, is_won_current_level, is_game_over qlobal current_level, current_step_of_level, model is_displaying_pattern = False is_won_current_level = False is_game_over = False current_level = 1 current_step_of_level = 0 model = GPIO.output (LIGHTS, GPIO. LOW) def send_data (hesab): lcd.text ('Oyunun sonu,', 1) lcd.text ('Tezliklə görüşərik!', 2) datestr = str (datetime. now ()) isə True: print (datestr) print (score) data = {'Date': datestr, 'Score': score} result = firebase.post ('/scores/', data) print (result) if score> 2: status = 'Kimsə qol vurdu' +(str (hesab))+'on++datestr+'! ' api.update_status (status = status) break start_game (): while True: add_new_color_to_pattern () display_pattern_to_player () wait_for_player_to_repeat_pattern () is_game_over: send_data (current_level -!) print ("Oyunun Üstündə!" n).format (cari_səviyyə - 1)) yuxu (2) çap ("Oynadığınız üçün təşəkkürlər! / n") lcd.text ('', 1) lcd.text ('', 2) fasilə vaxtı.yuxu (2) def start_game_monitor (): t = threading. Thread (target = start_game) t.daemon = True t.start () t.join () def main (): cəhd edin: os.system (os.name == 'nt olarsa' cls ') 'else' clear ') print ("Yeni mərhələyə başla! / n") initialize_gpio () start_game_monitor () nəhayət: GPIO.cleanup () əgər _name_ ==' _main_ ': main ()

Addım 5: IBM Bluemix -də Iots App Watson [Birinci hissə]

Blumix IoT Xidmətini qurun

  1. Bir Ağ Geçidi Cihaz Tipi qurun
  2. Bir cihaz qurun

1 və 2 -ci addımları 3 dəfə edin. Bir RPi bir bölmə üçündür (Təhlükəsizlik/Müdafiə/Əyləncə)

Node-Red qurun

Qırmızı düyünlə işləyin

node-qırmızı başlanğıc

  1. Hamburger menyusundan palitranı idarə etmək üçün gedin (yuxarı sağda)
  2. Aşağıdakı paletləri yükləyin

    1. qovşaq-qırmızı-tablosuna
    2. qovşaq-qırmızı-töhfə-firebase
    3. node-qırmızı-töhfə-ibm-watson-iot

Addım 6: Qırmızı Nodlu Node

Qırmızı Nodlar Node
Qırmızı Nodlar Node
Qırmızı Nodlar Node
Qırmızı Nodlar Node
Qırmızı Nodlar Node
Qırmızı Nodlar Node
Qırmızı Nodlar Node
Qırmızı Nodlar Node

Faylları yükləyin və node-red-ə ixrac edin.

Təhlükəsizlik Node-Qırmızı

heç biri

Müdafiə Rpi Node-Red

laserturret.txt

Əyləncə Rpi Node-Red

  • əyləncə rpi flow.txt
  • ldr rpi axını.txt

IBM Bluemix Node-Red

Tövsiyə: