Схемы, программы, прошивки какие будут советы по проекту?

Discussion in 'Электроника и Фрикинг' started by gold-goblin, 16 Feb 2009.

  1. gold-goblin

    gold-goblin Elder - Старейшина

    Joined:
    26 Mar 2007
    Messages:
    917
    Likes Received:
    174
    Reputations:
    3
    Мы решили с другом создать простейшего робота :D на основе ноутука.
    В принципе решили что управление будет происходить через ком порт, в связи с чем и появилось пару вопросов:
    1) На ноутбуке нет ком порта из-за чего и было принято купить переходник usb -> com Но какой лучше? как он определится в системе? есть ли в них защита от КЗ, встречного питания и так далее? Понимаю что это все можно найти в интернете, но блин там нет точного ответа (все пишут свое)

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

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

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

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    имхо для начала напиши софт. эмуляцию серво привода прикрутить элементарно. а потом уже купиш всё, что надо и будеш отлаживать на железе.
    поидее должна быть. в любом случае её припаять несложно. хотя от кз незнаю.. её даже на юсб нет(по крайней мере на старом компе так и было)
     
    1 person likes this.
  3. gold-goblin

    gold-goblin Elder - Старейшина

    Joined:
    26 Mar 2007
    Messages:
    917
    Likes Received:
    174
    Reputations:
    3
    Софт написать не проблема так как используется компьютер, в связи с чем можно использовать любой язык программирования.
    Вот тагже пишут на разных форумах и сайтах =)
     
  4. -Денис-

    -Денис- Elder - Старейшина

    Joined:
    26 Aug 2008
    Messages:
    79
    Likes Received:
    13
    Reputations:
    0
    По поводу защиты от кз однозначно ответа никто не даст, в магазах ведь везде различные переходники продают, различных производителей и соответственно в одних из них могут быть схемы защиты а в других нет!
    Но в любом случае хуже не будет если поставить свою собственную защиту в виде самовостанавливающегося предохранителя на ток 0,5А. Но вот хватит ли такого тока для того чтобы привести в движение робота (все зависит от того как будет реализована механика, от того какой массы будет робот). Если 2,5Вт будет мало, тогда прийдется подключать внешнее питание.
     
  5. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    слабо на ActionScript?)

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

    -Денис- Elder - Старейшина

    Joined:
    26 Aug 2008
    Messages:
    79
    Likes Received:
    13
    Reputations:
    0
    Сперва нужно написать софт хотябы по той простой причине, что во время его написания будут встречаться различные подводные камни, которые исправить в программе проще чем изменять в железе. Можно например при разработке железа не учесть какойнибудь датчик или ещё чего, в результате прийдется изменять железо. А во время написания программы можно некоторые такие камни увидеть и заранее их предусмотреть. Во вторых это не самый простой проект, и поэтому на его реализацию уйдет не мало времени, за которое вся охота может пройти.
    Но всеже перед написанием программы следует разработать схему (но не собирать её в железе), для того чтобы писать программу именнно под конкретное железо, а не на обум. После того как будет закончена работа над первоначальным вариантом схемы можно будет приступить к написанию программы. По окончанию написания программы проводятся корректировки схемы и производится сборка в железе, затем уже на этом железе производиться отладка написанной программы.
    По крайней мере я всегда при разработке какого либо устройства стараюсь делать это именно в таком порядке.
     
  7. Animal

    Animal Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    221
    Likes Received:
    89
    Reputations:
    6
    Какой дороже - тот и лучше. :) Хороший (с защитами и развязкой) выльется примерно тыщи в три русских рублей. Думаю, не стоит с этим заморачиваться. При нормальной прямоте рук и китайский преобразователь за 400 руб. спалить будет трудновато. Все равно придется еще RS-232 в UART преобразовывать... а там по килоомному резистору на Rx, Tx и все будет хорошо. Какой контроллер на роботе собираетесь использовать? Возможно, лучше преобразовывать в RS485 - потом будет проще переходить на wireless, да и выигрыш небольшой будет по потреблению тока. Еще вариант: сразу замахнуться на беспроводную передачу, взять например модуль bluetoosh с UART-ом на выходе и управлением AT-командами. Цена вопроса уже меньше двух тысяч рублей.
    Все преобразователи являются CDC-классом USB устройств и определяются в системе как "железный" COM-порт. Можно, кстати, попробовать и какой-нибудь завалявшийся USB дата-кабель от телефона использовать (например на PL2303). Сам не пробовал, но помоему, вести он себя должен точно так же, как и преобразователь, но подключить можно будет прямо к контроллеру.
    распиши по подробнее структуру проекта. Какие исполнительные механизмы на роботе, какие датчики. Ато мысль в одном из постов о ноутбуке на колесиках как-то улыбнула. :)
     
  8. ICD2

    ICD2 Member

    Joined:
    28 Dec 2008
    Messages:
    26
    Likes Received:
    14
    Reputations:
    3
    pcports.ru отличной сайт для черпания информации о связки пк и девайсов
     
    1 person likes this.
  9. gold-goblin

    gold-goblin Elder - Старейшина

    Joined:
    26 Mar 2007
    Messages:
    917
    Likes Received:
    174
    Reputations:
    3
    Смотрел в интернете и почти везде про 1 и тодже переходник разные данные, Ну ничего свояем свою защиту =)
    А не подскажешь в каком эмуляторе можно прикрутить дальномер и проверить его работу?

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

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

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

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

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

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

    Пойду почитаю
     
  10. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    собственно вот) да и всегда в прогу можно передавать значения аналогичные дальномеру, а потом смотреть.
     
  11. gold-goblin

    gold-goblin Elder - Старейшина

    Joined:
    26 Mar 2007
    Messages:
    917
    Likes Received:
    174
    Reputations:
    3
    я чет до этого не додумался =)
     
    1 person likes this.
  12. POS_troi

    POS_troi Elder - Старейшина

    Joined:
    1 Dec 2006
    Messages:
    1,569
    Likes Received:
    466
    Reputations:
    108
    как вариант можно впаять "Нулемник".
     
  13. gold-goblin

    gold-goblin Elder - Старейшина

    Joined:
    26 Mar 2007
    Messages:
    917
    Likes Received:
    174
    Reputations:
    3
    Не мы для горантии скорей всего будем использовать оптопару, чтоб в случае чего защетится и от встречного тока.
    Прошивка (так сказать) будет написана на python и С
     
    1 person likes this.
  14. gold-goblin

    gold-goblin Elder - Старейшина

    Joined:
    26 Mar 2007
    Messages:
    917
    Likes Received:
    174
    Reputations:
    3
    Сейчас появилось пару свободных минут на работе и я решил написать что-то наподобе драйверов устройств робота.
    Писал на питоне, но и написал комеинтарии чтоб было понятно большенству. (прогу не проверил на работе питона нету)
    Code:
    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): #Сдесь будет логика
    	
    
    Пока нет логики но я ее допишу скоро =)
    И тагже принимаются советы по прошивке