Pull to refresh

Comments 49

Очень интересно. И впечатляет как детально вы описали разработку.

Вот вам еще пара ссылкок по теме на хабре, возможно найдете что-то полезное для улучшения своей платформы:

  • https://habr.com/ru/post/460925/ - ребята сделали целую онлайн-игру с дистанционным управлением моделями танков

Что бы избежать этого вы можете пользоваться различными способами хранения констант в Flash памяти, характерными для вашей платформы – например для Arduino это макрос F() или модификатор PROGMEM, а ESP по умолчанию переменные обозначенные как const хранит в Flash памяти.

А чем вас не устраивает объявление констант через #define.

И кстати ключевое слово const предназначается для компилятора (при компиляции он проверяет не изменяли ли вы переменную) на программу оно не имеет ни какого влияния.

Имеет. Компилятор по-умолчанию отправляет константы в .rodata, которую линкер для ESP по-умолчанию отправляет во Flash-память.

Const не определяет расположение переменной. То где буде находится переменная определяется местом её определения. Если переменная глобальная то она попадет в статическую область памяти, а если локальная то в стек.

Нет определяет. Что вы спорите, прореветь же быстрее, чем написать комментарий:

const int foo = 0xdeadbeaf;
int bar = 0xcafebabe;

Обе переменные глобальные, одного типа и по вашим словам должны оказаться в одном месте. Вся разница только в наличии const. Компилируем:

gcc -c const.c

Смотрим, что получилось:

objdump -s const.o
const.o:     file format elf64-x86-64

Contents of section .data:
 0000 bebafeca                             ....            
Contents of section .rodata:
 0000 afbeadde                             ....            
Contents of section .comment:
 0000 00474343 3a202844 65626961 6e203130  .GCC: (Debian 10
 0010 2e322e31 2d362920 31302e32 2e312032  .2.1-6) 10.2.1 2
 0020 30323130 31313000                    0210110.

С другими компиляторами история та же.

Const не определяет расположение переменной.

Действительно, не определяет, тут вы правы.

То где буде находится переменная определяется местом её определения. Если переменная глобальная то она попадет в статическую область памяти, а если локальная то в стек.

Тут вы правы от части.

Если говорить об обычных переменных, то не зависимо от того, где они объявлены, они в итоге попадают в ОЗУ (стек всегда располагается в ОЗУ, динамически выделяемая память тоже в ОЗУ, только в разных её областях).

Если же говорить о константах (переменных, объявленных с ключевым словом const), то где их расположить решает компилятор. Для встраиваемых систем вполне логично располагать переменные, помеченные const в FLASH памяти, потому что её, как правило, больше. В программах для настольных компьютеров константы попадают в ОЗУ, причем в область, программно помеченную "только для чтения". Так происходит потому что FLASH память в процессорах для настольных ПК отсутствует, а хранить константы где-нибудь на HDD/SSD приведет к катастрофическому снижению производительности.

Резюмируя, можно сказать, что все зависит от настроек компилятора, характеристик и назначения системы. Для описываемого автором случая все скорее всего так и работает.

Я стараюсь почти всегда использовать const или constexpr. Потому что в отличии от #define'ов c ними хорошо работает IDE то есть  понимает типы, области видимости и тому подобное. В условиях когда надо часто редактировать код и когда его много – это помогает не запутаться.

Класс! Хочется такое зделать для скоса травы на склонах у пруда (подъем до 45 град.). Но шасси изготавливать никокого жленания. Есть где купить за сносные денги (500-1000) евро? Может видел кто...

Тема умных газонокосилок — непаханное поле. То, что сейчас есть на рынке, это просто тихий ужас, особенно учитывая цену. При этом, практически все приборы, которые позиционируются как автономные газонокосилки, имеют на борту почти полный набор компонентов, используя которые можно сделать нормальное устройство, но почему-то никому пока это не удалось. Может, место проклятое… DJI вот удалось вытеснить все коптеровские самоделки в маржинальные ниши, а в области газонокосилок такой компании пока нет. Нашел тольк один проект, который пытается играть на этом поле: github.com/ClemensElflein/OpenMower — но у него дела пока ни шатко, ни валко…

Да, тема очень потенциальная. У меня бегает робот от Ambrogio, но он по ровному полю и с ограждающей проволкой. Есть потребность в относительно простом RC роботе, но чтобы ехал по склонам. У Husqvarna более менее есть, но цена кусается. А opensource проектов есть 2-3 приличных. Из брендов надежду подает вот это https://navimow.segway.com/ , цена около 1500 Euro, но пока очереди стоят за ним, трудно купить.

Да, говорим segway, подразумеваем overpriced… А что за «приличные» опенсорс проекты?

Ну это такие проекты, где что то уже практически можно употребить (не обязательно awesome :)). Например :

https://www.instructables.com/Lawnmower-Robot/
https://www.ardumower.de/en/home.html
https://www.kickstarter.com/projects/simplertk2b/simplertk2b-the-first-multiband-rtk-shield-based-o не совсем проект, но related :)
https://hackaday.io/project/72497-valify-v2-robot-lawnmower
https://www.open-electronics.org/a-robotic-lawn-mowers-powered-by-solar-energy-with-an-arduino-heart/
https://github.com/vasimv/OMower

Ну в таком духе.

