Оглавление:

Датчик натриевой пыли на Android: 6 шагов
Датчик натриевой пыли на Android: 6 шагов

Видео: Датчик натриевой пыли на Android: 6 шагов

Видео: Датчик натриевой пыли на Android: 6 шагов
Видео: ⭐ОЧИСТИТЕЛЬ ВОЗДУХА ДЛЯ КВАРТИРЫ СВОИМИ РУКАМИ. ВСЕГО ЗА 40$. Степень очистки до 95%. 2024, Ноябрь
Anonim
Датчик натриевой пыли на Android
Датчик натриевой пыли на Android

Год назад у моего друга был семинар выходного дня по мониторингу окружающей среды. Целью семинара было создание датчика пыли, подключенного к плате 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

Подготовка модуля Bluetooth
Подготовка модуля Bluetooth
Подготовка модуля Bluetooth
Подготовка модуля Bluetooth
Подготовка модуля Bluetooth
Подготовка модуля Bluetooth
Подготовка модуля Bluetooth
Подготовка модуля 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: Тест

Image
Image
Тестовое задание
Тестовое задание
Тестовое задание
Тестовое задание
Тестовое задание
Тестовое задание

Включите датчик и запустите приложение. Из списка сопряженных устройств выберите одно под названием «Датчик». После подключения датчика на экране начнут отображаться данные. Одновременно выделяется файл данных. После завершения мода вы можете использовать GnuPlot для отображения данных. Используйте файл «Test.gp» в GnuPlot, чтобы настроить GnuPlot для отображения файла данных с именем «Test.dat». Вы также можете найти это здесь

Смотрите видео для более подробной информации и тестирования. Удачи и новых идей!

Рекомендуемые: