Ведутся технические работы. Это может временно повлиять на скорость работы сайта. Приносим извинения за неудобства и благодарим за ваше понимание!

Спрутомёт — пневматическая пушка на Arduino. Стреляем силиконовыми кальмарами

Сегодня соберу пневматическую пушку и постреляю силиконовыми кальмарами. Я взял баллон от огнетушителя и автомобильный компрессор. На компрессоре нет своего манометра, поэтому добавлю сразу два — стрелочный анероид и электронный датчик. Чтобы безопасно стравливать воздух подключу клапан, а чтобы стрелять — соленоид.

Детали корпуса из фанеры мне нарезали друзья на лазерном плоттере. Скреплю детали болтами М3. Займусь арматурой. Обезжирю детали и соберу с помощью пневматического герметика. Красный цвет герметика говорит о том, что после высыхания детали схватятся намертво.

Соберу блок с выпускным клапаном и стрелочным манометром. Манометр пригодится для калибровки электроники. Следующим подключу нормально закрытый соленоидный клапан. Закреплю компрессор на фанерную раму. Армированным шлангом подключу к контуру высокого давления. Вкручу баллон от огнетушителя со стороны манометра.

Проверю герметичность — включу компрессор и подниму давление воздуха в баллоне до двух атмосфер. Система держит. Стравлю воздух, накачаю баллон ещё раз, уже до 4 атмосфер. Всё готово к проверке соленоида. Подам на него искру, клапан откроется и воздух из баллона вырвется наружу.

Пневматика работает как часы. Пришло время заняться электроникой. В качестве управляющей платы я возьму Iskra Mega — пинов много не бывает. Управлять компрессором и клапаном буду через Troyka Reley. Закреплю их на Pad-е и подключу к Искре через Troyka Shield. Добавлю кнопки. Одна будет накачивать воздух, вторая станет спусковым крючком. Индикацию и регулировку максимального давления выведу на сенсорный экран.

Прошивку я напишу на XOD — http://xod.io Это визуальный язык для быстрой разработки устройств на базе Arduino. В XOD нет кода. Вместо них используются ноды. Это объекты, которые соответствуют реальным железкам, логическим и математическим функциям, операциям с текстом. Связи определяют поведение устройства. Наглядно и похоже на блок-схемы.

Начну со спускового механизма. Он состоит из кнопки и реле. Найду в библиотеке ноду Button. Управлять реле я буду с помощью ноды Digital wright. Теперь задам в нодах сигнальные пины кнопки и реле и соединю их. Залью патч на плату и протестирую модуль. Нажимаю кнопку — реле замыкает цепь. Курок готов!

В пушке я использую аналоговый датчик давления. Соберу группу нод для работы с ним. Добавлю ноды для инициализации LCD дисплея. Выведу на него данные датчика давления — отдельно в барах, отдельно в psi. На дисплей добавлю виджет, который будет задавать максимальное давление в баллоне.

Добавлю красный и зелёный светодиоды. Задам логику их работы. Если компрессор выключен а давление в баллоне равно заданному максимальному значению, загорается зелёный светодиод. Можно спускать курок. Если в баллоне низкое давление или компрессор ещё качает воздух — горит красный. Стрелять нельзя.

Прикручу к фанере всю электронику. Питать буду от литий-полимерного аккумулятора. Обмотаю его капроновым шнуром для удобства и защиты от ударов. Аккумулятор выдаёт 24 вольта — то, что нужно для соленоида и Iskra Mega. А вот компрессор автомобильный, он рассчитан на 12 вольт. Подключу его через понижающий преобразователь напряжения.

Добавлю ствол. Я выбрал двухсотый калибр. Возьму канализационную трубу и прикручу к пушке.

Видели когда-нибудь летающего кальмара?
Сейчас покажу!

В проекте использованы:

Iskra Mega — http://amperka.ru/product/iskra-mega?utm_source=proj&utm_campaign=spruit-cannon&utm_medium=youtube

Troyka Shield — http://amperka.ru/product/arduino-troyka-shield?utm_source=proj&utm_campaign=spruit-cannon&utm_medium=youtube

Реле (Troyka-модуль) — http://amperka.ru/product/troyka-relay?utm_source=proj&utm_campaign=spruit-cannon&utm_medium=youtube

Тактовая кнопка (Troyka-модуль) — http://amperka.ru/product/troyka-button?utm_source=proj&utm_campaign=spruit-cannon&utm_medium=youtube

Индикаторный светодиод (Troyka-модуль) — http://amperka.ru/product/troyka-5mm-led-module?utm_source=proj&utm_campaign=spruit-cannon&utm_medium=youtube

Troyka Pad-ы — http://amperka.ru/collection/new-2016-12-02?utm_source=proj&utm_campaign=spruit-cannon&utm_medium=youtube

#iskra #mega #амперка #проекты #XOD

Music from https://filmmusic.io:
«Fantasia Fantasia» by Kevin MacLeod (https://incompetech.com)
«Getting it Done» by Kevin MacLeod (https://incompetech.com)
CC BY (http://creativecommons.org/licenses/by/4.0/)

Music from https://soundcloud.com:
«Extreme Energy» by Anwar Amrv
«Funk Cool Groove» (Music Today 80) Composed & Produced by: Anwar Amr (https: youtu.be/FGzzBbYRjFY)
CC-BY (https://creativecommons.org/licenses/by-sa/3.0/)

«Acid Drum ‘n Bass» by notnetherme
CC BY (https://creativecommons.org/licenses/by-sa/3.0/)

«Elevator Music» 1 by Zet
CC BY (https://creativecommons.org/licenses/by-sa/3.0/)

Sounds from https://freesound.org:
«Neon_light_02» by Glaneur de sons
“Beat 01” by bigfriendlyjiant
“Remix of 101127__CGEffex__Bug_Zapper_Long_moth_electrocution_Remix” by Timbre
CC-BY (https://creativecommons.org/licenses/by-sa/3.0/)

( ! ) Warning: Invalid argument supplied for foreach() in /home/domains/malitikov.ru/public_html/wp-content/themes/malitikov/single.php on line 44
Call Stack
#TimeMemoryFunctionLocation
10.0000350344{main}( ).../index.php:0
20.0000350624require( '/home/domains/malitikov.ru/public_html/wp-blog-header.php ).../index.php:17
30.11438479328require_once( '/home/domains/malitikov.ru/public_html/wp-includes/template-loader.php ).../wp-blog-header.php:19
40.11608504016include( '/home/domains/malitikov.ru/public_html/wp-content/themes/malitikov/single.php ).../template-loader.php:106

Мы рекомендуем


( ! ) Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 20480 bytes) in /home/domains/malitikov.ru/public_html/wp-includes/class-wpdb.php on line 2322
Call Stack
#TimeMemoryFunctionLocation
10.0000350344{main}( ).../index.php:0
20.0000350624require( '/home/domains/malitikov.ru/public_html/wp-blog-header.php ).../index.php:17
30.11438479328require_once( '/home/domains/malitikov.ru/public_html/wp-includes/template-loader.php ).../wp-blog-header.php:19
40.11608504016include( '/home/domains/malitikov.ru/public_html/wp-content/themes/malitikov/single.php ).../template-loader.php:106
50.258322788488WP_Query->__construct( $query = ['post_type' => 'post', 'post_status' => 'publish', 'fields' => 'ids', 'posts_per_page' => -1, 'no_found_rows' => TRUE, 'orderby' => 'none'] ).../single.php:65
60.258322788488WP_Query->query( $query = ['post_type' => 'post', 'post_status' => 'publish', 'fields' => 'ids', 'posts_per_page' => -1, 'no_found_rows' => TRUE, 'orderby' => 'none'] ).../class-wp-query.php:4081
70.258322788488WP_Query->get_posts( ).../class-wp-query.php:3949
80.258722800352wpdb->get_col( $query = 'SELECT wp_posts.ID\n\t\t\t\t\t FROM wp_posts \n\t\t\t\t\t WHERE 1=1 AND wp_posts.post_type = \'post\' AND ((wp_posts.post_status = \'publish\'))\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t ', $x = ??? ).../class-wp-query.php:3300
90.258722800352wpdb->query( $query = 'SELECT wp_posts.ID\n\t\t\t\t\t FROM wp_posts \n\t\t\t\t\t WHERE 1=1 AND wp_posts.post_type = \'post\' AND ((wp_posts.post_status = \'publish\'))\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t ' ).../class-wpdb.php:3107
102.7122572986808mysqli_fetch_object( $result = class mysqli_result { public $current_field = 0; public $field_count = 1; public $lengths = [0 => 7]; public $num_rows = 1517174; public $type = 0 } ).../class-wpdb.php:2322