Это уже третий вариант снегоуборщика. Первый вариант я сделал из боевого робота. Второй вариант из газонокосилки, которую я готовлю к конкурсу. Видео с краткой презентацией этих «изделий» уже было на Geektimes, так же в спойлере внизу поста.
Текущая конструкция робота очень простая. Верхний слой снега снимается скребком. Нижний слой выбрасывается из-под снегоуборщика вбок. Силовым агрегатом служит двигатель внутреннего сгорания от ручной газонокосилки мощностью 0.9 л.с. Ходовые двигатели — это мотор-редукторы от стеклоочистителей ВАЗ. ДВС крутит винт. Воздушный поток и механическое воздействие винта поднимает снег с поверхности и по воздуховоду отбрасывает в сторону. Юбка вокруг снегоуборщика не дает снегу разлетаться в стороны. Шурупованная резина существенно улучшает проходимость агрегата.
Управление
Управлением по Bluetooth с Android телефона. Arduino nano+Monster Motor Shield+Bluetooth HC-06
Bluetooth HC-06 работает на 3.3В, т.е. необходимо для правильной работы сделать преобразование логических уровней. Без этого схема будет работать, но могут быть проблемы.
По поводу Monster Motor Shield много спорных вопросов, кто-то утверждал, что большой процент брака. Мне данная плата очень нравится, потому что она держит ток до 30А.
Arduino
Для получения данных от Bluetooth HC-06 я использовал Software Serial для того чтобы оставить возможность отладки через терминал по аппаратному Serial port. Это, в частности, понадобилось чтобы отслеживать какие данные мы получаем от Arduino. В простейшем скетче проверяем полученный символ по Bluetooth и включаем драйвер двигателей.
#include <SoftwareSerial.h>
#define BRAKEVCC 0
#define CW 1
#define CCW 2
#define BRAKEGND 3
#define CS_THRESHOLD 100
int inApin[2] = {7, 4}; // INA: Clockwise input
int inBpin[2] = {8, 9}; // INB: Counter-clockwise input
int pwmpin[2] = {5, 6}; // PWM input
int statpin = 10;
SoftwareSerial mySerial(2, 3); // RX, TX
char a,b;
void setup()
{
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
pinMode(statpin, OUTPUT);
// Initialize digital pins as outputs
for (int i=0; i<2; i++)
{
pinMode(inApin[i], OUTPUT);
pinMode(inBpin[i], OUTPUT);
pinMode(pwmpin[i], OUTPUT);
}
// Initialize braked
for (int i=0; i<2; i++)
{
digitalWrite(inApin[i], LOW);
digitalWrite(inBpin[i], LOW);
}
// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
mySerial.println("Hello, world?");
}
void loop() // run over and over
{
digitalWrite(statpin, HIGH);
if (mySerial.available()){
a=mySerial.read();
if(a=='F'){
motorGo(0, CW, 1023);
motorGo(1, CW, 1023);
}
if(a=='B'){
motorGo(0, CCW, 1023);
motorGo(1, CCW, 1023);
}
if(a=='L'){
motorGo(0, CW, 1023);
motorGo(1, CCW, 1023);
}
if(a=='R'){
motorGo(0, CCW, 1023);
motorGo(1, CW, 1023);
}
if(a=='I'){
motorGo(0, CW, 500);
motorGo(1, CW, 1023);
}
if(a=='G'){
motorGo(0, CW, 1023);
motorGo(1, CW, 500);
}
if(a=='H'){
motorGo(0, CCW, 1023);
motorGo(1, CCW, 500);
}
if(a=='J'){
motorGo(0, CCW, 500);
motorGo(1, CCW, 1023);
}
if(a=='S'){
motorOff(1);
motorOff(2);
}
Serial.write(a);
}else{
}
}
void motorOff(int motor)
{
// Initialize braked
for (int i=0; i<2; i++)
{
digitalWrite(inApin[i], LOW);
digitalWrite(inBpin[i], LOW);
}
analogWrite(pwmpin[motor], 0);
}
void motorGo(uint8_t motor, uint8_t direct, uint8_t pwm)
{
if (motor <= 1)
{
if (direct <=4)
{
// Set inA[motor]
if (direct <=1)
digitalWrite(inApin[motor], HIGH);
else
digitalWrite(inApin[motor], LOW);
// Set inB[motor]
if ((direct==0)||(direct==2))
digitalWrite(inBpin[motor], HIGH);
else
digitalWrite(inBpin[motor], LOW);
analogWrite(pwmpin[motor], pwm);
}
}
}
Andoid
На Google Play огромное количество готовых приложений для удаленного управления. Из всех больше всего мне понравилось это приложение.
Интерфейс
Логика работы приложения
Приложение отправляет каждую секунду код текущей комбинации нажатых кнопок по bluetooth.
- «S» — стоп
- «F» — вперед
- «B» — назад
- «L» — влево
- «R» — вправо
- «I» — вперед и вправо
- «G» — вперед и влево
- «H» — назад и вправо
- «J» — назад и влево
Управление возможно как с помощью нажатия клавиш, так и с помощью гироскопа. Функционал приложения достаточно тривиальный, но этого достаточно.
Видео
P.S.: Следующим проектом является автономный подводный робот. Я готовлюсь к конкурсу X-Prize. :).Ссылка. Осталось накопить 2000$.
The registration deadline is 30 June, 2016 (11:59 PM UTC/4:59 PM PST). The registration fee is $2,000.00 USD.
Комментарии (15)
IronHead
29.12.2015 15:39+9Больше всего в таких статьях меня поражает раздутость информации в СМИ.
Автор по сути прикрутил ардуину к самоходной тележке, а репортеры подают это как: Русский левша переплюнул DARPA и создал в своем гараже робота снегоуборщика.
DMGarikk
29.12.2015 16:05Чтото напомнило про «незначимость» самоходной тележки
www.parovoz.com/newgallery/pg_view.php?ID=238614&LNG=RU#picture
хоть кто бы вспомнил былые успехи наших самодельщиков
r00tGER
29.12.2015 16:00На плате «JY-MCU BT_Board», уже есть резисторы. Отдельно нужны, когда используется «голый» модуль HC-0* в 5-ти вольтовых схемах.
diller61
29.12.2015 17:26задам глупый наверное вопрос насчет второго фото: а почему на одном колесе саморезы шляпками наружу, а на другом шляпками внутрь? тут есть некий сакральный смысл?
s5656
30.12.2015 12:37Автор молодец бесспорно, но блин, новости? Серьезно?
Давайте каждую поделку на ардуине (а уж если там все «по-взрослому»), которую собирают от мал до велика, по новостям показывать…lubezniy
30.12.2015 15:52+1А какого уровня поделка должна быть, чтобы её можно было в новостях показывать? Если брать маленький городок, то в нём в принципе не так много выходит поделок, чтобы ими даже одну местную новостную программу забить. По хорошему счёту выпуск таких материалов в свет может подстегнуть заняться подобными делами кого-то ещё, и именно этим он как раз полезен. А что на чём сделано — это детали.
NikitosZs
А в интервью
Но всё это не важно! Как эта кроха, пусть и не одна, а несколько штук, смогут убирать снег на целой улице?! Куда убирать? Нужно же не просто его сдвигать, а именно убирать, вывозить.
Но мне нравится, это забавно всё, роботы, автоматизация.
webzuweb
Программу я и правда написал, но на SL4A. Я про SL4A сделаю отдельный пост. Как готовое решение, которое легче повторить я предлагаю этот вариант.
Вы же понимаете, что это тестовый образец, работы еще очень много. Вопрос про улицы, вообще преждевременный. Нормативно-правовая база с автономными сервисными роботами и роботизированными автомобилями нуждается в создании, тестировании и доработке.
Что касается уборки снега, к примеру, на парковках. Сейчас ведь самоходными снегоуборщиками отбрасывают снег в сторону и никого это не смущает.
В этом больше веселья, пока…