Увы, это всё не очень сильно отличается (причём, увы, в худшую сторону) от того проекта, на который я ссылался в своем посте… Вроде valify V2 очень многообещающе выглядит, но совершенно непонятно, чем там на самом деле кончилось дело. После 2018 года его следы теряются :(
Ух ты! Ардуино, но при этом нормальные человеческие принципиальные схемы. Почему все так не делают?

Вместо второй схемы — был б-го-мерзкий Фритцинг. Пойду плюсану автора за труды.

Давно хотел сделать что-то вроде мелкого автономного марсохода на солнечной батарее и закинуть его куда-нибудь в степь в глуши, чтобы он там катался и передавал картинку и как можно больше телеметрии о состоянии окружающей среды. Типа своего ручного кьюриосити. Почему-то в процессе раздумий пришло осознание, из-за чего настоящий марсоход стоит 2 млрд.

Можно начать с автономной станции. Это же потрясающий челлендж и буст для развития мозга.

В конечном итоге мы приходим к метеостанции за окном.

Тоже мыслил о нечтом подобном. Но возникал вопрос - куда бы его закинуть? В лес? Солнца мало. В горы? Проехать будет сложно. В степь? Хорошо видно издалека, через день "уйдет своим ходом" в "добрые руки".
Пока что думаю начать с какого-нибудь зонда на дереве.

Классическая метеостанция на Arduino =). Вообще идея зонда хоть и заезженная, но там можно много чего интересного реализовать. Начиная от фильтрации, предсказания и организации передачи данных с датчиков до каких-то прикольных штук типа выдвижных пробников, сенсоров или антенн как у реальных межпланетных зондов. Система питания также может быть интересно сделана – разные виды аккумуляторов, солнечные панели или даже мини-генератор. На этом зонде можно хорошо потренироваться перед созданием чего-то большого и крутого.

Если у человека есть дача, то он вполне может реализовать марсоход, исследующий грядки с томатами и огурцами. А если он еще и будет их собирать, складируя для членов экспедиции посещения, то ему цены не будет.

В качестве RC линка можно взять ERLS. Приемники размером меньше монетки и есть прям с мини антенкой. По дальность по земле сложно сказать, но км точно будет. По видео тоже, просто обратите внимание на комплектующие под FPV квадрокоптеры

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

Хочу повторить простую модель четырехканального приёмопередатчика из книги Борисова, где управление оссуществлялось по звуковому каналу (почти как в корабле Инженеров, управляемом мелодией дудки :) На тёплых германиевых транзисторах, со здоровенными катушками фильтров :)

капец аж мурашки по спине от этих схем...

У меня когда эти схемы напомнили шикарные иллюстрации в советских технических книгах для детей. Например:

А ведь только сейчас заметил несоответствие размеров, хотя нарисовано кросивое. КЭ-2 на 30 мкф 450 В малость потолще, а дисковый конденсатор (КД?), который изображает щит, должен быть заметно меньше. Ножки Дон Кихота из КД503 тоже ни толщиной выводов, ни размерами собственно корпуса диода по-моему, не верны.

Да диод вроде Д9 по меньше был. А вот по дисковому конденсатору я бы оставил вероятность - не так давно на глаза попалась куча какого-то советского промышленного электронного хлама (релейная автоматика магистральной электроподстанции) - я никогда не видел таких деталей как там. Возможно мелкосерийное производство под конкретные изделия.

У него еще был светоуправляемый танк

Схема не стоит повторения, замучаетесь с фильтрами, а если что-то пойдет не так, то настроить без осциллографа её невозможно. Она рисовалась в те времена, когда ОУ и тем более микроконтроллер не просто было достать. Современная схема была бы сейчас такая: микрофон -> усилитель на ОУ -> АЦП -> микроконтроллер или одноплатник -> реле.

Тогдашние ОУ вроде 140УД1 та ещё дрянь были, и кушать хотели много.

микрофон -> усилитель на ОУ -> АЦП

Заменяется на цифровой микрофон с I2S. Дешевле, часто качественнее, не требует настройки аналоговой части, миниатюрнее, цифровой интерфейс менее подвержен помехам.

На броневом или кольцевом ферритовом сердечнике из 2000НМ не такие уж и большие эти катушки.

Вроде оно, спасибо за отличный сайт!

Спасибо за статью.
Лежит такой танк под будущие самоделки. Но один движок сдох и редуктор доверия не внушает.
Кто может посоветовать подходящие по цена/качество двигатели с редуктором или хотя бы в какую сторону смотреть?

Это почти роботизированный охранный комплекс получается...

Я подобным маялся лет восемь назад. Тоже статью на хабре запилил. Набросанные на планшете в транспорте схемы мне очень лень тогда было по-человечески оформить, поэтому перед вашим оформлением снимаю шляпу)

Ух-ты, я не видел вашу статью. На первый взгляд вкусный лонгрид, утащил в закладки. А насчет оформления я считаю главное – это проект, сделанный с душой, а судя по тому сколько вы там написали, это именной такой).

Там по сути проделана только половина вашей работы — до «полезной нагрузки». Но платформа получилась крайне шустрой. Особенно после всех этих игрушечных роботов) Колеса в будущем заменили на меканумы и с динамикой в поворотах вообще стало шикарно. Можно было даже сделать так, чтобы оно боком ездило — двигатели по одному борту нужно в разные стороны крутить.

Тем временем DJI тоже выпустили свой радиоуправляемый танчик с камерой

Если вы про этот, то да он прикольный. Мне нравиться что они там используют всенаправленные колеса, можно дрифтить на танке во всех возможных направлениях. Это прикольная штука для обучения, на нем есть базовый набор джентльмена робототехника: датчики, динамики, мигалки. Правда его стоимость в 10 раз дороже моего танка.

Да, я согласен, хороший танк обязан иметь пушку. На данный момент там из оружия только звуковое подавление – громкая пищалка. Но как только смогу я обязательно сделаю что-нибудь прикольное, что может наводиться и стрелять)

Это КШМ! Вон, большущая антенна торчит.

Sign up to leave a comment.

Articles