Cov txheej txheem:
- Kauj Ruam 1: Sau Koj Cov Khoom
- Kauj Ruam 2: Rub tawm Roomba Toolboxes rau MATLAB
- Kauj ruam 3: Txuas rau Koj Roomba
- Kauj Ruam 4: Xaiv Li Cas Koj Xav Tswj Koj Lub Roomba
- Kauj Ruam 5: Tsav Koj Lub Roomba
Video: Tig koj lub Roomba rau hauv Mars Rover: 5 Kauj Ruam
2024 Tus sau: John Day | [email protected]. Kawg hloov kho: 2024-01-30 09:24
Kauj Ruam 1: Sau Koj Cov Khoom
Txhawm rau ua kom tiav txoj haujlwm no, koj yuav tsum tau sau cov ntaub ntawv hauv qab no:
1 Roomba Neeg Hlau
1 Raspberry Pi Cov Khoom
1 Lub Koob Yees Duab Yees Duab
Nkag mus rau MATLAB
Kauj Ruam 2: Rub tawm Roomba Toolboxes rau MATLAB
Khiav cov cai hauv qab no txhawm rau txhim kho cov cuab yeej tsim nyog kom ua tiav txoj haujlwm no.
muaj nuj nqi roombaInstall
clc;
% daim ntawv teev cov ntaub ntawv rau nruab
cov ntaub ntawv = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'};
% qhov chaw rau nruab los ntawm
xaiv = weboptions ('CertificateFilename', ''); % qhia nws kom tsis quav ntsej daim ntawv pov thawj xav tau
server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/';
dlgTitle = 'Roomba Nruab/Hloov Kho';
% qhia lub hom phiaj thiab tau txais kev pom zoo
lus = {
'Qhov haujlwm no yuav rub tawm cov ntaub ntawv EF 230 Roomba:'
''
strjoin (cov ntaub ntawv, '')
''
'rau daim nplaub tshev no:'
''
ua cd
''
'Koj puas xav mus ntxiv? '
};
beep;
yn = questdlg (sai,…
dlgTitle,… nyeem ntxiv
'Yog', 'Tsis yog', 'Yog');
yog ~ strcmp (yn, 'Yog'), rov qab; kawg
% tau txais cov npe cov ntaub ntawv uas muaj
cov_ cov ntaub ntawv = cov ntaub ntawv (cellfun (@exist, cov ntaub ntawv)> 0);
yog ~ isempty (uas twb muaj lawm_files)
% ua kom ntseeg tau tias nws zoo tiag tiag los hloov lawv
prompt = {'Koj tab tom hloov cov ntaub ntawv no:'
''
strjoin (uas twb muaj lawm_files, '')
''
'OK los hloov?'
};
beep;
yn = questdlg (sai,…
dlgTitle,… nyeem ntxiv
'Yog', 'Tsis yog', 'Yog');
yog ~ strcmp (yn, 'Yog'), rov qab; kawg
kawg
% rub tawm cov ntawv
nc = 0;
rau kuv = 1: ntev (cov ntaub ntawv)
f = cov ntaub ntawv {i};
disp (['Rub tawm' f]);
sim
url = [neeg rau zaub mov f];
websave (f, url, xaiv); % ntxiv cov kev xaiv kom tsis txhob muaj teeb meem kev nyab xeeb
nc = cnt + 1;
ntes
disp (['Yuam kev rub tawm' f]);
dummy = [f '.html'];
yog tias muaj (dummy, 'file') == 2
rho tawm (dummy)
kawg
kawg
kawg
yog cnt == ntev (cov ntaub ntawv)
msg = 'Kev teeb tsa ua tiav';
tos rau (msgbox (msg, dlgTitle));
lwm tus
msg = 'Kev teeb tsa yuam kev - saib qhov rai hais kom ua kom paub meej';
tos rau (errordlg (msg, dlgTitle));
kawg
kawg %roombaInstall
Kauj ruam 3: Txuas rau Koj Roomba
Tam sim no nws yog lub sijhawm los txuas rau koj Roomba siv WiFi. Siv 2 tus ntiv tes, nias lub pob ntsaws thiab Hnov cov nyees khawm ib txhij kom qhib lossis rov pib dua koj lub Roomba. Tom ntej no, Khiav cov cai r = roomba (# ntawm koj Roomba) hauv qhov hais kom ua qhov rai ntawm MATLAB txuas rau koj tus neeg hlau. Thaum koj tau ua tiav cov lus txib no, koj Roomba yuav tsum npaj mus.
Kauj Ruam 4: Xaiv Li Cas Koj Xav Tswj Koj Lub Roomba
Muaj ob txoj hauv kev uas koj tuaj yeem tswj hwm koj lub Roomba: tsis siv neeg lossis siv lub xov tooj smartphone ua tus tswj hwm.
Yog tias koj xaiv tsav lub Roomba tus kheej, koj yuav tsum tau siv peb lub teeb tsa ua ke: lub ntsej muag lub ntsej muag, lub ntsej muag lub ntsej muag, thiab lub teeb pom kev zoo.
Txhawm rau siv lub xov tooj smartphone, koj yuav tsum xub txuas koj lub xov tooj smartphone rau koj lub khoos phis tawj los ntawm ua raws cov theem hauv qab no.
NCO TSEG: Koj lub khoos phis tawj thiab lub xov tooj smartphone yuav tsum nyob hauv tib lub network WiFi thiaj li txuas tau zoo!
1. Rub tawm MATLAB app los ntawm lub khw app ntawm koj lub cuab yeej.
2. Ntaus "txuas rau" rau hauv koj lub qhov rai hais kom ua thiab teeb tus password uas yuav xav tau nkag mus rau ob qho khoom siv.
3. Tom qab ua li ntawd, MATLAB yuav muab koj lub computer IP chaw nyob rau koj. Koj yuav tsum nkag mus rau nplooj ntawv teeb tsa hauv MATLAB app ntawm koj lub xov tooj ntawm tes thiab ntxiv lub khoos phis tawj siv tus IP chaw nyob thiab tus password uas koj tau nkag ua ntej.
4. Hauv qhov hais kom ua qhov rai ntawm koj lub khoos phis tawj, ntaus tus lej m = mobiledev thiab qhov no yuav tsum pib ua koj lub smartphone ua tus tswj hwm rau koj Roomba.
5. Koj lub khoos phis tawj thiab smartphone yuav tsum tau npaj mus tam sim no.
Kauj Ruam 5: Tsav Koj Lub Roomba
Tam sim no koj muaj txhua yam ntawm cov cuab yeej tsim nyog los tsim koj Mars Rover, koj tau npaj los tsim koj tus lej. Peb tau txuas ib qho piv txwv tus lej hauv qab no rau ob qho tib si kev tsav tsheb tsis siv neeg thiab kev tsav lub xov tooj ntawm tes.
Tsav Tsheb
muaj nuj nqi Explore_modified (r)
%cov lus tawm tswv yim: 1 qhov khoom siv hauv chav, r
%cov lus sib cav: tsis muaj
%piav qhia:
%ua haujlwm siv qhov tsis muaj qhov kawg thaum lub voj los tso cai rau tus kheej
%kev tshawb fawb ntawm tus bot nyob ib puag ncig.
%
%funciton tseem muab cov lus qhia rau chav nyob rau qhov yuav ua dab tsi hauv
%cov xwm txheej hauv qab no: Log (cov) poob (s) kev sib cuag nrog hauv av, ib
%cov khoom raug kuaj pom ua ntej lossis mus rau ob sab ntawm tus bot, thiab a
%poob sai yog pom nyob rau hauv pem hauv ntej lossis mus rau ob sab ntawm tus bot.
%
%cov lus qhia tshwj xeeb suav nrog cov lus txib txav los ua kom ntau ntxiv
%kev tshawb fawb lossis zam kev kuaj pom muaj kev phom sij thiab hais kom sib tham
%cov ntaub ntawv hais txog kev tshawb pom bots (duab), txoj haujlwm (teeb duab), %thiab lub xeev (tso tseg ceeb toom) nrog tus neeg siv ntawm matlab thiab/lossis email. Ob peb
%suab lus txib tau ntxiv rau kev lom zem.
%teeb tsa email muaj peev xwm
xa = '[email protected]';
lo lus zais = 'EF230Roomba';
setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com');
setpref ('Internet', 'E_mail', xa ntawv);
setpref ('Internet', 'SMTP_Username', xa ntawv);
setpref ('Internet', 'SMTP_Password', password);
cov khoom = java.lang. System.getProperties;
props.setProperty ('mail.smtp.starttls.enable', 'tseeb');
props.setProperty ('mail.smtp.auth', 'tseeb');
props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory');
props.setProperty ('mail.smtp.socketFactory.port', '465');
% r = chav nyob (19)
r.beep ('G2 ^^, G2 ^^, G2 ^^, G2 ^^, A2 ^^, A2 ^^, G1 ^^, E1 ^^, C2 ^^, C2 ^^, C1 ^^, C1 ^^, D1 ^^, C1 ^^, D2 ^^, E4 ^^, G2 ^^, G2 ^^, G2 ^^, G2 ^^, A2 ^^, A2 ^^, G1 ^^, E1 ^^, C2 ^^, C2 ^^, C2 ^^, E1 ^^, E1 ^^, E1 ^^, D1 ^^, C4 ^^ ');
v =.1;
reflect_datum = 2700; %teeb tsa pob zeb sensors siv tus nqi
lightBumper_datum = 200; %teeb lub teeb Bumper sensors siv tus nqi
pos = [0, 0]; %sib txawv rau txoj haujlwm cia nrog cov ntaub ntawv pib ua ntej
kaum sab xis = 0; %teeb lub kaum sab xis
netangle = 0; %net kaum kev txav chaw
kuv = 2; %iterator rau ntxiv kab rau txoj haujlwm cia sib txawv
cov = 0;
r.setDriveVelocity (v, v); %pib roomba txav mus rau tom ntej
thaum muaj tseeb
Cliff = r.getCliffSensors;
Pob = r.getBumpers;
Teeb = r.getLightBumpers;
RandAngle = randi ([20, 60], 1); %tsim 1 lub kaum ntse ntse tsis sib xws ntawm 20 thiab 60 degrees. Siv los tiv thaiv bot los ntawm kev nyam hauv lub voj
Yuav ua li cas yog tias ib lossis ntau lub log poob kev sib cuag nrog hauv av:
%nres kev txav chaw, xa email ceeb toom nrog duab ib puag ncig, %thiab nug tus neeg siv seb yuav mus txuas ntxiv lossis tos kev pab
yog Bump.rightWheelDrop == 1 || Bump.leftWheelDrop == 1
r.stop
deb = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle); %tau x koom tes
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); %tau y coordinate
kuv = kuv+1;
r.beep ('F#1 ^^, C1 ^^, F#1 ^^, C1 ^^, F#1 ^^, C1 ^^, F#1 ^^, C1 ^^, F#1 ^^, C1 ^^, F#1 ^^, C1 ^^, F#1 ^^, C1 ^^, F#1 ^^, C1 ^^ ')
img = r.getImage;
imwrite (img, 'daig.png');
%--------------------------
imfile = 'tsau.png';
txoj hauj lwm = savepos (pos);
%---------------------------
xa ntawv xa ntawv (xa ntawv, 'HELP!', 'Kuv nyob ntawm lub pob tsuas!', {imfile, txoj haujlwm})
list = {'Txuas ntxiv', 'Nres'};
idx = ntawv qhia zaub mov ('Kuv yuav ua li cas?', sau);
yog idx == 2
so
kawg
Yuav ua li cas yog tias ib yam khoom raug kuaj pom ua ntej bot:
%nres, txav rov qab, thaij duab, ceeb toom cov neeg siv pom
%ntawm email, tig 90 degrees, thiab tshawb nrhiav txuas ntxiv
elseif Light.leftCenter> lightBumper_datum || Light.rightCenter> lightBumper_datum || Bump.front == 1
r. nres;
deb = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle); %tau x koom tes
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); %tau y coordinate
kuv = kuv+1;
r.moveDistance (-. 125);
deb = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle); %tau x koom tes
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); %tau y coordinate
kuv = kuv+1;
r.beep ('A1^, A1^, A4^, A2^, G2^, G2^, G4^, Bb2^, Bb2^, Bb3.5^, G1^, A8^')
img = r.getImage;
imwrite (img, 'frontBump.png')
%--------------------------
imfile = 'FrontBump.png';
txoj hauj lwm = savepos (pos);
%---------------------------
xa ntawv (xa ntawv, 'ceeb toom!', 'Kuv pom qee yam!', {imfile, txoj haujlwm})
kaum sab xis = 90;
netangle = netangle+lub kaum sab xis;
r.turnAngle (kaum sab xis);
r.setDriveVelocity (v, v);
Yuav ua li cas yog tias pom cov khoom nyob rau sab laug ntawm bot:
%nres, tig mus rau yam khoom, thim rov qab, thaij duab, ceeb toom
%cov neeg siv pom ntawm email, tig 90 degrees thiab tshawb nrhiav txuas ntxiv
elseif Light.leftFront> lightBumper_datum || Light.left> lightBumper_datum || Bump.left == 1
r. nres;
deb = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle); %tau x koom tes
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); %tau y coordinate
kuv = kuv+1;
kaum sab xis = 30;
netangle = netangle+lub kaum ntse ntse;
r.turnAngle (kaum sab xis);
r.moveDistance (-. 125);
deb = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle); %tau x koom tes
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); %tau y coordinate
kuv = kuv+1;
r.beep ('A4^, A4^, G1^, E1^, C3.5^, C2 ^^, C1^, C1^, C2^, D2^, D2^, E8^')
img = r.getImage;
imwrite (img, 'LeftBump.png')
%--------------------------
imfile = 'LeftBump.png';
txoj hauj lwm = savepos (pos);
%---------------------------
xa ntawv (xa ntawv, 'ceeb toom!', 'Kuv pom qee yam!', {imfile, txoj haujlwm})
kaum sab xis = -90;
netangle = netangle+lub kaum ntse ntse;
r.turnAngle (kaum sab xis);
r.setDriveVelocity (v, v);
Yuav ua li cas yog tias cov khoom raug tshawb pom rau sab xis ntawm bot:
%nres, tig mus rau yam khoom, thim rov qab, thaij duab, ceeb toom
%cov neeg siv pom ntawm email, tig 90 degrees thiab tshawb nrhiav txuas ntxiv
elseif Light.rightFront> lightBumper_datum || Light.right> lightBumper_datum || Bump.right == 1
r. nres;
deb = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle); %tau x koom tes
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); %tau y coordinate
kuv = kuv+1;
kaum sab xis = -30;
netangle = netangle+lub kaum sab xis;
r.turnAngle (kaum sab xis);
r.moveDistance (-. 125);
deb = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle); %tau x koom tes
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); %tau y coordinate
kuv = kuv+1;
ncua (1.5);
r.beep ('C1^, C1^, C2^, D2^, D2^, C8^')
img = r.getImage;
imwrite (img, 'RightBump.png')
%--------------------------
imfile = 'RightBump.png';
txoj hauj lwm = savepos (pos);
%---------------------------
xa ntawv (xa ntawv, 'ceeb toom!', 'Kuv pom qee yam!', {imfile, txoj haujlwm});
kaum sab xis = 90;
netangle = netangle+lub kaum ntse ntse;
r.turnAngle (kaum sab xis);
r.setDriveVelocity (v, v);
Yuav ua li cas yog tias pob zeb tau pom rau sab laug ntawm bot:
%nres, txav rov qab, tig sab xis, tshawb nrhiav txuas ntxiv
elseif Cliff.left <reflect_datum || Cliff.leftFront <reflect_datum
r. nres;
deb = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle); %tau x koom tes
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); %tau y coordinate
kuv = kuv+1;
r.moveDistance (-. 125);
deb = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle); %tau x koom tes
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); %tau y coordinate
kuv = kuv+1;
kaum = -RandAngle;
netangle = netangle+lub kaum ntse ntse;
r.turnAngle (kaum sab xis);
r.setDriveVelocity (v, v);
Yuav ua li cas yog tias pob zeb tau pom rau sab xis ntawm bot:
%nres, txav rov qab, lem sab laug, tshawb nrhiav txuas ntxiv
elseif Cliff.right <reflect_datum || Cliff.rightFront <reflect_datum
r. nres;
deb = r.getDistance;
pos (i, 1) = dist * sind (angle); %tau x koom tes
pos (i, 2) = dist * cosd (angle); %tau y coordinate
kuv = kuv+1;
r.moveDistance (-. 125);
kaum = RandAngle;
netangle = netangle+lub kaum ntse ntse;
r.turnAngle (kaum sab xis);
r.setDriveVelocity (v, v);
kawg
kawg
Smartphone maub los
Cov kev xaiv = {'Autonomous', 'Manual Control'}
Hais kom sai = ntawv qhia zaub mov ('Koj xav tswj lub rover li cas?', Xaiv)
m = mobilesev
r = Roomba (19)
yog hais kom == 1
Tshawb nrhiav (r)
lwm tus
thaum muaj tseeb
ncua (.5)
PhoneData = m. Orientation;
Azi = PhoneData (1);
Suab = PhoneData (2);
Sab = PhoneData (3);
yog Sab> 130 || Sab <-130 %yog tias lub xov tooj tig rov qab lub ntsej muag nres lub roomba thiab tawm lub voj
r.stop
r.beep ('C, C, C, C')
so
elseif Sab> 25 && Sab <40 %yog tias lub xov tooj tig ib sab ntawm 25 thiab 40 deg tig sab laug 5 deg
r.turnAngle (-5);
elseif Sab> 40 %yog tias lub xov tooj tig ib sab dhau 40 deg tig sab laug 45 deg
r.turnAngle (-45)
elseif Sab -40 %yog tias lub xov tooj tig ib sab ntawm -25 thiab -40 deg tig sab xis 5 deg
r.turnAngle (5);
elseif Sab <-40 %yog tias lub xov tooj tig ib sab tsawg dua -40 deg tig sab laug 45 deg
r.turnAngle (45)
kawg
%Yog tias lub xov tooj nyob ze ntawm lub kaum ntse ntse coj cov duab thiab npaj nws
yog Suab <-60 && duab <= 9
r.y pib
img = r.getImage;
subplot (3, 3, duab)
imshow (img)
kawg
%txav mus tom ntej thiab thim rov qab raws li kev taw qhia pem hauv ntej thiab sab nraub qaum
yog Suab> 15 && Suab <35 %yog lub suab nruab nrab ntawm 15 thiab 35 deg txav mus tom ntej luv luv
%tau txais cov ntaub ntawv teeb lub teeb ua ntej txav mus
litBump = r.getLightBumpers;
yog litBump.leftFront> 500 || litBump.leftCenter> 500 || litBump.rightCenter> 500 || litBump.rightFront> 500 %yog tias muaj ib yam dab tsi nyob ntawm xub ntiag ntawm chav tsev thiab yuav ntaus yog tias nws txav mus rau tom ntej ua suab nrov thiab tso saib cov lus
r.beep ('C ^^, F#^, C ^^, F#^')
lwm %txav mus
r.moveDistance (.03);
%Tau txais cov ntaub ntawv bumper tom qab txav mus
Pob = r.getBumpers;
yog tias Bump.right == 1 || Bump.left == 1 || Bump.front == 1
r.beep ('A, C, E')
r.moveDistance (-. 01)
kawg
%tau cliff sensor cov ntaub ntawv
Cliff = r.getCliffSensors;
yog Cliff.left> 1500 || Cliff.leftFront> 1500 || Cliff.rightFront> 1500 || Cliff.right> 1500 %yog tias qee yam ua rau lub pob zeb sensor kho nws li lava thiab thim rov qab
r.beep ('C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C')
r.moveDistance (-. 031)
kawg
kawg
elseif Suab> 35 %yog lub suab ntau dua 35 deg txav mus tom ntej ntev dua
%tau txais cov ntaub ntawv teeb lub teeb ua ntej txav mus
litBump = r.getLightBumpers;
yog litBump.leftFront> 15 || litBump.leftCenter> 15 || litBump.rightCenter> 15 || litBump.rightFront> 15 %yog tias muaj ib yam dab tsi nyob ntawm xub ntiag ntawm chav tsev thiab yuav ntaus yog tias nws txav mus rau tom ntej ua suab nrov thiab tso tawm cov lus
r.beep ('C ^^, F#^, C ^^, F#^')
lwm %txav mus
r.moveDistance (.3)
%Tau txais cov ntaub ntawv bumper tom qab txav mus
Pob = r.getBumpers;
yog tias Bump.right == 1 || Bump.left == 1 || Bump.front == 1 %yog tias koj tsoo qee yam ua suab nrov, tso tawm cov lus, thiab thaub qab
r.beep ('A, C, E')
r.moveDistance (-. 01)
kawg
%tau cliff sensor cov ntaub ntawv tom qab txav mus
Cliff = r.getCliffSensors;
yog Cliff.left> 1500 || Cliff.leftFront> 1500 || Cliff.rightFront> 1500 || Cliff.right> 1500 %yog tias qee yam ua rau lub pob zeb sensor kho nws li lava thiab thim rov qab
r.beep ('C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C')
r.moveDistance (-. 31)
kawg
kawg
elseif Suab -35 %yog lub suab nruab nrab ntawm -15 thiab -35 deg txav rov qab luv luv
r.moveDistance (-. 03);
%tau cliff sensor cov ntaub ntawv tom qab txav mus
Cliff = r.getCliffSensors;
yog Cliff.left> 1500 || Cliff.leftFront> 1500 || Cliff.rightFront> 1500 || Cliff.right> 1500 %yog tias qee yam ua rau lub pob zeb sensor kho nws li lava thiab thim rov qab
r.beep ('C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C')
r.moveDistance (.04)
kawg
elseif Suab -60 %yog lub suab nruab nrab ntawm -35 thiab -60 deg txav rov qab nrug deb dua
r.moveDistance (-. 3)
%tau cliff sensor cov ntaub ntawv tom qab txav mus
Cliff = r.getCliffSensors;
yog Cliff.left> 1500 || Cliff.leftFront> 1500 || Cliff.rightFront> 1500 || Cliff.right> 1500 %yog tias qee yam ua rau lub pob zeb sensor kho nws li lava thiab thim rov qab
r.beep ('C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C')
r.moveDistance (.31)
kawg
kawg
kawg
kawg
Pom zoo:
Tig Koj Lub Qhov Rooj Hauv Qhov Rooj Mus Rau Hauv Qhov Rooj Ntse Nrog Lub Tsev Pabcuam: 6 Kauj Ruam
Tig Koj Lub Qhov Rooj Qhov Rooj Mus Rau Hauv Qhov Rooj Ntse Nrog Tus Pab Hauv Tsev: Hloov koj lub qhov rooj uas twb muaj lawm mus rau hauv lub qhov rooj ntse. Tau txais kev ceeb toom rau koj lub xov tooj lossis ua ke nrog koj lub koob yees duab lub qhov rooj uas twb muaj lawm kom tau txais daim duab lossis video ceeb toom txhua lub sijhawm ib tus neeg hu koj lub tswb
Tig Ib Lub Pob Ntseg Rau Hauv Lub Pob Ntseg Pob Ntseg (tsis cuam tshuam) Tsis tas ua kom lub mloog pob ntseg puas: 9 kauj ruam
Tig Ib Lub Pob Ntseg Rau Hauv Lub Pob Ntseg (tsis cuam tshuam) Tsis Ua Lub Pob Ntseg: Qhov no yog lub tswv yim kuv tau tawm ntawm xiav tom qab ib tus phooj ywg muab rau kuv qee lub pob ntseg supercheap tawg. Nws yog lub khoos phis tawj microphone uas tuaj yeem txuas nrog lub mloog pob ntseg yuav luag txhua lub mloog pob ntseg (Kuv nyiam qhov no vim tias kuv tuaj yeem ua game nrog lub mloog pob ntseg siab thiab
Tig lub DVD Player tawg rau hauv Cov Khoom Siv Txuas rau Koj Lub Tsev Theatre PC: 10 Kauj Ruam
Tig Lub DVD Player tawg rau hauv Cov Khoom Siv Txuas rau Koj Lub Tsev Theatre PC: Txog li $ 30 (Piv txwv tias koj twb muaj DVD-RW tsav thiab chaw nruab nrab tswj chaw taws teeb) koj tuaj yeem tig lub qub DVD player uas tawg mus rau hauv qhov thaiv rau koj qhov tsis zoo/ nyuaj kom mus txog HTPC cov khoom siv ntxiv. Ua tibzoo saib cov kauj ruam 2 rau tus nqi poob qis.Backgrou
Tsom iav Mounted Video Zaub rau Ib Lub Qhov Muag - Tig Koj Tus Kheej Rau Hauv Borg: 12 Cov Kauj Ruam
Tsom iav Mounted Video Zaub rau Ib Lub Qhov Muag-Tig Koj Tus Kheej Rau Hauv Borg: Hloov Kho 15th Lub Peb Hlis 2013: Kuv muaj qhov tshiab dua qhov zoo dua ntawm qhov no tam sim no hauv lwm Cov Lus Qhia: https: //www.instructables.com/id/DIY-Google-Glasses .. Ntseeg nws lossis tsis yog lub hom phiaj tiag tiag ntawm txoj haujlwm no tsis yog ua si ntawm kev ua Borg.I yuav tsum tau ua qee yam
Hack Koj Tus Neeg Sawv Cev V1.00 - Tig Koj Cov Servo Rau Hauv Cov Hwj Huam Tawm Tawm: 7 Cov Kauj Ruam
Hack Koj Tus Neeg Sawv Cev V1.00 - Tig Koj Cov Servo rau hauv Qhov Ua Haujlwm Zoo Tshaj Tawm: Muab koj muaj cov cuab yeej thiab cov servo koj tuaj yeem tsim qhov no rau hauv ob peb daus las. Tus actuator txuas nrog tus nqi kwv yees li 50mm/min. Nws yog qhov qeeb tab sis muaj zog heev. Saib kuv cov vis dis aus tom kawg ntawm kab ntawv uas tus actuator me me