I världen, varje dag mer och mer populärt bland robotstädare. Tack vare sådana små hjälpare blir huset mycket renare och mycket mindre ansträngning läggs på att städa. Det finns många olika modifieringar av robotar, alla skiljer sig i funktionalitet, storlek och andra parametrar.
Specifikt kommer denna artikel att ta hänsyn till ett exempel på hur
gör det själv Du kan skapa en enkel robot, som själv kommer att dammsuga rummet vid behov. Styrenheten används här som "hjärnan"
Arduino.
Material och verktyg för tillverkning av roboten:- kort som styr motorernas drift (Arduino motorsköld);
- Arduino styrelse;
- två motorer med växlar (motorer vid 3 volt och en rotationshastighet på cirka 100 varv / minut).
- hjul (kan tillverkas av aluminiumburkar;
- en kylare från datorns strömförsörjning (möjligt både på 5V och 12V);
- 5V strömförsörjning (batteri);
- Trådar och plattor för installation av radioelement;
- För att göra fallet behöver du en plastbehållare;
- En annan liten behållare för att skapa en avfallskorg;
- hett lim;
- magneter;
- kartong.
Tillverkningsprocessen för roboten:
Första steget. Programvara del av roboten och skiss:
Robotens hjärta är Arduino-kontrollen. För att programmera det behöver du en dator och speciell programvara.
För att ladda ner skissen till brädet behöver du Arduino IDE-programmet. Nedan kan du ta robotens programkod och se huvudkretsen.
/*
Program för styrning av en robot med två motorer.
Roboten vrids när motorerna ändrar hastighet och riktning.
Stötfångare på vänster och höger sida upptäcker hinder.
Ultraljudsoljor kan anslutas till analoga ingångar (testad på LV-MaxSonar-EZ1):
- lägg stift i array sonarPins i följande ordning: vänster, höger, främre, andra ..
Exempel:
1. endast vänster och höger sonar anslutna till stift 2 och 3: sonarPins [] = {2,3}
2. vänster, höger och främre sonar anslutna till stift 2, 3 och 5: sonarPins [] = {2,3,5}
3. endast främre ekolod anslutet till stift 5: sonarPins [] = {-1, -1.5}
4. endast vänster ekolod ansluten till stift 2: sonarPins [] = {2}
5. endast höger ekolod anslutet till stift 3: sonarPins [] = {-1,3}
6,5 sonar anslutna till stift 1,2,3,4,5: sonarPins [] = {1,2,3,4,5}
Motorsköld används för att driva motorer.
*/
const int Baud = 9600; // UART-portens hastighet
// Sonaregenskaper
int sonarPins [] = {1, 2}; // Analog Pin Nums to sonar sensor Pin AN
const lång MinLeftDistance = 20; // Minsta tillåtna vänsteravstånd
const lång MinRightDistance = 20; // Minsta tillåtna höger avstånd
konst lång MinFrontDistance = 15; // Minsta tillåtna frontavstånd
const int SamplesAmount = 15; // fler prover - mjukare mätning och större fördröjning
const int SonarDisplayFrequency = 10; // Visa bara en av dessa rader - inte alla
int sonarDisplayFrequencyCount = 0;
konst lång faktor = 2,54 / 2;
långa prover [sizeof (sonarPins)] [SamplesAmount];
int sampleIndex [sizeof (sonarPins)];
// höger sida
const int pinRightMotorDirection = 4; // detta kan markeras på motorskölden som "DIR A"
const int pinRightMotorSpeed = 3; // detta kan markeras på motorskölden som "PWM A"
const int pinRightBumper = 2; // där höger stötfångare är ansluten
// vänster sida
const int pinLeftMotorDirection = 7; // detta kan markeras på motorskölden som "DIR B"
const int pinLeftMotorSpeed = 6; // detta kan markeras på motorskölden som "PWM B"
const int pinLeftBumper = 8; // där höger stötfångare är ansluten
// avdela nästa 2 rader om Motorskölden har pauser
// const int pinRightMotorBreak = PUT_BREAK_PIN_HERE; // detta kan markeras på motorskölden som "BREAKE A"
// const int pinLeftMotorBreak = PUT_BREAK_PIN_HERE; // detta kan markeras på motorskölden som "BREAKE B"
// fält
const int turnRightTimeout = 100;
const int turnLeftTimeout = 150;
// ställa in räknaren hur länge en motor kör tillbaka: N / 10 (i millisekunder)
int countDownWhileMovingToRight;
int countDownWhileMovingToLeft;
// Initiering
ogiltig installation () {
Serial.begin (Baud);
initPins ();
// avdela nästa fyra rader om Motorskölden har pauser
// pinMode (pinLeftMotorBreak, OUTPUT);
// pinMode (pinRightMotorBreak, OUTPUT);
// digitalWrite (pinLeftMotorBreak, LOW); // stänga av pauser
// digitalWrite (pinRightMotorBreak, LOW); // stänga av pauser
runRightMotorForward ();
runLeftMotorForward ();
startMotors ();
}
// Huvudslinga
void loop () {
verifiera och SetsRightSide ();
VerifiedAndSetLeftSide ();
processRightSide ();
processLeftSide ();
fördröjning (10); // upprepa var tionde millisekund
}
//---------------------------------------------------
void initPins () {
pinMode (pinRightMotorDirection, OUTPUT);
pinMode (pinRightMotorSpeed, OUTPUT);
pinMode (pinRightBumper, INPUT);
pinMode (pinLeftMotorDirection, OUTPUT);
pinMode (pinLeftMotorSpeed, OUTPUT);
pinMode (pinLeftBumper, INPUT);
för (int i = 0; i pinMode (sonarPins [i], INPUT);
}
void startMotors () {
setMotorSpeed (pinRightMotorSpeed, 255);
setMotorSpeed (pinLeftMotorSpeed, 255);
}
void waitWhileAnyBumperIsPression () {
medan (checkBumperIsNotPressed (pinRightBumper)
&& checkBumperIsNotPressed (pinLeftBumper)) {
fördröjning (20); // kontrollera vart 20 millisekund
}
}
void processRightSide () {
if (countDownWhileMovingToRight MinFrontDistance) // kontrollerar om minsta tillåtna frontavstånd inte har uppnåtts
återvända;
if (checkCounterIsNotSet (countDownWhileMovingToLeft)) // om räknaren ännu inte räknar ner
runLeftMotorBackward (); // kör höger motor bakåt
countDownWhileMovingToLeft = turnLeftTimeout; // ställa räknaren till maximivärde för att starta räkningen
}
bool checkCounterIsNotSet (int räknare) {
returräknare = SamplesAmount)
sampleIndex [pinIndex] = 0;
samplar [pinIndex] [sampleIndex [pinIndex]] = värde;
tillbaka sant;
}
long calculAvarageDistance (int pinIndex) {
långt medelvärde = 0;
för (int i = 0; i genomsnitt + = prover [pinIndex] [i];
returmedelvärde / ProverAmount;
}
Steg två Förberedelse av robotens grundelement
Kartong används som bas för att fästa alla komponenter i roboten, inklusive batteri, styrkort och motorer.
Turbinen måste limas ordentligt eller på annat sätt fixeras på en liten plastbehållare för att göra ett hål för att absorbera smuts. Därefter limmas denna design på kartongunderlaget. Dessutom måste behållaren ha ett extra hål genom vilket luften kommer ut. Det borde finnas ett filter, beslutade författaren att använda syntetiskt tyg för dessa ändamål.
I nästa steg måste kylaren limmas med servon, och sedan installeras denna design på en kartong.
Steg tre Vi gör hjul för roboten
För att göra hjulen måste du ta aluminiumburkar och skära av de övre och nedre delarna från dem. Sedan limmas dessa element ihop. Nu återstår det bara att ordentligt fästa hjulen på servomotorerna med smältlim. Det är viktigt att förstå att hjulen måste fixeras tydligt i mitten av servosaxlarna. annars roboten kommer att köra krokigt och kommer att använda energi.
Steg fyra Den sista robotmonteringsprocessen
När batteriet har installerats och alla robotens element är anslutna återstår det att placera strukturen i ett hållbart fodral. En stor plastbehållare är bra för dessa ändamål. Först måste hål göras i robotkroppens näsa, genom vilka kontakter kommer att matas ut som ger en signal elektronik när roboten kolliderar med ett hinder.
För att fallet ska tas bort snabbt och enkelt, används magneter för att fixa det, i det här fallet är det åtta. Magneter limmas på insidan av dammsugaren och på själva behållaren, 4 stycken vardera.
Det är allt. Nu är roboten monterad och den kan testas i praktiken. Trots att roboten inte kan ladda på egen hand och har en ganska begränsad förmåga när det gäller navigering, kommer den inom en halvtimme att kunna rensa upp skräp i köket eller lilla rummet. Fördelarna med roboten är att alla komponenter lätt kan hittas och att de inte är särskilt dyra. Utan tvekan hemgjorda Du kan förfina genom att lägga till nya sensorer och andra element.