Съдържание:

Сензор за натриев прах на Android: 6 стъпки
Сензор за натриев прах на Android: 6 стъпки

Видео: Сензор за натриев прах на Android: 6 стъпки

Видео: Сензор за натриев прах на Android: 6 стъпки
Видео: LW31 AGPTEK Smart Watch IP68: Things To Know Before Buy // For Android and iPhone 2024, Юли
Anonim
Сензор за натриев прах на Android
Сензор за натриев прах на Android

Преди година един мой приятел имаше уикенд семинар за мониторинг на околната среда. Целта на семинара беше да се изгради сензор за прах, свързан към малинова pi платка, за да се поставят измервателни данни на някой сървър, който предоставя често актуализирани карти за концентрация на прах. Приятелят ми попита дали има начин да се получат сензорните данни директно на неговия смартфон за наблюдение и регистриране. Така че изкопах интернет за лист с данни и видях, че сензорът има прост UART интерфейс с 9600Baud 8N1 протокол. Но как да свържете UART към смартфон? Е, това е лесно. Просто трябваше да използвам един от онези вездесъщи малки Bluetooth модули, които осигуряват емулиран порт на android. Сега вижте как успях.

Стъпка 1: Какво ви трябва

От какво имаш нужда
От какво имаш нужда
От какво имаш нужда
От какво имаш нужда

Имате нужда от следните части

  • Съединител за свързване JST XH 7-пинов за интерфейса Sodial с проводници. Купих моя в Ebay.
  • Bluetooth модул HC05 или 06 съвместим с UART конектор
  • USB-сериен конвертор с интерфейс на ниво TTL. Използваме това, за да дадем на BT-модула уникално име
  • Натриев сензор за прах SDS011. Взех моята от Ebay
  • парче вероборд
  • USB-B конектор
  • тел
  • Парче дърво за монтиране на всичко

Тогава ще ви трябват няколко прости инструмента:

  • Ножовка за рязане на дърва
  • пинсети
  • поялник и спойка
  • нож за тел
  • Пистолет за горещо лепило
  • Парче 8 мм силиконов ръкав (не е на снимката)

Можете да изтеглите листа с данни Sodial SDS011 тук Sodial SDS011 лист с данни

Стъпка 2: Подготовка на Bluetooth модула

Подготовка на Bluetooth модула
Подготовка на Bluetooth модула
Подготовка на Bluetooth модула
Подготовка на Bluetooth модула
Подготовка на Bluetooth модула
Подготовка на Bluetooth модула
Подготовка на Bluetooth модула
Подготовка на Bluetooth модула

BT-модулът има UART интерфейс с TTL ниво. Тя може да бъде преконфигурирана с "AT" команди, както направихме с интернет модемите в древни времена. За да го свържете към терминална програма на вашата машина, трябва да адаптирате UART към вашия компютър. Използвах конвертор USB-RS232, който купих в Amazon. Приложих конектор за BT-модула и насочих 3, 3V захранването и 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 €)
  • Основен! Изключително добър основен интерпретатор и компилатор (добавка за около €). Почти свързва всичко в android и можете да компилирате истински приложения за разпространението им, без да имате Basic! на целевото устройство. За съжаление Basic! липсват отличните функции на диаграма на Mintoris
  • AIDE е полупрофесионална IDE за разработка на android в java на android. С AIDE имате максимална гъвкавост, но трябва да научите java. AIDE има годишни разходи от около 50 €

Избрах Mintoris. В този раздел няма да ви дам урок по програмиране в Mintoris, а кратко описание на функционалните блокове

В следващата част са декларирани три масива за двете линии за данни на сензора и съответните часови марки. Данните за времевата марка се използват за етикетиране на оста x на диаграмата. Sodial извежда два потока данни, всеки от които е определен за специален размер на частиците. Двата масива dustdata приемат тези стойности.

Частично WakeLock

TextColor 100, 75, 10

TextColorA 50, 50, 50

TextAlign 0

TextSize 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 (i) = i

Следва i

След това се конфигурира меню от списък. Това дава възможност на потребителя да избере максималния размер на данните за събиране. Това е просто предпазен превключвател, който предотвратява всмукването на смартфона от безкрайни данни. Функциите BTgetPaired $ () връща списък с всички сдвоени устройства на Android устройството, техните имена и BT адрес.

Предлага меню $ (), избор

„Изберете максимална сума, ако данните се съхраняват

runLevel = 1

Изберете избор

Случай 0 maxData = 100

Случай 1 maxDate = 1000

Случай 2 maxData = 5000

Случай 3 maxData = 10000

Случай 4 maxData = 0

Край Изберете

'' Свържете сензора

затъмнена двойка $ (0)

чифт $ () = BTGetPaired $ ()

Ако двойка $ (0) = "няма" Тогава

Отпечатайте "Няма намерени сдвоени устройства. Включен ли е BT?" Отпечатайте „Програмата е прекратена“

Край

Endif

Списък двойка $ (), устройство $

име $ = ItemExtract $ (устройство $, 0)

адрес $ = ItemExtract $ (устройство $, 1)

BTConnect 1, адрес $

„Изчакайте връзка

Прогресът ВКЛ

Отпечатайте „Опитвам се да се свържа с“; адрес $

За i = 1 до 20

Напредък i/2

Ако BTGetstate (1) = 4, тогава излезте за изчакване 1000

Следва i

Прогресът е ИЗКЛЮЧЕН

„При успех се свържете с BT устройството

Ако BTGetState (1) = 4 След това отпечатайте "Connected" Друг печат "Can't connect to"; name $

Отпечатайте „Програмата е прекратена“

Край

Endif

Следващият блок показва изискванията за данни. За всяка сесия с данни файлът се отваря автоматично и носи името на часа и датата. След това контурът чете сензорните данни. Данните са опаковани в няколко байта. Набор от байтове се идентифицира с два ASCII символа 170 и 171. Следните данни са реорганизирани и попълнени в праховите масиви

Графиката е включена

„Отворете файл с данни за писане

fileName $ = FormatTime $ (t, "yyyy-MM-dd-kk-mm-ss") + ".dat"

Отворете 1, fileName $, "w+" Печат "Отворен файл с данни"; fileName $ Writeln 1, FormatTime $ (Time (), "yy-MM-dd")

Напишете 1, "Времеви прах 2.5 Прах10"

'Попълнете масива с измерените данни

данни $ = "" пакет $ = ""

индекс = 0

Направете Докато maxData> 0

BTRead 1, пакет $, 10

данни $ = данни $+пакет $

Ако Len (данни $)> = 10 Тогава

Ако (ASCII (вляво $ (данни $, 1)) = 170) & (ASCII (вдясно $ (данни $, 1)) = 171) Тогава

dustDataF (индекс) = ASCII (в средата $ (данни $, 2, 1))

dustDataF (индекс) = (dustDataF (индекс)+256*ASCII (средна $ (данни $, 3, 1)))/10

dustData (индекс) = ASCII (в средата $ (данни $, 4, 1))

dustData (индекс) = (dustData (индекс)+256*ASCII (средна $ (данни $, 5, 1)))/10

Writeln 1, FormatTime $ (Time (), "kk: mm: ss") + "" + Str $ (dustDataF (индекс)) + "" + Str $ (dustData (индекс))

данни $ = ""

maxData = maxData-1

индекс = индекс+1

Ако индекс> 59 Тогава индекс = 0

dustData (индекс) = 0

dustDataF (индекс) = 0

Endif

Endif

DrawGraph ()

Изчакайте 100

Цикъл

Затваряне 1

Графиката е изключена

CLS Печат „Програмата е прекратена“

Край

Последната част е подпрограма, която се извиква след всяко приемане на данни. Той изчиства екрана, прекроява диаграмата с действителните данни, съхранявани в масивите с прах и времеви марки.

„Начертайте координатите, етикетите, отметките, както и кривите на данните

Sub DrawGraph ()

„В графичен режим екранът се изчиства до текущия цвят

Цвят 0, 0, 0

CLS

Цвят 0, 0, 100

'Задайте цвета на графиката, който да се използва за изчертаване на линиите на мрежата

TextColor 100, 100, 100, 50

'TextColor е цветът на основното заглавие на мрежата

TextColorA 100, 100, 100

'TextColorA се използва за заглавия на оста и пояснения в мрежата.

'Задайте размера на текста на заглавието на оста

„Основното заглавие на мрежата е 2х този размер

TextSize 20

FixDecimal 0

'Задайте да показва 2 десетични знака

PadDigits 2

„Начертайте мрежа за графиката“Задайте обхвата и заглавието на X & Y

Ос AxisX 0, 59, "Time/s"

AxisY 0, 10000, "ug/m3"

Решетка 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". Можете също да го намерите тук

Вижте видеото за повече подробности и тестване. Забавлявайте се много и още идеи!

Препоръчано: