Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-23 12:54
Tətbiq haqqında
Bu IOT sistemi Ev Əyləncə və Təhlükəsizlik Sistemidir.
-
Təhlükəsizlik
- RFID Kartına toxunun və giriş Firebase -də saxlanılır.
- İcazə verilsə, sülh yolu ilə daxil ola bilərsiniz və şəkil çəkilib S3 -ə yüklənir
- İ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.
-
Müdafiə
- Tablosundakı düyməni basın.
- Lazer Kuleleri təsadüfi partlayış və sürətlə hücum edəcək.
-
Əyləncə
- Hərəkət aşkar edilərsə, oyun başlayacaq.
- İstifadəçi oyunu oynadıqdan sonra hesab Firebase -də saxlanılır.
- 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
-
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
-
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
-
Ə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 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ı
- Bir şey yaratmaqla AWS -ni konfiqurasiya edin
- AWS Python Kitabxanasını quraşdırın
- LCD Kitabxanasını quraşdırın
- RFID Kitabxanasını quraşdırın
- Firebase qurun
- S3 saxlama qurmaq
- Raspberry Pi -də Boto quraşdırın
- Raspberry Pi üzərində AWS ClI quraşdırın
- AWS etimadnaməsini yaradın
- AWS -i konfiqurasiya edin
- Security.py faylını RPi -yə yükləyin
- İ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ə
Lazer qülləsinin qurğularının yaradılması
- 2 servo və 1 Lazer Modulu istifadə edərək lazer qülləsi yaradırıq
- 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ə 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
- Bir Ağ Geçidi Cihaz Tipi qurun
- 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
- Hamburger menyusundan palitranı idarə etmək üçün gedin (yuxarı sağda)
-
Aşağıdakı paletləri yükləyin
- qovşaq-qırmızı-tablosuna
- qovşaq-qırmızı-töhfə-firebase
- node-qırmızı-töhfə-ibm-watson-iot
Addım 6: Qırmızı Nodlu 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ə:
RTC və İstifadəçi tərəfindən təyin olunan Pin Kodu ilə Elektron Təhlükəsizlik Sistemi: 7 addım
RTC və İstifadəçi ilə Elektron Təhlükəsizlik Sistemi Pin Kodu təyin edir: Salam uşaqlar! Bu, şəkil mikrokontrolöründən istifadə edərək real vaxt saatı olan və istifadəçinin pin kodu xüsusiyyətlərini təyin edən Elektron PIN Kodu Təhlükəsizlik Sistemini istifadə edərək hazırladığım bir layihədir, bu səhifədə özünüz etmək üçün bütün detallar var
DIY-Parmak İzi Açar Təhlükəsizlik Sistemi: 8 addım
DIY-Parmak İzi Açar Təhlükəsizlik Sistemi: Bu proqram günümüzün tələb olunan düymələrini (kilidi) təmin etmək üçün faydalıdır. Bəzən iki, daha çox adam arasında ev, qaraj, dayanacaq kimi bəzi ümumi açarlarımız olur. Bazarda mövcud olan bir çox biometrik sistem mövcuddur, bu
Taxta Super Nintendo Əyləncə Sistemi (SNES): 11 addım
Taxta Super Nintendo Əyləncə Sistemi (SNES): Vyanadakı bir istehsalçı-yarmarkada, taxta bir Super Nintendo Əyləncə Sisteminə (SNES) rast gəlmək xoşuma gəldi. Uşaqlıqda böyük qardaşımla belə bir oyun konsolu ilə oynayırdım. Yenidən Super Marioya aludə olduğumu tanıyanda
Super Taxta Əyləncə Sistemi: 9 Adım (Şəkillərlə birlikdə)
Super Taxta Əyləncə Sistemi: Tam işləyən taxta Super Nintendo Əyləncə Sistemlərimi qürurla təqdim edirəm. Təlimatımı taxta Super Nintendo Gamepad necə quracağımı yazmamışdan əvvəl, indi konsolu necə quracağınızı sizə göstərməyin vaxtıdır. Taxta kassa çoxsaylı s
Nintendo Əyləncə Sistemi Kartuş Saatı: 7 Adım (Şəkillərlə birlikdə)
Nintendo Əyləncə Sistemi Kartuş Saatı: Bir müddət əvvəl dostum Carolyn Main Milad üçün dostları üçün bir neçə NES kartuş saatı hazırladı. NES Kartuş Saatının möhtəşəmliyi bütün ölkələrə yayılmalıdır. İndi internetə girib bir dənə ala bilərsiniz … AMMA: 1) Hamımız bilirik ki