Përmbajtje:
- Hapi 1: Kërkesa për harduer
- Hapi 2: Siguria
- Hapi 3: Mbrojtja
- Hapi 4: Argëtim
- Hapi 5: IOT App Watson në IBM Bluemix [Pjesa e Parë]
- Hapi 6: Rrjedhat e Kuqe të Nyjes
Video: Vështrim i përgjithshëm: Argëtimi në shtëpi dhe sistemi i sigurisë: 6 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:24
Rreth Aplikimit
Ky sistem IOT është një sistem argëtimi dhe sigurie në shtëpi.
- Siguria
- Prekni RFID Card dhe hyrjet ruhen në Firebase.
- Nëse jeni të autorizuar, mund të hyni në mënyrë paqësore dhe fotografia merret dhe ngarkohet në S3
- Nëse është e paautorizuar, hyn seksioni i mbrojtjes dhe një ekran LCD do të thotë që nuk jeni i autorizuar.
-
Mbrojtjes
- Shtypni butonin në pult.
- Frëngjitë Laser do të sulmojnë me hov dhe shpejtësi të rastësishme.
-
Argëtuese
- Nëse lëvizja zbulohet, loja do të fillojë.
- Pasi përdoruesi të luajë lojën, rezultati ruhet në Firebase.
- Vlerat LDR do të merren dhe dalin në pult.
Ky aplikacion është i kontrollueshëm dhe i shikueshëm përmes serverit të uebit IBM Node-Red. Ne përdorim AWS dhe IBM Cloud Services dhe kemi përdorur Firebase si bazën tonë të të dhënave.
Përmbledhje e hapave që do të përshkruhen
- Kërkesat e harduerit
- Siguria - Si të krijoni një sistem sigurie që përdor hyrjen RFID dhe një softuer për njohjen e imazhit
- Mbrojtja - Si të krijoni një frëngji lazer
- Argëtim - Si të krijoni një lojë Simon -thotë
- IOT App Watson në IBM Bluemix - Si të integroni të gjitha sistemet në një pult
Shkoni përpara dhe hyni në skedarin pdf për një shpjegim më të detajuar se si të krijoni këtë projekt.
Hapi 1: Kërkesa për harduer
Kjo është ajo që do t'ju duhet
- Siguria
- 1 mjedër Pi
- 1 LCD
- 1 Lexues RFID
- 1 PiCam
- 2 Kartela/Butona RFID
- X Femra -> Kabllo meshkuj bluzë
-
Mbrojtjes
- 1 mjedër Pi
- 2 Rezistencë 10 (për butonat)
- 2 Mikro Servo
- 1 Modul Transmetues Laser 650nm
- Butoni 2 Shtypi
- 1 Zile
- 3 shirita të vegjël gome/lidhje kabllore (për fiksim)
- X Femra -> Kabllo meshkuj bluzë
- X Kabllo të rregullta të kërcimit
- 1 tranzistor
- 1 Kondensator
-
Argëtuese
- 1 mjedër Pi
- 3 1 ㏀ Rezistencë (për LED)
- 1 10㏀ Rezistencë (për LDR)
- 3 LED (ngjyra të ndryshme)
- 3 butona
- 1 LDR
- 1 LCD
- Sensori i lëvizjes 1 Pir
- X Femra -> Kabllo meshkuj bluzë
- X Kabllo të rregullta të kërcimit
Hapi 2: Siguria
Krijimi i pajisjeve të sistemit të sigurisë
Lidhni qarqet siç tregohet në diagramin e ngrirjes
Krijimi i softuerit të sistemit të sigurisë
- Konfiguroni AWS duke krijuar një gjë
- Instaloni Bibliotekën AWS Python
- Instaloni Bibliotekën LCD
- Instaloni Bibliotekën RFID
- Konfiguro Firebase
- Konfiguro S3 Storage
- Instaloni Boto në Raspberry Pi
- Instaloni AWS ClI në Raspberry Pi
- Krijoni Kredencialet AWS
- Konfiguro AWS
- Ngarko security.py te RPi
- Ngarko imagerecognition.py te RPi
security.py është një kod që do të lexojë hyrjet rfid dhe do të zbulojë nëse përdoruesi është një ndërhyrës apo jo. Nëse përdoruesi njihet, një imazh do të merret dhe ngarkohet në s3. Kodi gjithashtu publikon një temë në aws MQTT
Hapi 3: Mbrojtja
Krijimi i harduerit të frëngjisë lazer
- Ne krijojmë frëngji lazer duke përdorur 2 servos dhe 1 Modul Laser
- Lidhni qarqet siç tregohet në diagramin e ngrirjes
Krijimi i softuerit të frëngjisë lazer
Kodi më poshtë do të bëjë që frëngji lazer të qëllojë në drejtime të rastësishme, në shpërthime dhe shpejtësi të rastësishme
laserturret.py
nga gpiozero import LED, Buzzer, Button, Servoimport koha nga sinjali i importit pauzë importin e rastësishëm
#led = LED (12)
#pir = MotionSensor (19, mostra_rate = 5, queue_len = 1) buzzer_pin = Sulmuesi (17) sulmi = Butoni (5, pull_up = False) #reset = Button (6, pull_up = False) servo1 = Servo (18) servo2 = Servo (24)
def ledON ():
led.on () print ("LED është i ndezur") def ledOFF (): print. led.off () ("LED është i fikur")
def fire ():
print ("armë të nxehta") 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) shtënë = 0 detaje = [timeBetweenBurst, timeBetweenShots, servo1.value, servo2.value, numShots] print (detaje) gjatë xhirimit <numshots: shot+= "1" servo1.value = "servo1start" servo2.vlera = "servo2start" servo1start = "servo1change" servo2start = "servo2change" zjarr () = "" kohë. gjumë (kohë midis ndryshimeve) = "" kohë. gjumë (kohë midis shpërthimit)
shënime = {
'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 (frekuenca, gjatësia): #krijoni funksionin "gumëzhimë" dhe ushqeni atë me lartësinë dhe kohëzgjatjen)
nëse (frekuenca == 0):
koha.gjumi (gjatësia) periudha e kthimit = 1.0 / frekuenca #vonesa e frekuencësVlera = periudha / 2 #vlerësoni kohën për gjysmën e valës num): #filloni një lak nga 0 në variablin "cikle" të llogaritur më sipër buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)
def lojë (melodi, tempo, pauzë, ritëm = 0.800):
për i në rang (0, len (melodi)): # Luani shënimin e këngësKohëzgjatja = ritmi/tempo gumëzhimë (melodi , shënimDuration) # Ndryshoni frekuencën përgjatë pauzës së notës së këngësNdërmjetNotes = shënimKohëzgjatje * kohë pauzë.gjumë (pauzëMë mes Shënimeve)
ndërsa e vërtetë:
pushim laserturret ();
Hapi 4: Argëtim
Krijimi i pajisjeve argëtuese
Ne krijojmë lojën e butonave Simon-thotë, të cilën duhet ta ndiqni sipas modelit të ndriçimit të LED-ve dhe shtypni butonat përkatës. Ai ngarkon rezultatet dhe afatin kohor në bazën e të dhënave NoSQL të bazës së zjarrit për përdorim të mëtejshëm në pult.
Lidhni qarqet siç tregohet në diagramin Fritzing.
Krijimi i softuerit argëtues
argëtuese.py
import RPi. GPIO si GPIOimport kohë filetim import import rastit os import import tweepy nga rpi_lcd import LCD nga thirrje subprocess importit nga importi kohë gjumi nga DATETIME DATETIME importit nga firebase CONSUMER_KEY import firebase = 'h5Sis7TXdoUVncrpjSzGAvhBH' CONSUMER_SECRET = ACCESS_KEY 'ZfDVxc4aTd9doGmBQO3HiSKKzxSTKT4C3g0B3AGx8eETCJm2rY' = '988333099669901312- YDLEQN1weW2n1JP4lxJcFPppCsbvzQh 'ACCESS_SECRET =' K2IlUPur6jx7DO5S0HhhZW29H5AQFOvkMMevSsk9ZzwLk 'auth = tweepy. OAuthHandler (CONSUMER_KEY, CONSUMER_SECRET) auth.secure = auth.set_access_token vërtetë (ACCESS_KEY, ACCESS_SECRET) api = tweepy. API (auth) firebase = firebase. FirebaseApplication (' https:// iotca2 -12f48.firebaseio.com ', Asnjë) lcd = LCD () lcd.text (' Have fun! ', 1) lcd.text (' Fat i mirë! ', 2) fle (1) # Dritat e kuqe, të verdha, jeshile = [40, 38, 36] BUTTONS = [37, 33, 35] SHESNIME = ["E3", "A4", "E4"] # vlera që mund të ndryshoni që ndikojnë në shpejtësinë e lojës = 0.5 # flamuj të përdorur për të sinjalizuar lojën statusi është_displaying_pattern = Falsiteti është_i fituar_curr ent_level = E gabuar is_game_over = E pavërtetë # gjendja e lojës aktuale_level = 1 current_step_of_level = 0 model = def initialize_gpio (): GPIO.setmode (GPIO. BOARD) GPIO.setup (LIGHTS, GPIO. OUT, inicial = GPIO. LOW) GPIO konfigurimi (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) për i në rangun (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, verify_player_selection) def verify_player_selection (channel_vel_vel_strevel_, is_game_over nëse jo nuk është_displaying_pattern dhe nuk is_won_current_level dhe nuk is_game_over: flash_led_for_button (channel) if channel == BUTTONS [model [current_step_of_level]: current_step_of_level += 1 if current_step_level_vel_vel_vel flash_led_for_button (button_channel): led = LIGHTS [BUTTONS.index (button_channel)] GPIO.putput (led, GPIO. HIGH) time.sleep (0.4) GPIO.output (led, GPIO. LOW) def add_new_color_to_pattern_), global_rent 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_ProportI: GPIO.output (LIGHTS [model , GPIO. HIGH) time.sleep (speed) GPIO.output (LIGHTS [model , GPIO. LOW) time.sleep (speed) is_displaying_pattern = Pritja e rreme def_for_player_to_repeat_pattern (): ndërkohë që nuk është_won_current_level dhe nuk is_game_over: 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_vel_velle_vel_level_vel_level_vel_level_vel_vel_vel_vel_vel_vel_vel_vel_vel GPIO.output (LIGHTS, GPIO. LOW) def send_data (rezultati): lcd.text ('Fundi i lojës,', 1) lcd.text ('Shihemi së shpejti!', 2) datestr = str (ora e datës) tani ()) ndërsa True: print (datestr) printoni (rezultati) të dhënat = {'Data': datestr, 'Rezultati': score} rezultati = firebase.post ('/scores/', data) printoni (rezultati) nëse rezultati> 2: statusi = 'Dikush ka shënuar' +(str (rezultati))+'në'+datestr+'!' api.update_status (statusi = statusi) pushim def_ start_game (): ndërsa True: add_new_color_to_pattern () display_pattern_to_player () wait_for_player_to_repeat_pattern () nëse është_game_over: send_data (niveli aktual - niveli 1) ngjyrat / "! Game over!.format (niveli aktual - 1)) gjumi (2) print ("Faleminderit për lojën! / n") lcd.text ('', 1) lcd.text ('', 2) koha e pushimit. gjumi (2) def start_game_monitor (): t = fillimi. Tema (target = start_game) t.daemon = True t.start () t.join () def main (): try: os.system ('cls' nëse os.name == 'nt 'else' clear ') print ("Filloni raundin e ri! / n") filloni_gpio () start_game_monitor () më në fund: GPIO.cleanup () nëse _name_ ==' _main_ ': main ()
Hapi 5: IOT App Watson në IBM Bluemix [Pjesa e Parë]
Konfiguroni Blumix IoT Service
- Vendosni një Lloji të Pajisjes Gateway
- Vendosni një pajisje
Bëni hapat 1 dhe 2 për 3 herë. Një RPi është për një seksion (Siguri/Mbrojtje/Argëtim)
Konfiguro Node-Red
Drejtoni nyjen me të kuqe
nyja-fillimi i kuq
- Shkoni për të menaxhuar paletën në menunë e hamburgerit (lart djathtas)
-
Shkarkoni paletat e mëposhtme
- nyje-e kuqe-pult
- nyje-e kuqe-kontribuese-firebase
- nyje-e kuqe-kontribut-ibm-watson-iot
Hapi 6: Rrjedhat e Kuqe të Nyjes
Shkarkoni skedarët dhe eksportoni në nyjen tuaj të kuqe.
Nyja e Sigurisë-E kuqe
asnje
Nyja Rpi e Mbrojtjes-E kuqe
laserturret.txt
Argëtim Rpi Nyja-E kuqe
- rrjedha argëtuese rpi.txt
- ldr rpi flow.txt
IBM Bluemix Nyje-Kuqe
Recommended:
Sistemi i Sigurisë i bërë në shtëpi duke përdorur Sensorin Fusion: 5 hapa
Sistemi i Sigurisë i bërë në shtëpi duke përdorur Sensorin Fusion: Ideja që qëndron pas këtij projekti është të krijoni një sensor sigurie të lirë dhe të lehtë për tu bërë, i cili mund të përdoret për t'ju paralajmëruar kur dikush e ka kaluar atë. Qëllimi fillestar ishte të krijoja diçka që mund të më njoftonte kur dikush ngjitej shkallëve, por edhe unë
KS-Garden: Vështrim i përgjithshëm: 9 hapa
KS-Garden: Vështrim i përgjithshëm: KS-Garden mund të përdoret për ujitje/ndezje./Ndriçoni kopshtin tuaj/bimët serë në oborrin e shtëpisë ose bimët tuaja të brendshme të rritjes (dizajn modular) Sistemi KS-Garden përbëhet kryesisht nga modulet e mëposhtëm-Kryesore kutia e sistemit - Relais dhe kutia e furnizimit me energji
Sistemi i sigurisë në shtëpi: 5 hapa
Sistemi i Sigurisë së Shtëpisë: Bëni sistemin tuaj të sigurisë në shtëpi duke përdorur Raspberry pi
Sistemi i Sigurisë së Sigurisë së Grave me një Prekje: 3 Hapa
Sistemi i Sigurisë së Sigurisë së Grave me një Prekje: Alarm me një prekje Sistemi i sigurisë së Grave duke përdorur mikrokontrollues 8051Në botën e sotme Siguria e Grave është Çështja më e Rëndësishme në Vetë Vend. Sot gratë ngacmohen dhe shqetësohen dhe ndonjëherë kur nevojitet ndihmë urgjente. Nuk ka lokacion të kërkuar
Vështrim i Përgjithshëm i Projektit me Kristal Ball: 10 hapa
Vështrim i Përgjithshëm i Projektit të Kristal Ballit: Ky udhëzues u krijua në përmbushje të kërkesës së projektit të Makecourse në Universitetin e Floridës së Jugut (www.makecourse.com) Projekti im i topit të kristaltë është një kombinim i lodrës Mattel të viteve 1950 të Magic Eight-ball dhe një tel i pasurisë