<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Электронный научно-практический журнал «Современная техника и технологии» &#187; Bluetooth</title>
	<atom:link href="http://technology.snauka.ru/tags/bluetooth/feed" rel="self" type="application/rss+xml" />
	<link>https://technology.snauka.ru</link>
	<description></description>
	<lastBuildDate>Fri, 30 Jan 2026 18:56:12 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Технология Bluetooth</title>
		<link>https://technology.snauka.ru/2017/02/11943</link>
		<comments>https://technology.snauka.ru/2017/02/11943#comments</comments>
		<pubDate>Thu, 16 Feb 2017 15:11:17 +0000</pubDate>
		<dc:creator>Дувалкина Алена Васильевна</dc:creator>
				<category><![CDATA[Общая рубрика]]></category>
		<category><![CDATA[Bluetooth]]></category>
		<category><![CDATA[беспроводная связь]]></category>
		<category><![CDATA[технология]]></category>

		<guid isPermaLink="false">https://technology.snauka.ru/2017/02/11943</guid>
		<description><![CDATA[Технология беспроводной связи Bluetooth является недорогим радиоинтерфейсом с мощностью передатчика около 1 мВт, предназначенным для организации персональных сетей. С помощью Bluetooth в режиме реального времени можно осуществить передачу звуковых сигналов и цифровых данных [1]. Функция Bluetooth заключается в обеспечении беспроводного взаимодействия между электронными устройствами. Для решения этой задачи используют специальные небольшие приемопередатчики, которые могут быть [...]]]></description>
			<content:encoded><![CDATA[<p>Технология беспроводной связи Bluetooth является недорогим радиоинтерфейсом с мощностью передатчика около 1 мВт, предназначенным для организации персональных сетей. С помощью Bluetooth в режиме реального времени можно осуществить передачу звуковых сигналов и цифровых данных [1]. Функция Bluetooth заключается в обеспечении беспроводного взаимодействия между электронными устройствами. Для решения этой задачи используют специальные небольшие приемопередатчики, которые могут быть интегрированы в само устройство, или подключены к ним через свободный порт. В результате пользователи с помощью этого устройства избавляются от необходимости применять соединительные провода.</p>
<p>Изначально радиоинтерфейс обладал дальностью действия равной 10 метрам. Этого расстояния хватало только для взаимодействия устройств в пределах комнаты. Но современными спецификациями Bluetooth уже определяются и вторая зона взаимодействия &#8211; около 100 м, позволяющая покрыть стандартный дом или офис. Стоит отметить, что для Bluetooth в настоящее время нет необходимости нахождения соединяемых устройств в зоне прямой видимости друг друга. Допускается что их могут разделять различные препятствия (мебель, стены и т. п.), которые не экранируют высокочастотные радио-сигналы.</p>
<p>Для работы устройства Bluetooth в настоявшее время используется диапазон 2,45 ГГц, который предназначен в первую очередь для работы медицинских, научных и промышленных приборов.</p>
<p>Для канала радиочастот Bluetooth характерна полная пропускная способностью около 1 Мбит/с, что позволяет обеспечить передачу данных на скоростях 723,3 кбит/с с помощью создание асимметричного канала. При использовании Bluetooth- соединение появляется возможность передачи до 3 дуплексных аудиоканалов в каждом направлении со скоростью 64 кбит/с. Кроме того, также используется комбинированная передача данных и звука.</p>
<p>Большинство современных устройств, которые используют технологию Bluetooth, на уровне протокола защищены шифрованием передачи данных.</p>
<p>Технология bluetooth подразумевает в себе многоточечный радиоканал, который управляется многоуровневым протоколом.</p>
<p>Организация локальной радиосети осуществляется по принципу множественных пикосетей (PAN), которые между собой взаимодействуют по стандартному радиоканалу. В этом случае в пикосетях устройства Bluetooth осуществляется взаимодействие по принципу master-slave. Предпочтительно статус &#8220;master” должно иметь наиболее мощное устройство, которое устанавливает соединения с несколькими другими, и которое осуществляет координацию посылки и приема данных в рамках образованной пикосети.</p>
<p>В пикосети может находиться до 7 активных slaves- устройств. Стоит отметить, что кроме активных допускается существование и множества неактивных устройств, которые не могут обмениваться данными с активными устройствами, пока заняты все каналы. Однако такие неактивные устройства, остаются синхронизированы с Bluetooth. При условии, что в радиусе действия &#8220;ведущего&#8221; оказалось более 7 активных устройств, то происходит формирование второй пикосети, управляемая первой. В этом случае роль master будет выполнять одно из slave устройств первой сети. Таким образом, наращивание сети может идти неограниченно долго.</p>
<p>Пикосетей во множественном количестве осуществляют взаимодействие друг с другом множество, формируя при этом распределенную сеть (scatternet), в рамках которой разные устройства могут являться для различных пикосетей одновременно master и slave. Также они могут выполнять роль slave для разных сетей. Более того, при необходимости у любого slave в пикосети всегда есть возможность стать master. В этом случае старый master станет выполнять роль одного из slave-устройств Таким образом, в scatternet может осуществляться объединение любого количества устройств Bluetooth. Соответственно логические связи будут образовываться и изменяться, как это потребуется.</p>
<p>В Bluetooth-технологии используется метод скачкообразной перестройки частоты, благодаря чему взаимодействие различных пикосетей друг с другом возможно с минимальным риском взаимных помех. При этом у пикосети, входящих в один scatternet, должны быть в наличии  разные каналы связи. Другими словами, работать они должны на различных частотах. Также важным для пикосетей иметь отличающейся друг от друга порядок смены каналов, который будет определятся в виде последовательности скачков в стандарте параметра FHSS.</p>
<p>Одним из важнейших свойств Bluetooth-технологии является то, что в пикосетях соединения происходит автоматически, при условии нахождения различных устройств в пределах досягаемости. Это обстоятельство является большим преимуществом для дальнейшей разработке устройств, использующих bluetooth. Для того, чтобы реализовать такой автоматизм, работа любых Bluetooth-устройств в незнакомом окружении будет начинаться с режима поиска других устройств. При этом на начальном этапе посылается специальный запрос, ответ на который, однако, будет зависеть не только от того имеются ли в наличия других активных Bluetooth-устройств в радиусе связи, но и от режима их работы. На этом этапе возможным являются три основных режима:</p>
<p>1) устройства на полученные запросы отвечают всегда, так называемый режим discoverable mode;</p>
<p>2) устройства на полученные запросы отвечают только ограниченное время, так называемый режим limited discoverable mode;</p>
<p>3) устройства на полученные новые запросы не отвечают, так называемый режим non-discoverable mode.</p>
<p>В первом случае обнаруженное устройство настроить параметры соединения не позволяет. Следовательно, обмен данными с таким устройством становится невозможен. Во втором случае &#8211; связавшимся Bluetooth-устройствами устанавливаются между собой соглашения о параметрах соединения. Такими параметрами являются:</p>
<p>- определенный размер страниц данных,</p>
<p>- диапазон частот, используемый в работе устройств,</p>
<p>- порядок смены частот в устройствах.</p>
<p>По окончании процесса обнаружения в новом Bluetooth-устройстве появляется набор адресов для идентификации. Для каждого устройство Bluetooth характерен уникальный сетевой адрес (48 бит), а также наличие «имен» всех доступных устройств. Затем происходит определение услуг (service discovery), которые предоставляются этими устройствами.</p>
<p>В Bluetooth-устройствах, в качестве еще одной меры защиты, предусмотрено осуществление кодировки передаваемых данных, а также выполнение процедуры авторизации устройств. В результате возможными являются три уровня защиты:</p>
<p>минимальная, когда кодировка данных осуществляется с использованием общего ключа; в этом случае прием данных может осуществляться любыми устройствами без ограничений;</p>
<p>защита на уровне устройств, когда непосредственно в чипе осуществляется прописывание уровня доступа, в соответствии с которым у каждого устройства имеется возможность получать определенные данные от других устройств;</p>
<p>защита на уровне сеанса связи, когда кодировка данных осуществляется 64/128-битными случайными числами, которые хранятся в каждой паре устройств, участвующих в конкретном сеансе связи.</p>
<p>Технологии Bluetooth находят свое применение в различных практических сферах. Так одним из современных направлений является использование Bluetooth в медицине.</p>
<p>Для современных медицинских устройств с автономным питанием, все более распространенным является использование беспроводных технологий для передачи данных и осуществления управления [2]. При этом Bluetooth – это одна из наиболее часто встречающееся в этой области беспроводная сетевая технология.</p>
<p>Самое широкое распространение технология Bluetooth получило в мобильных медицинских устройствах в связи с высокой скоростью передачи данных и неплохой энергоэффективности.</p>
<p>Стандарт Bluetooth LE изначально был предназначен для применение в системах, где осуществления мониторинга возможно исключительно в условиях автономного питания и низкого энергопотребление. Эти условия являются очень важными для медицинского оборудования, так как в таком случае обеспечивается требуемое время диагностического наблюдения. Кроме того, такие приборы очень удобно использовать, в связи с  тем, что они могут работать длительное время без подзарядки и смены элементов питания.</p>
<p>Низкое потребление Bluetooth LE обеспечивает возможность создания беспроводных медицинских датчиков [4].</p>
<p>У технологии Bluetooth имеется достаточно прочная система защиту от несанкционированного доступа. В случае правильного построения сети в качестве наиболее вероятной угрозы безопасности следует рассматривать нарушение физической целостности, являющейся нехарактерным для проводных сетей. При этом, в сетях Bluetooth без каких-либо ограничений могут быть применены те средства обеспечения безопасности, которые предоставляются операционными системами.</p>
]]></content:encoded>
			<wfw:commentRss>https://technology.snauka.ru/2017/02/11943/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Организация соединения и обмен данными по bluetooth между Arduino и iOS-приложением</title>
		<link>https://technology.snauka.ru/2017/05/13480</link>
		<comments>https://technology.snauka.ru/2017/05/13480#comments</comments>
		<pubDate>Wed, 24 May 2017 12:35:57 +0000</pubDate>
		<dc:creator>Трушин Александр Николаевич</dc:creator>
				<category><![CDATA[Общая рубрика]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Bluetooth]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[command]]></category>
		<category><![CDATA[Daemon]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[код]]></category>
		<category><![CDATA[команда]]></category>
		<category><![CDATA[разработка]]></category>
		<category><![CDATA[управляющая программа]]></category>

		<guid isPermaLink="false">https://technology.snauka.ru/2017/05/13480</guid>
		<description><![CDATA[Предисловие Развитие технологий позволило уместить на одной небольшой плате несколько системных устройств, устройство получило название микроконтроллер. Одним из таких монокристаллических микрокомпьютеров является Arduino, которое состоит из микроконтроллера, установленного на печатной плате и минимально необходимых компонентов для работы. Для создания нового электронного устройства понадобится плата Arduino, кабель связи и компьютер. Для программного обеспечения в виде управляющей [...]]]></description>
			<content:encoded><![CDATA[<p><strong style="text-align: justify;">Предисловие</strong></p>
<p style="text-align: justify;"><span>Развитие технологий позволило уместить на одной небольшой плате несколько системных устройств, устройство получило название микроконтроллер. Одним из таких монокристаллических микрокомпьютеров является Arduino, которое состоит из микроконтроллера, установленного на печатной плате и минимально необходимых компонентов для работы. Для создания нового электронного устройства понадобится плата Arduino, кабель связи и компьютер. Для программного обеспечения в виде управляющей программы базовые знания варианта языка С/С++ для микроконтроллеров, поскольку добавлены компоненты, разрешающие писать программы без знания аппаратной части [1 Стр.18-19].<br />
</span></p>
<p style="text-align: justify;"><span><strong>Обмен данными через bluetooth</strong><br />
</span></p>
<p style="text-align: justify;"><span>Фактически модуль Bluetooth — это модем, поскольку он преобразует сигнал из одной среды в другую. Передаваемый электроимпульсами по проводникам последовательный TTL-сигнал преобразуется в радиосигнал в Bluetooth приёмопередающем устройстве и наоборот, из радиосигнала преобразует в электроимпульсный сигнал. Функция модема — устанавливать соединение с другими модемами для обмена информацией и разъединения канала связи. Для выполнения функций соединения в модемы заложено два рабочих режима:<br />
</span></p>
<p style="text-align: justify;"><span>командный – обмен информацией при данном режиме происходит с самим модемом;<br />
</span></p>
<p style="text-align: justify;"><span>режим данных – обмен информацией происходит через сам модем.<br />
</span></p>
<p style="text-align: justify;"><span>Модемы Bluetooth по своему принципу работы аналогичны любым другим типам модемов и в них заложен набор команд протокола Hayes АТ, аналогичный для телефонных модемов. Команды данного протокола прописываются в символах ASCII. Модемы на протоколе Hayes АТ работают в режиме данных и командном, переключение режимов осуществляется строкой +++ [2].<br />
</span></p>
<p style="text-align: justify;"><span><strong>Микроконтроллеры и управление приложением</strong><br />
</span></p>
<p style="text-align: justify;"><span>Микроконтроллер — микросхема с несколькими контактами «вход» и «выход». Управление через микросхему осуществляется по простейшему принципу и имеет три основных этапа:<br />
</span></p>
<p style="text-align: justify;"><span>1) к входам подключаются различные датчики, фиксирующие движение, звук, уровень освещения и т. д.<br />
</span></p>
<p style="text-align: justify;"><span>2) к выходам подключаются устройства управления, такие как системы освещения, динамики, электроприводы и т. д.<br />
</span></p>
<p style="text-align: justify;"><span>3) пишется программа управления микроконтроллером и приложением.<br />
</span></p>
<p style="text-align: justify;"><span>Управляющая программа:<br />
</span></p>
<p style="background: white;"><span style="color: #557799;">#include &lt;SPI.h&gt; <span style="color: #333333;"><br />
</span></span></p>
<p style="background: white;"><span style="color: #557799;">#include &lt;SD.h&gt;<span style="color: #333333;"><br />
</span></span></p>
<p style="background: white;"><span style="color: #008800;"><strong>const</strong><span style="color: #333333;"><br />
<span style="color: #333399;"><strong>int</strong><span style="color: #333333;"> chipSelect = <span style="color: #0000dd;"><strong>4</strong><span style="color: #333333;">;<br />
</span></span></span></span></span></span></p>
<p style="background: white;"><span style="color: #333399;"><strong>void</strong><span style="color: #333333;"><br />
<span style="color: #0066bb;"><strong>setup</strong><span style="color: #333333;">()<br />
</span></span></span></span></p>
<p style="background: white;"><span style="color: #333333;">{</span></p>
<p style="background: white;"><span style="color: #333333;"> <span style="color: #888888;">/* Open serial communications and wait for port to open: */<span style="color: #333333;"><br />
</span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> Serial.begin(<span style="color: #0000dd;"><strong>9600</strong><span style="color: #333333;">);</span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> <span style="color: #008800;"><strong>while</strong><span style="color: #333333;"> (!Serial) {} <span style="color: #888888;">/* wait for serial port to connect. Needed for Leonardo only */<span style="color: #333333;"><br />
</span></span></span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> Serial.print(<span style="background-color: #fff0f0;">&#8220;Initializing SD card&#8230;&#8221;</span>);</span></p>
<p style="background: white;"><span style="color: #333333;"> <span style="color: #888888;">/* see if the card is present and can be initialized: */<span style="color: #333333;"><br />
</span></span></span></p>
<p style="background: white;"><span style="color: #333333;"><br />
<span style="color: #008800;"><strong>if</strong><span style="color: #333333;"> (!SD.begin(chipSelect)) {<br />
</span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> Serial.println(<span style="background-color: #fff0f0;">&#8220;Card failed, or not present&#8221;</span>);</span></p>
<p style="background: white;"><span style="color: #333333;"> <span style="color: #888888;">// don&#8217;t do anything more:</span></span></p>
<p style="background: white;"><span style="color: #333333;"> <span style="color: #008800;"><strong>return</strong><span style="color: #333333;">;<br />
</span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> }<br />
</span></p>
<p style="background: white;"><span style="color: #333333;"> Serial.println(<span style="background-color: #fff0f0;">&#8220;card initialized.&#8221;</span>);<br />
</span></p>
<p style="background: white;"><span style="color: #333333;">}<br />
</span></p>
<p style="background: white;"><span style="color: #333399;"><strong>void</strong><span style="color: #333333;"><br />
<span style="color: #0066bb;"><strong>loop</strong><span style="color: #333333;">()<br />
</span></span></span></span></p>
<p style="background: white;"><span style="color: #333333;">{</span></p>
<p style="background: white;"><span style="color: #333333;"> <span style="color: #888888;">// make a string for assembling the data to log:<span style="color: #333333;"><br />
</span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> String dataString = <span style="background-color: #fff0f0;">&#8220;&#8221;</span>;</span></p>
<p style="background: white;"><span style="color: #333333;"> <span style="color: #888888;">// read three sensors and append to the string:</span></span></p>
<p style="background: white;"><span style="color: #333333;"> <span style="color: #008800;"><strong>for</strong><span style="color: #333333;"> (<span style="color: #333399;"><strong>int</strong><span style="color: #333333;"> analogPin = <span style="color: #0000dd;"><strong>0</strong><span style="color: #333333;">; analogPin &lt; <span style="color: #0000dd;"><strong>3</strong><span style="color: #333333;">; analogPin++) {</span></span></span></span></span></span></span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> <span style="color: #333399;"><strong>int</strong><span style="color: #333333;"> sensor = analogRead(analogPin);<br />
</span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> dataString += String(sensor);</span></p>
<p style="background: white;"><span style="color: #333333;"> <span style="color: #008800;"><strong>if</strong><span style="color: #333333;"> (analogPin &lt; <span style="color: #0000dd;"><strong>2</strong><span style="color: #333333;">) {<br />
</span></span></span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> dataString += <span style="background-color: #fff0f0;">&#8220;,&#8221;</span>;<br />
</span></p>
<p style="background: white;"><span style="color: #333333;"> }<br />
</span></p>
<p style="background: white;"><span style="color: #333333;">}<br />
</span></p>
<p style="text-align: justify;"><span><strong>Arduino<br />
</strong></span></p>
<p style="text-align: justify;"><span>Arduino — открытая платформа, состоящая из платы микроконтроллера и программного обеспечения (ПО) – IDE (Integrated Development Environment). ПО для платы пишется в приложениях на компьютере и через канал соединения с платой загружается на устройство.<br />
</span></p>
<p style="text-align: justify;"><span>Основа программы под Arduino состоит из двух команд: setup() и loop(). Перед командой setup() пишутся переменные, задействуются библиотеки. Команда setup() выполняется только один раз после каждого подключения или сброса платы под управлением Arduino. Данная команда запускает переменные и работу портов входа и выхода платы. Данная команда обязательна для управляющей программы. Команда loop() предназначена для циклического выполнения команд, которые прописываются в её теле. Пример реализации данных команд в программе:<br />
</span></p>
<p style="background: white;"><span style="color: #333333;">setup()<br />
</span></p>
<p style="background: white;"><span style="color: #333333;">{<br />
</span></p>
<p style="background: white;"><span style="color: #333333;"> Serial.begin(<span style="color: #0000dd;"><strong>9600</strong><span style="color: #333333;">);<br />
</span></span></span></p>
<p style="background: white;"><span style="color: #333333;">}<br />
</span></p>
<p style="background: white;"><span style="color: #333333;">loop ()<br />
</span></p>
<p style="background: white;"><span style="color: #333333;">{<br />
</span></p>
<p style="background: white;"><span style="color: #333333;"> Serial.println(millis());<br />
</span></p>
<p style="background: white;"><span style="color: #333333;"> delay(<span style="color: #0000dd;"><strong>1000</strong><span style="color: #333333;">);<br />
</span></span></span></p>
<p style="background: white;"><span style="color: #333333;">}<br />
</span></p>
<p style="background: white;"><span>[1стр.47]. </span><span style="color: #333333;"><br />
</span></p>
<p style="text-align: justify;"><span>Набор кодов, сгруппированный в блок и имеющий имя, прописанное на данном коде, называется функцией. Выполнение набора кодов осуществляется при вызове функции. Для снижения ошибок в программе и выполнения повторяющихся команд прописываются различные функции. При написании функции в начале обозначается её предназначение. К примеру, значение, которое возвращается функцией – целое число (int). У функций, которые не возвращают значение, имеют тип – пусто (void). За функцией пишется её имя и в скобках параметры передаваемые функцией. К примеру:<br />
</span></p>
<p style="background: white;"><span style="color: #333333;">type <span style="color: #0066bb;"><strong>functionName</strong><span style="color: #333333;"> (parameters)<br />
</span></span></span></p>
<p style="background: white;"><span style="color: #333333;">{<br />
</span></p>
<p style="background: white;"><span style="color: #333333;"> statements;<br />
</span></p>
<p style="background: white;"><span style="color: #333333;">}<br />
</span></p>
<p style="text-align: justify;"><span>К цельному типу относится функция задержки или паузы delay(Val).<br />
</span></p>
<p style="text-align: justify;"><span>Скобки {} ставятся в начале и в конце функций. К примеру:<br />
</span></p>
<p style="background: white;"><span style="color: #333333;">type <span style="color: #0066bb;"><strong>function</strong><span style="color: #333333;">()<br />
</span></span></span></p>
<p style="background: white;"><span style="color: #333333;">{<br />
</span></p>
<p style="background: white;"><span style="color: #333333;"> statements;<br />
</span></p>
<p style="background: white;"><span style="color: #333333;">}<br />
</span></p>
<p style="text-align: justify;"><span>Количество открывающих скобок должно быть равным количеству закрывающих, иначе будут критические ошибки в программе. В Arduino есть удобная функция проверки парности скобок. Осуществляется проверка двумя способами: при выделении любой одной скобки парная скобка высвечивается, выделение точки за скобкой также подсвечивает пару скобок [3].<br />
</span></p>
<p style="text-align: justify;"><span>Обмен данными микроконтроллера с компьютером происходит через проводной интерфейс или по радиосигналу, обмен информацией осуществляется через библиотеку. В Arduino установлены стандартные библиотеки, но иногда их функции не рассчитаны на работу управляемым через микроконтроллер оборудованием. При необходимости устанавливаются дополнительные библиотеки. В папке &#8220;Libraries&#8221; установлены стандартные библиотеки, дополнительные библиотеки устанавливаются в папку libraries.<br />
</span></p>
<p style="text-align: justify;"><span><strong>Arduino и iOS-приложение </strong><br />
</span></p>
<p style="text-align: justify;"><span>Для того чтобы интегрировать Arduino с Apple (iPad или iPhone) понадобится приложение Arduino Code и среда разработки Blynk[4]. Arduino Code устанавливается на iPad или iPhone через данное приложение осуществляется интеграция устройств iOS и Arduino. Для написания управляющей программы платы Arduino будет использоваться Blynk. Помимо облачной среды для работы, у Blynk есть возможностью загрузки приложений на компьютер. Поскольку в Blynk для разработки имеются версии для iOS помимо Android, данное приложение было выбрано для интеграции с Apple. Немаловажно, что Blynk может связываться с устройствами по Bluetooth.<br />
</span></p>
<p style="text-align: justify;"><span>На первом этапе соединяем программируемую плату со смартфоном, через поддерживаемые интерфейсы: SeeedStudio Ethernet Shield V2.0 (W5200), Official Ethernet Shield (W5100), RN-XV WiFly, ESP8266, Official Arduino WiFi Shield, ESP8266 (WiFi modem), Adafruit CC3000 WiFi, ENC28J60 и USB (Serial). Интеграция Arduino с компьютерами Macintosh (Apple) осуществляется через меню Tools. Далее в меню выбирается строка Serial Port, далее подключение осуществляется через порт, у которого название начинается с /dev/cu.usbserial. На втором этапе в приложении добавляем виджеты (программы), настройку адресов выводов и при необходимости прописываем код. Для разработки виджета применяется drag&#8217;n'drop. В Blynk создаются программы к платам Arduino: Due, Mini, Uno и для других плат Arduino. Программа Arduino Code устанавливается на компьютер и для написания команд понадобится автодополнение (code complete). Приложение можно скачать из App Store&#8217;а. При загрузке программы на плату Arduino необходимо отключить Bluetooth модуль, поскольку связь с микроконтроллером осуществляется через один и тот же порт. В качестве источника питания для микроконтроллера будет использоваться блок питания на 9 Вольт. Также в приложении Arduino Manager есть возможность установить готовый widget. Для управления устройством замка подойдёт widget Rotary Switch. Этот widget по своей сути поворотный переключатель (как и следует из названия). Имеет два положения off/on. Простой и удобный widget для управления устройством, у которого только два режима закрыто/открыто.<br />
</span></p>
<p style="text-align: justify;"><span><strong>Создаём электронный замок из серии &#8220;умный дом&#8221;</strong><br />
</span></p>
<p style="text-align: justify;"><span>Для соединения платы Arduino будет использоваться плата Bluetooth HM-10. Данный модуль работает в режимах Master и Slave. Совместим с более старыми версиями под Arduino, такими как: HC-05;-06;-07. Для того чтобы устройства Apple могли обнаруживать Bluetooth сигнал от платы необходимо установить программу — LightBlue.<br />
</span></p>
<p style="text-align: justify;"><span>К плате под управлением Arduino подключаем привод, который будет управлять ригелем замка или электромагнитную задвижку, которая и будет выполнять функцию запирания двери. В данном случае программа управления будет негромоздкой и выглядеть следующим образом:<br />
</span></p>
<p style="background: white;"><span style="color: #557799;">#include &lt;Servo.h&gt;<span style="color: #333333;"><br />
</span></span></p>
<p style="background: white;"><span style="color: #333333;">Servo myservo;<br />
</span></p>
<p style="background: white;"><span style="color: #333399;"><strong>int</strong><span style="color: #333333;"> pos = <span style="color: #0000dd;"><strong>0</strong><span style="color: #333333;">;<br />
</span></span></span></span></p>
<p style="background: white;"><span style="color: #333399;"><strong>void</strong><span style="color: #333333;"><br />
<span style="color: #0066bb;"><strong>setup</strong><span style="color: #333333;">() {<br />
</span></span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> myservo.attach(<span style="color: #0000dd;"><strong>10</strong><span style="color: #333333;">); <span style="color: #888888;">/* Назначаем 10 пин на управление приводом */<span style="color: #333333;"><br />
</span></span></span></span></span></p>
<p style="background: white;"><span style="color: #333333;">}<br />
</span></p>
<p style="background: white;"><span style="color: #333399;"><strong>void</strong><span style="color: #333333;"><br />
<span style="color: #0066bb;"><strong>loop</strong><span style="color: #333333;">() {</span></span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> <span style="color: #008800;"><strong>for</strong><span style="color: #333333;">(pos = <span style="color: #0000dd;"><strong>0</strong><span style="color: #333333;">; pos &lt; <span style="color: #0000dd;"><strong>90</strong><span style="color: #333333;">; pos += <span style="color: #0000dd;"><strong>1</strong><span style="color: #333333;">)<span style="color: #888888;">/* движение от 0° до 90° */<span style="color: #333333;"><br />
</span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> {<br />
</span></p>
<p style="background: white;"><span style="color: #333333;"> myservo.write(pos);<br />
</span></p>
<p style="background: white;"><span style="color: #333333;"> delay(<span style="color: #0000dd;"><strong>25</strong><span style="color: #333333;">); <span style="color: #888888;">/* Указываем время с задержкой (25 мс) для перехода в другое положение */<span style="color: #333333;"><br />
</span></span></span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> }</span></p>
<p style="background: white;"><span style="color: #333333;"> <span style="color: #008800;"><strong>for</strong><span style="color: #333333;">(pos = <span style="color: #0000dd;"><strong>90</strong><span style="color: #333333;">; pos &gt; <span style="color: #0000dd;"><strong>0</strong><span style="color: #333333;">; pos -= <span style="color: #0000dd;"><strong>1</strong><span style="color: #333333;">) <span style="color: #888888;">/* Движение от 90° до 0° */<span style="color: #333333;"><br />
</span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> {<br />
</span></p>
<p style="background: white;"><span style="color: #333333;"> myservo.write(pos);<br />
</span></p>
<p style="background: white;"><span style="color: #333333;"> delay(<span style="color: #0000dd;"><strong>25</strong><span style="color: #333333;">); <span style="color: #888888;">/* задержка 25мс для достижения обратного положения */<span style="color: #333333;"><br />
</span></span></span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> }<br />
</span></p>
<p style="background: white;"><span style="color: #333333;">}<br />
</span></p>
<p style="text-align: justify;"><span>Связь будет осуществляться через приложение Arduino Manager, которое напрямую управляет контроллером через операционную систему iOS. При необходимости меняем настройку скорости подключения платы Bluetooth HM-10.<br />
</span></p>
<p style="background: white;"><span style="color: #888888;">// Connect HM10 <span style="color: #333333;"><br />
</span></span></p>
<p style="background: white;"><span style="color: #888888;">// Pin 7/TXD<span style="color: #333333;"><br />
</span></span></p>
<p style="background: white;"><span style="color: #888888;">// Pin 8/RXD <span style="color: #333333;"><br />
</span></span></p>
<p style="background: white;"><span style="color: #557799;">#if defined(ARDUINO_AVR_UNO)<span style="color: #333333;"><br />
</span></span></p>
<p style="background: white;"><span style="color: #557799;">#include &lt;SoftwareSerial.h&gt;<span style="color: #333333;"><br />
</span></span></p>
<p style="background: white;"><span style="color: #333333;">SoftwareSerial <span style="color: #0066bb;"><strong>mySerial</strong><span style="color: #333333;">(<span style="color: #0000dd;"><strong>7</strong><span style="color: #333333;">, <span style="color: #0000dd;"><strong>8</strong><span style="color: #333333;">); <span style="color: #888888;">// TX, RX<span style="color: #333333;"><br />
</span></span></span></span></span></span></span></span></span></p>
<p style="background: white;"><span style="color: #557799;">#endif<span style="color: #333333;"><br />
</span></span></p>
<p style="background: white;"><span style="color: #557799;">#if defined(ARDUINO_AVR_MEGA2560)<span style="color: #333333;"><br />
</span></span></p>
<p style="background: white;"><span style="color: #557799;">#define mySerial Serial3<span style="color: #333333;"><br />
</span></span></p>
<p style="background: white;"><span style="color: #557799;">#endif<span style="color: #333333;"><br />
</span></span></p>
<p style="background: white;"><span style="color: #557799;">#define DEVICE_SPEED 9600<span style="color: #333333;"><br />
</span></span></p>
<p style="background: white;"><span style="color: #557799;">#define CONSOLE_SPEED 9600<span style="color: #333333;"><br />
</span></span></p>
<p style="background: white;"><span style="color: #333399;"><strong>void</strong><span style="color: #333333;"><br />
<span style="color: #0066bb;"><strong>setup</strong><span style="color: #333333;">() {<br />
</span></span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> Serial.begin(CONSOLE_SPEED);<br />
</span></p>
<p style="background: white;"><span style="color: #333333;"> pinMode(<span style="color: #0000dd;"><strong>7</strong><span style="color: #333333;">, OUTPUT);<br />
</span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> pinMode(<span style="color: #0000dd;"><strong>8</strong><span style="color: #333333;">, INPUT);<br />
</span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> mySerial.begin(DEVICE_SPEED);<br />
</span></p>
<p style="background: white;"><span style="color: #333333;"> Serial.println(<span style="background-color: #fff0f0;">&#8220;Ready&#8221;</span>);<br />
</span></p>
<p style="background: white;"><span style="color: #333333;">}<br />
</span></p>
<p style="background: white;"><span style="color: #333399;"><strong>void</strong><span style="color: #333333;"><br />
<span style="color: #0066bb;"><strong>loop</strong><span style="color: #333333;">() {</span></span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> <span style="color: #333399;"><strong>char</strong><span style="color: #333333;"> c;</span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> <span style="color: #008800;"><strong>if</strong><span style="color: #333333;"> (Serial.available()) {<br />
</span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> c = Serial.read();<br />
</span></p>
<p style="background: white;"><span style="color: #333333;"> mySerial.print(c);<br />
</span></p>
<p style="background: white;"><span style="color: #333333;"> }</span></p>
<p style="background: white;"><span style="color: #333333;"> <span style="color: #008800;"><strong>if</strong><span style="color: #333333;"> (mySerial.available()) {<br />
</span></span></span></p>
<p style="background: white;"><span style="color: #333333;"> c = mySerial.read();<br />
</span></p>
<p style="background: white;"><span style="color: #333333;"> Serial.print(c);<br />
</span></p>
<p style="background: white;"><span style="color: #333333;"> }<br />
</span></p>
<p style="background: white;"><span style="color: #333333;">}<br />
</span></p>
<p style="text-align: justify;"><span><strong>Выводы</strong><br />
</span></p>
<p style="text-align: justify;"><span>Для создания подобного запорного механизма, несомненно, понадобится плата Arduino, сервоприводы и написание управляющей программы и других компонентов в зависимости от поставленной задачи. Управление устройством будет осуществляться на iPad или iPhone по Bluetooth через приложение Arduino Manager. Данное приложение загружается с App Store и предназначено для управления множеством устройств. Имеет лёгкую настройку управления и датчик обратной связи. Генератор кода позволяет создавать коммуникационную инфраструктуру связи между платой Arduino и устройством iOS и генерировать код для каждого выбранного устройства. Также есть возможность воспользоваться готовым widget-ом, для управления устройством.<br />
</span></p>
<p style="text-align: justify;"><span>Arduino даёт возможность экспериментировать и применять данный микроконтроллер для различных устройств. Приложение Arduino Manager управлять этими устройствами с iPad или iPhone.</span></p>
]]></content:encoded>
			<wfw:commentRss>https://technology.snauka.ru/2017/05/13480/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
