Агуулгын хүснэгт:

Андройд дээрх натрийн тоосны мэдрэгч: 6 алхам
Андройд дээрх натрийн тоосны мэдрэгч: 6 алхам

Видео: Андройд дээрх натрийн тоосны мэдрэгч: 6 алхам

Видео: Андройд дээрх натрийн тоосны мэдрэгч: 6 алхам
Видео: Юлька_Рассказ_Слушать 2024, Долдугаар сарын
Anonim
Андройд дээрх натрийн тоосны мэдрэгч
Андройд дээрх натрийн тоосны мэдрэгч

Жилийн өмнө нэг найз маань өнгөрсөн амралтын өдрүүдэд байгаль орчны хяналт шинжилгээний талаар семинар хийсэн. Семинарын зорилго нь бөөрөлзгөнө пи самбартай холбогдсон тоосны мэдрэгчийг бий болгож, тоосны концентрацийн газрын зургийг байнга шинэчилдэг зарим сервер дээр хэмжилтийн өгөгдлийг байрлуулах явдал байв. Найз маань мэдрэгчийн өгөгдлийг ухаалаг гар утсан дээрээ шууд хянах, бүртгэх арга байгаа эсэхийг асуув. Тиймээс би мэдээллийн хуудсыг интернэтээс хайж үзэхэд мэдрэгч нь 9600Baud 8N1 протокол бүхий энгийн UART интерфэйстэй болохыг олж харав. Гэхдээ UART -ийг ухаалаг гар утсанд хэрхэн холбох вэ? За, энэ амархан. Андройд дээр дууриамал компорт өгдөг хаа сайгүй байдаг бяцхан Bluetooth модулиудын нэгийг ашиглахад л хангалттай байсан. Одоо би яаж үүнийг хийснийг хараарай.

Алхам 1: Танд хэрэгтэй зүйл

Чамд юу хэрэгтэй вэ
Чамд юу хэрэгтэй вэ
Чамд юу хэрэгтэй вэ
Чамд юу хэрэгтэй вэ

Танд дараах хэсгүүд хэрэгтэй болно

  • Утас бүхий Sodial интерфэйсийн JST XH 7 зүү бүхий холбогч холбогч. Би Ebay дээрээс худалдаж авсан.
  • UART холбогчтой нийцтэй HC05 эсвэл 06 Bluetooth модуль
  • TTL түвшний интерфэйстэй USB цуваа хөрвүүлэгч. Бид үүнийг ашиглан BT-модульд өвөрмөц нэр өгөх болно
  • Sodial SDS011 тоосны мэдрэгч. Би Ebay -ээс авсан
  • veroboard -ийн нэг хэсэг
  • USB-B холбогч
  • утас
  • Бүх зүйлийг холбох модон хэсэг

Дараа нь танд энгийн хэрэгсэл хэрэгтэй болно:

  • Модыг огтлох зориулалттай мөнгө
  • хясаа
  • гагнуурын төмөр ба гагнуур
  • утас таслагч
  • Халуун цавуу буу
  • 8 мм хэмжээтэй цахиурын ханцуйвч (зураг дээр байхгүй)

Та Sodial SDS011 мэдээллийн хуудсыг эндээс Sodial SDS011 мэдээллийн хуудсыг татаж авах боломжтой

Алхам 2: Bluetooth модулийг бэлтгэх

Bluetooth модулийг бэлтгэж байна
Bluetooth модулийг бэлтгэж байна
Bluetooth модулийг бэлтгэж байна
Bluetooth модулийг бэлтгэж байна
Bluetooth модулийг бэлтгэж байна
Bluetooth модулийг бэлтгэж байна
Bluetooth модулийг бэлтгэж байна
Bluetooth модулийг бэлтгэж байна

BT-Module нь TART түвшний UART интерфэйстэй. Үүнийг эрт дээр үед интернет модемтой хийсэн шиг "AT" командыг ашиглан дахин тохируулж болно. Үүнийг машин дээрх терминал програмд холбохын тулд UART -ийг компьютерт тохируулах хэрэгтэй. Би Amazon дээр худалдаж авсан USB-RS232 хөрвүүлэгчийг ашигласан. Би BT-модульд холбогч хэрэглэж, хөрвүүлэгчээс 3, 3V тэжээлийн хангамж ба GND-ийг BT-модуль руу чиглүүлэв. Дараа нь би холбогдох TxD ба RxD шугамуудыг кроссовероор холбосон. USB хөрвүүлэгчээс TxD нь BT-модулаас RxD рүү, харин эсрэгээр.

Би линукс машинтай, cutecom ашигладаг байсан. USB хөрвүүлэгчийг холбосны дараа компорт нь "ttyUSB0" байв. Та линк машин дээрх "/dev" лавлахаас comport нэрийг олох боломжтой. Windows хэрэглэгчдэд би "hterm" гэж зөвлөж байна. Ажиллуулахад хялбар. "AT" гэж бичээд хариу болгон "AT" авах ёстой. Дараа нь "AT+NameSensor" гэж бичээд BT модульд "Sensor" нэр өгнө.

Алхам 3: эд ангиудыг суурилуулах

Эд ангиудыг суурилуулах
Эд ангиудыг суурилуулах
Эд ангиудыг суурилуулах
Эд ангиудыг суурилуулах
Эд ангиудыг суурилуулах
Эд ангиудыг суурилуулах
Эд ангиудыг суурилуулах
Эд ангиудыг суурилуулах

Бүх хэсгийг авахад тохиромжтой хэмжээтэй модон хэсгийг хайчилж ав. Схемд заасан бүх дохиог холбоно уу. Цахиурын ханцуйвчийг хамгаалахын тулд утаснуудын эргэн тойронд хийх нь зүйтэй. Perfboard дээр USB-B залгуурыг гагнах. Энэ нь зөвхөн цахилгаан хангамжид ашиглагддаг. Модон суурь дээр бүх эд ангиудыг боолтоор бэхлээрэй. Эцэст нь кабелийг модон дээр бэхлэхийн тулд халуун цавуу хийнэ.

Алхам 4: Хослуулах

Хослуулж байна
Хослуулж байна
Хослуулж байна
Хослуулж байна

USB тэжээлийн эх үүсвэрийг залгах замаар мэдрэгчийн програмыг ажиллуулна уу. BT модуль дээрх улаан LED гэрэл анивчиж эхэлнэ. Андройд ухаалаг гар утсаараа хослуулах гэж оролдох хэрэггүй. Та пин код оруулах ёстой. Энэ бол "1234". Кодыг оруулсны дараа ухаалаг гар утсаа BT модульд холбох ёстой.

Алхам 5: Програм хангамж

Андройд програмыг зорилтот платформ дээр өөрөө бичих дуртай. Хэрэв та Android Studio -тэй ажиллаж байгаа бол санаа зовох ёстой эмуляц хийх бүх зүйлээс таныг аварна. Андройд дээр гурван тохиромжтой хөгжлийн хэрэгслийг олж мэдсэн

  • Mintoris үндсэн. Андройд дээрх бараг бүх зүйлийг эргэцүүлэн бодох олон тооны команд бүхий үндсэн орчуулагч. Та өөрийн аппликешнд зориулсан товчлол үүсгэж болно. Mintoris basic нь хөрвүүлэгч агуулаагүй болно. Тиймээс та ашиглаж буй төхөөрөмж бүрт Mintoris суулгасан байх ёстой. Гэхдээ та үүнийг зөвхөн нэг удаа төлөх ёстой (ойролцоогоор 7 евро)
  • Үндсэн! Маш сайн үндсэн орчуулагч, хөрвүүлэгч (зарим еврогийн нэмэлт). Андройд дээрх бүх зүйл бараг л холбогддог бөгөөд та тэдгээрийг үндсэн програмгүйгээр түгээх бодит програмуудыг эмхэтгэх боломжтой! зорилтот төхөөрөмж дээр. Харамсалтай нь үндсэн! Mintoris -ийн маш сайн диаграммын функцууд байхгүй байна
  • AIDE бол Android дээр java дээр андройд хөгжүүлэлт хийх хагас мэргэжлийн IDE юм. AIDE -ийн тусламжтайгаар та хамгийн уян хатан чадвартай боловч java сурах хэрэгтэй. AIDE нь жилд ойролцоогоор 50 еврогийн зардал гаргадаг

