PDA

Просмотр полной версии : какие будут советы по проекту?


gold-goblin
16.02.2009, 23:44
Мы решили с другом создать простейшего робота :D на основе ноутука.
В принципе решили что управление будет происходить через ком порт, в связи с чем и появилось пару вопросов:
1) На ноутбуке нет ком порта из-за чего и было принято купить переходник usb -> com Но какой лучше? как он определится в системе? есть ли в них защита от КЗ, встречного питания и так далее? Понимаю что это все можно найти в интернете, но блин там нет точного ответа (все пишут свое)

2) Может кто пытался уже собирать робота на основе компьютера, с какими проблемами можно сталкнуться?

Да планируется что робот будет ориентироваться по дальномеру установленому на серво приводе и проверять доступность пути =)

Модеры плиз не сносите тему я планирую (если вы не против) выкладывать сдесь результаты моей работы и задавать вопросы =)

mr.The
17.02.2009, 00:47
имхо для начала напиши софт. эмуляцию серво привода прикрутить элементарно. а потом уже купиш всё, что надо и будеш отлаживать на железе.
есть ли в них защита от КЗ, встречного питания и так далее
поидее должна быть. в любом случае её припаять несложно. хотя от кз незнаю.. её даже на юсб нет(по крайней мере на старом компе так и было)

gold-goblin
17.02.2009, 01:03
имхо для начала напиши софт.
Софт написать не проблема так как используется компьютер, в связи с чем можно использовать любой язык программирования.
поидее должна быть.
Вот тагже пишут на разных форумах и сайтах =)

-Денис-
17.02.2009, 09:06
По поводу защиты от кз однозначно ответа никто не даст, в магазах ведь везде различные переходники продают, различных производителей и соответственно в одних из них могут быть схемы защиты а в других нет!
Но в любом случае хуже не будет если поставить свою собственную защиту в виде самовостанавливающегося предохранителя на ток 0,5А. Но вот хватит ли такого тока для того чтобы привести в движение робота (все зависит от того как будет реализована механика, от того какой массы будет робот). Если 2,5Вт будет мало, тогда прийдется подключать внешнее питание.

mr.The
17.02.2009, 09:52
Софт написать не проблема так как используется компьютер, в связи с чем можно использовать любой язык программирования.
слабо на ActionScript?)

почему лучше сначала софт? даже если вы всё напишите и подключите отлажимать вы уже будите на готовой конструкции. и едущий на колёсиках ноут врезающийся в стену не есть гуд. поэтому сначала нужно сделать софтовый эмулятор робота, обходящего препятствия(камеру (или что вы там юзаете в роли дальномера) всё-таки нужно купить). а потом уже, когда вё вродебы будет работать - отлаживать на релдьной конструкции.

-Денис-
17.02.2009, 10:58
Сперва нужно написать софт хотябы по той простой причине, что во время его написания будут встречаться различные подводные камни, которые исправить в программе проще чем изменять в железе. Можно например при разработке железа не учесть какойнибудь датчик или ещё чего, в результате прийдется изменять железо. А во время написания программы можно некоторые такие камни увидеть и заранее их предусмотреть. Во вторых это не самый простой проект, и поэтому на его реализацию уйдет не мало времени, за которое вся охота может пройти.
Но всеже перед написанием программы следует разработать схему (но не собирать её в железе), для того чтобы писать программу именнно под конкретное железо, а не на обум. После того как будет закончена работа над первоначальным вариантом схемы можно будет приступить к написанию программы. По окончанию написания программы проводятся корректировки схемы и производится сборка в железе, затем уже на этом железе производиться отладка написанной программы.
По крайней мере я всегда при разработке какого либо устройства стараюсь делать это именно в таком порядке.

Animal
17.02.2009, 11:32
Какой дороже - тот и лучше. :) Хороший (с защитами и развязкой) выльется примерно тыщи в три русских рублей. Думаю, не стоит с этим заморачиваться. При нормальной прямоте рук и китайский преобразователь за 400 руб. спалить будет трудновато. Все равно придется еще RS-232 в UART преобразовывать... а там по килоомному резистору на Rx, Tx и все будет хорошо. Какой контроллер на роботе собираетесь использовать? Возможно, лучше преобразовывать в RS485 - потом будет проще переходить на wireless, да и выигрыш небольшой будет по потреблению тока. Еще вариант: сразу замахнуться на беспроводную передачу, взять например модуль bluetoosh с UART-ом на выходе и управлением AT-командами. Цена вопроса уже меньше двух тысяч рублей.
Все преобразователи являются CDC-классом USB устройств и определяются в системе как "железный" COM-порт. Можно, кстати, попробовать и какой-нибудь завалявшийся USB дата-кабель от телефона использовать (например на PL2303). Сам не пробовал, но помоему, вести он себя должен точно так же, как и преобразователь, но подключить можно будет прямо к контроллеру.
распиши по подробнее структуру проекта. Какие исполнительные механизмы на роботе, какие датчики. Ато мысль в одном из постов о ноутбуке на колесиках как-то улыбнула. :)

ICD2
17.02.2009, 14:41
pcports.ru отличной сайт для черпания информации о связки пк и девайсов

