Вериги

Как да изградим интернет контролиран Марс Rover: 4 стъпки (със снимки)

Приколы с кошками и котами

Приколы с кошками и котами

Съдържание:

Anonim

Тази инструкция ще обясни всичко, което трябва да знаете, за да изградите интернет робот, контролиран от всички терени. Това се случва просто да бъде моделирано на марсохода на Mars Curiosity. Този робот може да се управлява от всяко устройство с интернет, така че можете да контролирате това нещо от другата страна на планетата (или Марс, само ако имаше интернет). Този проект се захранва от удивителното Electric Imp (устройство с размер на SD карта, което ви позволява да свържете всичко към интернет) и Arduino.
Този проект е създаден от Майкъл Шортер, Том Меткалф, Джон Роджърс и Али Напиер в продуктовото изследователско студио Дънди.

Какво ви е необходимо:
6WD Wild Thumper Arduino Шаси - http://robosavvy.com/store/product_info.php/products_id/1167?osCsid=5e99bbe12a25938cbf4267ea6bc497ea
Контролер на Arduino - http://robosavvy.com/store/product_info.php/products_id/1168
LiPo батерия - 7.2V 5000mah
Акрил 3мм
Акрил 5мм
10 cm диаметър изпускателна тръба
Тръба с диаметър 35 мм
алуминиеви пръчки
Electric Imp
Електрически борд за пробиване на имп
Някои джъмперни кабели
Скейтборд захващаща лента

градина:

Стъпка 1: Изграждане на Rover

Прикачени са файловете на Adobe Illustrator, които ви позволяват да изрязвате всички части, от които се нуждаете. Общо има три файла. Един файл за всички дебелини с дебелина 3 мм, един за дебелината на детайлите от 5 мм и една за частите на лентата за захващане.
Надяваме се, че снимките по-долу дават добра представа как да залепите новото шаси за вашия Wild Thumper 6WD заедно.
Окабеляването на Electric Imp към Arduino е лесно:
Imp pin 1 - Плъзгач Arduino 10
Imp pin 2 - Плъзгач Arduino 9
Имп пин 8 - Arduino щифт 12
Имп пин 9 - щифт Arduino 2
Електрическият Imp също ще трябва или 5V или 3.3V в зависимост от вашия пробив борда, както и земята.
Реших да направя кабел в превключвател в съответствие с батерията, за да го улеснявам да включвам и изключвам.

Стъпка 2: Уеб страна на нещата

Ето някои кодове за вас….
Катерица за имп (адаптирана от онлайн източник, който вече не мога да намеря…):
================================================
server.show ( "");
// дистанционно управление на ровера
ledState <- 0;
функция мига ()
{
// Промяна на състоянието
ledState = ledState? 0: 1;
server.log (“ledState val:“ + ledState);
// Отразява състоянието на пина
hardware.pin9.write (ledState);
}
// входен клас за LED контролен канал
class inputHTTP разширява InputPort
{
име = "контрол на мощността"
type = “number”
набор от функции (httpVal)
{
server.log (“Получено вал:“ + httpVal);
ако (httpVal == 1) {
hardware.pin9.write (1);
imp.sleep (0.1);
hardware.pin9.write (0);
}
иначе ако (httpVal == 2) {
hardware.pin8.write (1);
imp.sleep (0.1);
hardware.pin8.write (0);
}
иначе ако (httpVal == 3) {
hardware.pin2.write (1);
imp.sleep (0.1);
hardware.pin2.write (0);
}
иначе ако (httpVal == 4) {
hardware.pin1.write (1);
imp.sleep (0.1);
hardware.pin1.write (0);
}
друг {
;
}
}
}
функция watchdog () {
imp.wakeup (60, пазител);
server.log (httpVal);
}
// стартира наблюдател на всеки 60 секунди
// пазител ();
// Конфигуриране на щифтовете като отворен изход за източване с вътрешно издърпване
hardware.pin9.configure (DIGITAL_OUT_OD_PULLUP);
hardware.pin8.configure (DIGITAL_OUT_OD_PULLUP);
hardware.pin2.configure (DIGITAL_OUT_OD_PULLUP);
hardware.pin1.configure (DIGITAL_OUT_OD_PULLUP);
// Регистрирайте се на сървъра
imp.configure (“Контрол на повторно пускане за Rover”, inputHTTP (), );
================================================


Код Arduino (благодаря на Крис Мартин!) …
================================================
/*
AnalogReadSerial
Чете аналогов вход на пин 0, отпечатва резултата на серийния монитор.
Прикрепете централния щифт на потенциометъра към щифт A0, а външните щифтове на + 5V и заземете.
Този примерен код е обществено достояние.
*/
int pinf = 2;
int pinl = 12;
int pinr = 10;
int pinb = 9;
#define LmotorA 3 // Ляв мотор H мост, вход A
#define LmotorB 11 // Ляв мотор H мост, вход B
#define RmotorA 5 // Прав мотор H мост, вход A
#define RmotorB 6 // Прав мотор H мост, вход B
#define v 255
#include
// Серво myservo;
// int led = 12;
int pos = 0;
// процедурата за настройка се изпълнява веднъж при натискане на reset:
void setup () {
//myservo.attach(9);
// pinMode (led, OUTPUT);
pinMode (pinf, INPUT); // инициализира серийната комуникация при 9600 бита в секунда:
pinMode (pinl, INPUT);
pinMode (pinr, INPUT);
pinMode (pinb, INPUT);
Serial.begin (9600);
digitalWrite (pinf, LOW);
digitalWrite (pinl, LOW);
digitalWrite (pinr, LOW);
digitalWrite (pinb, LOW);
//288000
// това е различно за серийния монитор, който не е сигурен дали е нагоре или надолу
// Serial.begin (14400);
}
int lls = 0;
int rls = 0;
int al = 0;
// рутинната процедура се изпълнява отново и отново завинаги:
void loop () {
// прочете входния сигнал на аналоговия пин 0:
int sensorValue1 = digitalRead (pinf);
int sensorValue2 = digitalRead (pinl);
int sensorValue3 = digitalRead (pinr);
int sensorValue4 = digitalRead (pinb);
// отпечатваме стойността, която четете:
Serial.print (sensorValue1);
Serial.print (”:“);
Serial.print (sensorValue2);
Serial.print (”:“);
Serial.print (sensorValue3);
Serial.print (”:“);
Serial.println (sensorValue4);
забавяне (25); // забавяне между показанията за стабилност
ако (sensorValue1 == 1) {
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 120);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 120);
забавяне (500);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// забавяне (500);
}
друг {
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
ако (sensorValue2 == 1) {
// digitalWrite (LED, HIGH);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 250);
analogWrite (LmotorA, 250);
analogWrite (LmotorB, 0);
забавяне (100);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// забавяне (500);
}
още
{
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
ако (sensorValue4 == 1) {
// digitalWrite (LED, HIGH);
analogWrite (RmotorA, 250);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 250);
забавяне (100);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// забавяне (500);
}
още
{
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
ако (sensorValue3 == 1) {
// digitalWrite (LED, HIGH);
analogWrite (RmotorA, 120);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 120);
analogWrite (LmotorB, 0);
забавяне (500);
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
// myservo.write (10);
// забавяне (500);
}
още
{
analogWrite (RmotorA, 0);
analogWrite (RmotorB, 0);
analogWrite (LmotorA, 0);
analogWrite (LmotorB, 0);
}
}
================================================

Сега за потребителския интерфейс. Разархивирайте прикачената папка; целият код трябва да е там. Всичко, което трябва да направите, е да поставите в уникалния си Electric Imp API в index.html файла в съответното пространство. Означих това в рамките на файла.

Стъпка 3: Нека дадем някои визуализации

Реших да поставя стария iPhone в главното устройство, показвайки кадри от Марс. Това може да е всичко, дори видеокамера, така че можете да видите къде шофирате чрез Skype или Facetime …

Стъпка 4: Нека се върнем!

Ето едно бързо видео на The Mini Mars Rover, излизащо на събитието на НАСА на SWSW 2013!

SXSW rover от Майкъл по-кратък на Vimeo.

Голямото нещо в този проект е, че е лесно да промените кода, за да промените поведението или интерфейса на робота.
Наслади се!
М

Финалист в
Конкурс за дистанционно управление