Orodha ya maudhui:
- Hatua ya 1: Kusanya vifaa vyako
- Hatua ya 2: Pakua Sanduku la Vifaa vya Roomba kwa MATLAB
- Hatua ya 3: Unganisha na Roomba yako
- Hatua ya 4: Chagua Jinsi Unavyotaka Kudhibiti Roomba Yako
- Hatua ya 5: Endesha Roomba yako
Video: Kugeuza Roomba Yako Kuwa Rover ya Mars: Hatua 5
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:48
Hatua ya 1: Kusanya vifaa vyako
Ili kukamilisha mradi huu, utahitaji kukusanya vifaa vifuatavyo:
1 Roomba Robot
1 Kitambaa cha Raspberry Pi
Kamera 1 ya Video
Upatikanaji wa MATLAB
Hatua ya 2: Pakua Sanduku la Vifaa vya Roomba kwa MATLAB
Endesha nambari ifuatayo ili uweke visanduku vya zana muhimu ili kukamilisha mradi huu.
kazi roombaInstall
clc;
Orodha ya faili za kusakinishwa
faili = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'};
% eneo la kusakinisha kutoka
chaguzi = uchaguzi wa wavuti ('ChetiFilename', ); % iambie kupuuza mahitaji ya cheti
seva = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/';
dlgTitle = 'Sakinisha / Sasisha Roomba';
Kusudi la kuonyesha na kupata uthibitisho
haraka = {
'Programu hii itapakua faili hizi za EF 230 Roomba:'
''
strjoin (faili, )
''
kwa folda hii: '
''
cd
''
Je! Unataka kuendelea? '
};
beep;
yn = questdlg (haraka,…
dlgTitle,…
'Ndio', 'Hapana', 'Ndio');
if ~ strcmp (yn, 'Yes'), rudi; mwisho
% pata orodha ya faili ambazo zipo
zilizopo_files = faili (cellfun (@exist, faili)> 0);
if ~ isempty (zilizopo_files)
hakikisha ni sawa kuzibadilisha
prompt = {'Unabadilisha faili hizi:'
''
strjoin (faili zilizopo, )
''
"Sawa kuchukua nafasi?"
};
beep;
yn = questdlg (haraka,…
dlgTitle,…
'Ndio', 'Hapana', 'Ndio');
if ~ strcmp (yn, 'Yes'), rudi; mwisho
mwisho
Pakua faili
cnt = 0;
kwa i = 1: urefu (faili)
f = faili {i};
disp (['Upakuaji' f]);
jaribu
url = [seva f];
hifadhi ya wavuti (f, url, chaguzi); % imeongeza chaguzi ili kuepuka makosa ya usalama
cnt = cnt + 1;
kukamata
disp (['Kosa kupakua' f]);
dummy = [f '.html'];
ikiwa zipo (dummy, 'file') == 2
futa (dummy)
mwisho
mwisho
mwisho
ikiwa cnt == urefu (faili)
msg = 'Ufanisi wa Usakinishaji';
subiri (msgbox (msg, dlgTitle));
mwingine
msg = 'Kosa la Usakinishaji - tazama dirisha la amri kwa maelezo';
subiri (errordlg (msg, dlgTitle));
mwisho
mwisho% roombaInstall
Hatua ya 3: Unganisha na Roomba yako
Sasa ni wakati wa kuungana na Roomba yako kwa kutumia WiFi. Kutumia vidole 2, bonyeza kitufe cha Dock na Spot wakati huo huo kuwasha au kuweka tena Roomba yako. Ifuatayo, Run code r = roomba (# ya Roomba yako) kwenye dirisha la amri la MATLAB kuungana na robot yako. Mara baada ya kutekeleza amri hii, Roomba yako inapaswa kuwa tayari kwenda.
Hatua ya 4: Chagua Jinsi Unavyotaka Kudhibiti Roomba Yako
Kuna njia mbili ambazo unaweza kudhibiti Roomba yako: kujiendesha au kutumia smartphone kama mtawala.
Ikiwa unachagua kuendesha Roomba kwa uhuru, utahitaji kutumia sensorer tatu zilizojengwa: sensorer za mwamba, sensorer mapema, na sensorer nyepesi.
Ili kutumia smartphone, kwanza unahitaji kuunganisha simu yako mahiri na kompyuta yako kwa kufuata hatua zifuatazo.
KUMBUKA: Kompyuta yako na smartphone inahitaji kuwa kwenye mtandao huo wa WiFi ili kuungana vizuri!
1. Pakua programu ya MATLAB kutoka duka la programu kwenye kifaa chako.
2. Chapa "kontakt juu" kwenye dirisha la amri yako na uweke nywila ambayo itahitaji kuingizwa kwenye vifaa vyote viwili.
3. Baada ya kufanya hivyo, MATLAB itakupa anwani yako ya IP ya kompyuta. Unahitaji kwenda kwenye ukurasa wa mipangilio kwenye programu ya MATLAB kwenye smartphone yako na uongeze kompyuta ukitumia anwani ya IP iliyopewa na nywila uliyoingiza hapo awali.
4. Katika dirisha la amri kwenye kompyuta yako, andika nambari m = mobiledev na hii inapaswa kutambulisha smartphone yako kama mtawala wa Roomba yako.
5. Kompyuta yako na smartphone inapaswa kuwa tayari kwenda sasa.
Hatua ya 5: Endesha Roomba yako
Sasa kwa kuwa una zana zote muhimu za kuunda Mars Rover yako, uko tayari kuunda nambari yako mwenyewe. Tumeambatanisha nambari ya mfano hapa chini kwa kuendesha gari kwa uhuru na kuendesha gari kudhibitiwa na smartphone.
Kuendesha kwa Kujitegemea
kazi Explore_modified (r)
Hoja za kuingiza% 1 kitu cha roomba, r
% hoja za pato: hakuna
% maelezo:
Kazi ya% hutumia kitanzi kisicho na kipimo ili kuruhusu uhuru
Utaftaji wa mazingira ya bot.
%
Funciton pia hutoa maagizo kwa roomba kwa nini cha kufanya katika
Hali zifuatazo: Magurudumu hayapigani na ardhi, an
% kitu hugunduliwa mbele au kwa upande wowote wa bot, na a
Kushuka kwa ghafla hugunduliwa mbele ya au upande wowote wa bot.
%
Maagizo ya kawaida ni pamoja na amri za harakati zinazokusudiwa kuongeza
Utafiti au epuka hatari inayogunduliwa na anaamuru kuwasiliana
habari juu ya uvumbuzi wa bots (picha), msimamo (grafu), % na hali (onyo lililokwama) na mtumiaji kupitia matlab na / au barua pepe. Kadhaa
Amri za sauti% zinaongezwa ili kufurahiya.
kuanzisha uwezo wa barua pepe
barua = '[email protected]';
nenosiri = 'EF230Roomba';
setpref ('Mtandao', 'SMTP_Server', 'smtp.gmail.com');
setpref ('Mtandao', 'E_mail', barua);
setpref ('Mtandao', 'SMTP_Username', barua);
setpref ('Mtandao', 'SMTP_Password', nywila);
props = java.lang. System.getProperties;
prop.setProperty ('mail.smtp.starttls.enable', 'kweli');
props.setProperty ('mail.smtp.auth', 'kweli');
props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory');
prop.setProperty ('mail.smtp.socketFactory.port', '465');
% r = roomba (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;
tafakari_datum = 2700; % kuweka sensorer ya mwamba thamani ya kumbukumbu
mwangaBumper_datum = 200; % weka nuru rejeleo la sensorer Bumper
pos = [0, 0]; % variable kwa uhifadhi wa nafasi na datum imeanzishwa
pembe = 0; % kuweka pembe ya kumbukumbu
netangle = 0; Uhamaji wa pembe ya wavu
i = 2; iterator ya kuongeza safu kwenye nafasi ya kutofautisha kuhifadhi
dist = 0;
r.setDriveVelocity (v, v); kuanza roomba kusonga mbele
wakati ni kweli
Cliff = r.getCliffSensors;
Bump = r.getBumpers;
Mwanga = r.getLightBumpers;
RandAngle = randi ([20, 60], 1); % hutengeneza pembe 1 ya nasibu kati ya digrii 20 hadi 60. Inatumika kuzuia bot kukwama kwenye kitanzi
Nini cha kufanya ikiwa gurudumu moja au zaidi hupoteza mawasiliano na ardhi:
kuacha harakati, tuma barua pepe ya onyo na picha ya mazingira, na uliza mtumiaji ikiwa utaendelea au subiri msaada
ikiwa Bump.rightWheelDrop == 1 || Bump.leftWheelDrop == 1
r.acha
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (mwamba); % kupata x kuratibu
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); % kupata y kuratibu
i = i + 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;
andika (img, 'stuck.png');
%--------------------------
imfile = 'kukwama.png';
nafasi = savepos (pos);
%---------------------------
sendmail (barua, 'HELP!', 'Nimekwama kwenye mwamba!', {imfile, position})
orodha = {'Endelea', 'Stop'};
idx = menyu ('Nifanye nini?', orodha);
ikiwa idx == 2
kuvunja
mwisho
Nini cha kufanya ikiwa kitu hugunduliwa mbele ya bot:
simama, rudi nyuma, piga picha, tahadhari mtumiaji wa ugunduzi
% kupitia barua pepe, geuza digrii 90, na uendelee kuchunguza
mwingineif Mwanga.kushotoCenter> lightBumper_datum || Mwanga.rightCenter> lightBumper_datum || Bump.mbele == 1
r.acha;
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (mwamba); % kupata x kuratibu
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); % kupata y kuratibu
i = i + 1;
r.soveDistance (-. 125);
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (mwamba); % pata uratibu wa x
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); % kupata y kuratibu
i = i + 1;
r. beep ('A1 ^, A1 ^, A4 ^, A2 ^, G2 ^, G2 ^, G4 ^, Bb2 ^, Bb2 ^, Bb3.5 ^, G1 ^, A8 ^')
img = r.getImage;
andika (img, 'FrontBump.png')
%--------------------------
imfile = 'FrontBump.png';
nafasi = savepos (pos);
%---------------------------
sendmail (barua, 'Tahadhari!', 'Nimepata kitu!', {imfile, position})
pembe = 90;
netangle = pembetatu + pembe;
r. TurnAngle (pembe);
r.setDriveVelocity (v, v);
Nini cha kufanya ikiwa kitu hugunduliwa kushoto kwa bot:
simama, geukia kitu, rudisha nyuma, piga picha, tahadhari
Mtumiaji wa ugunduzi kupitia barua pepe, geuza digrii 90 na endelea kuchunguza
mwingineif Mwanga.kushoto Mbele> lightBumper_datum || Mwanga.kushoto> mwangaBumper_datum || Bump.left == 1
r.acha;
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (mwamba); % kupata x kuratibu
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); % kupata y kuratibu
i = i + 1;
pembe = 30;
netangle = pembetatu + pembe;
r. zungusha (pembe);
r.soveDistance (-. 125);
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (mwamba); % pata uratibu wa x
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); % kupata y kuratibu
i = i + 1;
r. beep ('A4 ^, A4 ^, G1 ^, E1 ^, C3.5 ^, C2 ^^, C1 ^, C1 ^, C2 ^, D2 ^, D2 ^, E8 ^')
img = r.getImage;
andika (img, 'LeftBump.png')
%--------------------------
imfile = 'LeftBump.png';
nafasi = savepos (pos);
%---------------------------
sendmail (barua, 'Tahadhari!', 'Nimepata kitu!', {imfile, position})
pembe = -90;
netangle = pembetatu + pembe;
r. zungusha (pembe);
r.setDriveVelocity (v, v);
Nini cha kufanya ikiwa kitu kinapatikana kwa haki ya bot:
simama, geukia kitu, rudisha nyuma, piga picha, tahadhari
Mtumiaji wa ugunduzi kupitia barua pepe, geuza digrii 90 na endelea kuchunguza
mwingineif Mwanga.kulia Mbele> lightBumper_datum || Mwanga.kulia> mwangaBumper_datum || Bump.kulia == 1
r.acha;
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (mwamba); % pata uratibu wa x
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); % kupata y kuratibu
i = i + 1;
pembe = -30;
netangle = pembetatu + pembe;
r. zungusha (pembe);
r.soveDistance (-. 125);
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (mwamba); % kupata x kuratibu
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); % kupata y kuratibu
i = i + 1;
pause (1.5);
r. beep ('C1 ^, C1 ^, C2 ^, D2 ^, D2 ^, C8 ^')
img = r.getImage;
andika (img, 'RightBump.png')
%--------------------------
imfile = 'RightBump.png';
nafasi = savepos (pos);
%---------------------------
sendmail (barua, 'Alert!', 'Nimepata kitu!', {imfile, position});
pembe = 90;
netangle = pembetatu + pembe;
r. zungusha (pembe);
r.setDriveVelocity (v, v);
Nini cha kufanya ikiwa mwamba hugunduliwa kushoto kwa bot:
simama, rudi nyuma, pinduka kulia, endelea kuchunguza
mwingineif Cliff.kushoto <reflect_datum || Cliff. kushotoFront <reflect_datum
r.acha;
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (mwamba); % kupata x kuratibu
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); % kupata y kuratibu
i = i + 1;
r.soveDistance (-. 125);
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (mwamba); % kupata x kuratibu
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle); % kupata y kuratibu
i = i + 1;
pembe = -RangiAngle;
netangle = pembetatu + pembe;
r. zungusha (pembe);
r.setDriveVelocity (v, v);
Nini cha kufanya ikiwa mwamba hugunduliwa upande wa kulia wa bot:
Acha, songa nyuma, pinduka kushoto, endelea kuchunguza
mwingineif Cliff.kulia <reflect_datum || Cliff.rightFront <kuonyesha_datum
r.acha;
dist = r.getDistance;
pos (i, 1) = dist * sind (pembe); % kupata x kuratibu
pos (i, 2) = dist * cosd (pembe); % kupata y kuratibu
i = i + 1;
r.soveDistance (-. 125);
pembe = RandAngle;
netangle = pembetatu + pembe;
r. zungusha (pembe);
r.setDriveVelocity (v, v);
mwisho
mwisho
Mdhibiti wa Smartphone
Chaguzi = {'Autonomous', 'Manual Control'}
Prompt = menyu ('Je! Ungependa kudhibiti rover?', Chaguzi)
m = mobilesev
r = roomba (19)
ikiwa Haraka == 1
Gundua (r)
mwingine
wakati ni kweli
pumzika (.5)
SimuData = m. Oriering;
Azi = SimuData (1);
Lami = SimuData (2);
Upande = SimuData (3);
ikiwa Upande> 130 || Upande <-130% ikiwa simu imegeuzwa uso chini simama kitanzi na toka kitanzi
r.acha
r. beep ('C, C, C, C')
kuvunja
upande mwingine> 25 && Side <40% ikiwa simu imegeuzwa kando kati ya digrii 25 hadi 40 geuka kushoto 5 deg
r. TurnAngle (-5);
upande mwingine> 40% ikiwa simu imegeuzwa kando juu ya digrii 40 pinduka kushoto digrii 45
r. TurnAngle (-45)
kamaif Side-40% ikiwa simu imegeuzwa kando kati -25 na -40 deg pinduka kulia 5 deg
r. TurnAngle (5);
upande mwingine <-40% ikiwa simu imegeuzwa pembeni chini ya -40 deg pinduka kushoto 45 deg
r.urnAngle (45)
mwisho
Ikiwa simu imeshikiliwa karibu na wima piga picha na kuipanga
ikiwa Pitch <-60 && picha <= 9
r.beep
img = r.getImage;
kiwanja (3, 3, picha)
imshow (img)
mwisho
% songa mbele na nyuma kulingana na mwelekeo wa mbele na nyuma
ikiwa lami> 15 && Pitch <35% ikiwa lami kati ya 15 na 35 deg songa mbele umbali mfupi
% hupata data nyepesi kabla ya kuhamia
litBump = r.getLightBumpers;
ikiwa litBump.leftFront> 500 || litBump.leftCenter> 500 || litBump.rightCenter> 500 || litBump.rightFront> 500% ikiwa kuna kitu mbele ya roomba na kitapiga ikiwa kitasonga mbele piga kelele na kuonyesha ujumbe
r.beep ('C ^ ^, F # ^, C ^ ^, F # ^')
mwingine% hoja
r.soveDistance (.03);
Kupata data bumper baada ya kusonga
Bump = r.getBumpers;
ikiwa Bump.kulia == 1 || Bump.left == 1 || Bump.mbele == 1
r. beep ('A, C, E')
r.soveDistance (-. 01)
mwisho
% kupata data cliff sensor
Cliff = r.getCliffSensors;
ikiwa Cliff.kushoto> 1500 || Cliff kushoto mbele> 1500 || Cliff. Kulia Mbele> 1500 || Cliff.right> 1500% ikiwa kitu kinachosababisha sensor ya mwamba ichukue kama lava na uhifadhi tena
r.beep ('C ^ ^, C, C ^ ^, C, C ^ ^, C, C ^ ^, C, C ^ ^, C, C ^ ^, C')
r.soveDistance (-. 031)
mwisho
mwisho
pengine> Pembe> 35% ikiwa lami zaidi 35 dig kusonga mbele umbali mrefu
% hupata data nyepesi kabla ya kuhamia
litBump = r.getLightBumpers;
ikiwa litBump.leftFront> 15 || litBump.leftCenter> 15 || litBump.rightCenter> 15 || litBump.rightFront> 15% ikiwa kuna kitu mbele ya roomba na kitapiga ikiwa kitasonga mbele piga kelele na kuonyesha ujumbe
r.beep ('C ^ ^, F # ^, C ^ ^, F # ^')
mwingine% hoja
r.soveDistance (.3)
Kupata data bumper baada ya kusonga
Bump = r.getBumpers;
ikiwa Bump.kulia == 1 || Bump.left == 1 || Bump.front == 1% ukigonga kitu fanya kelele, onyesha ujumbe, na uhifadhi nakala rudufu
r. beep ('A, C, E')
r.soveDistance (-. 01)
mwisho
% kupata data cliff sensor baada ya kusonga
Cliff = r.getCliffSensors;
ikiwa Cliff.kushoto> 1500 || Cliff kushoto mbele> 1500 || Cliff. Kulia Mbele> 1500 || Cliff.right> 1500% ikiwa kitu kinachosababisha sensor ya mwamba ichukue kama lava na uhifadhi tena
r.beep ('C ^ ^, C, C ^ ^, C, C ^ ^, C, C ^ ^, C, C ^ ^, C, C ^ ^, C')
r.sovesa Umbali (-. 31)
mwisho
mwisho
kingine ikiwa Pitch-35% ikiwa lami kati ya -15 na -35 deg inarudi nyuma umbali mfupi
r.soveDistance (-. 03);
% kupata data cliff sensor baada ya kusonga
Cliff = r.getCliffSensors;
ikiwa Cliff.kushoto> 1500 || Cliff kushoto mbele> 1500 || Cliff. Kulia Mbele> 1500 || Cliff.right> 1500% ikiwa kitu kinachosababisha sensor ya mwamba ichukue kama lava na uhifadhi tena
r.beep ('C ^ ^, C, C ^ ^, C, C ^ ^, C, C ^ ^, C, C ^ ^, C, C ^ ^, C')
r.soveDistance (.04)
mwisho
kingine ikiwa Pitch-60% ikiwa lami kati ya -35 na -60 deg inarudi nyuma umbali mrefu
r.sovesa Umbali (-. 3)
% kupata data cliff sensor baada ya kusonga
Cliff = r.getCliffSensors;
ikiwa Cliff.kushoto> 1500 || Cliff kushoto mbele> 1500 || Cliff. Kulia Mbele> 1500 || Cliff.right> 1500% ikiwa kitu kinachosababisha sensor ya mwamba ichukue kama lava na uhifadhi tena
r.beep ('C ^ ^, C, C ^ ^, C, C ^ ^, C, C ^ ^, C, C ^ ^, C, C ^ ^, C')
r.soveDistance (.31)
mwisho
mwisho
mwisho
mwisho
Ilipendekeza:
Jinsi ya Kugeuza PC ya Zamani / iliyoharibiwa au Laptop kuwa Sanduku la Media: Hatua 9
Jinsi ya Kugeuza PC ya Kale / Iliyoharibiwa au Laptop kuwa Sanduku la Media: Katika ulimwengu ambao teknolojia Inasonga haraka zaidi kuliko sisi, umeme wetu mpendwa haraka sana umepitwa na wakati. Labda paka zako za kupenda kila wakati ziligonga kompyuta yako ya mezani na skrini ikavunjika. Au labda unataka sanduku la media kwa Runinga mahiri
Jinsi ya Kugeuza Tube ya Gitaa kuwa Kitengo cha Preamp / upotoshaji (na Sanduku la Mizigo): Hatua 6
Jinsi ya Kugeuza Tube ya Gitaa kuwa Kitengo cha Preamp / upotoshaji (na Sanduku la Mizigo): Halo kila mtu !!! Hii ni mafundisho yangu ya kwanza, nitakuelezea jinsi ya kugeuza gitaa ndogo ya amp kuwa kitengo / kanyagio cha preamp, na sanduku la mzigo; Kifaransa na Kiingereza changu ni chache, kwa hivyo ikiwa nilifanya makosa tafadhali unisamehe! :) SIKUMBUKI
Jinsi ya Kugeuza Ubunifu wako kuwa Bodi ya Taaluma ya PCB - Njia Yangu: Hatua 9
Jinsi ya Kugeuza Ubunifu wako kuwa Bodi ya Taaluma ya PCB | Njia yangu: Katika chapisho hili nitashiriki njia yangu ya kujenga bodi ya wataalamu wa PCB kwa hatua chache sana za kina. Pia nimeingiza video ya hiyo hiyo, unaweza kuitazama au kuendelea kusoma chapisho kwa maelezo ya kina. Basi wacha tuanze na
Jinsi ya Kugeuza simu yako ya rununu ya LG EnV 2 kuwa Modem ya Upigaji wa Kubebeka kwa Laptop yako (au Desktop): Hatua 7
Jinsi ya Kugeuza simu yako ya rununu ya LG EnV 2 kuwa Modem ya Kubonyeza Up kwa Laptop yako (au Desktop): Sisi sote kwa wakati fulani tulikuwa na hitaji la kutumia mtandao ambapo haikuwezekana, kama kwenye gari. , au kwenye likizo, ambapo wanatoza kiwango cha gharama cha pesa kwa saa kutumia wifi yao. mwishowe, nimekuja na njia rahisi ya kupata
Kugeuza Windows XP yako au Vista kuwa Mac na Linux: Hatua 10
Kugeuza Windows XP au Vista yako kuwa Mac na Linux: Hii inayoweza kufundishwa itakuonyesha jinsi ya kugeuza kompyuta yako ya windows kuwa mac na pc, na pia kuendesha Linux. - Ninapendekeza uwe na angalau GB 2 ya RAM - na zaidi ya 10GB ya nafasi ya diski ngumu (ikiwa unataka linux) Vista au XP inapendekezwa - ninafanya hivi kwenye