WIFI-BOT

Я танк, но я еще совсем маленький и слабый.. Но я скоро вырасту и стану хер знает чем =)
А вот мои кишки на столе пока еще, и я низнаю встретятся ли мой мозг с ногами…
Моим мозгом и антенной будет поделка конторы TP-Link TL-MR3020, а спинным мозгом самопальная Arduino atmega168 c motor shield:
mozg

А вот мои ноги… и они пока не танковые и еще поломаные :'( я очень надеюсь что их починят и я хоть как-то смогу передвигатся:

ноги

Но зато мне пообещали удивительную вещь, зрение! Я смогу ориентироватся в пространстве и ехать на своем уродливом шасси по своему усмотрению:

глаз

Вот..

Ура! Я чувствую свои двигатели, и могу ими даже крутить! Но колес по прежнему у меня пока нет :'(

Мне приснилось как я буду выглядеть.. и это было как-то так:

...

Создатели мне обещают подвижную камеру… и туда уйдет две сервомашинки.
Соответственно крутить головой я смогу на 180 и 90 градусов по горизонтали и вертикали соответственно.

С серией журналов AMG Mercedes C-Class DTM 2008 вышла крупная китайская сервомашинка… и она пойдет мне на руль поскольку я танк-нищеброд.
А на мерс наверно пожалуют более продвинутую и быструю.

А сегодня мне делают протез:

protez

Исторический вопрос, что пилить, колесо или раму:

koleso

Поскольку радиус поворота дотаточен для отправки меня на марс, то колесо мне подпилят уже в процессе эксплуатации 😉
Я покажу этому ‘любопытному’ где танки зимуют…

А сегодня я впервые зашевелил ластами.
Очень помог ремкомплект тяг от вертолета:)

rul

У меня оказывается есть дифференциал, какой никакой.. но дифф, отказываться не хочется. Но передаточное число не подходит.
Я все же танк, а не гоночный болид.

diff

Проблема решается переделкой понижающих шестерень привода диффа, или же установкой этого монстра) он точно в советской авиации служил!

dpm

Расчитан на питание 24 вольта советской космической программой, но где взять это на борту…?

Хотя после серии тестов.. он даже от 9-ти вольт легко потянет.. Не говоря уже о 12..
Советская техника работает от любых вольт и иногда от любых градусов 😉
yakor

Итак, справа на фотке разобранные статор с якорем китайскоро двигателя, чуть ниже лежит его черная крышка с ламельками..
Слева в сборе советский ДПМ с поддетой белой хренью графитовой щетки.. почти скушанной в ноль..(

Итог сего эксперимента, ламельки китайца не проработают и дня в условиях такой загруженности что предполагается.. 😉
Графит ДПМа проработает недельку и потом туда вставлятся новые щетки и двигло будет как новое.
В итоге двигло в танке поменяется в любом случае, и скорей всего на этот ДПМ.

А мой влезет..

inc

Примерки перед кройкой…

Итак, после недолгого перерыва был найден более подходящий вариант:

motor

Маленький 6-ти вольтовый ДПМ с почти новыми щетками. В процессе вкрячивания 🙂

Вот, вкрячилось, немного пожертвовал левым аммортизатором. Ну ничего прилеплю по другому:

motorin

По питанию были куплены силовые банки NI-MH на 3300mAh:

Вырезаем «будку» 🙂 для банок и запаковываем:

Пилим, вырезаем, вяжем и вкрячиваем:

Лепим сверху электронику:

И поехали!

Скетч для ардуины:

Кривоват 😉 но работает.


//WI-FI BOT v. 1.0a

#include
#include

Servo myservo;
AF_DCMotor motor(3); // Используем 3-тий мотор на моторшилде.

int ledflag =1;
int led = 13;
int incomingByte = 0;
int action = 0;
int pos = 100;

boolean o,m,h = 0;

void setup() {
Serial.begin(115200); // Настраиваем порт на скорость 115200.
pinMode(led, OUTPUT);
// Включаем сервомашинку
myservo.attach(9);
// Включаем двигатель
motor.setSpeed(200);

motor.run(RELEASE);
}

void loop() {
uint8_t i;

if (Serial.available() > 0) { //если есть доступные данные// считываем байт
incomingByte = Serial.read();

if(incomingByte == 99) // C
{

myservo.write(104);
pos = 104;

while(Serial.available()>0) Serial.read();

}

if(incomingByte == 97) // A
{
if (pos > 77){
pos=pos-4;
}
myservo.write(pos);

delay(5);
while(Serial.available()>0) Serial.read();
// Serial.println("Left");
}
if(incomingByte == 100) // D
{
if (pos < 135){ pos=pos+4; } myservo.write(pos); delay(5); while(Serial.available()>0) Serial.read();
// Serial.println("Right");
}
if(incomingByte == 115) // S
{
motor.run(BACKWARD);

for (i=0; i<255; i++) { motor.setSpeed(i); delay(1); } for (i=255; i!=0; i--) { motor.setSpeed(i); delay(1); } delay(5); while(Serial.available()>0) Serial.read();
// Serial.println("BWok");
}
if(incomingByte == 119) // W
{
motor.run(FORWARD);

for (i=0; i<255; i++) { motor.setSpeed(i); delay(1); } for (i=255; i!=0; i--) { motor.setSpeed(i); delay(1); } delay(5); while(Serial.available()>0) Serial.read();
// Serial.println("FWok");
}

if(incomingByte == 98) // b
{
motor.run(FORWARD);

motor.setSpeed(0);

while(Serial.available()>0) Serial.read();
}

if(incomingByte == 111) // o
{

motor.run(FORWARD);

if (o == 0){
motor.setSpeed(100);
o = 1;
}
else {
motor.setSpeed(0);
o = 0;
}
while(Serial.available()>0) Serial.read();
}

if(incomingByte == 109) // m
{

motor.run(FORWARD);

if (m == 0){
motor.setSpeed(200);
m = 1;
}
else {
motor.setSpeed(0);
m = 0;
}
while(Serial.available()>0) Serial.read();
}

if(incomingByte == 104) // h
{

motor.run(FORWARD);

if (h == 0){
motor.setSpeed(255);
h = 1;
}
else {
motor.setSpeed(0);
h = 0;
}
while(Serial.available()>0) Serial.read();
}

if(incomingByte == 108) // l
{
if (ledflag == 1) {
digitalWrite(led, HIGH);
ledflag = 0;
}
else {
digitalWrite(led, LOW);
ledflag = 1;
}
}

}

}

Добавить комментарий