Sisukord:
- Samm: riistvaranõue
- 2. samm: turvalisus
- 3. samm: kaitsmine
- 4. samm: meelelahutus
- Samm: IOT App Watson IBM Bluemixis [esimene osa]
- 6. samm: sõlmed punased
Video: Ülevaade: kodune meelelahutus- ja turvasüsteem: 6 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Teave rakenduse kohta
See IOT -süsteem on kodune meelelahutus- ja turvasüsteem.
-
Turvalisus
- Puudutage valikut RFID -kaart ja sisend salvestatakse Firebase'i.
- Kui teil on luba, saate rahulikult siseneda ning pilt tehakse ja laaditakse üles S3 -sse
- Kui see on volitamata, siseneb kaitseala ja LCD -ekraan ütleb, et te pole volitatud.
-
Kaitse
- Vajutage armatuurlaua nuppu.
- Laseritornid ründavad juhusliku plahvatuse ja kiirusega.
-
Meelelahutus
- Kui tuvastatakse liikumine, algab mäng.
- Pärast seda, kui kasutaja on mängu mänginud, salvestatakse skoor Firebase'i.
- LDR väärtused võetakse ja väljastatakse armatuurlauale.
See rakendus on kontrollitav ja vaadatav IBM Node-Red veebiserveri kaudu. Kasutame AWS -i ja IBMi pilveteenuseid ning kasutasime andmebaasina Firebase'i.
Kirjeldatavate sammude kokkuvõte
- Riistvara nõuded
- Turvalisus - kuidas luua turvasüsteem, mis kasutab RFID -sisendit ja pildituvastustarkvara
- Kaitse - kuidas luua laseritorn
- Meelelahutus - kuidas luua Simon -ütleb mängu
- IOT App Watson IBM Bluemixis - kuidas integreerida kõik süsteemid ühte armatuurlauale
Minge edasi ja avage pdf -fail, et saada üksikasjalikumat selgitust selle projekti loomise kohta.
Samm: riistvaranõue
Seda vajate
-
Turvalisus
- 1 Vaarika Pi
- 1 LCD
- 1 RFID -lugeja
- 1 PiCam
- 2 RFID -kaarti/nuppu
- X Naissoost -> isased hüppajakaablid
-
Kaitse
- 1 Vaarika Pi
- 2 10 ㏀ takisti (nuppude jaoks)
- 2 Mikroservo
- 1 650 nm laser -saatja moodul
- 2 Vajutage nuppu
- 1 helisignaal
- 3 väikest kummipaela/kaablisidet (kinnitamiseks)
- X Naissoost -> isased hüppajakaablid
- X Tavalised hüppekaablid
- 1 Transistor
- 1 kondensaator
-
Meelelahutused
- 1 Vaarika Pi
- 3 1 ㏀ Takisti (LED -ide jaoks)
- 1 10㏀ takisti (LDR jaoks)
- 3 LED -i (erinevad värvid)
- 3 nuppu
- 1 LDR
- 1 LCD
- 1 Pir liikumisandur
- X Naissoost -> isased hüppajakaablid
- X Tavalised hüppekaablid
2. samm: turvalisus
Turvasüsteemi riistvara loomine
Ühendage vooluahelad, nagu on näidatud praadimisskeemil
Turvasüsteemi tarkvara loomine
- Seadistage AWS asja loomisega
- Installige AWS Pythoni teek
- Installige LCD -raamatukogu
- Installige RFID -kogu
- Firebase'i seadistamine
- Seadistage S3 salvestusruum
- Installige Boto Raspberry Pi -le
- Installige AWS ClI Raspberry Pi -le
- Looge AWS -i mandaat
- AWS -i seadistamine
- Laadige failile security.py RPi alla
- Laadige üles imagerecognition.py RPi -sse
security.py on kood, mis loeb RFID -sisendid ja tuvastab, kas kasutaja on sissetungija või mitte. Kui kasutaja tuvastatakse, tehakse pilt ja laaditakse see üles s3 -sse. Kood avaldab ka teema aws MQTT -s
3. samm: kaitsmine
Laseritorni riistvara loomine
- Loome laseritorni, kasutades 2 servot ja 1 lasermoodulit
- Ühendage vooluahelad, nagu on näidatud praadimisskeemil
Laseritorni tarkvara loomine
Allolev kood paneb lasertorni tulistama juhuslikes suundades, juhuslike pursete ja kiirusega
laserturret.py
gpiozero impordi LED, sumin, nupp, servoimportimise aeg signaali importimise pausi import juhuslik
#led = LED (12)
#pir = MotionSensor (19, sample_rate = 5, queue_len = 1) buzzer_pin = summeri (17) rünnak = nupp (5, pull_up = False) #reset = Button (6, pull_up = False) servo1 = Servo (18) servo2 = Servo (24)
def ledON ():
led.on () print ("LED põleb") def ledOFF (): led.off () print ("LED ei põle")
tulekahju ():
print ("relvad kuumad") buzzer_pin.on () time.sleep (0,1) buzzer_pin.off ()
def laserturret ():
timeBetweenBurrst = juhuslik.ühtlane (0,2, 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 detail = [timeBetweenBurrst, timeBetweenShots, servo1.value, servo2.value, numShots] print (detail) võtte ajal <numshots: shot+= "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" fire () = "" time.sleep (timebetweenshots) = "" time.sleep (timebetweenburst)
märkmed = {
"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 (sagedus, pikkus): #looge funktsioon "buzz" ja sisestage sellele samm ja kestus)
kui (sagedus == 0):
time.sleep (pikkus) tagasipöördumisperiood = 1,0 / sagedus #sageduse viivitusVäärtus = periood / 2 #arvesta aeg pooleks laineks numCycles = int (pikkus * sagedus) #lainete arv = kestus x sagedus i vahemikus (numCycles): #käivitage tsükkel 0 -st muutuja "tsükliteni", mis on arvutatud ülalpool buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)
def play (meloodia, tempo, paus, tempo = 0,800):
i jaoks vahemikus (0, len (meloodia)): # Esita laulu noteDuration = tempo/tempo buzz (meloodia , noteDuration) # Muuda sagedust laulumärkides pauseBetweenNotes = noteDuration * pause time.sleep (pauseBetweenNotes)
kuigi tõsi:
laserturret () paus;
4. samm: meelelahutus
Meelelahutuse loomine Riistvara
Loome nupumängu Simon-sanoo, mis peab järgima süttivate LED-ide mustrit ja vajutama vastavaid nuppe. See laadib hinded ja ajatempli Firebase NoSQL andmebaasi, et neid juhtpaneelidel edasi kasutada.
Ühendage vooluringid, nagu on näidatud Fritzingu diagrammil.
Meelelahutustarkvara loomine
meelelahutus.py
import RPi. GPIO nagu GPIOimport väliskeermestamiseks import ajal import juhuslik import os import tweepy alates rpi_lcd import LCD alates alamprotsessi import kõne ajal import une datetime import datetime alates 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 = True auth.set_access_token (ACCESS_KEY, ACCESS_SECRET) api = tweepy. API (auth) firebase = firebase. FirebaseApplication ("https:// iotca2 -12f48.firebaseio.com ', Puudub) lcd = LCD () lcd.text (' Have fun! ', 1) lcd.text (' Palju õnne! ', 2) uni (1) # Punane, kollane, roheline LIGHTS = [40, 38, 36] NUPPID = [37, 33, 35] MÄRKUSED = ["E3", "A4", "E4"] # väärtust, mida saate muuta, mis mõjutavad mängu kiirust = 0,5 # mängu tähistamiseks kasutatavat lippu staatus is_displaying_pattern = Vale on_võit ent_level = False is_game_over = Vale # mängu olek current_level = 1 current_step_of_level = 0 pattern = def initialize_gpio (): GPIO.setmode (GPIO. BOARD) GPIO.setup (LIGHTS, GPIO. OUT, initial = GPIO. LOW) GPIO. seadistus (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) i jaoks vahemikus (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, ellenőriz_player_selection) def correct_player_selection (kanal): globaalne praegune_astmes_tase, tase is_game_over if not is_displaying_pattern and not is_won_current_level and not 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_lever = true> flash_led_for_button (nupu_kanal): 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_wonvelcurrent 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 (): globaalne is_displaying_pattern is_displaying_pattern = üldine GPIOL -i väljund (GPIO): GPIO.output (LIGHTS [muster , GPIO. HIGH) time.sleep (kiirus) GPIO.output (LIGHTS [muster , GPIO. LOW) time.sleep (kiirus) is_displaying_pattern = Vale def wait_for_player_to_repeat_pattern (): kuigi pole isovõitu_voolutase ja ei ole_mänguülekanne: aeg.maganud (0,1) def reset_board_for_new_game (): globaalne is_displaying_pattern, is_won_current_level, is_game_over_ve_leve = praegune_tüüp = praegune GPIO.output (LIGHTS, GPIO. LOW) def send_data (skoor): lcd.text ('Mängu lõpp', 1) lcd.text ('Kohtumiseni!', 2) datestr = str (datetime. nüüd ()) samas Tõsi: print (datestr) print (score) data = {'Date': datestr, 'Score': score} result = firebase.post ('/score/', data) print (result) if score> 2: status = 'Keegi on skoorinud' +(str (skoor))+'on'+datestr+'!' api.update_status (olek = olek) break def start_game (): samas True: add_new_color_to_pattern () display_pattern_to_player () wait_for_player_to_repeat_pattern () if is_game_over: send_data (current_level - 1) print ("Game Over! n score").format (current_level - 1)) sleep (2) print ("Täname mängimise eest! / n") lcd.text ('', 1) lcd.text ('', 2) break time.sleep (2) def start_game_monitor (): t = keermestamine. Lõng (target = start_game) t.daemon = True t.start () t.join () def main (): try: os.system ('cls' if os.name == 'nt 'else' clear ') print ("Alusta uut ringi! / n") initialize_gpio () start_game_monitor () lõpuks: GPIO.cleanup () if _name_ ==' _main_ ': main ()
Samm: IOT App Watson IBM Bluemixis [esimene osa]
Seadistage Blumix IoT Service
- Seadistage lüüsi seadme tüüp
- Seadistage seade
Tehke samme 1 ja 2 3 korda. Üks RPi on ühe sektsiooni jaoks (turvalisus/kaitse/meelelahutus)
Seadistage punane sõlm
Käivita sõlm-punane
sõlm-punane algus
- Avage hamburgeri menüü palett (paremal üleval)
-
Laadige alla järgmised paletid
- sõlm-punane-armatuurlaud
- node-red-contrib-firebase
- node-red-contrib-ibm-watson-iot
6. samm: sõlmed punased
Laadige failid alla ja eksportige oma punasesse sõlme.
Turvasõlm-punane
mitte ühtegi
Kaitse Rpi Sõlm-Punane
laserturret.txt
Meelelahutus Rpi Node-Red
- meelelahutus rpi flow.txt
- ldr rpi flow.txt
IBM Bluemix Node-Red
Soovitan:
Kodune turvasüsteem, mis kasutab sensori liitmist: 5 sammu
Kodune turvasüsteem, mis kasutab sensori sulandumist: Selle projekti idee on luua odav ja hõlpsasti valmistatav turvaandur, mille abil saab teid hoiatada, kui keegi on selle ületanud. Algne eesmärk oli luua midagi, mis annaks mulle märku, kui keegi trepist üles kõndis, aga ka mina
Elegoo Super käivitatud komplekti Uno R3 ülevaade: 4 sammu
Elegoo Super käivitatud komplekt Uno R3 ülevaade: paar päeva tagasi saatis Elegoo mulle selle Super Stardikomplekti testimiseks. Niisiis, vaatame, mis on sees. Selle kompaktse korpuse avamisel näeme palju asju. Kaanel on indeks kõigi komponentidega. Meie sees on tänukaart, kus on kõik
KS-Garden: ülevaade: 9 sammu
KS-Garden: Ülevaade: KS-Gardenit saab kasutada aia/kasvuhoonetaimede niisutamiseks/õhutamiseks/tagaaias valgustamiseks või siseruumides kasvatamiseks kasti (modulaarne disain) KS-Garden süsteem koosneb peamiselt järgmistest moodulitest: süsteemikarp - Relais ja toiteplokk
JDM programmeerija ülevaade: 9 sammu
JDM -i programmeerijate ülevaade: JDM on populaarne PIC -programmeerija, kuna see kasutab jadaporti, minimaalselt komponente ja ei vaja toiteallikat. Kuid seal on segadust, kuna võrgus on palju programmeerijate variatsioone, millised neist milliste PIC -idega töötavad? Selles „juhendis
Transistoriga juhitav mootor kaugjuhtimispuldiga; Ahela ülevaade: 9 sammu
Transistoriga juhitav mootor kaugjuhtimispuldiga; Ahela ülevaade: see vooluahel on puldiga transistoriga juhitav mootor. Kaugjuhtimispult lülitab toite sisse. Transistor lülitab mootori sisse. Programmi kood suurendab mootori kiirust ja seejärel vähendage mootori pöörlemiskiirust nullini