
Isi kandungan:
2025 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2025-01-23 15:01



Mengenai Permohonan
Sistem IOT ini adalah Sistem Hiburan dan Keselamatan Rumah.
-
Keselamatan
- Ketuk Kad RFID dan input disimpan ke Firebase.
- Sekiranya dibenarkan, anda boleh memasukkan dengan tenang dan gambar diambil dan dimuat naik ke S3
- Sekiranya tidak dibenarkan, bahagian pertahanan masuk dan Skrin LCD akan mengatakan bahawa anda tidak dibenarkan.
-
Pertahanan
- Tekan butang di papan pemuka.
- Laser Turret akan menyerang secara semburan dan kelajuan secara rawak.
-
Hiburan
- Sekiranya gerakan dikesan, permainan akan dimulakan.
- Setelah pengguna memainkan permainan, skor akan disimpan ke Firebase.
- Nilai LDR akan diambil dan dikeluarkan pada papan pemuka.
Aplikasi ini dapat dikawal dan dilihat melalui pelayan web IBM Node-Red. Kami menggunakan Perkhidmatan Awan AWS dan IBM dan kami menggunakan Firebase sebagai pangkalan data kami.
Ringkasan langkah-langkah yang akan dihuraikan
- Keperluan Perkakasan
- Keselamatan - Cara membuat sistem keselamatan yang menggunakan input RFID dan perisian pengecam gambar
- Pertahanan - Cara membuat turet laser
- Hiburan - Cara membuat permainan Simon-mengatakan
- IOT App Watson pada IBM Bluemix - Cara mengintegrasikan semua sistem ke dalam satu papan pemuka
Teruskan dan akses fail pdf untuk penjelasan yang lebih terperinci mengenai cara membuat projek ini.
Langkah 1: Keperluan Perkakasan
Inilah yang anda perlukan
-
Keselamatan
- 1 Raspberry Pi
- 1 LCD
- 1 Pembaca RFID
- 1 PiCam
- 2 Kad / Butang RFID
- X Perempuan -> Kabel pelompat lelaki
-
Pertahanan
- 1 Raspberry Pi
- 2 10 ใ Perintang (untuk Butang)
- 2 Servo Mikro
- 1 Modul Pemancar Laser 650nm
- 2 Butang Tekan
- 1 Buzzer
- 3 Jalur Getah Kecil / Ikatan Kabel (untuk pemasangan)
- X Perempuan -> Kabel pelompat lelaki
- X Kabel Lompat Biasa
- 1 Transistor
- 1 Kapasitor
-
Hiburan
- 1 Raspberry Pi
- 3 1 ใ Perintang (untuk LED)
- 1 10ใ Perintang (untuk LDR)
- 3 LED (Warna berbeza)
- 3 Butang
- 1 LDR
- 1 LCD
- 1 Sensor Gerakan Pir
- X Perempuan -> Kabel pelompat lelaki
- X Kabel Lompat Biasa
Langkah 2: Keselamatan



Membuat perkakasan sistem keselamatan
Sambungkan litar seperti yang ditunjukkan dalam rajah fritzing
Membuat perisian sistem keselamatan
- Konfigurasikan AWS dengan membuat sesuatu
- Pasang Pustaka AWS Python
- Pasang Perpustakaan LCD
- Pasang Perpustakaan RFID
- Sediakan Firebase
- Sediakan Storan S3
- Pasang Boto pada Raspberry Pi
- Pasang AWS ClI pada Raspberry Pi
- Buat Kelayakan AWS
- Konfigurasikan AWS
- Muat naik security.py ke RPi
- Muat naik imagerecognition.py ke RPi
security.py adalah kod yang akan membaca input rfid dan mengesan sama ada pengguna adalah penceroboh atau tidak. Sekiranya pengguna dikenali, gambar akan diambil dan dimuat naik ke s3. Kod ini juga menerbitkan topik dalam MQTT aws
Langkah 3: Pertahanan



Membuat Perkakasan turret laser
- Kami membuat turret laser dengan menggunakan 2 servos dan 1 Modul Laser
- Sambungkan litar seperti yang ditunjukkan dalam rajah fritzing
Membuat Perisian turret laser
Kod di bawah ini akan menjadikan pemotretan laser dalam arah rawak, dalam pecahan dan kelajuan secara rawak
laserturret.py
dari gpiozero import LED, Buzzer, Button, Servoimport time dari import signal jeda import secara rawak
#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 () print ("LED on") def ledOFF (): led.off () print ("LED mati")
def def ():
cetak ("senjata panas") 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.v. = servis servo2start time.sleep (0.1) = 0 detail = [timeBetweenBurst, timeBetweenShots, servo1.value, servo2.value, numShots] print (detail) semasa ditembak <numshots: shot + = "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" fire () = "" time.sleep (timebetweenshots) = "" time.sleep (timebetweenburst)
nota = {
'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 (frekuensi, panjang): # buat fungsi "buzz" dan beri makan nada dan tempohnya)
jika (kekerapan == 0):
time.sleep (length) period return = 1.0 / frekuensi #frequency delayValue = period / 2 #kira masa untuk separuh gelombang gelombang): #mulakan gelung dari 0 ke pemboleh ubah "kitaran" yang dikira di atas buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)
mainkan def (melodi, tempo, pause, pace = 0.800):
untuk i dalam jarak (0, len (melodi)): # Mainkan nota laguDuration = laju / tempo buzz (melodi , noteDuration) # Tukar frekuensi sepanjang jeda nota laguBetweenNotes = noteDuration * pause time.sleep (berhenti seketika antara Nota)
Walaupun Betul:
laserturret () rehat;
Langkah 4: Hiburan



Membuat Perkakasan hiburan
Kami membuat permainan butang Simon-mengatakan, yang mana anda harus mengikuti corak lampu LED menyala dan menekan butang yang sesuai. Ia memuat naik skor dan cap waktu ke dalam pangkalan data NoSQL firebase untuk penggunaan lebih lanjut di papan pemuka.
Sambungkan litar seperti yang ditunjukkan dalam rajah Fritzing.
Membuat Perisian Hiburan
hiburan.py
import RPi. GPIO sebagai GPIOimport masa threading import tweepy import rawak import os import dari LCD rpi_lcd import dari panggilan subprocess import dari tidur import masa dari datetime datetime import dari Firebase import Firebase CONSUMER_KEY = 'h5Sis7TXdoUVncrpjSzGAvhBH' CONSUMER_SECRET = 'ZfDVxc4aTd9doGmBQO3HiSKKzxSTKT4C3g0B3AGx8eETCJm2rY' ACCESS_KEY = '988333099669901312- YDLEQN1weW2n1JP4lxJcFPppCsbvzQh 'ACCESS_SECRET =' K2IlUPur6jx7DO5S0HhhZW29H5AQFOvkMMevSsk9ZzwLk 'auth = tweepy. OAuthHandler (CONSUMER_KEY, CONSUMER_SECRET) auth.secure = auth.set_access_token sebenar (ACCESS_KEY, ACCESS_SECRET) api = tweepy. API (auth) Firebase = firebase. FirebaseApplication (' https:// iotca2 -12f48.firebaseio.com ', None) lcd = LCD () lcd.text (' Have fun! ', 1) lcd.text (' Good Luck! ', 2) tidur (1) # Merah, Kuning, Hijau CAHAYA = [40, 38, 36] Tombol = [37, 33, 35] CATATAN = ["E3", "A4", "E4"] # nilai yang dapat anda ubah yang mempengaruhi kelajuan permainan permainan = 0.5 # bendera yang digunakan untuk memberi isyarat permainan status is_displaying_pattern = Palsu is_won_curr ent_level = False is_game_over = False # game state current_level = 1 current_step_of_level = 0 pattern = def initialize_gpio (): GPIO.setmode (GPIO. BOARD) GPIO.setup (LIGHTS, GPIO. OUT, awal = GPIO. LOW) GPIO. persediaan (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) untuk i dalam jarak (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, verifikasi_player_selection) def verifikasi_player_selection (saluran): is_game_over if not is_displaying_pattern and not is_won_current_level dan not is_game_over: flash_led_for_button (channel) if channel == BUTTONS [pattern [current_step_of_level]: current_step_of_level + = 1 jika current_step_of_vel_vel_vel_vel_vel_vel_vel_vel_level sekarang 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_c 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_pattern = TrueLayar: GPIO.output (LIGHTS [pattern , GPIO. HIGH) time.sleep (speed) GPIO.output (LIGHTS [pattern , GPIO. LOW) time.sleep (speed) is_displaying_pattern = False def waiting_for_player_to_repeat_pattern (): manakala tidak is_won_current_level dan tidak is_game_over: time.sleep (0.1) def reset_board_for_new_game (): is_displaying_pattern global, is_won_current_level, current_level is_game_over global, current_step_of_level, corak is_displaying_pattern = is_won_current_level palsu = is_game_over palsu = current_level palsu = 1 current_step_of_level = 0 corak = GPIO.output (LIGHTS, GPIO. LOW) def send_data (skor): lcd.text ('Akhir permainan,', 1) lcd.text ('Sampai jumpa lagi!', 2) datestr = str (datetime. sekarang ()) sementara Benar: cetak (datestr) cetak (skor) data = {'Tarikh': datestr, 'Skor': skor} hasil = firebase.post ('/ skor /', data) cetak (hasil) jika skor> 2: status = 'Seseorang telah menjaringkan' + (str (skor)) + 'on' + datestr + '!' api.update_status (status = status) break def start_game (): while True: add_new_color_to_pattern () display_pattern_to_player () waiting_for_player_to_repeat_pattern () if is_game_over: send_data (current_level - 1) cetak ("Warna Game! n skor".format (current_level - 1)) sleep (2) print ("Terima kasih kerana bermain! / n") lcd.text ('', 1) lcd.text ('', 2) waktu rehat. tidur (2) def start_game_monitor (): t = threading. Thread (target = start_game) t.daemon = True t.start () t.join () def main (): cuba: os.system ('cls' if os.name == 'nt 'else' clear ') cetak ("Mulakan pusingan baru! / n") initialize_gpio () start_game_monitor () akhirnya: GPIO.cleanup () if _name_ ==' _main_ ': main ()
Langkah 5: Aplikasi IOT Watson di IBM Bluemix [Bahagian Satu]
Sediakan Perkhidmatan Blumix IoT
- Sediakan Jenis Peranti Gateway
- Sediakan Peranti
Lakukan langkah 1 dan 2 sebanyak 3 kali. Satu RPi adalah untuk satu bahagian (Keselamatan / Pertahanan / Hiburan)
Sediakan Node-Red
Jalankan simpul-merah
permulaan simpul-merah
- Pergi untuk menguruskan palet di menu hamburger (kanan atas)
-
Muat turun pallet berikut
- papan pemuka simpul-merah
- node-red-contrib-firebase
- node-red-contrib-ibm-watson-iot
Langkah 6: Node Aliran Merah




Muat turun fail dan eksport ke nod merah anda.
Node Keselamatan-Merah
tiada
Pertahanan Rpi Node-Red
laserturret.txt
Hiburan Rpi Node-Red
- aliran rpi hiburan.txt
- ldr rpi flow.txt
IBM Bluemix Node-Red
Disyorkan:
KS-Garden: Gambaran Keseluruhan: 9 Langkah

KS-Garden: Gambaran Keseluruhan: KS-Garden dapat digunakan untuk mengairi / menyalurkan / menyalakan tanaman kebun / rumah hijau di halaman belakang atau tanaman kotak dalaman anda (Reka bentuk modular) Sistem KS-Garden terdiri terutamanya dari modul berikut: kotak sistem - Relais dan kotak bekalan kuasa
Motor yang Dikendalikan Transistor Dengan Alat Jauh; Gambaran Keseluruhan Litar: 9 Langkah

Transistor Controlled Motor With Remote Control; Circuit Overview: Litar ini adalah motor yang dikendalikan transistor dengan alat kawalan jauh. Alat kawalan jauh menghidupkan kuasa. Transistor akan menghidupkan motor. Kod program akan meningkatkan kelajuan motor dan kemudian turunkan kelajuan motor hingga sifar
Reka Bentuk & Pengukiran PCB Gambaran Keseluruhan: 5 Langkah

Gambaran Keseluruhan Reka Bentuk & Pengukuhan PCB: Terdapat beberapa cara merancang dan mengukir PCB, dari yang paling mudah hingga yang paling canggih. Sementara itu mudah untuk keliru tentang mana yang harus dipilih, mana yang paling sesuai dengan keperluan anda. Untuk menjelaskan beberapa soalan seperti
Menggunakan Jambatan H (293D) untuk Memandu 2 Geared Hobby Motors Ans Arduino; Gambaran keseluruhan litar: 9 Langkah

Menggunakan Jambatan H (293D) untuk Memandu 2 Geared Hobby Motors Ans Arduino; Gambaran keseluruhan litar: Jambatan H 293D adalah litar bersepadu yang mampu menggerakkan 2 motor. Kelebihan jambatan H berbanding transistor atau litar kawalan MOSFET adalah bahawa ia boleh menggerakkan 2 motor secara dua arah (maju dan mundur) dengan Kod
Gambaran Keseluruhan Projek Bola Kristal: 10 Langkah

Gambaran Keseluruhan Projek Crystal Ball: Instruksional ini dibuat untuk memenuhi keperluan projek Makecourse di University of South Florida (www.makecourse.com) Projek bola Crystal saya adalah gabungan mainan Mattel tahun 1950-an Magic Eight-ball dan tel untung