Ми будуємо робот з управлінням Wifi, камерою, гарматою тощо.





Хай, кожен. Я мав незаперечне бажання поділитися своїм досягненням зі світом. Досягнення є баком, який веде через WiFi з gamepad, віщає відео до пульта дистанційного керування в режимі реального часу, передає звук з пульта дистанційного керування і до пульта дистанційного керування, а також має гармату з лазерним прицілом, з якого ви можете стріляти на когось.

Ця пошта буде першим тестом, щоб побачити, чи хтось інший зацікавлений в цьому. Описується загальна структура, технології та пристрої, що використовуються.

ОНОВЛЕННЯ: додано відео.


По-перше, трохи відео, щоб привернути увагу. Звук походить від стовпа бака.


Як це все починається?
Довгий час тому, у мене була мрія, щоб зробити роботу на відстеженому шасі, який може бути віддалено відстежений. Головною проблемою стала відсутність прямо відстеженого шасі. В кінці я вже вирішив купити радіокерований танк для розбирання, але я пощастило, в магазині серед ярусів був резервуар Snow Leopard (Pershing) - США M26 з печаткою електроніки, але повністю керована механічна частина. Що було саме те, що потрібно.



За допомогою двох сервоприводів, веб-камери з апаратним забезпеченням для mjpeg та зовнішньої картки TP-LINK TL-WN7200ND. Трохи пізніше портативний динамік, USB звук Creative SoundBlaster Play і простий мікрофон були додані в список пристроїв, а також пара USB-хабів для підключення все це до модуля управління, який став Raspberry Pi. Вежа з резервуара була демонтована, вона була дуже незручною для її зберігання, так як всі регулярні механіки були побудовані на звичайних двигунах без зворотного зв'язку.

фотографії були зроблені, коли танк був майже готовий, не в процесі виробництва.

Їжа та проводка
Р

Я набив найбільшу батарею Li-Po в затоці акумулятора. Виявилося, що двоканальний акумулятор 3300 мАг в твердому корпусі, який зазвичай використовується в моделях автомобілів. Для всіх комутаторів використовується стандартна дошка для макетів з 2,54. Пізніше другий з'явився на верхній кришці і сані, які з'єднують їх. Для кожного з двох двигунів я мав власний регулятор напруги, який у вигляді бонусу дає стабілізовані джерела живлення близько 5,6 вольт. З одного регулятора була встановлена малина і Wi-Fi карта, живлення з другого ходу до сервоприводів і USB hub з периферією.

Ми повинні зробити його переміщенням.
Я повинен бути так. Малина не була обрана шансом. По-перше, це дозволяє покласти нормальну повноцінну лінію, а по-друге, вона має пучок ніг GPIO, які також можуть генерувати пульсовий сигнал для сервоприводів і регуляторів інсульту. Цей сигнал може бути створений за допомогою утиліти ServoBlaster. Після запуску, він створює /dev/servoblaster файл, в який можна писати щось, як 0=150, де 0 є номером каналу і 150 - довжина імпульсу в десятках мікросекундів, тобто 150 - 1,5 мілісекунди (найбільш сервоприводи мають діапазон 700-2300 мс).
Отже, з'єднайте регулятори до 7 і 11 штифтів GPIO і запустіть команду servoblaster:

# servod --min=70 --max=230 --p1pins=7.11 Нов, якщо ви пишете 0=230 і 1=230 в /dev/servoblaster, резервуар буде розірватися вперед.

Поставте камеру на.
Повернувшись назад і вперед був прохолодним, але я хотів зробити це принаймні в наступному приміщенні, і ідеально навіть через Інтернет, так що ми повинні встановити відео в режимі реального часу. У інтернеті був простий проект крихітного Проект є послугою, яка керована за допомогою HTTP, може приймати скріншоти та змінити налаштування камери. Не товстий, але нічого краще я знайшов, тому мені довелося пам'ятати C і закінчити те, що автор не виконав, а саме, переклад потоку MJPEG через HTTP (до речі, як поділитися змінним джерелом з світом?). Тут важливо, що JPEG походить від самої камери, малиновий процесор для цього недостатньо. Я в кінцевому підсумку підключений до бака через сш, відкрив відео потік через браузер, поїхав навколо будинку і був щасливий до виходу каналу. Дуже весело виглядати на замороженому каркасі, а потім отримати все застрягти в прискореному режимі. Потокове відео в режимі реального часу через TCP злий.

Оновлення, вдосконалення та ін.
Після цього був довгий процес написання сервера і клієнтської частини в Python за допомогою бібліотеки pygame, щоб отримати події з ігрової панелі, робити крихітнікамери так, щоб він відправив відео потік над UDP і установивши камеру на штаті сервоприводів так, щоб він міг виглядати. Після того, як танк відправився в першу поїздку через офіс за межами міста. А в той момент я зрозумів, що я хотів не тільки дивитися відео, але і мати двосторонній аудіоканал, наприклад, попросити колег, щоб відкрити двері або викликати ліфт.

Звук.
Для відтворення звуку використовується дешева кишеня USB динаміка, придбана в супермаркеті для просування. За допомогою мікрофона з'єднано простий. Щоб працювати з звуком, бібліотека pyalsaaudio була корисною. Після завершення сервера і клієнта стало можливим говорити і прослухати в процесі виявлення ємності.

Світло
Наступною особливістю стала фара. На деякий момент стало зрозуміло, що чутливість камери може легко бути відсутнім, і є можливість приводити в темряву і не залишити. Перша ідея була інфрачервоним освітленням. Збірна лінія інфрачервоних світлодіодів, але, як показує практика, сенс їх нульовий. Вони сяють дуже погано і трохи. І готові інфрачервоні прожектори вимагають 12 в потужності (і у мене є тільки 2 банки, тобто 8 в максимумі), багато струмових, сипучих і дорогих. В результаті було прийнято рішення перейти до видимого діапазону, придбано два потужні світлодіоди та лінзи SMD. Для живлення фари, колеги на роботі створили водій з поточним регулюванням, який був перетворений через польовий транзистор шляхом подачі агрегату до ноги GPIO малини. Темні номери більше не перешкоди.

Батарея, точно, його рівень заряду.
На всіх стадіях не зніміть, скільки ви можете їздити без вбивки акумулятора (Li-Po не можна розряджати нижче 3,3 в банці). Я не знайшов спосіб вимірювати напругу за допомогою GPIO ніг Малина, так як метр покласти Arduino Nano, який в майбутньому відразу підключений РК-екран з адаптером I2C. Батарея підключена через півдизора до аналогової ноги Ардуїно, після чого залишається тільки для калібрування читання. Arduino традиційно спілкується з основним модулем через COM порт, який Raspberry також відображається на ніжках GPIO.

Який танк без зброї?
Одна з останніх частин танка була гарматою. У магазині радіокерованих моделей у вигляді запчастин. Призначений для іншої моделі резервуара, але його сутність не змінилася. Пневматичний пістолет, має двигун, який збиває поршневі пружини, і контакт, який закривається при пожежі. З горизонтального повороту гармати я так не відмовився, щоб не відірвати весь комплект тіла, який кріпиться до верхнього чохла, а для вертикального використовується потужний сервопривід. Для того, щоб зробити його простіше стікеру, я зробив гармату поворотним синхронним з камерою поворотом. Куди ми дивимося (вертикально), знімаємо. Щоб прицілитися на бочки зброї був ранний лазерний світлодіодний тостер. Для того, щоб не витрачати акумулятор і не на блискавку лазера, де не потрібно, необхідно було зробити пістолет вимкнений. Процес зйомки також не дуже простий. Необхідно включити потужність двигуна і чекати закриття контакту, після чого відключається двигун. В результаті управління пострілом і потужністю серви і лазером було вішати на arduin, і сигнал для серви генерується малиновим. Для двигуна гармати також довелося проводити окрему електропроводку і перетворювати її на поступово, використовуючи PWM, так як в іншому випадку прибуває силовий джем, а Ардуїно переходить в перезавантаження. Для постачання оболонок, тобто кульок, TicTac dragee box з отвором в нижній частині використовувався.

Вистачить вперше. Якщо вам подобається стаття, я буду писати деталі в наступних стовпчиках. А ще кілька фото для останнього, а також свіжознімного відео. Тим не менш, якість була не дуже хорошою, тому я апологую до анестетів заздалегідь.













Джерело: habrahabr.ru/post/244407/