Cov txheej txheem:
- Kauj Ruam 1: Yuav Tsum Tau Kho Vajtse
- Kauj Ruam 2: Ruaj Ntseg
- Kauj Ruam 3: Kev Tiv Thaiv
- Kauj Ruam 4: Kev Lom Zem
- Kauj Ruam 5: IOT App Watson ntawm IBM Bluemix [Tshooj Ib]
- Kauj Ruam 6: Node Red Flows
Video: Txheej txheem cej luam: Kev Lom Zem Hauv Tsev thiab Kev Ruaj Ntseg: 6 Kauj Ruam
2024 Tus sau: John Day | [email protected]. Kawg hloov kho: 2024-01-30 09:28
Txog Daim Ntawv Thov
Cov kab ke IOT no yog Kev Lom Zem Hauv Tsev thiab Kev Ruaj Ntseg.
-
Kev ruaj ntseg
- Coj mus rhaub daim npav RFID thiab cov tswv yim raug cawm hauv Firebase.
- Yog tias tau tso cai, koj tuaj yeem nkag mus tau zoo thiab daim duab raug coj thiab muab tso rau S3
- Yog tias tsis tau tso cai, ntu tiv thaiv los rau hauv thiab LCD Screen yuav hais tias koj tsis tau tso cai.
-
Kws muaj txuj ci
- Nias lub khawm ntawm lub dashboard.
- Laser Turrets yuav tawm tsam qhov tawg thiab nrawm.
-
Kev lom zem
- Yog tias pom cov lus tsa suab, qhov kev ua si yuav pib.
- Tom qab tus neeg siv ua si qhov kev ua si, cov qhab nia raug cawm hauv Firebase.
- LDR qhov tseem ceeb yuav raug coj thiab tso tawm ntawm lub dashboard.
Daim ntawv thov no tuaj yeem tswj hwm thiab saib tau ntawm IBM Node-Red web server. Peb siv AWS thiab IBM Cloud Services thiab peb siv Firebase ua peb cov ntaub ntawv.
Cov ntsiab lus ntawm cov kauj ruam uas yuav piav qhia
- Yuav tsum tau kho vajtse
- Kev Ruaj Ntseg - Yuav ua li cas los tsim kev ruaj ntseg uas siv RFID cov tswv yim thiab cov duab paub software
- Kev Tiv Thaiv - Yuav ua li cas los tsim lub laser turret
- Kev Lom Zem - Yuav tsim Simon -hais qhov kev ua si li cas
- IOT App Watson ntawm IBM Bluemix - Yuav ua li cas koom ua ke txhua lub tshuab rau hauv ib lub dashboard
Mus tom ntej thiab nkag mus rau hauv daim ntawv pdf kom piav qhia ntxaws ntxiv txog yuav tsim txoj haujlwm no li cas.
Kauj Ruam 1: Yuav Tsum Tau Kho Vajtse
Nov yog yam koj xav tau
-
Kev ruaj ntseg
- 1 Raspberry Pi
- 1 LCD npo
- 1 RFID nyeem ntawv
- 1 PiCam
- 2 Daim npav RFID/Nyees khawm
- X Poj niam -> Txiv neej jumper cables
-
Kws muaj txuj ci
- 1 Raspberry Pi
- 2 10 ㏀ Resistor (rau Nyees khawm)
- 2 Micro Kev Pabcuam
- 1 650nm Laser Transmitter Module
- 2 Laub Khawm
- 1 Lub suab nrov
- 3 Cov Roj Hmab Me Me/Ties Cable (kho)
- X Poj niam -> Txiv neej jumper cables
- X Txuas Dhia Cables
- 1 Transistor
- 1 Capacitor
-
Kev lom zem
- 1 Raspberry Pi
- 3 1 ㏀ Resistor (rau LEDs)
- 1 10㏀ Resistor (rau LDR)
- 3 LEDs (Txawv Xim)
- 3 Nyees khawm
- 1 Lwd
- 1 LCD npo
- 1 Pir Motion Sensor
- X Poj niam -> Txiv neej jumper cables
- X Txuas Dhia Cables
Kauj Ruam 2: Ruaj Ntseg
Tsim kev ruaj ntseg system kho vajtse
Txuas cov circuits raws li qhia hauv daim duab fritzing
Tsim kev ruaj ntseg software software
- Configure AWS los ntawm kev tsim ib yam
- Install AWS Python Library
- Nruab LCD Library
- Nruab RFID Library
- Teeb Firebase
- Teeb S3 Cia
- Nruab Boto ntawm Raspberry Pi
- Nruab AWS ClI ntawm Raspberry Pi
- Create AWS Credentials
- Configure AWS
- Upload security.py rau RPi
- Upload imagerecognition.py rau RPi
security.py yog tus lej uas yuav nyeem rfid cov tswv yim thiab txheeb xyuas seb tus neeg siv yog tus nkag los lossis tsis yog. Yog tias tus neeg siv raug lees paub, daim duab yuav raug coj mus thiab muab tso rau s3. Cov cai kuj tshaj tawm rau cov ncauj lus hauv aws MQTT
Kauj Ruam 3: Kev Tiv Thaiv
Tsim lub laser turret Hardware
- Peb tsim lub laser turret los ntawm kev siv 2 servos thiab 1 Laser Module
- Txuas cov circuits raws li qhia hauv daim duab fritzing
Tsim lub laser turret Software
Cov cai hauv qab no yuav ua rau lub laser turret tua nyob rau hauv cov lus qhia tsis raug, hauv kev tawg tawg thiab nrawm
laserturret.py
los ntawm gpiozero ntshuam LED, Buzzer, Button, Servoimport sijhawm los ntawm teeb liab ntshuam ncua ntshuam random
#LED = LED (12)
#pir = MotionSensor (19, sample_rate = 5, queue_len = 1) buzzer_pin = Buzzer (17) nres = Button (5, pull_up = False) #reset = Button (6, pull_up = False) servo1 = Servo (18) servo2 = Servo tsav (24)
def cojON ():
led.on () luam tawm ("LED nyob ntawm") def ledOFF (): led.off () luam tawm ("LED tawm")
def hluav taws ():
print ("riam phom kub") buzzer_pin.on () lub sijhawm pw tsaug zog (0.1) buzzer_pin.off ()
def laserturret (): cov
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) txhaj = 0 nthuav dav = [timeBetweenBurst, timeBetweenShots, servo1.value, servo2.value, numShots] print (nthuav dav) thaum txhaj <numshots: shot+= "1" servo1.value = "servo1start" servo2.value = "servo2start" servo1start = "servo1change" servo2start = "servo2change" hluav taws () = "" time.sleep (timebetweenshots) = "" time.sleep (timebetweenburst)
cov ntawv = {
'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 (zaus, ntev): #tsim cov haujlwm "buzz" thiab pub nws lub suab thiab sijhawm)
yog (zaus == 0):
time.sleep (ntev) lub sij hawm rov qab = 1.0 / zaus #frequency delayValue = lub sijhawm / 2 #suav lub sijhawm rau ib nrab ntawm nthwv dej numCycles = int (ntev * zaus) #num ntawm nthwv dej = duratime x freq rau kuv hauv ntau yam (numCycles)): #pib lub voj los ntawm 0 mus rau qhov sib txawv "mus" xam saum toj no buzzer_pin.on () time.sleep (delayValue) buzzer_pin.off () time.sleep (delayValue)
def ua si (suab paj nruag, tempo, ncua, nrawm = 0.800):
rau kuv hauv ntau (0, len (suab paj nruag)): # Ua si nkauj noteDuration = pace/tempo buzz (suab paj nruag , noteDuration) # Hloov zaus nrog rau zaj nkauj nco pauseBetweenNotes = noteDuration * ncua sijhawm. pauseBetweenNotes)
thaum Muaj Tseeb:
laserturret () so;
Kauj Ruam 4: Kev Lom Zem
Tsim kev lom zem Kho vajtse
Peb tsim Simon-hais tias khawm game, uas koj yuav tsum ua raws tus qauv ntawm LEDs teeb pom kev zoo thiab nias cov nyees khawm sib xws. Nws upload cov qhab nia thiab lub sij hawm mus rau hauv lub firebase NoSQL database rau kev siv ntxiv hauv cov dashboards.
Txuas cov kab hluav taws xob raws li qhia hauv daim duab Fritzing.
Tsim Kev Lom Zem Software
kev lom zem.py
ntshuam RPi. GPIO li GPIOimport threading ntshuam lub sij hawm ntshuam random ntshuam os ntshuam tweepy los ntawm rpi_lcd ntshuam LCD los ntawm subprocess ntshuam hu los ntawm lub sij hawm ntshuam pw tsaug zog los ntawm DateTime ntshuam DateTime los ntawm firebase ntshuam firebase CONSUMER_KEY = 'h5Sis7TXdoUVncrpjSzGAvhBH' CONSUMER_SECRET = 'ZfDVxc4aTd9doGmBQO3HiSKKzxSTKT4C3g0B3AGx8eETCJm2rY' ACCESS_KEY = '988333099669901312- YDLEQN1weW2n1JP4lxJcFPppCsbvzQh 'ACCESS_SECRET =' K2IlUPur6jx7DO5S0HhhZW29H5AQFOvkMMevSsk9ZzwLk 'Auth = tweepy. OAuthHandler (CONSUMER_KEY, CONSUMER_SECRET) auth.secure = Yeej muaj tseeb auth.set_access_token (ACCESS_KEY, ACCESS_SECRET) api = tweepy. API (Auth) firebase = firebase. FirebaseApplication (' https:// iotca2 -12f48.firebaseio.com ', Tsis muaj) lcd = LCD () lcd.text (' Muaj kev lom zem! ', 1) lcd.text (' Hmoov Zoo! ', 2) pw tsaug zog (1) # Liab, Daj, Ntsuab LIGHTS = [40, 38, 36] BUTTONS = [37, 33, 35] NCO NTSOOV = ["E3", "A4", "E4"] # qhov tseem ceeb koj tuaj yeem hloov pauv uas cuam tshuam rau kev ua si kev ua si = 0.5 # chij siv los teeb liab game xwm txheej is_displaying_pattern = Cuav 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, initial = GPIO. LOW) GPIO. teeb tsa (BUTTONS, GPIO. IN, rub_up_down = GPIO. PUD_DOWN) rau kuv hauv ntau (3): GPIO.add_event_detect (BUTTONS , GPIO. FALLING, pov thawj_player_selection) def verify_player_selection (channel): thoob ntiaj teb tam sim no_step_of_level, is_game_over yog tsis yog_displaying_pattern thiab tsis is_won_current_level thiab tsis is_game_over: flash_led_for_button (channel) yog channel == BUTTONS [pattern [current_step_of_level]: current_step_of_level += 1 yog tam sim no_step_of_lec flash_led_for_button (button_channel): coj = LIGHTS [BUTTONS.index (button_channel)] GPIO.output (coj, GPIO. HIGH) time.sleep (0.4) GPIO.output (coj, GPIO. LOW) def add_new_color_to_pattern (): ntiaj teb is_wonc, kab rent_step_of_level is_won_current_level = tsis tseeb tam sim no_step_of_level = 0 next_color = random.randint (0, 2) pattern.append (next_color) def display_pattern_to_player (): thoob ntiaj teb is_displaying_pattern is_displaying_pattern = True GPIO. Ua hauj lwm): GPIO.output (LIGHTS [qauv , GPIO. HIGH) time.sleep (speed) GPIO.output (LIGHTS [pattern , GPIO. LOW) time.sleep (speed) is_displaying_pattern = False def wait (): thaum tsis is_won_current_level thiab tsis yog_game_over: time.sleep (0.1) def reset_board_for_new_game (): thoob ntiaj teb is_displaying_pattern, is_won_current_level, is_game_over ntiaj teb no current_level, current_step_of_level, tam sim no_dev_ tam sim no GPIO.output (LIGHTS, GPIO. LOW) def send_data (qhab nia): lcd.text ('Xaus kev ua si,', 1) lcd.text ('Pom koj sai sai!', 2) datestr = str (hnub tim. tam sim no ()) thaum Tseeb: luam tawm (datestr) luam tawm (qhab nia) cov ntaub ntawv = {'Hnub tim': datestr, 'Score': tau txais txiaj ntsig} tshwm sim = firebase.post ('/cov qhab nia/', cov ntaub ntawv) luam tawm (txiaj ntsig) yog qhab nia> 2: xwm txheej = 'Ib tus neeg tau qhab nia' +(str (qhab nia))+'ntawm'+datestr+'!' api.update_status (xwm txheej = xwm txheej) tawg def start_game (): thaum muaj tseeb: ntxiv_new_color_to_pattern () display_pattern_to_player () tos_for_player_to_repeat_pattern () yog is_game_over: send_data (current_level - 1) print ("Game Over!.format (current_level - 1)) pw tsaug zog (2) luam tawm ("Ua tsaug rau kev ua si! / n") lcd.text ('', 1) lcd.text ('', 2) so time.sleep (2) def start_game_monitor (): t = threading. Thread (target = start_game) t.daemon = True t.start () t.join () def main (): sim: os.system ('cls' if os.name == 'nt 'lwm qhov tseeb') luam tawm ("Pib puag ncig tshiab! / n") initialize_gpio () start_game_monitor () thaum kawg: GPIO.cleanup () yog _name_ == '_main_': main ()
Kauj Ruam 5: IOT App Watson ntawm IBM Bluemix [Tshooj Ib]
Teeb Blumix IoT Service
- Teeb tsa Lub Hom Phiaj Ntaus Ntaus
- Teem ib Device
Ua cov kauj ruam 1 thiab 2 rau 3 zaug. Ib RPi yog rau ib ntu (Kev Ruaj Ntseg/Kev Tiv Thaiv/Kev Lom Zem)
Teeb Node-Liab
Khiav ntawm-liab
pib-liab pib
- Mus rau tswj palette hauv cov ntawv qhia zaub mov hamburger (sab saum toj sab xis)
-
Rub tawm cov palletes hauv qab no
- ntawm-liab-dashboard
- ntawm-liab-contrib-firebase
- ntawm-liab-tshab-ibm-watson-iot
Kauj Ruam 6: Node Red Flows
Rub tawm cov ntawv thiab xa tawm mus rau koj qhov liab.
Security Node-Liab
tsis muaj
Tiv Thaiv Rpi Node-Liab
laserturret.txt
Kev Lom Zem Rpi Node-Liab
- kev lom zem rpi flow.txt
- ldr rpi ua.txt
IBM Bluemix Node-Liab
Pom zoo:
Xim Txheej Txheem Txheej Txheem: Arduino Raws Li Txheej Txheem Nrog Ob Txoj Siv: 8 Kauj Ruam
Xim Txheej Txheem Txheej Txheem: Arduino Raws Li Txheej Txheem Nrog Ob Txoj Siv: Kev thauj mus los thiab/lossis ntim khoom ntawm cov khoom thiab cov khoom hauv thaj chaw ua haujlwm tau ua tiav siv cov kab ua siv siv txoj siv thauj khoom. Cov menyuam no pab txav cov khoom ntawm ib kis mus rau lwm qhov nrog qhov nrawm. Qee qhov kev ua lossis kev qhia paub ua haujlwm yuav yog
DIY Cheep/Cov Dej Ruaj Ruaj Ruaj Ruaj Ruaj Ruaj Ruaj Ruaj Zoo rau Tsiaj: 7 Kauj Ruam
DIY Cheep/Cov Dej Rhaub Dej Zoo rau Cov Tsiaj Tsiaj: Yog li koj tab tom khaws aub/luav/miv/… sab nraum thiab lawv cov dej ua kom khov thaum lub caij ntuj no. Tam sim no ib txwm koj yuav coj lawv mus sab hauv lossis yuav cov tais diav ua kom sov, tab sis cov tsiaj no tej zaum muaj ntxhiab tsw, koj tsis muaj chav nyob, thiab koj tsis tuaj yeem them $ 4
D4E1: Kev nyeem ntawv-cuab yeej 2.0 (Txheej Txheem Txheej Txheem Txheej Txheem): 9 Cov Kauj Ruam (nrog Duab)
D4E1: Kev nyeem ntawv-cuab yeej 2.0 (Txheej Txheem Txheej Txheem Txheej Txheem): Cov ntaub ntawv:-Ob tus tub ntxhais kawm Muaj cov khoom lag luam tsim qauv hauv Kortrijk (Belgium) tuaj nrog cov cuab yeej nyeem ntawv no. Peb pib raws qhov tsim qauv uas twb muaj lawm thiab tau txhim kho nws mus rau lwm qhov kev tsim. Kev nyeem ntawv-cuab yeej thaum xub thawj tau raug txhim kho rau cli & nte
Yuav Ua Li Cas Kom Muaj Kev Lom Zem Nrog Arduino (thiab Ua Tus Geek hauv Tus Txheej Txheem): 12 Cov Kauj Ruam
Yuav Ua Li Cas Kom Muaj Kev Lom Zem Nrog Arduino (thiab dhau los ua Geek hauv Tus Txheej Txheem): Koj puas xav kom khwv tau koj daim npav geek - pronto? Cia peb pib! Phau ntawv qhia no yuav pib koj ntawm txoj kev mus rau qhov tsaus ntuj siv qhov qhib qhov Arduino kev txhim kho thiab tsim qauv qauv. Nws yuav qhia koj txog microcontrollers, ua rau koj pib nrog
Nthuav nthuav Cov Txheej Txheem Qhia rau Tus Tsim Qauv-Txheej Txheem Txheej Txheem Tswj- Loop Nqe Lus: 8 Kauj Ruam
Nthuav nthuav Cov Txheej Txheem Qhia rau Tus Tsim-Txheej Txheem Txheej Txheem- Loop Nqe Lus: Cov Txheej Txheem Txheej Txheem- Loop Nqe Lus Los ntawm tshooj no, koj yuav ntsib nrog qhov tseem ceeb thiab muaj zog paub txog-Loop Nqe Lus. Ua ntej nyeem tshooj no, yog tias koj xav kos 10,000 lub voj voos hauv txoj haujlwm, koj tsuas tuaj yeem ua nrog lub suab