gold-goblin
17.02.2009, 15:43
По поводу защиты от кз однозначно ответа никто не даст
Смотрел в интернете и почти везде про 1 и тодже переходник разные данные, Ну ничего свояем свою защиту =)
поэтому сначала нужно сделать софтовый эмулятор робота
А не подскажешь в каком эмуляторе можно прикрутить дальномер и проверить его работу?

будут встречаться различные подводные камни, которые исправить в программе проще чем изменять в железе

Как я представляю принцип работы подводных камней в конствукции не должно быть так как система определения места положения будет основана всего на двух датчиках. Это дальномер и серво привод который будет крутить перед роботом дальномер, следовательно при любой кривой сборки все можно решить программно. (имхо)

программу именнно под конкретное железо, а не на обум

Это конечно, но сейчас еще выираем железо и принцип его взаимодействия.

Какой контроллер на роботе собираетесь использовать?
В роле контроллера будет выступать схема на основе AVR'a (точно сказать не могу так как контроллер будет собирать друг)

лучше преобразовывать в RS485 - потом будет проще переходить на wireless, да и выигрыш небольшой будет по потреблению тока. Еще вариант: сразу замахнуться на беспроводную передачу, взять например модуль bluetoosh с UART-ом на выходе и управлением AT-командами

Проект планируется как проводной так как в будущем полностью переедет в системный блок =)

Можно, кстати, попробовать и какой-нибудь завалявшийся USB дата-кабель от телефона использовать (например на PL2303)


Меня тоже это надоумило =) подойдет почти любой кабель от кпк под управлением palm os (ну надо будет еще почитать в нэте)

распиши по подробнее структуру проекта. Какие исполнительные механизмы на роботе, какие датчики. А то мысль в одном из постов о ноутбуке на колесиках как-то улыбнула.

на ноутбуке это дело будет отлаживаться а потом переедет полностью в системный блок компьютера =))
Робот будет передвигаться на гусиницах, что сделает возможным разворот на месте и меньше мароки с поворотным миханизмом, В роле датчика будет выступать дальномер (сейчас выбираем) и серво привод с возможностью отсчета от - к + (к примеру -45 +45) который будет вращать дальномер.

pcports.ru отличной сайт для черпания информации о связки пк и девайсов
Пойду почитаю

mr.The
17.02.2009, 17:18
А не подскажешь в каком эмуляторе можно прикрутить дальномер и проверить его работу?
поэтому сначала нужно сделать софтовый эмулятор робота, обходящего препятствия(камеру (или что вы там юзаете в роли дальномера) всё-таки нужно купить)
собственно вот) да и всегда в прогу можно передавать значения аналогичные дальномеру, а потом смотреть.

gold-goblin
17.02.2009, 17:19
собственно вот) да и всегда в прогу можно передавать значения аналогичные дальномеру, а потом смотреть.
я чет до этого не додумался =)

POS_troi
18.02.2009, 01:06
Но в любом случае хуже не будет если поставить свою собственную защиту в виде самовостанавливающегося предохранителя на ток 0,5А

как вариант можно впаять "Нулемник".

gold-goblin
18.02.2009, 01:20
как вариант можно впаять "Нулемник".

Не мы для горантии скорей всего будем использовать оптопару, чтоб в случае чего защетится и от встречного тока.
Прошивка (так сказать) будет написана на python и С

gold-goblin
19.02.2009, 23:11
Сейчас появилось пару свободных минут на работе и я решил написать что-то наподобе драйверов устройств робота.
Писал на питоне, но и написал комеинтарии чтоб было понятно большенству. (прогу не проверил на работе питона нету)

import threading
from Queue import Queue
l_x=Queue() #глобальные переменные потоков
r_x=Queue()
ygol=Queue()
maps{}=Queue()
rastojanie=Queue()
zaxod=Queue()
class motor_l(threading.Thread): #поток управления левого мотора
def napr_l(l_x):
if l_x == 1: #если от логики придет 1 или 2 или 3 выпоняем определенное действие
print 'krytim v pered'
elif l_x == 2:
print 'stoim na meste'
elif l_x == 3:
print 'edem nazad'
class motor_r(threading.Thread): #поток управления правого мотора
def napr_l(r_x):
if r_x == 1: #если от логики придет 1 или 2 или 3 выпоняем определенное действие
print 'krytim v pered'
elif r_x == 2:
print 'stoim na meste'
elif r_x == 3:
print 'edem nazad'
class serva(threading.Thread): # поток управления серво приводом
max_l = -45 #макс углы поворота сервы. указывать как углы сервы (если счет от нуля то и ставим ноль)
max_r = 45
while 1:
if zaxod % 2 == 0: #Проверяем в какую сторону двигать серву по количеству ее движения (по четности)
ygol = max_l + 1
if ygol = max_r:
zaxod = zaxod + 1
if zaxod % 2 > 0:
ygol = Max_r - 1
if ygol = max_l:
zaxod = zaxod + 1
class dalnomer(threading.Thread): #поток управления дальномером
while 1:
coordinata = coordinata + 1 #Считаем координату от начала движения сервы
if distanchija < 81: #Если мы видем препядсвие записываем 1
rastojanie[coordinata] = 1
elif distanchija > 81: #Если не видем препядствие записываем 0
rastojanie[coordinata] = 0
class logika(threading.Thread): #Сдесь будет логика



Пока нет логики но я ее допишу скоро =)
И тагже принимаются советы по прошивке