İçindekiler:

Genel Bakış: Ev Eğlence ve Güvenlik Sistemi: 6 Adım
Genel Bakış: Ev Eğlence ve Güvenlik Sistemi: 6 Adım

Video: Genel Bakış: Ev Eğlence ve Güvenlik Sistemi: 6 Adım

Video: Genel Bakış: Ev Eğlence ve Güvenlik Sistemi: 6 Adım
Video: #shorts #öğretmen #teacher #okulöncesi #eğitim #ingilizce #learning #teaching #youtubeshorts 2024, Haziran
Anonim
Genel Bakış: Ev Eğlence ve Güvenlik Sistemi
Genel Bakış: Ev Eğlence ve Güvenlik Sistemi
Genel Bakış: Ev Eğlence ve Güvenlik Sistemi
Genel Bakış: Ev Eğlence ve Güvenlik Sistemi
Genel Bakış: Ev Eğlence ve Güvenlik Sistemi
Genel Bakış: Ev Eğlence ve Güvenlik Sistemi

Uygulama Hakkında

Bu IOT sistemi bir Ev Eğlence ve Güvenlik Sistemidir.

  1. Güvenlik

    1. RFID Kartı'na dokunun ve giriş Firebase'e kaydedilir.
    2. Yetki verilirse huzurla girilir ve fotoğraf çekilir ve S3'e yüklenir.
    3. Yetkisiz ise savunma bölümü gelir ve LCD Ekran yetkili olmadığınızı söyleyecektir.
  2. Savunma
    1. Kontrol panelindeki düğmesine basın.
    2. Lazer Taretler rastgele patlama ve hızda saldıracak.
  3. Eğlence

    1. Hareket algılanırsa oyun başlayacaktır.
    2. Kullanıcı oyunu oynadıktan sonra puan Firebase'e kaydedilir.
    3. LDR değerleri alınacak ve gösterge tablosunda çıktısı alınacaktır.

Bu uygulama, IBM Node-Red web sunucusu aracılığıyla denetlenebilir ve görüntülenebilir. AWS ve IBM Cloud Services'ı kullanıyoruz ve veritabanımız olarak Firebase'i kullandık.

Açıklanacak adımların özeti

  • Donanım Gereksinimleri
  • Güvenlik - RFID girişi ve bir görüntü tanıma yazılımı kullanan bir güvenlik sistemi nasıl oluşturulur
  • Savunma - Bir lazer taret nasıl oluşturulur
  • Eğlence - Bir Simon-says oyunu nasıl oluşturulur
  • IBM Bluemix'te IOT App Watson - Tüm sistemler tek bir gösterge panosuna nasıl entegre edilir

Devam edin ve bu projenin nasıl oluşturulacağına dair daha ayrıntılı bir açıklama için pdf dosyasına erişin.

Adım 1: Donanım Gereksinimi

ihtiyacın olacak şey bu

  1. Güvenlik

    • 1 Ahududu Pi
    • 1 LCD
    • 1 RFID Okuyucu
    • 1 PiKamera
    • 2 RFID Kartı/Düğmesi
    • X Dişi -> Erkek jumper kabloları
  2. Savunma
    • 1 Ahududu Pi
    • 2 10 ㏀ Direnç (Düğmeler için)
    • 2 Mikro Servo
    • 1 650nm Lazer Verici Modülü
    • 2 Basma Düğmesi
    • 1 Zil
    • 3 Küçük Lastik Bant/Kablo Bağları (sabitlemek için)
    • X Dişi -> Erkek jumper kabloları
    • X Normal Atlama Kabloları
    • 1 Transistör
    • 1 Kapasitör
  3. Eğlenceler

    • 1 Ahududu Pi
    • 3 1 ㏀ Direnç (LED'ler için)
    • 1 10㏀ Direnç (LDR için)
    • 3 LED (Farklı Renkler)
    • 3 Düğme
    • 1 LDR
    • 1 LCD
    • 1 Pir Hareket Sensörü
    • X Dişi -> Erkek jumper kabloları
    • X Normal Atlama Kabloları

2. Adım: Güvenlik

Güvenlik
Güvenlik
Güvenlik
Güvenlik
Güvenlik
Güvenlik

Güvenlik sistemi donanımını oluşturma

Devreleri fritzing şemasında gösterildiği gibi bağlayın

Güvenlik sistemi yazılımının oluşturulması

  1. Bir şey oluşturarak AWS'yi yapılandırın
  2. AWS Python Kitaplığını Yükleyin
  3. LCD Kitaplığını Yükle
  4. RFID Kitaplığını Yükle
  5. Firebase'i kurun
  6. S3 Depolama Kurulumu
  7. Boto'yu Raspberry Pi'ye yükleyin
  8. AWS CLI'yi Raspberry Pi'ye yükleyin
  9. AWS Kimlik Bilgileri Oluşturun
  10. AWS'yi yapılandırın
  11. security.py'yi RPI'ye yükleyin
  12. imagerecognition.py dosyasını RPi'ye yükleyin

security.py, rfid girişlerini okuyacak ve kullanıcının bir davetsiz misafir olup olmadığını tespit edecek bir koddur. Kullanıcı tanınırsa, bir resim çekilir ve s3'e yüklenir. Kod ayrıca aws MQTT'deki bir konuyu yayınlar

3. Adım: Savunma

Savunma
Savunma
Savunma
Savunma
Savunma
Savunma

Lazer taret Donanımını oluşturma

  1. 2 servo ve 1 lazer modülü kullanarak lazer taretini oluşturuyoruz.
  2. Devreleri fritzing şemasında gösterildiği gibi bağlayın

Lazer taret Yazılımını oluşturma

Aşağıdaki kod, lazer taretinin rastgele yönlerde, rastgele patlamalarda ve hızda atış yapmasını sağlayacaktır

lazerturret.py

gpiozero'dan içe aktarma LED'i, Buzzer, Düğme, Servoimport süresi sinyalden içe aktarma duraklatma içe aktarma rastgele

#led = LED(12)

#pir = MotionSensor(19, sample_rate=5, tail_len=1) buzzer_pin = Buzzer(17) saldırı = Düğme(5, pull_up=Yanlış) #reset = Düğme(6, pull_up=Yanlış) servo1 = Servo(18) servo2 = Servo(24)

tanımlı ledON():

led.on() print("LED yanıyor") def ledOFF(): led.off() print("LED kapalı")

kesinlikle ateş():

print("sıcak silahlar") buzzer_pin.on() time.sleep(0.1) buzzer_pin.off()

def lazerturret():

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 detay = [timeBetweenBurst, timeBetweenShots, servo1.value, servo2.value, numShots] print(detay) while shot<numshots: shot+="1" servo1.value="servo1start" servo2.value="servo2start" servo1start="servo1change" servo2start="servo2change" time.sleep(timebetweenburst)

notlar = {

'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(frekans, uzunluk): #"buzz" fonksiyonunu yaratın ve onu perde ve süre ile besleyin)

if(sıklık==0):

time.sleep(uzunluk) dönüş periyodu = 1.0 / frekans #frekans gecikmeDeğeri = periyot / 2 #dalganın yarısı için süreyi hesapla numCycles = int(uzunluk * frekans) #dalga sayısı = aralıkta i için süre x frekans(numCycles)): #0'dan yukarıda hesaplanan "döngüler" değişkenine bir döngü başlat buzzer_pin.on() time.sleep(delayValue) buzzer_pin.off() time.sleep(delayValue)

def play(melodi, tempo, duraklama, tempo=0.800):

for i in range(0, len(melody)): # Play şarkı notaSüresi = tempo/tempo buzz(melodi, notSüresi) # Şarkı notası boyunca frekansı değiştirin duraklamaBetweenNotes = notDuration * duraklama süresi.sleep(duraklatBetweenNotes)

Doğru iken:

lazerturret() kırılması;

4. Adım: Eğlence

Eğlence
Eğlence
Eğlence
Eğlence
Eğlence
Eğlence

Eğlence Donanımı Oluşturma

LED'lerin yanma düzenini takip etmeniz ve ilgili düğmelere basmanız gereken Simon-diyor düğme oyununu yaratıyoruz. Gösterge tablolarında daha fazla kullanım için puanları ve zaman damgasını firebase NoSQL veritabanına yükler.

Devreleri Fritzing şemasında gösterildiği gibi bağlayın.

Eğlence Yazılımını Oluşturma

eğlence.py

ithalat RPi. GPIO = 'h5Sis7TXdoUVncrpjSzGAvhBH' CONSUMER_SECRET = 'ZfDVxc4aTd9doGmBQO3HiSKKzxSTKT4C3g0B3AGx8eETCJm2rY' ACCESS_KEY = 'Firebase ithalat Firebase tüketici_anahtarı gelen tarih saat ithalat datetime gelen zaman ithalat uykudan alt süreç ithalat çağrısından rpi_lcd ithalat LCD'den GPIOimport parçacığı ithalat zamanını içe rastgele ithalat os ithalat tweepy olarak 988333099669901312- YDLEQN1weW2n1JP4lxJcFPppCsbvzQh 'ACCESS_SECRET = 'K2IlUPur6jx7DO5S0HhhZW29H5AQFOvkMMevSsk9ZzwLk' yetkilendirme = tweepy. OAuthHandler (tüketici_anahtarı, CONSUMER_SECRET) auth.secure = Gerçek auth.set_access_token (ACCESS_KEY, ACCESS_SECRET) aPI = tweepy. API (auth) Firebase = firebase. FirebaseApplication (' https:// iotca2 -12f48.firebaseio.com', Yok) lcd=LCD() lcd.text('İyi eğlenceler!', 1) lcd.text('İyi Şanslar!', 2) uyku(1) # Kırmızı, Sarı, Yeşil IŞIKLAR = [40, 38, 36] DÜĞMELER = [37, 33, 35] NOTLAR = ["E3", "A4", "E4"] # oyun hızını etkileyen değiştirebileceğiniz değerler = 0,5 # oyunu işaret etmek için kullanılan bayraklar durum is_displaying_pattern = Yanlış is_won_curr ent_level = Yanlış is_game_over = Yanlış # oyun durumu 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. i aralığında(3) kurulum(BUTTONS, GPIO. IN, pull_up_down=GPIO. PUD_DOWN): GPIO.add_event_detect(BUTTONS, GPIO. FALLING, doğrulama_player_selection) def doğrulama_player_selection(channel): global current_step_of_level_, current_level, is_level_ is_game_over is_displaying_pattern değilse ve is_won_current_level değilse ve is_game_over değilse: flash_led_for_button(channel) if channel == BUTTONS[pattern[current_step_of_level]: current_step_of_level += 1 eğer current_step_of_level >= current_level: true_def_n_= şu anki_level: true_def_n_= 1 geçerli_level ise: 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, kür rent_step_of_level is_won_current_level = Yanlış 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 = Gerçek GPIO.output(LIGHTS, GPIO. LOW) için geçerli seviye: GPIO.output(LIGHTS[desen, GPIO. HIGH) time.sleep(hız) GPIO.output(IIGHTS[desen, GPIO. LOW) time.sleep(hız) is_displaying_pattern = Yanlış tanım wait_for_player_to_repeat_pattern (): is_won_current_level değilken ve is_game_over değilken: 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, model is_displaying_pattern = Yanlışseviye is_displaying_pattern = Yanlış_seviye = Yanlış_seviye = geçerli_seviye = Geçerli_seviye GPIO.output(IŞIKLAR, GPIO. LOW) def send_data(skor): lcd.text('Oyun sonu,', 1) lcd.text('Yakında görüşürüz!', 2) datestr = str(datetime. şimdi()) Doğru iken: print(datestr) print(score) data={ 'Tarih': datestr, 'Puan': puan } sonuç = firebase.post('/scores/', veri) print(sonuç) eğer puan > 2: durum='Birisi puan aldı ' + (str(skor)) +' '+datestr+'!' api.update_status (durum = durum) break def 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 - 1) print("Oyun Bitti! puan {} renklerdir!\n".format(current_level - 1)) sleep(2) print("Oyun için teşekkürler!\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(): deneyin: os.system('cls' if os.name == 'nt ' else 'clear') print("Yeni tura başla!\n") initialize_gpio() start_game_monitor() son olarak: GPIO.cleanup() if _name_ == '_main_': main()

Adım 5: IBM Bluemix'te Watson IOT Uygulaması [Birinci Bölüm]

Blumix IoT Service'i kurun

  1. Bir Ağ Geçidi Aygıt Türü Ayarlayın
  2. Bir Cihaz Kur

Adım 1 ve 2'yi 3 kez yapın. Bir RPI, bir bölüm içindir (Güvenlik/Savunma/Eğlence)

Node-Red'i kurun

kırmızı düğümü çalıştır

düğüm-kırmızı başlangıç

  1. Hamburger menüsünde paleti yönetmeye gidin (sağ üstte)
  2. Aşağıdaki paletleri indirin

    1. düğüm-kırmızı-dashboard
    2. node-red-katkı-firebase
    3. düğüm-red-katkı-ibm-watson-iot

Adım 6: Düğüm Kırmızı Akışları

Düğüm Kırmızı Akışları
Düğüm Kırmızı Akışları
Düğüm Kırmızı Akışları
Düğüm Kırmızı Akışları
Düğüm Kırmızı Akışları
Düğüm Kırmızı Akışları
Düğüm Kırmızı Akışları
Düğüm Kırmızı Akışları

Dosyaları indirin ve node-red'inize dışa aktarın.

Güvenlik Düğümü-Kırmızı

Yok

Savunma Rpi Düğümü-Kırmızı

lazerturret.txt

Eğlence Rpi Düğümü-Kırmızı

  • eğlence rpi akışı.txt
  • ldr rpi akışı.txt

IBM Bluemix Düğümü-Kırmızı

Önerilen: