Реализация беспроводной коммутации 3D машин на Marlin

Подписаться на 3Dtoday
Erzay 3D
Идет загрузка
Загрузка
13.01.19
1528
26
печатает на Ultimaker 2
Техничка
9
Добрый день Уважаемые читатели!

Я хотел бы продолжить тему с разработками и процессами этапов разработок относящихся к 3D принтерам, все работы проходили/ проходят в рамках текущего стартап проекта "Erzay3D".

Для удовлетворения условий беспроводного обмена данными, необходимо установить скорость соединения не ниже 250000 бод.
1 бод равен 8 * 10^-7 мегабит/сек
Исходя из формулы, 250000 бод равно 0.2 мегабит/сек, с такой скоростью передачи данных отлично справится технология «Bluetooth 2.0 + EDR», с заявленной скоростью обмена данных до 3 мегабит/сек, по факту 2 мегабит/сек, что превышает минимальные требования обмена данными в 10 раз. Модуль «Bluetooth HC-05» использует технологию «Bluetooth 2.0 + EDR», что удовлетворяет всем требованиям и является одним из самых бюджетных средств беспроводной передачи данных (до 200 рублей на Китайском рынке).

Для конфигурации модуля и внедрение его в систему аддитивного устройства был сформирован алгоритм последовательностей:
1)для того, чтобы конфигурировать "НС-05" модуль, в нашем случае из-за отсутствия USB-UART, был использован модуль быстрого прототипирования "Arduino Uno". Необходимо подключить модуль Bluetooth HC-05 к контроллеру Arduino по интерфейсу UART, который имитируется программным способом с помощью подключения библиотеки «SoftwareSerial». Вызывая команду для объявления портов : SoftwareSerial myPins(2, 3);Где pin 2 является виртуальным Rx- контактом, соответственно pin 3 Tx- контактом. Мы можем произвольно объявить свободные цифровые порты для приёма и передачи данных. В Arduino Uno такими являются D2 - D3. Далее подключить к ним контакты модуля как указано на рис. 1.1 .
PREVIEW
Рисунок 1.1 - Подключение модуля Bluetooth HC05 к Arduino Uno
Контакт Rx Bluetooth- модуля подключается к контакту Tx Arduino, а контакт Tx Bluetooth- модуля — к контакту Rx Arduino.Контакт GND модуля HC-05, к контакту GND микроконтроллера Ar-duino. Контакт VCC модуля HC-05, питающему контакту +3.3V на Arduino.
2)для компиляции и загрузки листинга, была использована среда разработки IDE Arduino Software. Необходимо использовать листинг следующего вида:
#include
SoftwareSerial myPins(2, 3);
void setup()
{
pinMode(2,INPUT);
pinMode(3,OUTPUT);
Serial.begin(9600);
myPins.begin(38400);
Serial.println("9600");
Serial.println("ok");
}
void loop()
{
if (myPins.available())
{
int c = myPins.read(); // чтение из модуля
Serial.write©; // вывод информации в монитор сериал соединения
}
if (Serial.available())
{
int c = Serial.read(); // чтение из модуля
myPins.write©; // вывод информации в монитор сериал соединения
}
}
После успешной компиляции и загрузки кода, выбираем соответствующий COM порт, к которому подключён контроллер Arduino. Открываем «Монитор порта (Ctrl + Shift + M)» для отправки команд в Bluetooth- модуль. и устанавливаем баудрейт на 38400 бод(на текущем модуле оказалась заводская такая скорость, у каждого модуля она может отличаться).

3)для перевода модуля HC-05 в режим настройки конфигурации AT команд, необходимо на контакт «KEY(34)», подать напряжение в +3.3V. рис. 1.2.
dfcf4f5f245e8eba94ce812c626e92c3.jpg
Рисунок 1.2 - Перевод модуля Bluetooth HC05 в режим AT команд, путём подачи напряжения на контакт «KEY(34)»


Кроме того существует альтернативный способ перевода модуля в режим конфигурации AT. Для этого необходимо нажать кнопку reset на модуле и удерживать её , отключить и включить питание - отпустить кнопку. При включении модуля светодиод мигает 1 раз в секунду, в режиме АТ-команд 1 раз в две секунды, при верном переводе модуля мы увидим мигание светодиода 1 раз в 2 секунды, после чего с помощью монитора сериал порта среды разработки Arduino, можно отправлять на модуль AT команды.

4)все команды имеют вид: «AT+КОМАНДА», «AT+КОМАНДА?» или «AT+КОМАНДА=ПАРАМЕТРЫ» и должны оканчиваться комбинацией CR+LF (символы с кодами 0x0D и 0x0A, '\r' и '\n'). На каждый корректный запрос Bluetooth-модуль будет слать ответ. Необходимо присвоить имя устройству, например «Okroshka» (20 символов ограничено), для этого отправляем:
AT+NAMEOkroshka
Ответ: Ok
Теперь имя Bluetooth является «Okroshka» При сканировании эфира появилось устройство с именем Okroshka. Далее нужно сменить скорость баудрейта, для оптимальный работы необходима скорость 115200 бод. Отправляем команду: AT+UART=250000,0,0
Ответ: Ok
Означает что скорость баудрейта изменилась верно и теперь достаточна для оптимальной работы, по умолчанию модуль находится в режиме сервера и ожидает подключения к нему устройств что удовлетворяет нашим требованиям, пароль по умолчанию «1234», изменим его на «1111». Для этого отправим команду:
AT+ PIN1111
Ответ: OKsetpin
Означает, что пароль для аутентификации подключения изменён.
Тестирование беспроводной передачи данных
Для тестирования будет использоваться микроконтроллер использующийся в некоторых аддитивных устройствах, «Arduino Mega», с уже подключённым и ранее настроенным Bluetooth модулем HC-05. Загрузим листинг следующего вида:
#include SoftwareSerial bluetooth(53, 52); // указываем пины rx и tx соответственно
void setup()
{
pinMode(53,INPUT);
pinMode(52,OUTPUT);
bluetooth.begin(250000); // скорость связи между arduino и bluetooth-модулем
Serial.begin(9600); // скорость usb-порта
Serial.println("ok");
Serial.println("9600");
}
void loop()
{ }
Его задача заключается в том, чтобы перенаправить команды, полученные с модуля, в сериал порт USB к которому подключен ПК. Также для имитации выполнения 3D печати, на ПК было запущено программное обеспечение «Erzay3D Lab». Предварительно скомпилированный G- COD цифровой модели кораблика. Отправим первые строчки команд на устройство, с которым будет осуществлено сопряжение. С помощью Android приложения "Bluetooth Terminal", на смартфоне, осуществляем сопряжение с Bluetooth, который ранее назвали «Okroshka», с паролем «1111». Подключаем устройство «Arduino Mega» к ПО «Erzay3D Lab», отправляем G- code через Bluetooth Terminal( Рис. 1.3). При удачной реализации ПО должно визуализировать 3D печать в реальном времени(Рис. 1.4).
e60cb0759a7cd5f16954c5577bec9549.jpg
Рисунок 1.3 - Androin приложения "Bluetooth Terminal", пример отправки g-cod команд на ПК.
261fc1b99e5ab3e12324f59085023318.jpg
Рисунок 1.4 - Имитация 3D печать в реальном времени, на ПО Erzay3D Lab.
Тестирование можно назвать успешном, строчки G- code передаются без помех при баудрейде в 250000 бод, таким образом мы сможем создать Andriod приложение для управления 3D принтером, а ПО на стороне ПК, имитировало работу самой 3D машины, следующем шагом будет подключение модуля к аддитивной машине.
Подключение Bluetooth –модуля HC-05 к Ramps 1.4.
Ramps 1.4 - это универсальная плата расширения аддитивных устройств для контроллера Arduino Mega. Порты TХ/RX модуля HC-05 необходимо подключить к TХ/RX выводам Arduino Mega.(Рис. 1.5.).
f1ed544b603a25f05b05af3f6ff515ba.jpg
Рисунок 1.5 – Распиновка платы Ramps 1.4
Из распиновки платы, мы видим что TХ/RX называются цифровыми портами D0,D1, которые расположены в «AUX-1», к ним и будет подключён BT модуль, рядом очень удобно расположены разъёмы «+5/gnd», от которых мы будем питать устройство HC-05.(Рис. 1.6.) При желании можно объявить свои порты, при незначительной манипуляции с кодом.
9bca02da24a5e0e8d255800d4acc297c.jpg
Рисунок 1.6 – Подключение HC-05 к Ramps 1.4
Далее в конфигурации Marlin устанавливаем настроенную скорость передачи данных для BT модуля и активируем "BLUETOOTH"
#define BAUDRATE 250000
// Enable the Bluetooth serial interface on AT90USB devices
#define BLUETOOTH
Всё готово к работе, всем спасибо за внимание! Выражаю благодарность за содействие 3dproger!
Подписаться на 3Dtoday
9
Комментарии к статье

Комментарии

13.01.19 в 18:46
3
Привет. у меня была другая идея. сделать переходник что бы заливать по вайфаю на флешку по mqtt. питашку брать из слота
13.01.19 в 19:02
2
Вобще лучше не печатать по сериал порту, печать лучше с Карты, тут только если управлять, мониторить,( копировать g cod на карту) ибо шумы и помехи делают своё дело, в Marlin выделено 120 байт буфера под защиту от помех, всё равно чтобы исправить помехи, печать придётся затормозить и это уже будет влиять на качество. Мой подход не мешает залить команды на Карту и выполнять печатать с карты, в Marlin этот функционал реализован. BT с версии 4.0 работает по одному протоколу с wi-fi кстати, BT как правило используется для коммутации гаджетов, у Wi-Fi другое предназначение, хотя реализовать данную задачу тоже можно, только немного это будет технически не грамотно я считаю.
13.01.19 в 19:38
2
У меня от WiFi тоже только это и необходимо - скинуть из слайсера g-code на флешку.
Самое простое (но и относительно дорогое) решение - использовать готовую SD-WiFi карту памяти. Что я и делаю.
13.01.19 в 20:02
1
да видел. не готов пока потратить на это. так то по идее все что необходимо это распотрошить пару адаптеров и вай фай модуль. но как то лень немного
13.01.19 в 20:24
1
Ого, впервые о таком слышу, есть ссылка? Так то да, если мы хотим управлять машинкой со смартфона например, и печатать то такая флешка уже не подойдёт, да и со смартфона можно будет редактировать g-cod, управлять машинкой(скорость, температура), конечно проц. смартфона не вывезет слайсер. Скоро сделаем ПО на Android для реализации текущих задач.
13.01.19 в 20:49
2
Ого, впервые о таком слышу, есть ссылка?
Вот ТУТ я подробно описывал.
14.01.19 в 06:59
0
вот тут есть более простой способ))) все работает без/из коробки
14.01.19 в 09:33
0
Так у меня тоже самое и есть... Только вот "из коробки" на запись оно работать не будет... надо ручками конфиг создавать требуемый.
13.01.19 в 20:18
0
Смысл этого огорода? esp8266 уже отменили, чем это решение лучше, экономичнее, я так и не понял.
13.01.19 в 20:35
1
Никто не говорит о том что данное решение лучше, какого- либо другого, просто это мой, авторский вариант, реализации беспроводной коммутации. Ещё раз повторюсь что, по моему мнению, Wi-Fi для других задач, для гаджетов BT. Wi-Fi служит для создания локальной, беспроводной сети.
13.01.19 в 20:55
0
Вы один из авторов Марлина?
13.01.19 в 21:44
0
Нет, почему вы так решили? Мы с командой долгое время занимались с этой прошивкой, добавляли свои библиотеки, изменяли некоторые функции, чисто под свой проект, из этого накопился достаточный опыт.
13.01.19 в 21:56
0
это мой, авторский вариант, реализации беспроводной коммутации
в прошивке есть поддержка блютус, в чем авторство?
Предыдущий ваш пост о RGB, тоже все реализовано в марлине, репитере, MK4DUO.
Вы давно просматривали свежие версии?
13.01.19 в 22:10
0
Я писал в комментариях по прошлому посту, что на момент реализации данного функционала, Marlin, RGB не поддерживал( это был 2016 год). Я просто опубликовал свои наработки, вдруг кому то это пригодится. Скоро будут новые статьи, там будет более свежая информация.
13.01.19 в 22:35
1
( это был 2016 год).
сейчас навсякий случай 2019, На мой взгляд не актуально, вы опоздали.
более свежая информация.
за 2017? :)
13.01.19 в 22:39
0
Многие патенты раскрывают только через 20 лет, и темы остаются актуальными.
14.01.19 в 09:49
0
Многие патенты раскрывают только через 20 лет
О! Есть тут у нас камрад с патентами... нам одного хватает )
13.01.19 в 23:16
1
ВАУ!!! Да уж....я и не заметил, в описании между строк вашего патентного решения.... Не смешите, тут есть на сайте товарищ любитель патентовать, но ему отказывают со времен когда существовали "Дома юных техников".
14.01.19 в 08:19
1
Чё-то я не понял, в чём тут фишка? Для чего на готовое устройство, которое и так всё необходимое поддерживает, нужно ещё Ардуину городить?
Это новый вид мазохизма?
14.01.19 в 09:50
0
Это комплекс ситуевин которые потом в сколково охотно примут за видимость работы и дадут бабки )
14.01.19 в 10:16
0
Было бы очень здорово!)
14.01.19 в 10:19
0
Я сразу тебя раскусил! )))
14.01.19 в 10:19
0
Нету никакой фишки, просто вариант беспроводной коммутации для передачи g coda. Что-за готовое устройство? BT? Да можно на самом деле и через Mega было бы конфигурацию настроить. Или есть идеи как на скорости 38400 бод g cod отправлять для стабильной печати?
15.01.19 в 02:32
0
А зачем?
В чем проблема считать тот же код с карты?
Просто с моей точки зрения это все равно как разработка жучка для прослушивания мегафона.
Бессмысленно.
Не могу даже представить ситуацию в которой подобное понадобиться, тем более именно по короткому и глючному воздуху.
16.01.19 в 12:56
0
Тут же по мимо печати идёт и управление, ты можешь с одного ПК подрубить ( на сколько помню до 4-5 в зависимости от технологии BT) машины, и не касаясь их ручками печатать/управлять. Будут конечно потери однозначно, тем не менее работать будет) А если какой то BT хост поставить, то можешь управлять целой ордой 3д машин)
16.01.19 в 23:22
0
WiFi тогда (для целей управления) лучше:
1) Избыточность пропускного канала, как непосредственно по данным так и по "номерной емкости".
2) Обработка ошибок на уровне железа а адресации на уровне транспортного протокола.
3) Есть отлично задокументированная, стабильная и дешевая реализация (под самоделки и IOT) в железе - ESP8266.

А блютус глючная шляпа! - не видел ни одного стабильно работающего модуля. Впрочем гарнитуры и прочее тоже глючат только в путь.
Фуфло крч.

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Нужны расходные материалы для 3D-печати? Значит Вам в 3DMall

BMW запускает производство двигателей с 3D-печатными головками блоков цилиндров

Снижаем цены на популярные модели Wanhao!

Неприступный замок: UrbanAlps печатает на 3D-принтерах малоуязвимые замки и ключи

Алхимия фотополимерных смол – подводим итоги.

Компания FELIXprinters анонсировала FDM 3D-принтеры Pro L и Pro XL