Innehållsförteckning:
- Steg 1: Hårdvarukrav
- Steg 2: Säkerhet
- Steg 3: Försvar
- Steg 4: Underhållning
- Steg 5: IOT App Watson på IBM Bluemix [del ett]
- Steg 6: Röd nodflöde
Video: Översikt: Hemunderhållning och säkerhetssystem: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
Om ansökan
Detta IOT -system är ett hemunderhållnings- och säkerhetssystem.
-
säkerhet
- Tryck på RFID -kort och inmatningen sparas i Firebase.
- Om du är behörig kan du gå in fredligt och bilden tas och laddas upp till S3
- Om det är obehörigt kommer försvarsavdelningen in och en LCD -skärm säger att du inte är auktoriserad.
-
Försvar
- Tryck på knappen på instrumentpanelen.
- Lasertorn kommer att attackera i slumpmässig burst och hastighet.
-
Underhållning
- Om rörelse upptäcks startar spelet.
- Efter att användaren har spelat spelet sparas poängen i Firebase.
- LDR -värden tas och matas ut på instrumentpanelen.
Denna applikation kan kontrolleras och visas via IBM Node-Red-webbservern. Vi använder AWS och IBM Cloud Services och vi använde Firebase som vår databas.
Sammanfattning av stegen som kommer att beskrivas
- Hårdvarukrav
- Säkerhet - Hur man skapar ett säkerhetssystem som använder RFID -ingång och ett program för bildigenkänning
- Försvar - Hur man skapar ett lasertorn
- Underhållning - Hur man skapar ett Simon -säger -spel
- IOT App Watson på IBM Bluemix - Hur man integrerar alla system i en instrumentpanel
Gå vidare och öppna pdf -filen för en mer detaljerad förklaring om hur du skapar detta projekt.
Steg 1: Hårdvarukrav
Detta är vad du behöver
-
säkerhet
- 1 hallon Pi
- 1 LCD
- 1 RFID -läsare
- 1 PiCam
- 2 RFID -kort/knappar
- X Kvinna -> Manliga bygelkablar
-
Försvar
- 1 hallon Pi
- 2 10 ㏀ Motstånd (för knappar)
- 2 Micro Servo
- 1 650nm lasersändarmodul
- 2 Tryckknapp
- 1 summer
- 3 små gummiband/kabelband (för fixering)
- X Kvinna -> Manliga bygelkablar
- X Vanliga hoppkablar
- 1 Transistor
- 1 kondensator
-
Nöjen
- 1 hallon Pi
- 3 1, motstånd (för lysdioder)
- 1 10㏀ motstånd (för LDR)
- 3 lysdioder (olika färger)
- 3 knappar
- 1 LDR
- 1 LCD
- 1 Pir -rörelsessensor
- X hona -> hankablar
- X Vanliga hoppkablar
Steg 2: Säkerhet
Skapa säkerhetssystemets hårdvara
Anslut kretsarna som visas i fritzdiagrammet
Skapa säkerhetssystemets programvara
- Konfigurera AWS genom att skapa en sak
- Installera AWS Python Library
- Installera LCD -bibliotek
- Installera RFID -bibliotek
- Konfigurera Firebase
- Konfigurera S3 -lagring
- Installera Boto på Raspberry Pi
- Installera AWS ClI på Raspberry Pi
- Skapa AWS -referenser
- Konfigurera AWS
- Ladda upp security.py till RPi
- Ladda upp imagerecognition.py till RPi
security.py är en kod som läser rfid -ingångar och upptäcker om användaren är en inkräktare eller inte. Om användaren känns igen tas en bild och laddas upp till s3. Koden publiceras också för ett ämne i aws MQTT
Steg 3: Försvar
Skapar lasertornets hårdvara
- Vi skapar laserturnén med hjälp av 2 servon och 1 lasermodul
- Anslut kretsarna som visas i fritzdiagrammet
Skapar lasertårnet Programvara
Koden nedan gör att lasertornet skjuter i slumpmässiga riktningar, i slumpmässiga skurar och hastighet
laserturret.py
från gpiozero import LED, summer, knapp, servoimporttid från signalimport paus import slumpmässig
#led = LED (12)
#pir = MotionSensor (19, sample_rate = 5, queue_len = 1) buzzer_pin = Summer (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 is on") def ledOFF (): led.off () print ("LED is off")
def fire ():
print ("vapen heta") 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), 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 = [timeBetweenBurst, timeBetweenShots, servo1.value, servo2.value, numShots] print (detail) while shot <numshots: shot+= "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" fire () = "" time.sleep (timebetweenshots) = "" time.sleep (timebetweenburst)
anteckningar = {
'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 (frekvens, längd): #create funktionen "buzz" och mata det tonhöjd och varaktighet)
om (frekvens == 0):
time.sleep (längd) returperiod = 1,0 / frekvens #frequency delayValue = period / 2 #calculate the time for half of the wave numCycles = int (length * frequency) #number of waves = duratime x freq for i in range (numCycles): #start en slinga från 0 till variabeln "cykler" beräknat ovanför summern_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)
def play (melodi, tempo, paus, tempo = 0,800):
för i inom intervallet (0, len (melodi)): # Spela upp song noteDuration = tempo/tempo buzz (melodi , noteDuration) # Ändra frekvensen längs låtnotpausenBetweenNotes = noteDuration * paustid. sov (pauseBetweenNotes)
medan det är sant:
laserturret () paus;
Steg 4: Underhållning
Skapa underhållningshårdvaran
Vi skapar knapparna Simon-säger, som du måste följa mönstret för lysdioderna som lyser upp och trycka på motsvarande knappar. Den laddar upp poäng och tidsstämpel till brandbasen NoSQL -databasen för vidare användning i instrumentbrädorna.
Anslut kretsarna som visas i Fritzing -diagrammet.
Skapa underhållningsprogramvaran
underhållning.py
import RPi. GPIO som GPIOimport gäng import Import vid slumpimport os import tweepy från rpi_lcd import LCD från delprocessen import samtal från tid import sömn från datetime importdatetime från 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 ', None) lcd = LCD () lcd.text (' Have fun! ', 1) lcd.text (' Good Luck! ', 2) sleep (1) # Red, Yellow, Green LIGHTS = [40, 38, 36] BUTTONS = [37, 33, 35] NOTES = ["E3", "A4", "E4"] # värden du kan ändra som påverkar spelhastigheten = 0,5 # flaggor som används för att signalera spel status is_displaying_pattern = Falskt är_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, initial = GPIO. LOW) GPIO. setup (BUTTONS, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) för i inom intervall (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, verify_player_selection) def verify_player_selection (channel): global current_step_of_level, current_velvel, current_ is_game_over om inte is_displaying_pattern och inte is_won_current_level och inte 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_level> = current_ is_vel_ = current_store_stor_intern_stor flash_led_for_button (button_channel): led = LIGHT [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_current_ byracka 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 = True GPIO. TSp (in) L: GPIO.output (LIGHTS [pattern , GPIO. HIGH) time.sleep (speed) GPIO.output (LIGHTS [pattern , GPIO. LOW) time.sleep (speed) is_displaying_pattern = False def wait_for_player_to_repeat_pattern. GPIO.output (LIGHTS, GPIO. LOW) def send_data (poäng): lcd.text ('Slut på spelet', 1) lcd.text ('Vi ses snart!', 2) datestr = str (datetime. nu ()) medan True: print (datestr) print (score) data = {'Date': datestr, 'Score': score} resultat = firebase.post ('/scores/', data) print (resultat) om poäng> 2: status = 'Någon har gjort' +(str (poäng))+'on'+datestr+'!' api.update_status (status = status) break def start_game (): while 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! poäng är"} färger!.format (current_level - 1)) sleep (2) print ("Tack för att du spelade! / n") lcd.text ('', 1) lcd.text ('', 2) break time.sleep (2) def start_game_monitor (): t = threading. Thread (target = start_game) t.daemon = True t.start () t.join () def main (): try: os.system ('cls' if os.name == 'nt 'annat' klart ') tryck ("Börja ny omgång! / n") initialisera_gpio () start_spel_monitor () slutligen: GPIO.cleanup () om _name_ ==' _main_ ': main ()
Steg 5: IOT App Watson på IBM Bluemix [del ett]
Konfigurera Blumix IoT -tjänst
- Konfigurera en Gateway -enhetstyp
- Konfigurera en enhet
Utför steg 1 och 2 tre gånger. En RPi är för en sektion (säkerhet/försvar/underhållning)
Ställ in Node-Red
Kör nod-rött
nodröd start
- Gå till hanteringspaletten i hamburgermenyn (högst upp till höger)
-
Ladda ner följande pallar
- nod-röd-instrumentpanel
- node-red-contrib-firebase
- nod-röd-bidrag-ibm-watson-iot
Steg 6: Röd nodflöde
Ladda ner filerna och exportera till din nod-röda.
Säkerhetsnod-röd
ingen
Försvar Rpi Node-Red
laserturret.txt
Underhållning Rpi Node-Red
- underhållning rpi flow.txt
- ldr rpi flow.txt
IBM Bluemix Node-Red
Rekommenderad:
KS-Garden: Översikt: 9 steg
KS-Garden: Översikt: KS-Garden kan användas för att bevattna/ventilera./Tända din trädgård/växthusväxter på bakgården eller dina växter inomhus (Modular design) KS-Garden-systemet består huvudsakligen av följande moduler- Main systembox - Reläer och nätaggregat
Elektroniskt säkerhetssystem med RTC och användardefinierad pinkod: 7 steg
Elektroniskt säkerhetssystem med RTC och användardefinierad pinkod: Hej killar! Detta är ett projekt som jag gjorde med hjälp av pic -mikrokontroller, ett elektroniskt PIN -kodsäkerhetssystem med realtidsklocka och användardefinierade PIN -kodfunktioner, den här sidan innehåller alla detaljer för att göra en själv. DET ARBETAR OCH KONCEPT: Tja
Hur man gör ett $ 10 WiFi -säkerhetssystem hemma? Inga avgifter och fungerar någonstans !: 3 steg
Hur man gör ett $ 10 WiFi -säkerhetssystem hemma? Inga avgifter och fungerar någonstans!: Hur gör man ett wifi -säkerhetsmeddelande -system på $ 10 hemma? Det kostar inget och det fungerar överallt! Om PIR -rörelsessensorn upptäcker någon rörelse skickar den ett meddelande till din mobiltelefon. ESP8266 ESP-01 WiFi-modul, PIR-rörelsesensor och 3,3
8-bitars dator på en brödbräda Översikt: 3 steg
8-bitars dator på en brödbräda Översikt: Mitt mål för detta projekt var att bygga en bättre förståelse för datorarkitektur, hårdvarudesign och språk på monteringsnivå. Eftersom jag var junior på universitetet och studerade datateknik, hade jag nyligen avslutat kurser i elektronik, laboratorier och
Kombination av säkerhetssystem med Phidges och Twitter för fantastiskhet: 8 steg
Kombinerar säkerhetssystem med Phidges och Twitter för Awesomeness: Jag bor i en lägenhet som är ansluten till ett säkerhetssystem. Jag vill inte köpa en hemtelefonlinje och lokala övervakningstjänster saknar fantastiskhet. Jag vill veta om någon kommer in i min lägenhet medan jag är borta. Jag kan använda en rörelsesensor men