После посадки в лесу по командам диспетчеров без VFR, я подумал, что было бы неплохо иметь камеру специально для посадки, направленную вниз. У меня как раз есть 1-3 г. камера, и я решил поставить ее на мини-коптер и потренироваться.
Очевидную идею с сервой я проигнорировал, поскольку: а) серва тяжелая (у меня есть только 4г.), б) она дрожит, может сгореть и обесточить борт, может заклинить; в) провод от камеры ломается от перегибов с) не люблю момент когда камера опускается и картинка проносится по экрану 😁.
Понадобился легкий видео-переключатель для двух камер и я его сделал на 74HC4052N. Кто-то посоветовал эту микруху мне когда-то, спасибо ему 😒. В качестве управляющего сигнала я запрограммировал сигнал LEDMAX с платы MultiWii 2.1. Слава open-source, можно легко и просто добавлять функции. Сделано так - на передатчике 7 канал подключен к тумблеру, а в MultiWii 7 канал с приемника - к D8 (#define RCAUXPIN8) как AUX2 (AUX1 у меня для переключения режимов полета и включения прожектора).
Схема
Изделие
Камера
Изменение в программе
Кусочки оригинального MultiWii кода приведены чтобы показать место вставки изменений.
config.h
// AP; START; Camera switch at BOXLEDMAX;
#define CAMERA_SWITCH_PIN A1 // Pin to turn the camera switch on/off;
// AP; END; Camera switch at BOXLEDMAX;
MultiWii_2_1.ino
void setup() {
...
POWERPIN_OFF;
// AP; START; Camera switch at BOXLEDMAX;
#ifdef CAMERA_SWITCH_PIN
pinMode(CAMERA_SWITCH_PIN, OUTPUT); // Pin to turn the camera switch on/off;
digitalWrite(CAMERA_SWITCH_PIN, LOW); // Turn it off;
#endif
// AP; END; Camera switch at BOXLEDMAX;
...
#ifdef LANDING_LIGHTS_DDR
auto_switch_landing_lights();
#endif
// AP; START; Camera switch at BOXLEDMAX;
#ifdef CAMERA_SWITCH_PIN
digitalWrite(CAMERA_SWITCH_PIN, rcOptions[BOXLEDMAX]); // Turn the camera switch on/off;
#endif
// AP; END; Camera switch at BOXLEDMAX;
break;
...
Все работает, все переключается как надо. Понадобилось правда подкрутить усиление сигнала на видео-сплитере на наземной станции - видимо микросхема его чуть-чуть ослабляет. Но поскольку камера у меня с узким углом зрения, садиться по ней невозможно 😃 Надо менять объектив. Если у кого есть лишний объектив на 1-3 г. камеру - я готов обсудить приобретение😃
Если надо сделать такой свитч для 3-х камер - надо задействовать вход S1 в дополнение к S0, и подключить его к свободному выходу платы, например, A2. Вообще микросхема может переключать до 4-х камер и имеет 2 параллельных канала с общей адресацией. Можно было бы задействовать и второй канал, например под фару - передавать управляющий сигнал фаре, подсвечивающей текущей камере. Но для двух камер для этого можно брать исходный сигнал с платы…
Еще я думал объединить два канала параллельно, чтобы уменьшить сопротивление канала в два раза - сейчас там 80 Ом, было бы 40. Но во-первых, и так работает (после регулировки усиления на наземной станции), а во-вторых, я опасался race conditions, когда один канал включится чуть быстрее чем другой, и выход одной камеры окажется соединенным с выходом другой - кто знает, как им это понравится.
…а ещё наверное можно дописать чтобы когда коптер видит на небольшой высоте и начинает снижение камера сама переключалась, чтобы не занимать канал
Ага,пролетаешь низко над землёй и видишь мелькающий зелёный ковер…И кувыркание земля-небо после…
Ага,пролетаешь низко над землёй и видишь мелькающий зелёный ковер…И кувыркание земля-небо после…
так и написал же чтобы только при зависании активировалось , или даже по таймеру после висения несколько сек и начале снижения
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"41b8a4ac3df9550077792e83":{"_id":"41b8a4ac3df9550077792e83","hid":5271,"name":"Prikupets","nick":"Prikupets","avatar_id":null,"css":""},"4de206713df9550077751f39":{"_id":"4de206713df9550077751f39","hid":89351,"name":"Dikorass","nick":"Dikorass","avatar_id":null,"css":""},"5144bc7d3df9550077738bc6":{"_id":"5144bc7d3df9550077738bc6","hid":142658,"name":"P_L_Z","nick":"P_L_Z","avatar_id":null,"css":""}},"settings":{"blogs_can_create":false,"blogs_mod_can_delete":false,"blogs_mod_can_hard_delete":false,"blogs_mod_can_add_infractions":false,"can_report_abuse":false,"can_vote":false,"can_see_ip":false,"blogs_edit_comments_max_time":30,"blogs_show_ignored":false,"blogs_reply_old_comment_threshold":30,"votes_add_max_time":168},"entry":{"_id":"51cf6b36997073007710c4f5","hid":17127,"title":"\"Кухонный\" переключатель на две камеры для MultiWii","html":"<p>После посадки в лесу по командам диспетчеров без VFR, я подумал, что было бы неплохо иметь камеру специально для посадки, направленную вниз. У меня как раз есть 1-3 г. камера, и я решил поставить ее на мини-коптер и потренироваться.</p>\n<p><strong data-nd-pair-src=\"**\">Очевидную</strong> идею с сервой я проигнорировал, поскольку: а) серва тяжелая (у меня есть только 4г.), б) она дрожит, может сгореть и обесточить борт, может заклинить; в) провод от камеры ломается от перегибов с) не люблю момент когда камера опускается и картинка проносится по экрану <span class=\"emoji emoji-grin\" data-nd-emoji-src=\":grin:\">😁</span>.</p>\n<!--cut-->\n<p>Понадобился легкий <strong data-nd-pair-src=\"**\">видео-переключатель</strong> для двух камер и я его сделал на 74HC4052N. Кто-то посоветовал эту микруху мне когда-то, спасибо ему <span class=\"emoji emoji-unamused\" data-nd-emoji-src=\":unamused:\">😒</span>. В качестве управляющего сигнала я запрограммировал сигнал LEDMAX с платы MultiWii 2.1. Слава open-source, можно легко и просто добавлять функции. Сделано так - на передатчике 7 канал подключен к тумблеру, а в MultiWii 7 канал с приемника - к D8 (#define RCAUXPIN8) как AUX2 (AUX1 у меня для переключения режимов полета и включения прожектора).</p>\n<p><strong data-nd-pair-src=\"**\">Схема</strong><br>\n<a href=\"http://fotki.yandex.ru/users/prikupets/view/1227329/\" class=\"link link-ext\" data-nd-link-orig=\"http://fotki.yandex.ru/users/prikupets/view/1227329/\" target=\"_blank\" rel=\"nofollow noopener\"><span class=\"image\" style=\"width: 500px\" data-nd-image-orig=\"https://img-fotki.yandex.ru/get/9259/3168243.2/0_12ba41_75b3a862_L.jpg\"><img src=\"https://img-fotki.yandex.ru/get/9259/3168243.2/0_12ba41_75b3a862_L.jpg\" alt referrerpolicy=\"no-referrer\"><span class=\"image__spacer\" style=\"padding-bottom: 80.0000%\"></span></span></a><br>\n<strong data-nd-pair-src=\"**\"><br>\nИзделие</strong><br>\n<a href=\"http://fotki.yandex.ru/users/prikupets/view/1227330/\" class=\"link link-ext\" data-nd-link-orig=\"http://fotki.yandex.ru/users/prikupets/view/1227330/\" target=\"_blank\" rel=\"nofollow noopener\"><span class=\"image\" style=\"width: 500px\" data-nd-image-orig=\"https://img-fotki.yandex.ru/get/9166/3168243.2/0_12ba42_2b8d0f77_L.jpg\"><img src=\"https://img-fotki.yandex.ru/get/9166/3168243.2/0_12ba42_2b8d0f77_L.jpg\" alt referrerpolicy=\"no-referrer\"><span class=\"image__spacer\" style=\"padding-bottom: 36.8000%\"></span></span></a></p>\n<p><strong data-nd-pair-src=\"**\">Камера</strong><br>\n<a href=\"http://fotki.yandex.ru/users/prikupets/view/1227331/\" class=\"link link-ext\" data-nd-link-orig=\"http://fotki.yandex.ru/users/prikupets/view/1227331/\" target=\"_blank\" rel=\"nofollow noopener\"><span class=\"image\" style=\"width: 300px\" data-nd-image-orig=\"https://img-fotki.yandex.ru/get/9111/3168243.2/0_12ba43_f7a30be9_M.jpg\"><img src=\"https://img-fotki.yandex.ru/get/9111/3168243.2/0_12ba43_f7a30be9_M.jpg\" alt referrerpolicy=\"no-referrer\"><span class=\"image__spacer\" style=\"padding-bottom: 61.6667%\"></span></span></a></p>\n<p><strong data-nd-pair-src=\"**\">Изменение в программе</strong></p>\n<p>Кусочки оригинального MultiWii кода приведены чтобы показать место вставки изменений.</p>\n<p>config.h</p>\n<pre class=\"hljs\"><code>// AP; START; Camera switch at BOXLEDMAX;\n #define CAMERA_SWITCH_PIN A1 // Pin to turn the camera switch on/off;\n// AP; END; Camera switch at BOXLEDMAX;\n</code></pre>\n<p>MultiWii_2_1.ino</p>\n<pre class=\"hljs\"><code>void setup() {\n...\n POWERPIN_OFF;\n// AP; START; Camera switch at BOXLEDMAX;\n #ifdef CAMERA_SWITCH_PIN\n pinMode(CAMERA_SWITCH_PIN, OUTPUT); // Pin to turn the camera switch on/off;\n digitalWrite(CAMERA_SWITCH_PIN, LOW); // Turn it off;\n #endif\n// AP; END; Camera switch at BOXLEDMAX;\n...\n\n #ifdef LANDING_LIGHTS_DDR\n auto_switch_landing_lights();\n #endif\n\n// AP; START; Camera switch at BOXLEDMAX;\n #ifdef CAMERA_SWITCH_PIN\n digitalWrite(CAMERA_SWITCH_PIN, rcOptions[BOXLEDMAX]); // Turn the camera switch on/off;\n #endif\n// AP; END; Camera switch at BOXLEDMAX;\n break;\n...\n</code></pre>\n<p>Все работает, все переключается как надо. Понадобилось правда подкрутить усиление сигнала на видео-сплитере на наземной станции - видимо микросхема его чуть-чуть ослабляет. Но поскольку камера у меня с узким углом зрения, садиться по ней невозможно <span class=\"emoji emoji-smiley\" data-nd-emoji-src=\":smiley:\">😃</span> Надо менять объектив. <strong data-nd-pair-src=\"**\">Если у кого есть лишний объектив на 1-3 г. камеру - я готов обсудить приобретение</strong> <span class=\"emoji emoji-smiley\" data-nd-emoji-src=\":smiley:\">😃</span></p>\n<p>Если надо сделать такой свитч для 3-х камер - надо задействовать вход S1 в дополнение к S0, и подключить его к свободному выходу платы, например, A2. Вообще микросхема может переключать до 4-х камер и имеет 2 параллельных канала с общей адресацией. Можно было бы задействовать и второй канал, например под фару - передавать управляющий сигнал фаре, подсвечивающей текущей камере. Но для двух камер для этого можно брать исходный сигнал с платы…</p>\n<p>Еще я думал объединить два канала параллельно, чтобы уменьшить сопротивление канала в два раза - сейчас там 80 Ом, было бы 40. Но во-первых, и так работает (после регулировки усиления на наземной станции), а во-вторых, я опасался race conditions, когда один канал включится чуть быстрее чем другой, и выход одной камеры окажется соединенным с выходом другой - кто знает, как им это понравится.</p>\n","user":"41b8a4ac3df9550077792e83","ts":"2013-06-29T23:18:14.000Z","st":1,"cache":{"comment_count":3,"last_comment":"51d2d57799707300771420ce","last_comment_hid":3,"last_ts":"2013-07-02T13:28:23.000Z","last_user":"5144bc7d3df9550077738bc6"},"views":1577,"bookmarks":0,"votes":0},"subscription":null},"locale":"en-US","user_id":"000000000000000000000000","user_hid":0,"user_name":"","user_nick":"","user_avatar":null,"is_member":false,"settings":{"can_access_acp":false,"can_use_dialogs":false,"hide_heavy_content":false},"unread_dialogs":false,"footer":{"rules":{"to":"common.rules"},"contacts":{"to":"rco-nodeca.contacts"}},"navbar":{"tracker":{"to":"users.tracker","autoselect":false,"priority":10},"forum":{"to":"forum.index"},"blogs":{"to":"blogs.index"},"clubs":{"to":"clubs.index"},"market":{"to":"market.index.buy"}},"recaptcha":{"public_key":"6LcyTs0dAAAAADW_1wxPfl0IHuXxBG7vMSSX26Z4"},"layout":"common.layout"}