Orodha ya maudhui:

Muhtasari: Burudani ya Nyumbani na Mfumo wa Usalama: Hatua 6
Muhtasari: Burudani ya Nyumbani na Mfumo wa Usalama: Hatua 6

Video: Muhtasari: Burudani ya Nyumbani na Mfumo wa Usalama: Hatua 6

Video: Muhtasari: Burudani ya Nyumbani na Mfumo wa Usalama: Hatua 6
Video: Kama una alama ya herufi M KIGANJANI fanya haya kufungua njia ya mafanikio 2024, Novemba
Anonim
Muhtasari: Burudani ya Nyumbani na Mfumo wa Usalama
Muhtasari: Burudani ya Nyumbani na Mfumo wa Usalama
Muhtasari: Burudani ya Nyumbani na Mfumo wa Usalama
Muhtasari: Burudani ya Nyumbani na Mfumo wa Usalama
Muhtasari: Burudani ya Nyumbani na Mfumo wa Usalama
Muhtasari: Burudani ya Nyumbani na Mfumo wa Usalama

Kuhusu Maombi

Mfumo huu wa IOT ni Burudani ya Nyumbani na Mfumo wa Usalama.

  1. Usalama
    1. Gonga Kadi ya RFID na pembejeo zinahifadhiwa kwenye Firebase.
    2. Ikiwa umeidhinishwa, unaweza kuingia kwa amani na picha imechukuliwa na kupakiwa kwenye S3
    3. Ikiwa ruhusa, sehemu ya ulinzi inakuja na Skrini ya LCD itasema haujaruhusiwa.
  2. Ulinzi

    1. Bonyeza kitufe kwenye dashibodi.
    2. Laser Turrets itashambulia kwa kupasuka kwa kasi na kasi.
  3. Burudani

    1. Ikiwa mwendo umegunduliwa, mchezo utaanza.
    2. Baada ya mtumiaji kucheza mchezo, alama huhifadhiwa kwenye Firebase.
    3. Thamani za LDR zitachukuliwa na kutolewa kwenye dashibodi.

Maombi haya yanadhibitiwa na yanaonekana kupitia seva ya wavuti ya IBM Node-Red. Tunatumia AWS na IBM Cloud Services na tulitumia Firebase kama hifadhidata yetu.

Muhtasari wa hatua ambazo zitaelezewa

  • Mahitaji ya vifaa
  • Usalama - Jinsi ya kuunda mfumo wa usalama ambao hutumia uingizaji wa RFID na programu ya utambuzi wa picha
  • Ulinzi - Jinsi ya kuunda turret laser
  • Burudani - Jinsi ya kuunda mchezo wa Simon-anasema
  • IOT App Watson kwenye IBM Bluemix - Jinsi ya kuunganisha mifumo yote kwenye dashibodi moja

Endelea na fikia faili ya pdf kwa ufafanuzi wa kina juu ya jinsi ya kuunda mradi huu.

Hatua ya 1: Mahitaji ya vifaa

Hii ndio utahitaji

  1. Usalama
    • 1 Raspberry Pi
    • 1 LCD
    • Msomaji 1 wa RFID
    • 1 PiCam
    • Kadi / Vifungo 2 vya RFID
    • X Kike -> Kamba za kuruka za kiume
  2. Ulinzi

    • 1 Raspberry Pi
    • 2 10 ist Resistor (kwa Vifungo)
    • 2 Servo ndogo
    • Moduli ya Kusambaza Laser 1 650nm
    • 2 Kitufe cha Bonyeza
    • 1 Buzzer
    • 3 Bendi ndogo za Mpira / Vifungo vya Cable (kwa kurekebisha)
    • X Kike -> Kamba za kuruka za kiume
    • X nyaya za Kuruka Mara kwa Mara
    • 1 Transistor
    • 1 Mtunzaji
  3. Burudani

    • 1 Raspberry Pi
    • 3 1, Resistor (kwa LED)
    • 1 10㏀ Resistor (kwa LDR)
    • LED 3 (Rangi tofauti)
    • Vifungo 3
    • 1 LDR
    • 1 LCD
    • 1 Sensor ya Mwendo wa Pir
    • X Kike -> Kamba za kuruka za kiume
    • X nyaya za Kuruka Mara kwa Mara

Hatua ya 2: Usalama

Usalama
Usalama
Usalama
Usalama
Usalama
Usalama

Kuunda vifaa vya mfumo wa usalama

Unganisha mizunguko kama inavyoonyeshwa kwenye mchoro wa fritzing

Kuunda programu ya mfumo wa usalama

  1. Sanidi AWS kwa kuunda kitu
  2. Sakinisha Maktaba ya chatu ya AWS
  3. Sakinisha Maktaba ya LCD
  4. Sakinisha Maktaba ya RFID
  5. Sanidi Firebase
  6. Sanidi Hifadhi ya S3
  7. Sakinisha Boto kwenye Raspberry Pi
  8. Sakinisha AWS ClI kwenye Raspberry Pi
  9. Unda Kitambulisho cha AWS
  10. Sanidi AWS
  11. Pakia usalama.py kwa RPi
  12. Pakia picharecognition.py kwa RPi

usalama.py ni nambari ambayo itasoma pembejeo za rfid na kugundua ikiwa mtumiaji ni mvamizi au la. Ikiwa mtumiaji anatambuliwa, picha itachukuliwa na kupakiwa kwenye s3. Nambari pia inachapisha kwa mada katika aws MQTT

Hatua ya 3: Ulinzi

Ulinzi
Ulinzi
Ulinzi
Ulinzi
Ulinzi
Ulinzi

Kuunda vifaa vya laser turret

  1. Tunaunda turret ya laser kwa kutumia servos 2 na Moduli 1 ya Laser
  2. Unganisha mizunguko kama inavyoonyeshwa kwenye mchoro wa fritzing

Kuunda Programu ya laser turret

Nambari iliyo hapo chini itafanya laser turret ipiga risasi kwa njia zisizo za kawaida, kwa kupasuka kwa kasi na kasi

laserturret.py

kutoka kwa gpiozero kuagiza LED, Buzzer, Button, Servoimport wakati kutoka kwa ishara kuingiza pause kuagiza random

#led = LED (12)

#pir = MotionSensor (19, sample_rate = 5, foleni_len = 1) buzzer_pin = Buzzer (17) shambulio = Kifungo (5, pull_up = False) #reset = Button (6, pull_up = False) servo1 = Servo (18) servo2 = Servo (24)

def ledON ():

led.on () chapa ("LED imewashwa") def ledOFF (): led.off () chapa ("LED imezimwa")

def fire ():

chapisha ("silaha moto") buzzer_pin.on () muda.lala (0.1) buzzer_pin.off ()

def laserturret ():

timeBetweenBurst = random.uniform (0.2, 1) wakatiBearShots = 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. = saa ya kuanza kwa saa. kulala (0.1) risasi = 0 undani = [timeBearBurst, timeBetweenShots, servo1.value, servo2.value, numShots] chapa (undani) wakati unapigwa risasi <numshots: shot + = "1" servo1.value = "servo1start" servo2. Thamani = "servo2start" servo1start = "servo1change" servo2start = "servo2change" moto () = "" time.sleep (timebetweenshots) = "" time. kulala (timebetweenburst)

maelezo = {

'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 (masafa, urefu): #unda kazi "buzz" na uilishe lami na muda)

ikiwa (masafa == 0):

muda wa kulala (urefu) kipindi cha kurudi = 1.0 / masafa # kuchelewesha mara kwa mara Thamani = kipindi / 2 #chukua muda wa nusu ya mawimbi numCycles = int (urefu * frequency) # idadi ya mawimbi = duratime x freq kwa i katika anuwai (numCycles # anza kitanzi kutoka 0 hadi "mizunguko" inayobadilishwa hapo juu buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)

cheza kucheza (melody, tempo, pause, pace = 0.800):

kwa i katika anuwai (0, len (melody)): # Cheza dokezo la wimboDuration = kasi / tempo buzz (melody , noteDuration) # Badilisha mzunguko kwenye kichefuchefu cha wimbo pauseBetweenNotes)

wakati Kweli:

kuvunja laserturret ();

Hatua ya 4: Burudani

Burudani
Burudani
Burudani
Burudani
Burudani
Burudani

Kuunda vifaa vya burudani

Tunaunda mchezo wa kifungo cha Simon-anasema, ambayo lazima ufuate muundo wa taa za taa zinawaka na bonyeza vifungo vinavyolingana. Inapakia alama na muhuri wa muda kwenye hifadhidata ya NoSQL ya firebase kwa matumizi zaidi kwenye dashibodi.

Unganisha mizunguko kama inavyoonyeshwa kwenye mchoro wa Fritzing.

Kuunda Programu ya Burudani

burudani.py

kuagiza RPi. GPIO kama GPIOimport threading kuagiza wakati kuagiza random kuagiza os kuagiza tweepy kutoka rpi_lcd kuagiza LCD kutoka subprocess kuagiza simu kutoka wakati kuagiza usingizi kutoka DATETIME kuagiza DATETIME kutoka Firebase kuagiza 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 Kweli (ACCESS_KEY, ACCESS_SECRET) api = tweepy. API (Auth) Firebase = firebase. FirebaseApplication (' https:// iotca2 -12f48.firebaseio.com ', Hamna) lcd = LCD () lcd. Maandishi (' Kuwa na furaha! ', 1) lcd. maandishi (' Bahati nzuri! ', 2) kulala (1) # Nyekundu, Njano, NURU YA TAI = [40, 38, 36] Vifungo = [37, 33, 35] MAELEZO = ["E3", "A4", "E4"] Thamani # unazoweza kubadilisha zinazoathiri kasi ya uchezaji wa mchezo = 0.5 bendera zinazotumiwa kuashiria mchezo hadhi is_displaying_pattern = Uongo ni_won_curr ent_level = Uongo ni_mchezo_over = Uongo # hali ya mchezo wa sasa_level = 1 ya sasa_ hatua_ya_level = 0 muundo = def initialize_gpio (): GPIO.setmode (GPIO. BOARD) GPIO.setup (LIGHTS, GPIO. OUT, initial = GPIO. LOW) GPIO. usanidi (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) kwa i katika masafa (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, confirm_player_selection) def confirm_player_selection (kituo): global current_step_oflevel, wave, sasa, is_game_over if not is_displaying_pattern and not is_won_current_level and is is_game_over: flash_led_for_button (channel) if channel == BUTTONS [pattern [current_step_of_level]: current_step_of_level + = 1 if current_step_of_le_le_la_la_la_la_la_la_la_la_la_la_la_la_la_za_ujuzi_wa_wa_la_la_la_la_la_la_la_la_la_la_la_la_la_la_la_la_la_la_la_la_la_la_la_la_la_la_lawakati = kweli = = sasa flash_led_for_button (button_channel): led = TAA [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 = Uongo wa sasa_tep_of_level = 0 next_color = random.randint (0, 2) mfano.: Pato la GPIO (taa [mfano] [): wakati sio_i_kwakati_kwa sasa na sio_mchezo_wakati: saa. kulala (0.1) def_board_for_new_game (): kimataifa is_displaying_pattern, is_won_current_level, is_game_over global current_level, current_step_of_level = GPIO.output (Taa, GPIO. LOW) def send_data (alama): lcd.text ('Mwisho wa mchezo,', 1) lcd.text ('Tutaonana hivi karibuni!', 2) datestr = str (datetime. now ()) wakati Kweli: chapa (datestr data ya kuchapisha (alama) = {'Tarehe': datestr, 'Alama': alama} matokeo = firebase.post ('/ alama /', data) chapisha (matokeo) ikiwa alama> 2: status = 'Mtu amepata bao' + (str (alama)) + 'on' + datestr + '!' api. format (current_level - 1)) lala (2) chapisha ("Asante kwa kucheza! / n") lcd.text ('', 1) lcd.text ('', 2) muda wa mapumziko. kulala (2) def start_game_monitor Thread (target = start_game) t.daemon = Kweli t.start () t.join () def main (): jaribu: os.system ('cls' if os.name == 'nt) 'kingine' wazi ') chapa ("Anza raundi mpya!

Hatua ya 5: IOT App Watson kwenye IBM Bluemix [Sehemu ya Kwanza]

Sanidi Huduma ya Blumix IoT

  1. Sanidi Aina ya Kifaa cha Lango
  2. Sanidi Kifaa

Fanya hatua 1 na 2 kwa mara 3. RPi moja ni ya sehemu moja (Usalama / Ulinzi / Burudani)

Sanidi Node-Nyekundu

Run node-nyekundu

node-nyekundu kuanza

  1. Nenda kudhibiti palette kwenye menyu ya hamburger (juu kulia)
  2. Pakua palletes zifuatazo

    1. node-nyekundu-dashibodi
    2. node-nyekundu-contrib-firebase
    3. node-nyekundu-contrib-ibm-watson-iot

Hatua ya 6: Node Red Flows

Node Nyekundu inapita
Node Nyekundu inapita
Node Nyekundu inapita
Node Nyekundu inapita
Node Nyekundu inapita
Node Nyekundu inapita
Node Nyekundu inapita
Node Nyekundu inapita

Pakua faili na usafirishe kwenye node-nyekundu yako.

Node-Nyekundu ya Usalama

hakuna

Ulinzi Rpi Node-Nyekundu

laserturret.txt

Burudani Rpi Node-Nyekundu

  • burudani rpi kati yake.txt
  • ldr rpi mtiririko.txt

Nambari-Nyekundu ya IBM

Ilipendekeza: