Технический форум по робототехнике.
elmot » 06 ноя 2014, 15:37
увы.
в след заход наверное перепилю на cesium/
Попробуй найди себе google earth for linux, если найдется, то я вечером выдам kmz к нему, чтобы
alsav » 02 июн 2015, 23:39
Освежу немного тему...
Сделал похожий проект на cc1101 и stm8 по информации из этого топика, поэтому делюсь своими наработками.
Девайс - радионяня, в рабочем режиме через микрофон следит за уровнем шума и при превышении порога посылает тоновые сигналы в LPD диапазоне.
Пакетный режим победил следующим образом: по команде STX трансивер начинает передавать преамбулу (последовательность 01010101) пока в FIFO не появятся данные. Об этом сказано в п.15.2 даташита на чип. Т.е. процедура отправки сигнала выглядит примерно так:
void send_alrm(uint8_t len, uint8_t power)
- Код: Выделить всё • Развернуть
{
uint8_t i;
CC1101_SPITransfer(CC1101_PATABLE,power);
CC1101_SPITransfer(CC1101_STX,0x00);
for (i=0;i<len;i++)
delay(10000);
CC1101_SPITransfer(CC1101_SIDLE,0x00);
}
Конфиг инициализации модуля для 10 канала LPD:
- Код: Выделить всё • Развернуть
uint8_t config_cc1101_gfsk[]={
CC1101_IOCFG0, 0x06,
CC1101_FIFOTHR, 0x47,
CC1101_PKTLEN, 0x20,//packet length
CC1101_PKTCTRL0, 0x04,
CC1101_FSCTRL1, 0x06,
CC1101_FSCTRL0, 0x00,
CC1101_FREQ2, 0x10,
CC1101_FREQ1, 0xAA,
CC1101_FREQ0, (0x56+FREQ_CORR), //433.300 - lpd/10
CC1101_MDMCFG4, 0xf6,
CC1101_MDMCFG3, 0xE4,
CC1101_MDMCFG2, 0x13,
CC1101_MDMCFG1, 0x20,
CC1101_MDMCFG0, 0x00,
CC1101_DEVIATN, 0x10,
CC1101_MCSM0, 0x18,
CC1101_FOCCFG, 0x16,
CC1101_WORCTRL, 0xFB,
CC1101_FSCAL3, 0xE9,
CC1101_FSCAL2, 0x2A,
CC1101_FSCAL1, 0x00,
CC1101_FSCAL0, 0x1F,
CC1101_TEST2, 0x81,
CC1101_TEST1, 0x35,
CC1101_TEST0, 0x09,
};
FREQ_CORR инедивидуальна для каждого модуля и частоты. Можно вычислить опытным путем, например при помощи sdr свистка.
Alex_Jet » 23 дек 2015, 11:05
Добрый день, коллеги!
А кто-нибудь в CC1100 и подобных регистр RSSI читал? Что в реальности там есть? Возможно его использовать в качестве наведения бота на ЗУ?
У меня задача - в уличных условиях (максимальное расстояние 50 м) довести робота до базы (ЗУ и защита от непогоды). ИК пока не рассматриваю (большие расстояния, переотражения от забора и т.п.)
Madf » 23 дек 2015, 14:08
Alex_Jet писал(а):ИК пока не рассматриваю (большие расстояния, переотражения от забора и т.п.)
Солнцем элементарно забивается.
elmot » 23 дек 2015, 14:27
Alex_Jet писал(а):Добрый день, коллеги!
А кто-нибудь в CC1100 и подобных регистр RSSI читал? Что в реальности там есть? Возможно его использовать в качестве наведения бота на ЗУ?
У меня задача - в уличных условиях (максимальное расстояние 50 м) довести робота до базы (ЗУ и защита от непогоды). ИК пока не рассматриваю (большие расстояния, переотражения от забора и т.п.)
Да, у меня в пеленгаторе читает. Думаю в данном раскладе лучше блютуз + ИК(на подъезде).
Alex_Jet » 23 дек 2015, 15:32
ИК на подъезде понятно (кстати, мой китайский робот-пылесос пользуется всего лишь одним TSOP! - как это реализовано???). А про Bluetooth можно чуточку поподробнее - есть с SPI (I2C), через который также можно читать регистры состояния соединения? Как всегда ищу простое и дешевое решение (например, как NRF24L01), хотя модули Bluetooth V4.0 сейчас тоже копеешные (UART-Bluetooth СС2541 в корзине на Ali лежит за 389).
Кстати, почему именно Bluetooth, а не та же CC1100, у которой можно RSSI читать? Думал сделать направленную антенну и вертеть шасси робота пока максимальную амплитуду сигнала не выловлю. Выловил, поехал, сигнал снова ушел - снова выловил и поехал и т.д.
Angel71 » 23 дек 2015, 16:08
у 24 точность будет примерно такая же, как и у 1100. но там немного по другому вычисляется, бо rssi`ем даже не пахнет. +это если именно расстояние, а не ваш вариант "вижу/не вижу". есть и у других контор недорогие трансиверы, только кроме трансиверов с rssi есть с поддержкой измерения расстояния. допустим у атмела в rf серии минимум один чип поддерживал. но модуль вряд ли достанете, скорей всего плату делать нужно будет.
cc2541 как бы ни разу не уарт-блюпуп. это блюпуп смарт трансивер + мк с 8051 ядром, что в прошивке накодите, тем и будет. nrf51822 на арме и шьётся недорогим клоном j-link v8. а вот 8051 хз чем недорогим (не фирменными железками) - чипов я то взял, но пока до их ковыряния не добрался.
elmot » 23 дек 2015, 19:12
Alex_Jet писал(а):Кстати, почему именно Bluetooth, а не та же CC1100, у которой можно RSSI читать?
1) Грубая геолокация по RSSI вляется частью спеки БТ4, не надо лишний раз по граблям рассекать.
2) На 433МГц переотражений на порядок больше.
3) БТ антенны в 7 раз меньше.
Alex_Jet » 24 дек 2015, 09:10
elmot,спасибо за разъяснения. В этой части у меня опыта совсем нет. Что можете порекомендовать в части модулей БТ? И самое главное - какой принцип "наведения" бота на радиомаяк? Может быть есть готовые решения, которые я могу портировать под AVR?
elmot » 24 дек 2015, 11:36
К сожалению, у меня опыт ограничивается возней с 1101, и несколькими экспериментами с разными бт2 и бт4. bt2 - перешивка hc-06(немного совсем), смартфоны на андроиде.
bt4 - умеренно удачные эксперименты с nrf51822, stm овский модуль X-NUCLEO-IDB04A1(кстати, он должен надеваться на ардуино) и опять-таки смартфоны. Смартфон, кстати, хорошая платформа для "поиграться" - там неплохое и в целом малоглючное API, относительно простая среда разработки, да и смартфоны у каждого первого сейчас.
Ничего из попробованного мною я посоветовать не могу, т.к. любой из вариантов обозначает море возни. И да, уходите вы со своих АВР. Если всерьез браться за эту задачу, очень быстро окажетесь в ситуации дифицита ресурсов, т.к. понадобятся умственные алгоритмы, а мозгов у авр - с гулькин фиг.
И самое главное - какой принцип "наведения" бота на радиомаяк?
Ну принцип-то обозначен верно. Ненаправленная антенна на маяке, направленная на приемнике. пеленгуем, едем на максимум сигнала. Можно даже усложнить - ставим два маяка, едем на максимум сигнала от слабейшего из них. В этом случае робот сам постарается заехать в некую относительно предсказуемую зону между маяками.
Добавлено спустя 11 минут 26 секунд:Alex_Jet писал(а):(кстати, мой китайский робот-пылесос пользуется всего лишь одним TSOP! - как это реализовано???).
Илиминтарно, Ватсон. У моей румбы-600 тоже 1 приемник. Все дело в волшебном маяке. В нем 2 передающих диода, у каждого свой сектор "вещания". Причем чуть-чуть перекрывающийся. Каждый из диодов передает свою кодовую посылку. Если работ принимает посылки только от правого - значит он справа от базы, если только левого, то слева. Если оба - значит он в створе для заезда. Робот катается по спирали, пока не доедет до этого створа, далее он старается в нем держаться, и с ненулевой и положжительной вероятностью прибывает на базу с определенного направления.
Alex_Jet » 24 дек 2015, 14:30
elmot писал(а):К сожалению, у меня опыт ограничивается возней с 1101, и несколькими экспериментами с разными бт2 и бт4.
Раз принцип наведения на максимум радиосигнала я изложил верно, то у меня резонный вопрос - откуда в БТ трансиверах брать информацию о мощности радиосигнала?
elmot писал(а):И да, уходите вы со своих АВР. Если всерьез браться за эту задачу, очень быстро окажетесь в ситуации дифицита ресурсов, т.к. понадобятся умственные алгоритмы, а мозгов у авр - с гулькин фиг.
Вероятно в каком-нибудь следующем проекте перейду на STM (чувствую, как аппетит растет). На данный момент считаю что ATmega2560 с нормальным кодом потянет мои задачи.
elmot писал(а):Илиминтарно, Ватсон. У моей румбы-600 тоже 1 приемник. Все дело в волшебном маяке. В нем 2 передающих диода, у каждого свой сектор "вещания". Причем чуть-чуть перекрывающийся. Каждый из диодов передает свою кодовую посылку. Если работ принимает посылки только от правого - значит он справа от базы, если только левого, то слева. Если оба - значит он в створе для заезда. Робот катается по спирали, пока не доедет до этого створа, далее он старается в нем держаться, и с ненулевой и положительной вероятностью прибывает на базу с определенного направления.
Получается что тут усложняется маяк, правда на роботе не нужно 2 TSOP и физические перегородки между ними.
elmot » 24 дек 2015, 20:01
Alex_Jet писал(а):Раз принцип наведения на максимум радиосигнала я изложил верно, то у меня резонный вопрос - откуда в БТ трансиверах брать информацию о мощности радиосигнала?
Откуда-откуда.... Доку читать на каждый конкретный модуль.
Вот, в андроиде например
http://developer.android.com/reference/ ... EXTRA_RSSIAlex_Jet писал(а): На данный момент считаю что ATmega2560 с нормальным кодом потянет мои задачи.
Скорее всего да, но в отладочном железе лучше иметь запас.
Alex_Jet » 25 дек 2015, 11:20
Доки, доками - понятно. А вот покупка CC1100 или 2510 - тот еще экшн. Камни есть, board - нет, либо задорого! Считаю 600 р (на Ali) для таких модулей дорого! Лучше уж у NRF24L01 анализировать количество потерянных пакетов! А кто-нибудь esp8266 для целей радиомаяка использовал?
Angel71 » 25 дек 2015, 11:41
1100 стоят 200-250руб. 2510 банально непопулярны со всеми вытекающими. для данной задачи брать 2510, 51822, 24l01 и прочие подобные, без pa/lna каг бэ слегка...

не, возьмите конечно, будет интересно посмотреть на ваши потуги.
Alex_Jet » 28 дек 2015, 16:02
В том то и дело, что мне потуги не нужны (просто нет времени заниматься бесперспективными вещами). Думал что на данном форуме люди подобные вещи уже строили и дадут исчерпывающую информацию или хотя бы нужное направление - типа "вот есть такое решение, лучше такого и такого, но код на ассемблере/не могу дать/коммерческая тайна/прочее, но делать надо по такому алгоритму". Поскольку даташиты читать умею, алгоритмы придумывать умею, кодить тоже, а вот с элементной базой для данного применения не знаком. Случайно в каком-то проекте увидел применение CC1101, у которой в даташите вычитал про RSSI - оттуда и попал в данную тему. На Ali нашел CC1101 (с разъемом под антенну и самой антенной) - за 2 шт. 952 р на данный момент. Считаю дорого для моего применения (радиомаяк+выявление направления движения)... да и как сказали, лучше 2,4ГГц чтобы меньше переотражений было.