Подключение usb устройств к arduino
Микроконтроллер – очень универсальная штука, его можно научить взаимодействовать практически с любым другим электронным устройством: аналоговые датчики, цифровые датчики, всякие разные микросхемы, дисплеи, драйверы, контроллеры… Чтобы схема работала, входящие в неё компоненты нужно правильно соединить между собой. В этом уроке мы рассмотрим подключение электронных модулей.
Step 11: Other Uses
You can modify the layout and code to suit your needs and make an app for each device you make separately
For example I have modified same project to work as a Interface for my motor timer controller.
Я в этом деле полный новичок и даже не знаю с чего начать.
Откуда я могу узнать hex-коды, для инициализации и работы с USB-host (как в функциях в примере с флешкой)? Возможно ли вообще на данном usb-host реализовать мою задачу? Какими средствами пользоваться и что почитать (из официального описания чипа ch376s я практически не понял как ту информацию можно применить к arduino)?
Я уже понял, что для этого очень хорошо подходит (и много уже написанного кода) официальный USB-Host-Shield, но его у меня, к сожалению, нет.
Очень жду Вашей помощи!
- Вопрос задан более трёх лет назад
- 2021 просмотр
Кажется мне, этот способ собрать все возможные грабли.
Документация на CH376 выглядит неидеально, вторую часть PDF'ки я вообще на английском языке не нашёл. Можно попробовать переписать официальный пример (см. ссылку выше) в ардуино-стиль но делать это, боюсь, придётся самостоятельно.
Требуемые навыки - знание наизусть USB in Nutshell. Дополнительное железо - простенький логический анализатор (чтобы сравнивать посылки этого поделия и нормальной операционки).
Вариант 2 - какой-нибудь более толстый контроллер с USB-хостом. Там хотя бы документация подробнее и есть примеры от производителя "как подключить USB-мышку". Другой вопрос, что USB-хост в STM32 отличается повышенной своеобразностью (и если их пример не взлетит, ковыряться там долго. ). USB-хост в NXP LPC43xx хотя бы стандартный EHCI (но где недорого добыть отладочную плату, я понятия не имею).
Требования к дополнительному железу и дополнительным знаниям не снимаются, но есть хотя бы живые люди у которых это работает.
Вариант 3. Выкинуть это всё добро нафиг, купить самую дешёвую raspberri и радоваться жизни. USB стек там написан давно и написан хорошо. Дополнительные знания - умение писать скрипт вида "опросить /dev/что-то-там, подрыгать /dev/лампочка".
SYNC'и, ACK'и, PID'ы с низкого уровня USB перестают являться по ночам.
Вариант X. Я плохо знаю, что такое плейстейшн, но в Вашем джойстике заявлен некий интерфейс для неё. Фанаты подключают его к LPT (было такое в XX веке). 100% задачка для ардуины, если я ничего не напутал.
Android
Для теста на Android я использую приложение Serial Bluetooth Terminal. Сопрягаемся с паролем 1234, заходим в программу, открываем настройки слева, Devices, выбираем JDY-31 и подключаемся (кнопка со штекером в левом правом углу экрана. Модуль подключен к аппаратному Serial, на Arduino прошит код, отправляющий принятые данные обратно в Serial (эхо):
Пишем в терминал – модуль нам отвечает. Своё приложение с Bluetooth можно сделать в MIT App Inventor, этим мы займёмся в будущих уроках.
“Простые” модули
Step 2: Installing Android Studio
Install the exe file by going through some basic installation steps
At the end it will install latest SDK version automatically, let it complete.
Finally you should get welcome screen for android studio.
Attachments
Step 6: Adding Library to New Project
In the top left side of the main screen there will be a drop down menu ladled as android, change the option to project to see the directory structure of the project.
In the directory structure by expanding “app” folder you can find lib folder that is the default folder to place our libraries.
Copy the physicaloidlibrary.jar file and paste it in libs folder
After pasting click “sync project with gradle files” button on the top.
Now the library is added we can use its features in our code.
Main activity that was automatically created when we first created project will be located in
App > src > main > java > YOUR_ACTIVITY
And layout will be located at
App > src > main > res > layout > activity_serial_monitor.xml
Tutorials
With an Arduino HSB Host Shield you can even control an RC car using an XBOX wireless game controller. Many tutorials are available online, here you can find some tutorials developed by circuits@home.
Power
The Arduino USB Host Shield has no power jack and is powered only when attached to an Arduino board.
Arduino Library
The Arduino USB Host Shield can be used with the "USB Host Library for Arduino" hosted by Oleg Mazurov and Alexei Glushchenko from circuits@home, Kristian Lauszus and Andrew Kroll on GitHub (download).
Step 10: Testing the App
Now connect phone and run the code by using play button on the top, now device chooser dialogue pops up and ask's in which device should this app install.
Note: if you did not find your phone in the list try reinstalling the phone drivers.
If chosen correctly app should automatically install on phone make some necessary adjustments to UI.
Run some test code and upload to arduino
Disconnect the phone from pc and connect to Arduino with OTG cable, and send some data it should come back
KY-модули
Существует также целое семейство модулей с названием KY-цифра, это самые дешёвые модули на чёрных платах. Среди них есть и цифровые, и аналоговые, и интерфейсные датчики, а также индикация (светодиоды, пищалки) и реле. Проблема в том, что пины почти у всех плат подписаны одинаково:
- – (минус) – минус, GND
- Средний пин без подписи – плюс, VCC
- S – сигнал
Сигналом здесь может быть как исходящий из датчика цифровой или аналоговый сигнал, так и цифровой сигнал управления, который нужно подать на модуль с микроконтроллера. Обязательно читайте описание к модулю такого типа, если не знаете, что делает компонент на его плате!
Макетная плата
Макетная плата, она же макетка или брэдборд (breadboard) – самый удобный способ создания электронных макетов. Отверстия расположены со стандартным шагом 2.54мм, внутри каждого – пружинная клемма. Это позволяет вставлять в плату любые Arduino-модули, а также микросхемы в DIP корпусах.
Для соединения отверстий в пределах макетки используются провода штырёк-штырёк, рекомендую вариант с цилиндрическими штекерами (я пользуюсь одним комплектом на протяжении уже 5-ти лет). Также существуют провода с квадратными штекерами, они есть в вариантах гнездо-гнездо, гнездо-штырёк и штырёк-штырёк. Эти провода менее качественные, но вариант гнездо-штырёк позволяет подключить модуль к макетке, не втыкая модуль в макетку:
Что происходит на этом фото и как работает брэдборд? Очень просто! Контакты в нём соединены следующим образом:
OSH: Schematics
Arduino USB Host Shield is open-source hardware! You can build your own board using the following files:
Step 4: About the Library
By using this library we can not only communicate with Arduino but we can upload compiled hex files into Arduino, this library has avrdude functionality built-in.
Электронный модуль
Модуль – это специальная удобная плата на базе какой-то микросхемы или электронного компонента. Модуль может быть датчиком, драйвером, интерфейсом, памятью, дисплеем и так далее. Зачем использовать модуль, почему не взять конкретный компонент? Если вы хотите делать электронное устройство на печатной плате – конечно же лучше собирать его из голых компонентов, а не из модулей, потому что в большинстве случаев это выйдет дешевле, а также изготовление такой платы можно заказать вместе со сборкой на производстве (например на JLCPCB). Но мы с вами собираемся сначала научиться программировать, поэтому модули имеют неоспоримые преимущества:
- Основная концепция Ардуино – электронный конструктор, быстрое и простое создание прототипов электронных устройств без помощи паяльника.
- Микросхема очень маленькая, подключать её к чему-то – не очень приятная затея. У модуля выведена рейка для подключения проводов и работы на макетной плате.
- Чтобы подключить голую микросхему – понадобится изучить документацию. У модуля все нужные для подключения пины выведены и подписаны.
- Для корректной работы большинства микросхем требуются дополнительные компоненты (драйверы, контроллеры, резисторы, стабилизаторы, конденсаторы, индуктивности, кварцевые генераторы), посчитанные, выбранные и установленные согласно документации. На плате модуля всё это уже есть.
- У некоторых модулей на плате предусмотрена настройка: крутилки, джамперы, переключатели, перемычки для спайки паяльником.
Аналоговые
У аналоговых модулей помимо питания есть аналоговый выход, может быть маркирован как OUT, S, A или AO. Такие модули выдают аналоговый сигнал, пропорциональный показанию датчика. Подключаются к питанию и любому аналоговому пину (ADC) и опрашиваются стандартными средствами Arduino.
Примеры на картинке ниже: датчик звука, уровня жидкости, индуктивный датчик влажности почвы, обычный датчик влажности почвы, потенциометр (просто крутилка).
Интерфейсные модули
Некоторые модули имеют один или несколько логических выходов и передают данные по цифровому интерфейсу связи. Сигнальные пины таких датчиков могут быть подписаны как SCK, SDA, SCL, MISO, MOSI, SS и прочими аббревиатурами, отличными от OUT, как в “простых” модулях. Подключаются такие модули к пинам интерфейсов (подробнее в этом уроке) на плате Arduino и опрашиваются при помощи сторонних библиотек. Для работы с такими модулями нужно найти в интернете статью с описанием и примерами. Подробное описание к самым популярным модулям можно найти в базе примеров к набору GyverKIT, а также у меня в каталоге ссылок на Ардуино-компоненты. Примеры таких модулей:
Давайте вкратце рассмотрим самые распространённые интерфейсы и особенности подключения модулей с ними. Напомню распиновку плат Arduino Nano и Wemos Mini:
В наборе GyverKIT обеих комплектаций есть Bluetooth модуль JDY-31 (аналог популярного HC-06). Данный модуль обеспечивает беспроводную связь UART – COM порт, что позволяет использовать его для удобного обмена данными между Arduino и приложением на смартфоне или программой на компьютере. Основные характеристики:
- Рабочая частота: 2.4 GHz
- Интерфейс: UART
- Напряжение питания: 3.6.. 6V
- Ток потребления: 5 мА в режиме поиска, ~8 мА в режиме передачи
- Логический уровень: 3.3V, но вроде как не боится 5V
- Дальность связи: 30м
- Версия Bluetooth: 3.0 SPP
- Чувствительность антенны: -97dbm
- Скорость UART: 9600.. 128000
Официальную документацию на JDY-31 можно открыть по ссылке .
Индикация состояния подключения:
- Ожидание
- Светодиод мигает
- Пин STATE: LOW
- Светодиод горит постоянно
- Пин STATE: HIGH
Input & Output
This shield has a Type-A USB receptacle where you can attach your USB device. The shield features several TinkerKit input/output and communication interfaces. Connecting TinkerKit modules can simplify the creation of a project or a prototype. The on-board connectors are :
- 2 TinkerKit Inputs: IN2 and IN3 (in white), these connectors are routed to the Arduino A2 and A3 analog input pins.
- 2 TinkerKit Outputs: OUT5 and OUT6 (in orange), these connectors are routed to the Arduino PWM outputs on pins 5 and 6.
- 2 TinkerKit TWI: these connectors (4-pin in white) are routed on the Arduino TWI interface. Both connect to the same TWI interface to allow you to create a chain of TWI devices.
SoftwareSerial
В качестве примера подключим модуль по второй схеме (на пины D2 и D3) и загрузим простую программу, которая будет пересылать данные с программного Serial (на пинах D2 и D3, Bluetooth) на аппаратный (который мы можем смотреть через монитор порта в Arduino IDE):
Откроем терминал и монитор порта и можем общаться с компьютером, Arduino выступает в роли посредника и перекидывает данные с Bluetooth на USB и наоборот:
Точно так же можно использовать SoftwareSerial для программ и приложений, если аппаратный UART на Arduino нужен для других целей.
Windows
Для работы на компьютере у вас должен быть Bluetooth адаптер. Заходим в панель управления, добавляем Bluetooth устройство, вводим пин 1234 для сопряжения:
После этого в Arduino IDE появится ещё один COM порт. Загрузим следующий пример, который просто выводит в порт строчку со счётчиком. Модуль подключен к аппаратному UART.
Откроем Bluetooth порт и увидим вывод:
Точно таким же образом можно подключиться к Arduino из своей программы, написанной например на Processing или Python. У меня есть уроки по этой теме:
Подключение к Bluetooth
Смешанные
Некоторые модули имеют цифровой и аналоговый выходы одновременно, пины у них обычно подписаны как DO – цифровой выход и AO – аналоговый. Крутилка на плате настраивает порог срабатывания у цифрового выхода, а аналоговый просто выдаёт “сырой” сигнал с датчика. Опрашиваются как цифровые и аналоговые датчики соответственно.
Общая схема для всех перечисленных выше типов модулей:
Примеры на картинке ниже: датчик вибрации, звука, магнитного поля, влажности почвы и освещённости.
Introduction: Arduino Android USB Serial Communication With OTG Cable
I have made an Arduino based night lamp using photo resistor and problem with that is light levels was different from place to place, when I am testing I have used a value as a threshold to switch on the light and after fixing it in its final position that value is way off.
So, to get the correct value I have to data log the photo resistor reading after fixing the light in place, which was a bit harder, because I cannot leave my laptop outside for data logging for a whole day. So I need a portable solution to my problem.
Another project was, water supply near my place was limited, we get water only at fixed timings. so I made a device to turn on water motor at a fixed timings of day. I haven’t made any user interface for that device to change timings because timings get to change very infrequently. So I need a way to change timings without connecting laptop and recompiling Arduino code, that would be complicated for my parents.
So I decided to make an android app that would send serial data to Arduino to change timings of water motor.
In this instructable, I will explain how to create an android app that can communicate with Arduino by USB OTG cable, If you dont care about how to just download .apk file and install it in your phone to communicate with arduino.
Step 8: Designing Layout
Editing should be done in “content_serial_monitor.xml” file
I have dragged 3 buttons, 1 edit text, 1 text view on to screen then renamed and placed them in correct order.
Open – opens the connection to USB device
Close – closes the connection to USB device
Send – sends data to Arduino
I also added a spinner to select baud rate and auto scroll feature as available in serial monitor
Added this string array to strings.xml file located in app > src > main > res > values > strings.xml
Lets add good icon to our app
right click on the app > new > image asset
now browse the image file you want and set it as ic_launcher it will override the default android icon
Подключение
Модуль подключается к питанию и цифровым пинам МК:
- JDY-31 > Arduino
- GND > GND
- VCC > 5V
- RX > Serial TX
- TX > Serial RX
- Опционально можно подключить EN на любой цифровой пин для отслеживания состояния подключения.
На левой схеме я подключил JDY-31 к аппаратным выводам UART напрямую, на правой – через делитель напряжения, образованный тремя резисторами по 10 кОм (есть в наборе GyverKIT). Такой делитель 2:1 обеспечит около 3.1V на вход RX модуля. Правая схема предпочтительнее, но от прямого подключения модуль ещё ни у кого не выходил из строя, насколько я знаю.
При таком подключении:
- Модуль будет мешать загрузке прошивки (она загружается по RX TX), на момент загрузки нужно отключить провода от пинов RX и TX Arduino
- С модулем можно общаться при помощи штатного Serial, фактически он будет дублировать монитор COM порта
На следующих двух схемах я подключил модуль к любым двум цифровым пинам Arduino:
При таком подключении модуль ничему не мешает, но для работы с ним придётся использовать стандартную библиотеку программного Serial – SoftwareSerial.
Documentation
Step 9: Adding Code to UI Elements
I have attached complete java file Serial_monitor.java first download it and compare it to these small code segments.
First we have create all our UI elements and library variables
next, in onCreate method we can initialise those variables we have created
now we can display Required UI elements on screen, I am calling a method to do this
That method takes boolean argument which specifies weather app is connected to Arduino or not
setEnabledUi(false); // not connected to Arduino so false
Now we displayed everything as needed, now we can add actions to our buttons.
listener method for open button, In this method we cover baudrate setting, autoscroll option and connecting to device.
tvAppend method to write received data to Textview
Listener for close button
Listeener for Send button
That's all everything is completed just connect your phone and run the program it should install and open.
Step 3: Setting Up Android Studio
In the welcome screen you should see configure button, by selecting it you should go to configuration page. There first option would be “SDK Manager”, by clicking that a new window will open by showing the details of current SDK. There would be an option to “launch standalone SDK Manager“, by clicking that good old SDK manager will be opened there you can add new SDK tool as required.
Android studio has an emulator to test the android code, but unfortunately we cannot use that for this scenario because this involves a physical device talking to another device. Instead we can use an android phone itself to debug the code.
Since we are using android device to debug the code we can just download “SDK Platform” of that specific version of the device, first know the android OS version of the phone. In my case I am using Samsung note3 which has 5.0 (lollipop) so just download “SDK Platform” from “Android 5.0.1 (API 21)” that should be enough.
Physical Characteristics
The maximum length and width of the Motor Shield PCB are 2.7 and 2.1 inches respectively. Four screw holes allow the board to be attached to a surface or case. Note that the distance between digital pins 7 and 8 is 160 mil (0.16"), not an even multiple of the 100 mil spacing of the other pins.
Step 1: Downloading Android Studio
File will be an exe file and size would be around a gig
Настройка JDY-31, AT команды
Рассмотрим также настройку самого JDY-31, делается это при помощи AT-команд:
- Чтобы модуль отвечал на команды, он должен находиться в режиме ожидания подключения (светодиод мигает)
- Загружаем в Arduino пустую программу (Файл/Новый). Либо любую другую, в которой не задействован Serial. Либо подключаем пин RST к GND, чтобы микроконтроллер не запустился и нам не мешал
- Подключаем JDY-31 на RX TX Arduino (аппаратный Serial) наоборот: TX > TX, RX > RX
- Открываем монитор порта, ставим текущую скорость модуля (по умолчанию 9600 бод), конец строки NL & CR
Отправляем команду AT+VERSION . Если всё сделано правильно – модуль ответит +VERSION=JDY-31-V1.35,Bluetooth V3.0
Какие ещё есть команды? Полный список есть в документации, давайте разберём:
The Arduino USB Host Shield
The Arduino USB Host Shield allows you to connect a USB device to your Arduino board. The Arduino USB Host Shield is based on the MAX3421E (datasheet), which is a USB peripheral/host controller containing the digital logic and analog circuitry necessary to implement a full-speed USB peripheral or a full-/low-speed host compliant to USB specification rev 2.0 . The shield is TinkerKit compatible, which means you can quickly create projects by plugging TinkerKit modules onto the board.
The following device classes are supported by the shield:
- HID devices: keyboards, mice, joysticks, etc.
- Game controllers: Sony PS3, Nintendo Wii, Xbox360.
- USB to serial converters: FTDI, PL-2303, ACM, as well as certain cell phones and GPS receivers.
- ADK-capable Android phones and tables.
- Digital cameras: Canon EOS, Powershot, Nikon DSLRs and P&S, as well as generic PTP.
- Mass storage devices: USB sticks, memory card readers, external hard drives, etc.
- Bluetooth® dongles.
For information on using the board with the Android OS, you may refer to the documentation about Mega2560 ADK that contains information about Arduino ADK:
Arduino communicates with the MAX3421E using the SPI bus (through the ICSP header). This is on digital pins 10, 11, 12, and 13 on the Uno and pins 10, 50, 51, and 52 on the Mega. On both boards, pin 10 is used to select the MAX3421E. Pins 7, 8 and 9 are used for GPX, INT and RES pins.
You can find here your board warranty information.
Attachments
Step 7: Editing Manifest.xml
Manifest file is like main properties file for our project, It contains permissions details and activity details
Manifest file is located in App > src > main > AndroidManifest.xml
Open the file and add
my manifest file looks like
By adding that line we are asking permission of the user every time we connect a USB device to OTG port
Attachments
Need Help?
- On the Software on the Arduino Forum
- On Projects on the Arduino Forum
- On the Product itself through our Customer Support
Step 5: Creating New Project in Android Studio
First I want to make an app that looks same as Arduino's serial monitor window.
In the welcome screen of android studio there will be an option to create new project, select “Start a new android studio project”
In the next page give your project name and location, then click next
In the next page select the platform for which we are developing application and select correct version of your phone and click next
In the next page by default “Blank activity” will be selected and leave it as it is for now. And in the next page name your activity (your main screen in the app).
Then click finish, newly created project will be opened in android studio and we can work on it now
Цифровые
Простые цифровые модули имеют два пина питания и пин с логическим выходом, он может быть подписан как OUT, S, D или DO. Плата таких модулей имеет синий цвет и содержит типовую схему – крутилка (синий корпус) и операционный усилитель (чёрная микросхема рядом с крутилкой). Такой модуль выдаёт только два состояния: датчик “сработал” и “не сработал”, на цифровом выходе появляется соответственно VCC (напряжение питания) или 0 Вольт, т.е. высокий и низкий цифровой сигнал. Крутилка на плате позволяет настроить порог срабатывания. Такие датчики подключаются к питанию и любому цифровому пину (GPIO). Опрашиваются стандартными средствами Arduino.
Примеры на картинке ниже: датчик звука, температуры, освещённости, приближения, магнитного поля.
Attachments
Getting Started
In the Getting Started section you can find all the information you need to configure your board. Use the Arduino Software (IDE) to start tinkering with coding and electronics.
Attachments
Читайте также:
- Какая карта памяти лучше для видеорегистратора slimtec alpha xs
- Не удается продолжить выполнение кода поскольку система не обнаружила common dll mafia 2
- Сбой инициализации dll цп ошибка 2 будет отображаться не вся информация
- Можно ли в пост играть в компьютерные игры
- Точка входа в процедуру не найдена в библиотеке dll архикад 21