Съдържание:
- Стъпка 1: Какво ви трябва
- Стъпка 2: Подготовка на Bluetooth модула
- Стъпка 3: Монтиране на частите
- Стъпка 4: Сдвояване
- Стъпка 5: Софтуерът
- Стъпка 6: Тествайте
Видео: Сензор за натриев прах на Android: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Преди година един мой приятел имаше уикенд семинар за мониторинг на околната среда. Целта на семинара беше да се изгради сензор за прах, свързан към малинова 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 модула
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: Тествайте
Включете сензора и стартирайте приложението. От списъка на сдвоени устройства изберете това, наречено „Сензор“. След свързване на сензора екранът ще започне да показва данните. Едновременно с това се разпределя файлът с данни. След приключване на модата можете да използвате GnuPlot за показване на данните. Използвайте файла "Test.gp" в GnuPlot, за да конфигурирате GnuPlot за показване на файл с данни "Test.dat". Можете също да го намерите тук
Вижте видеото за повече подробности и тестване. Забавлявайте се много и още идеи!
Препоръчано:
Сензор за движение на водата Сензор за движение с помощта на Arduino и соленоиден клапан - Направи си сам: 6 стъпки
Сензор за вода Сензор за движение с помощта на Arduino и соленоиден клапан - Направи си сам: В този проект ще ви покажа как да изградите кран за вода с сензор за движение с помощта на електромагнитен клапан. Този проект може да ви помогне да преобразувате съществуващия си ръчен кран за вода в кран, който може да се контролира въз основа на откриване на движение. Използване на интерфейса на IR сензора
Arduino Nano - MPL3115A2 Прецизен сензор за висотомер Сензор: 4 стъпки
Arduino Nano - MPL3115A2 Прецизен сензор за висотомер Сензор: MPL3115A2 използва MEMS сензор за налягане с I2C интерфейс за предоставяне на точни данни за налягане/надморска височина и температура. Изходите на сензора са цифровизирани от 24-битов ADC с висока разделителна способност. Вътрешната обработка премахва компенсационните задачи от
DIY сензор за дишане с Arduino (проводим плетен сензор за разтягане): 7 стъпки (със снимки)
DIY сензор за дишане с Arduino (проводим плетен сензор за разтягане): Този DIY сензор ще приеме формата на проводим плетен сензор за разтягане. Той ще се увие около гърдите/стомаха ви и когато гърдите/стомаха ви се разширят и свият, сензорът и съответно входните данни, които се подават към Arduino. Така
Свързващ сензор, SPS-30, сензор за частици с Arduino Duemilanove, използващ I2C режим: 5 стъпки
Свързване на Sensirion, SPS-30, сензор за частици с Arduino Duemilanove Използване на I2C режим: Когато разглеждах свързването на сензори SPS30, осъзнах, че повечето източници са за Raspberry Pi, но не толкова за Arduino. Прекарвам малко време, за да накарам сензора да работи с Arduino и реших да публикувам моя опит тук, за да може
Сваляне на капака на дисплея на Nokia 6280 за почистване на прах: 7 стъпки
Сваляне на капака на дисплея на Nokia 6280 за почистване на прах: За разлика от много други модели, изглежда, че Nokia 6280 не е направена така, че потребителите да могат сами да свалят капака на дисплея. Това дразни онези, които получават прах между действителния LCD и капака на дисплея, което е много собственици … Всъщност, с течение на времето, „