Би Минторисыг сонгосон. Энэ хэсэгт би танд Mintoris програмчлалын заавар өгөхгүй, харин функциональ блокуудын товч тайлбарыг өгөх болно

Дараагийн хэсэгт хоёр мэдрэгчийн өгөгдлийн шугам болон холбогдох цаг хугацааны тамгуудын хувьд гурван массивыг зарласан болно. Цагийн тэмдгийн өгөгдлийг диаграммын x тэнхлэгийг тэмдэглэхэд ашигладаг. Sodial нь тусгай ширхэгийн хэмжээгээр тодорхойлсон хоёр өгөгдлийн урсгалыг гаргадаг. Хоёр өгөгдлийн массив эдгээр утгыг авдаг.

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)

Бүсгүй цэс $ (4) = "хамгийн их. 100 мэдээллийн багц", "хамгийн их. 1000 өгөгдлийн багц", "хамгийн их. 5000 өгөгдлийн багц", "хамгийн их. 10000 мэдээллийн багц", "Гарах"

'Массивуудыг оруулна уу

I = 0 -ээс 59 хүртэл

dustData (i) = 0

dustDataF (i) = 0

timeStamp (i) = i

Дараа нь i

Дараа нь жагсаалтын цэсийг тохируулна. Энэ нь хэрэглэгч цуглуулах өгөгдлийн дээд хэмжээг сонгох сонголтыг өгдөг. Энэ бол ухаалаг гар утсыг эцэс төгсгөлгүй өгөгдлийг сорохоос урьдчилан сэргийлэх аюулгүй байдлын унтраалга юм. BTgetPaired $ () функцууд нь андроид төхөөрөмж дээрх бүх хосолсон төхөөрөмж, нэр, BT хаягийн жагсаалтыг буцааж өгдөг.

L цэс $ (), сонголт

'Хадгалах өгөгдөл байгаа тохиолдолд хамгийн их хэмжээг сонгоно уу

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

Дэвшил OFF

Амжилттай бол BT төхөөрөмжид холбогдоно уу

Хэрэв BTGetState (1) = 4 бол "Холбогдсон" гэж хэвлээрэй, өөр хэвлэх "Холбогдож чадсангүй" гэж хэвлээрэй; нэр $

"Програм дууссан" гэж хэвлэх

Төгсгөл

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")

Writeln 1, "Цагийн тоос 2.5 Тоос 10"

'Хэмжсэн өгөгдлөөр массивыг бөглөнө үү

өгөгдөл $ = "" пакет $ = ""

индекс = 0

MaxData> 0 байхад хийх

BTR 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 (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 хүлээнэ үү

Гогцоо

Хаах 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 -ийн хүрээ ба нэрийг тохируулна уу

Axis 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 -ийг ашиглаж болно. GnuPlot дахь "Test.gp" файлыг ашиглан GnuPlot -ийг "Test.dat" нэртэй өгөгдлийн файлыг харуулахаар тохируулна уу. Та мөн эндээс олж болно

Дэлгэрэнгүй мэдээлэл, туршилтыг видеог үзнэ үү. Маш их хөгжилтэй, илүү олон санаануудыг аваарай!

Зөвлөмж болгож буй: