Оглавление:
- Шаг 1. Что вам нужно
- Шаг 2: Подготовка модуля Bluetooth
- Шаг 3: Установка деталей
- Шаг 4: Сопряжение
- Шаг 5: Программное обеспечение
- Шаг 6: Тест
Видео: Датчик натриевой пыли на Android: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Год назад у моего друга был семинар выходного дня по мониторингу окружающей среды. Целью семинара было создание датчика пыли, подключенного к плате Raspberry Pi, для размещения данных измерений на каком-либо сервере, который предоставлял часто обновляемые карты концентрации пыли. Мой друг спросил, есть ли способ получить данные датчика прямо на его смартфон для мониторинга и регистрации. Итак, я покопался в Интернете в поисках таблицы данных и увидел, что датчик имеет простой интерфейс UART с протоколом 9600Baud 8N1. Но как подключить UART к смартфону? Что ж, это просто. Мне просто пришлось использовать один из тех вездесущих маленьких модулей Bluetooth, которые обеспечивают эмулированный компорт на Android. Теперь посмотрим, как я это сделал.
Шаг 1. Что вам нужно
Вам понадобятся следующие детали
- Ответный разъем JST XH 7-контактный для интерфейса Sodial с проводами. Купил на Ebay.
- Модуль Bluetooth HC05 или 06, совместимый с разъемом UART
- USB-последовательный преобразователь с интерфейсом уровня TTL. Мы используем это, чтобы дать BT-модулю уникальное имя.
- Датчик пыли Sodial SDS011. Я получил свой с Ebay
- кусок верёвки
- Разъем USB-B
- провод
- Кусок дерева, на котором все крепится
Тогда вам понадобятся несколько простых инструментов:
- Ножовка по дереву
- пинцет
- припой и припой
- кусачки
- Пистолет для горячего клея
- Кусок силиконовой гильзы 8 мм (не на фото)
Вы можете скачать техническое описание Sodial SDS011 здесь.
Шаг 2: Подготовка модуля Bluetooth
BT-модуль имеет интерфейс UART с TTL-уровнем. Его можно перенастроить с помощью AT-команд, как мы делали это с интернет-модемами в древние времена. Чтобы подключить его к терминальной программе на вашем компьютере, вам необходимо адаптировать UART к вашему компьютеру. Я использовал преобразователь USB-RS232, который купил в Amazon. Я применил разъем для BT-модуля и проложил питание 3,3 В и GND от преобразователя к BT-модулю. Затем я подключил соответствующие линии TxD и RxD кроссовером. TxD из USB-конвертера в RxD из BT-модуля и наоборот.
У меня есть Linux-машина, и я использовал cutecom. После подключения USB-преобразователя на нем был «ttyUSB0». Вы можете найти имена компиляторов в каталоге «/ dev» на вашем компьютере с Linux. Для пользователей Windows я бы рекомендовал "hterm". Легко работать. Введите «AT», и вы должны получить ответ «AT». Затем введите "AT + NameSensor", чтобы присвоить BT-модулю имя "Sensor".
Шаг 3: Установка деталей
Отрежьте кусок дерева размером, подходящим для того, чтобы собрать все детали. Подключите все сигналы, как показано на схеме. Хорошей идеей будет обернуть провода силиконовым чехлом, чтобы защитить их. Припаяйте штекер USB-B к монтажной плате. Он просто используется для питания. Закрепите все детали саморезами на деревянной основе. Наконец, приклейте кабели горячим клеем, чтобы закрепить их на дереве.
Шаг 4: Сопряжение
Включите приложение датчика, подключив блок питания USB. Красный светодиод на BT-модуле начнет мигать. Не пытайтесь связать его со своим Android-смартфоном. Вы должны ввести пин-код. Это «1234». После ввода кода ваш смартфон должен быть сопряжен с BT-модулем.
Шаг 5: Программное обеспечение
Мне нравится писать приложения для Android на самой целевой платформе. это избавляет вас от всей этой эмуляции, о которой вам нужно заботиться, если вы работаете с Android Studio. Я нашел три подходящих инструмента для разработки на самом Android
- Mintoris Basic. Базовый интерпретатор с богатым набором команд для работы практически со всем на Android. Вы можете создавать ярлыки для своих приложений. Mintoris basic не содержит компилятора. Таким образом, вы должны установить Mintoris на каждом используемом устройстве. Но заплатить нужно только один раз (около 7 €).
- Базовый! Чрезвычайно хороший интерпретатор и компилятор Basic (надстройка за несколько евро). Почти все в Android, и вы можете компилировать настоящие приложения для их распространения, не имея Basic! на целевом устройстве. К сожалению, базовый! не хватает отличных функций диаграмм Mintoris
- AIDE - это полупрофессиональная IDE для разработки приложений под Android в Java на Android. С AIDE у вас есть максимальная гибкость, но вам нужно изучить java. Ежегодные расходы AIDE составляют около 50 €.
Я выбрал Минторис. В этом разделе я дам вам не учебник по программированию в Mintoris, а краткое описание функциональных блоков
В следующей части объявляются три массива для двух строк данных датчика и соответствующих временных меток. Данные отметки времени используются для обозначения оси x диаграммы. Sodial выводит два потока данных, каждый из которых соответствует определенному размеру частиц. Эти значения принимают два массива dustdata.
WakeLock частичный
TextColor 100, 75, 10
TextColorA 50, 50, 50
TextAlign 0
Размер текста 24
CLS
Всплывающее окно «Датчик пыли (c) ARJ 2017»
Global dustData (), dustDataF (), timeStamp () Глобальный индекс, выбор, maxData, fileName $
Тусклая отметка времени (59)
Тусклая пыль Данные (59)
Тусклая пыльDataF (59)
Dim Menu $ (4) = «макс. 100 наборов данных», «макс. 1000 наборов данных», «макс. 5000 наборов данных», «макс. 10000 наборов данных», «Выход»
'Инициировать массивы
Для i = от 0 до 59
dustData (i) = 0
dustDataF (i) = 0
timeStamp (я) = я
Далее я
Затем настраивается меню «Список». Это дает пользователю возможность выбрать максимальный размер данных для сбора. Это просто защитный выключатель, чтобы смартфон не втягивал бесконечные данные. Функция BTgetPaired $ () возвращает список со всеми сопряженными устройствами на устройстве Android, их именами и BT-адресами.
L ist Menu $ (), выбор
'Выберите максимальное количество данных для хранения
runLevel = 1
Выбрать выбор
Случай 0 maxData = 100
Случай 1 maxDate = 1000
Случай 2 maxData = 5000
Случай 3 maxData = 10000
Случай 4 maxData = 0
Конец Выбрать
'Подключите датчик
тусклая пара $ (0)
пара $ () = BTGetPaired $ ()
Если пара $ (0) = "none" Тогда
Распечатать "Сопряженных устройств не найдено. BT включен?" Распечатать «Программа прекращена»
Конец
Endif
Список пар $ (), устройство $
имя $ = ItemExtract $ (устройство $, 0)
адрес $ = ItemExtract $ (устройство $, 1)
BTConnect 1, адрес $
'Подождите подключения
Прогресс ВКЛ
Распечатать "Пытаюсь подключиться к"; адрес $
Для i = от 1 до 20
Прогресс i / 2
Если BTGetstate (1) = 4, то выйдите на ожидание 1000
Далее я
Прогресс ВЫКЛ.
'При успешном подключении к устройству BT
Если BTGetState (1) = 4 Then Print «Connected» Else Print «Не удалось подключиться к»; name $
Распечатать «Программа прекращена»
Конец
Endif
Следующий блок показывает получение данных. Для каждого сеанса данных автоматически открывается файл, имя которого соответствует времени и дате. Затем цикл считывает данные датчика. Данные упакованы в несколько байтов. Набор байтов идентифицируется двумя символами ASCII 170 и 171. Следующие данные реорганизуются и помещаются в массивы пыли.
Графика включена
'Открыть файл данных для записи
fileName $ = FormatTime $ (t, "гггг-ММ-дд-кк-мм-сс") + ".dat"
Открыть 1, fileName $, "w +" Print "Opened datafile"; fileName $ Writeln 1, FormatTime $ (Time (), "yy-MM-dd")
Writeln 1, "Time Dust2.5 Dust10"
'Заполните массив измеренными данными
данные $ = "" пакет $ = ""
индекс = 0
Делать пока maxData> 0
BTRead 1, пакет $, 10
данные $ = данные $ + пакет $
Если Len (data $)> = 10 Тогда
Если (ASCII (Left $ (data $, 1)) = 170) & (ASCII (Right $ (data $, 1)) = 171) Тогда
dustDataF (индекс) = ASCII (Mid $ (данные $, 2, 1))
dustDataF (индекс) = (dustDataF (индекс) + 256 * ASCII (Mid $ (data $, 3, 1))) / 10
dustData (индекс) = ASCII (Mid $ (данные $, 4, 1))
dustData (индекс) = (dustData (индекс) + 256 * ASCII (Mid $ (data $, 5, 1))) / 10
Writeln 1, FormatTime $ (Time (), "kk: mm: ss") + "" + Str $ (dustDataF (index)) + "" + Str $ (dustData (index))
данные $ = ""
maxData = maxData-1
индекс = индекс + 1
Если index> 59, то index = 0
dustData (индекс) = 0
dustDataF (индекс) = 0
Endif
Endif
DrawGraph ()
Подождите 100
Петля
Закрыть 1
Графика выключена
CLS Print «Программа прекращена»
Конец
Последняя часть - это подпрограмма, которая вызывается после каждого приема данных. Он очищает экран, перерисовывает диаграмму с фактическими данными, хранящимися в массивах пыли и отметок времени.
'Нарисуйте координаты, метки, отметки, а также кривые данных
Sub DrawGraph ()
'В графическом режиме экран становится текущим цветом
Цвет 0, 0, 0
CLS
Цвет 0, 0, 100
'Установите цвет графики, который будет использоваться для рисования линий сетки
TextColor 100, 100, 100, 50
'TextColor - это цвет основного заголовка сетки
TextColorA 100, 100, 100
TextColorA используется для заголовков осей и аннотаций сетки.
'Установить размер текста заголовка оси
'Главный заголовок сетки в 2 раза больше этого размера
Размер текста 20
FixDecimal 0
'Установить для отображения 2 десятичных знаков
PadDigits 2
'Нарисуйте сетку для графика' Установите диапазон и заголовок X и Y
Axis AxisX 0, 59, "Время / с"
AxisY 0, 10000, "мкг / м3"
Сетка 3 «Концентрация пыли»
'Нарисуйте графики пыли
Цвет 100, 0, 0
GraphXY timeStamp (), dustDataF ()
Цвет 0, 100, 0
GraphXY timeStamp (), dustData ()
TextColor 100, 0, 0
DrawText «PM2.5», 30, Int (ScreenY () - 60), 90, 1
TextColor 0, 100, 0
DrawText «PM10», 30, Int (ScreenY () - 150), 90, 1
TextColor 100, 100, 100, 50
Возвращение
Загрузите исходный код здесь
Шаг 6: Тест
Включите датчик и запустите приложение. Из списка сопряженных устройств выберите одно под названием «Датчик». После подключения датчика на экране начнут отображаться данные. Одновременно выделяется файл данных. После завершения мода вы можете использовать GnuPlot для отображения данных. Используйте файл «Test.gp» в GnuPlot, чтобы настроить GnuPlot для отображения файла данных с именем «Test.dat». Вы также можете найти это здесь
Смотрите видео для более подробной информации и тестирования. Удачи и новых идей!
Рекомендуемые:
Сделай сам датчик дыхания с Arduino (проводящий вязаный датчик растяжения): 7 шагов (с изображениями)
Сделай сам датчик дыхания с Arduino (проводящий вязаный датчик растяжения): этот самодельный сенсор примет форму проводящего вязанного сенсора растяжения. Он будет обволакивать вашу грудь / живот, и когда ваша грудь / живот расширяется и сжимается, то вместе с датчиком и, следовательно, входными данными, которые передаются на Arduino. Так
Продлите жизнь своему ноутбуку! Очистите радиатор от пыли: 3 шага
Продлите жизнь своему ноутбуку! Очистите его от пыли радиатора: очень простой обзор того, как я очистил пыль от радиатора моего ноутбука Toshiba. Там было так много всего! Я не могу поверить, что эта практика не рекомендуется и не поощряется производителями. Если пыль блокирует впуск и выпуск воздуха и
Исследование пыли Arduino: 8 шагов
Arduino Dust Study: каково было бы жить на Марсе? Воздух пригоден для дыхания? Это безопасно? Сколько там пыли? Как часто бывают бури? Вы когда-нибудь задумывались над ответом на любой из этих вопросов?
Как очистить компьютер от пыли и пыли: 5 шагов
Как очистить ваш компьютер от пыли: !!! ПРОЧИТАЙТЕ ВСЕ СЛАЙДЫ ПЕРЕД НАЧАЛОМ ШАГА !!! ======================================= ======== Здравствуйте и добро пожаловать на, возможно, самое важное, что вы увидите сегодня! Мы собираемся узнать, как правильно поддерживать жизнь вашего персонального компьютера
Снятие крышки дисплея Nokia 6280 для очистки от пыли: 7 шагов
Снятие крышки дисплея Nokia 6280 для очистки от пыли. В отличие от многих других моделей, Nokia 6280 не имеет возможности снимать крышку дисплея самостоятельно. Это раздражает тех, кто получает пыль между ЖК-дисплеем и крышкой дисплея, а это очень много владельцев … На самом деле, со временем это «