Мазмуну:
- 1 -кадам: Сизге эмне керек
- 2 -кадам: Bluetooth модулун даярдоо
- 3 -кадам: Бөлүктөрдү орнотуу
- 4 -кадам: Жупташуу
- 5 -кадам: Программалык камсыздоо
- 6 -кадам: Тест
Video: Androidдеги содалык чаң сенсору: 6 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Бир жыл мурун менин бир досум экологиялык мониторинг боюнча дем алыш күндөрү семинар өткөрдү. Семинардын максаты - чаңдын концентрациялык карталарын тез -тез жаңырткан кээ бир серверге өлчөө маалыматын коюу үчүн малина пи тактасына туташкан чаң сенсорун куруу. Менин досум сенсордук маалыматты смартфонунан түз мониторинг жүргүзүү жана каттоо үчүн алуу мүмкүнчүлүгү барбы деп сурады. Ошентип, мен маалымат баракчасы үчүн интернетти каздым жана сенсордун 9600Baud 8N1 протоколу бар жөнөкөй UART интерфейси бар экенин көрдүм. Бирок UARTти смартфонго кантип туташтыруу керек? Ооба, бул оңой. Мен жөн гана андроидде эмуляцияланган компорт камсыз кылган кичинекей Bluetooth модулдарынын бирин колдонууга туура келди. Эми кантип жасаганымды көрүңүз.
1 -кадам: Сизге эмне керек
Сизге төмөнкү бөлүктөр керек
- Зымдар менен Sodial интерфейси үчүн JST XH 7-пин туташтыргычы. Мен өзүмдү Ebayден сатып алдым.
- UART туташтыргычы менен шайкеш келген HC05 же 06 Bluetooth модулу
- TTL деңгээлиндеги интерфейси бар USB-сериялык конвертер. Биз муну BT-модулуна уникалдуу ат берүү үчүн колдонобуз
- Sodial SDS011 чаң сенсору. Мен өзүмдү Ebayден алдым
- вербордун бир бөлүгү
- USB-B туташтыргычы
- зым
- Баарын монтаждай турган жыгач
Андан кийин сизге жөнөкөй куралдар керек болот:
- Жыгачты кесүү үчүн бакча
- пинцет
- темир жана ширетүүчү
- зым кескич
- Ысык желим мылтык
- 8мм кремний жеңинин бир бөлүгү (сүрөттө жок)
Sodial SDS011 маалымат барагын бул жерден Sodial SDS011 маалымат барагын жүктөп алсаңыз болот
2 -кадам: Bluetooth модулун даярдоо
BT-Module TTL деңгээлиндеги UART интерфейсине ээ. Аны байыркы убакта интернет модемдериндей кылып "AT" буйруктары менен кайра конфигурациялоого болот. Аны машинаңыздагы терминалдык программага туташтыруу үчүн UARTды компьютериңизге ыңгайлаштырышыңыз керек. Мен Amazonдо сатып алган USB-RS232 конвертерин колдондум. Мен BT-модулуна туташтыргычты колдонуп, 3, 3V электр менен жабдууну жана GNDди конвертерден BT-модулуна багыттадым. Андан кийин мен тийиштүү TxD жана RxD линияларын кроссоверге туташтырдым. USB-конвертерден TxD BT-модулдан RxDге жана тескерисинче.
Менде Linux машинасы бар жана cutecom колдонгон. USB-конвертерин туташтыргандан кийин компорт "ttyUSB0" болгон. Компьютердин аталыштарын Linux машинаңыздагы "/dev" каталогунан таба аласыз. Windows колдонуучулары үчүн мен "hterm" сунуштайт элем. Иштетүү оңой. "AT" териңиз жана жооп катары "AT" алышыңыз керек. Андан кийин "AT+NameSensor" терип, BT-модулуна "Sensor" аталышын бериңиз
3 -кадам: Бөлүктөрдү орнотуу
Жыгачтын бир бөлүгүн бардык бөлүктөрүн алууга ылайыктуу өлчөмдө кесип алыңыз. Бардык сигналдарды схемада көрсөтүлгөндөй туташтырыңыз. Зымдарды коргоо үчүн аларды кремний жең менен жабуу жакшы идея. Перфборттогу USB-B сайгычын туташтырыңыз. Бул жөн гана электр менен камсыздоо үчүн колдонулат. Бардык бөлүктөрдү жыгач базага бурамалар менен бекитүү. Акыры кабелдерди жыгачка бекитүү үчүн ысык клей.
4 -кадам: Жупташуу
Сенсор тиркемесин USB кубаттоо тармагын туташтырып күйгүзүңүз. BT-модулундагы кызыл LED күйө баштайт. Андроид смартфонуңуз менен жупташууга аракет кылбаңыз. Сиз пин кодду киргизишиңиз керек. Бул "1234". Кодду киргизгенден кийин смартфонуңуз BT-модулу менен жупташуусу керек.
5 -кадам: Программалык камсыздоо
Мен Android тиркемелерин максаттуу платформанын өзүнө жазганды жакшы көрөм. бул сизди Android Studio менен иштеп жаткан болсоңуз, эмуляциялоочу нерселердин баарынан сактайт. Мен Androidдин өзүнө ылайыктуу үч өнүгүү куралын таптым
- Mintoris Basic. Негизги котормочу, буйруктардын бай топтому менен, андроиддеги дээрлик бардык нерселерди карап чыгууга. Колдонмолоруңуз үчүн кыска жолдорду түзө аласыз. Mintoris basicде компилятор жок. Демек, сиз колдонуп жаткан ар бир түзмөккө Mintoris орнотуш керек. Бирок сиз бир гана жолу төлөшүңүз керек (болжол менен 7 €)
- Негизги! Абдан жакшы Негизги котормочу жана компилятор (кээ бир € үчүн кошумча). Дээрлик баардык нерселерди андроидке илип койсоңуз болот жана реалдуу тиркемелерди аларды Basic жок эле жайылтуу үчүн түзө аласыз! максаттуу түзмөктө. Тилекке каршы Негизги! Mintorisтин эң сонун диаграмма функциялары жок
- AIDE - бул андроидде javaда андроид иштеп чыгуу үчүн жарым профессионалдуу IDE. AIDE менен сизде эң ийкемдүүлүк бар, бирок сиз Javaны үйрөнүшүңүз керек. AIDEдин жылдык чыгымдары болжол менен 50 €
Мен Минтористи тандадым. Бул бөлүмдө мен сизге Mintorisте программалоо боюнча окуу куралын бербейм, бирок функционалдык блоктордун кыскача сүрөттөмөсүн берем
Кийинки бөлүктө эки сенсор маалымат линиялары жана тиешелүү убакыт белгилери үчүн үч массив жарыяланган. Убакыт белгилери диаграмманын х огун белгилөө үчүн колдонулат. 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)
Dim Dust (59)
DimaF (59)
Dim Меню $ (4) = "макс. 100 маалымат топтому", "эң көп. 1000 маалымат топтому", "эң көп. 5000 маалымат топтому", "эң көп. 10000 маалымат топтому", "Чыгуу"
'Массивдерди баштаңыз
I = 0ден 59га чейин
dustData (i) = 0
dustDataF (i) = 0
timeStamp (i) = i
Кийинки i
Андан кийин Тизме менюсу конфигурацияланат. Бул колдонуучуга чогултуу үчүн маалыматтын максималдуу өлчөмүн тандоо мүмкүнчүлүгүн берет. Бул жөн эле смартфондун чексиз маалыматтарды соруп алуусун алдын алуу үчүн коопсуздук которгуч. BTgetPaired $ () функциялары андроид түзмөгүндөгү бардык жупташкан түзмөктөрдүн тизмесин, алардын аттарын жана BT-дарегин кайтарып берет.
L меню $ (), тандоо
'Маалыматтар сактала турган болсо, максималдуу сумманы тандаңыз
runLevel = 1
Тандоону тандоо
Case 0 maxData = 100
Case 1 maxDate = 1000
Case 2 maxData = 5000
Case 3 maxData = 10000
Case 4 maxData = 0
Тандоону бүтүрүү
'' Сенсорду туташтыруу
күңүрт жуп $ (0)
жуп $ () = BTGetPaired $ ()
Эгерде $ (0) = "none" жуп болсо
Басып чыгаруу "Жупташкан түзмөктөр табылган жок. BT күйгүзүлгөнбү?" "Программа токтотулду" басып чыгаруу
Аяктоо
Endif
$ () Тизмеси, $ түзмөгү
аты $ = ItemExtract $ (түзмөк $, 0)
$ = ItemExtract $ (түзмөк $, 1)
BTConnect 1, $ дареги
'Байланышты күтө туруңуз
Progress ON
"Кошулууга аракет кылууда" басып чыгаруу; $ дареги
I = 1ден 20га чейин
Progress i/2
Эгерде BTGetstate (1) = 4 анда 1000 күтө туруңуз
Кийинки i
Прогресс ӨЧҮК
Ийгиликке жеткенде BT түзмөгүнө туташыңыз
Эгерде BTGetState (1) = 4 анда "Байланышкан" Басып чыгарыңыз Башка Басма "Кошула алган жок"; аты $
"Программа токтотулду" басып чыгаруу
Аяктоо
Endif
Кийинки блок маалыматтардын жандануусун көрсөтөт. Ар бир маалымат сеансы үчүн файл автоматтык түрдө ачылат жана убакыттын жана датанын атынан аталат. Андан кийин цикл сенсордун маалыматын окуп жатат. Маалыматтар бир нече байтка топтолгон. Байттын жыйындысы 170 жана 171 эки ASCII белгилери менен аныкталат. Төмөнкү маалыматтар кайра уюшулган жана чаң массивдерине толтурулган.
Графика күйүк
Жазуу үчүн маалымат файлын ачыңыз
fileName $ = FormatTime $ (t, "yyyy-MM-dd-kk-mm-ss") + ".dat"
Open 1, fileName $, "w+" Print "Opened datafile"; fileName $ Writeln 1, FormatTime $ (Time (), "yy-MM-dd")
Writeln 1, "Time Dust2.5 Dust10"
'Массивди өлчөнгөн маалыматтар менен толтуруңуз
маалымат $ = "" пакет $ = ""
индекс = 0
MaxData> 0 кылып жатканда
BTR 1, пакет $, 10
маалымат $ = маалымат $+пакет $
Эгерде Лен (маалымат $)> = 10 Анда
Эгерде (ASCII (Сол $ (маалымат $, 1)) = 170) & (ASCII (Оң $ (маалымат $, 1)) = 171) Анда
dustDataF (индекс) = ASCII (Орто $ (маалымат $, 2, 1))
dustDataF (индекс) = (dustDataF (индекс)+256*ASCII (Орто $ (маалымат $, 3, 1)))/10
dustData (индекс) = ASCII (Орто $ (маалымат $, 4, 1))
dustData (index) = (dustData (index)+256*ASCII (Mid $ (data $, 5, 1)))/10
Writeln 1, FormatTime $ (Time (), "kk: mm: ss") + "" + Str $ (dustDataF (index)) + "" + Str $ (dustData (index))
маалымат $ = ""
maxData = maxData-1
индекс = индекс+1
Эгерде индекс> 59 Анда индекс = 0
dustData (индекс) = 0
dustDataF (индекси) = 0
Endif
Endif
DrawGraph ()
Күтө тур 100
Loop
Жабуу 1
Графика өчүк
CLS Print "Программа токтотулду"
Аяктоо
Акыркы бөлүгү - бул ар бир маалыматты кабыл алгандан кийин чакырылган чакан программа. Бул экранды тазалайт, чаңда жана убакыттын шкаласында сакталган чыныгы маалыматтар менен диаграмманы кайра түзөт.
'Координаттарды, энбелгилерди, кенелерди жана ошондой эле маалыматтардын ийри сызыгын тартыңыз
Sub DrawGraph ()
'Графика режиминде экран учурдагы түскө тазаланат
Түс 0, 0, 0
CLS
Түс 0, 0, 100
'Графикалык түстү тор сызыктарын тартуу үчүн колдонуңуз
TextColor 100, 100, 100, 50
'TextColor - бул тордун башкы аталышынын түсү
TextColorA 100, 100, 100
'TextColorA Axis аталыштары жана торчо аннотациялары үчүн колдонулат.
'Ок огунун аталышынын текстинин өлчөмүн коюңуз
Тордун башкы аталышы бул өлчөмдөн 2 эсе чоң
TextSize 20
FixDecimal 0
'2 ондук орунду көрсөтүүнү коюңуз
PadDigits 2
'График үчүн торду тартыңыз' X & Y диапазонун жана аталышын коюңуз
Axis AxisX 0, 59, "Time/s"
AxisY 0, 10000, "ug/m3"
Grid 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
Return
Булак кодун бул жерден жүктөп алыңыз
6 -кадам: Тест
Сенсорду иштетип, колдонмону иштетиңиз. Жупташкан түзмөктөрдүн тизмесинен "Сенсор" деп аталган бирин тандаңыз. Сенсорду туташтыргандан кийин экран маалыматты көрсөтө баштайт. Ошол эле учурда маалымат файлы бөлүштүрүлөт. Мода бүткөндөн кийин, маалыматтарды көрсөтүү үчүн GnuPlot колдонсоңуз болот. GnuPlotту "Test.dat" аттуу маалымат файлын көрсөтүү үчүн конфигурациялоо үчүн "Test.gp" файлын колдонуңуз. Сиз муну бул жерден да таба аласыз
Көбүрөөк маалымат жана тестирлөө үчүн видеону караңыз. Көңүлүңүз көтөрүлсүн жана дагы көптөгөн идеялар болсун!
Сунушталууда:
Робот чаң соргучтагы УЗИ сенсору: 5 кадам
Робот чаң соргучтагы УЗИ сенсору: Саламатсызбы, бизде Dirt Devil робот чаң соргуч 3 жылдай бар жана ал дагы деле иштейт. Бул M611 түрү, бул кичинекей "дудук": аймакты сканерлебейт же кайсы жерде вакуум эмес, кайтып келүү жөндөмү бар
WiFi жана Androidдеги Portable Function Generator: 10 кадам
WiFi жана Androidдеги Portable Function Generator: 20 -кылымдын аягында, айрыкча байланыш тармагында, ар кандай технологиялык жаңылыктар пайда болгон; бирок гана эмес. Биз үчүн, колдонуучулар, керектөөчүлөр жана инженерлер биздин жашообузду өзгөртө турган электрондук түзүлүштөрдүн тез өнүгүшүнө келишти
DIY дем алуу сенсору Arduino менен (өткөргүч токулган сунуу сенсору): 7 кадам (сүрөттөр менен)
DIY дем алуу сенсору Arduino менен (Өткөргүч токулган сенсор): Бул DIY сенсор өткөргүч трикотаж сунуу сенсорунун формасын алат. Ал көкүрөгүңүздү/ашказаныңызды ороп алат, жана көкүрөгүңүз/ашказаныңыз кеңейгенде жана контрактта болгондо, сенсор, демек, Arduinoго берилүүчү маалымат. Ошентип
Arduino Күн энергиясындагы температура жана нымдуулук сенсору 433mhz Орегон сенсору катары: 6 кадам
Arduino Solar Powered Temperature and Humidity Sensor As 433mhz Oregon Sensor: Бул күн менен иштеген температура жана нымдуулук сенсорунун курулушу. Сенсор 433mhz Oregon сенсорун туурайт жана Telldus Net шлюзунда көрүнөт. Эмне керек: 1x " 10-LED Күн энергиясынын кыймыл датчиги " Ebayден. 3.7В камыр деп жазылганын текшериңиз
Фейсбукту Androidдеги видеолорду автоматтык түрдө ойнотуудан кантип токтотсо болот!: 10 кадам
Фейсбукту Androidдеги видеолорду автоматтык түрдө ойнотуудан кантип токтотуу керек !!: Бул көрсөтмө сизге фейсбукту андроид түзмөгүндө видеолордо да, wifiде да автоматтык түрдө ойнотууну кантип токтотууну көрсөтөт. Сураныч, менин каналыма жазылыңыз Рахмат