Агуулгын хүснэгт:
- Алхам 1: Танд хэрэгтэй зүйл
- Алхам 2: Bluetooth модулийг бэлтгэх
- Алхам 3: эд ангиудыг суурилуулах
- Алхам 4: Хослуулах
- Алхам 5: Програм хангамж
- Алхам 6: Туршилт
Видео: Андройд дээрх натрийн тоосны мэдрэгч: 6 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:04
Жилийн өмнө нэг найз маань өнгөрсөн амралтын өдрүүдэд байгаль орчны хяналт шинжилгээний талаар семинар хийсэн. Семинарын зорилго нь бөөрөлзгөнө пи самбартай холбогдсон тоосны мэдрэгчийг бий болгож, тоосны концентрацийн газрын зургийг байнга шинэчилдэг зарим сервер дээр хэмжилтийн өгөгдлийг байрлуулах явдал байв. Найз маань мэдрэгчийн өгөгдлийг ухаалаг гар утсан дээрээ шууд хянах, бүртгэх арга байгаа эсэхийг асуув. Тиймээс би мэдээллийн хуудсыг интернэтээс хайж үзэхэд мэдрэгч нь 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 модулийг бэлтгэх
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: Туршилт
Мэдрэгчийг асаагаад програмыг эхлүүлнэ үү. Хосолсон төхөөрөмжүүдийн жагсаалтаас "Мэдрэгч" нэртэй төхөөрөмжийг сонгоно уу. Мэдрэгчийг холбосны дараа дэлгэц дээрх өгөгдлийг харуулах болно. Мэдээллийн файлыг нэгэн зэрэг хуваарилдаг. Загвараа дуусгасны дараа та өгөгдлийг харуулахын тулд GnuPlot -ийг ашиглаж болно. GnuPlot дахь "Test.gp" файлыг ашиглан GnuPlot -ийг "Test.dat" нэртэй өгөгдлийн файлыг харуулахаар тохируулна уу. Та мөн эндээс олж болно
Дэлгэрэнгүй мэдээлэл, туршилтыг видеог үзнэ үү. Маш их хөгжилтэй, илүү олон санаануудыг аваарай!
Зөвлөмж болгож буй:
Arduino, хэт авианы мэдрэгч ба Servo мотор ашиглан ухаалаг тоосны хайрцаг: 3 алхам
Arduino, хэт авианы мэдрэгч ба Servo мотор ашиглан ухаалаг хогийн сав: Энэ төсөлд би Arduino ашиглан ухаалаг хогийн савыг хэрхэн яаж хийхийг танд үзүүлэх болно. Хогийн савтай ойртох үед хогийн савны таг автоматаар нээгдэнэ. Энэхүү ухаалаг хогийн савыг хийхэд ашигладаг бусад чухал бүрэлдэхүүн хэсгүүд нь HC-04 хэт авианы сенс юм
Magicbit -ээс ухаалаг тоосны хайрцаг: 5 алхам
Magicbit -ээс авсан ухаалаг хогийн сав: Энэхүү гарын авлагад бид Magicbit dev ашиглан ухаалаг хогийн сав хэрхэн хийх талаар сурах болно. Arduino IDE бүхий самбар. Эхлээд үзье
Андройд студи ашиглан Андройд аппыг хэрхэн үүсгэх вэ: 8 алхам (зурагтай)
Андройд студи ашиглан Андройд апп хэрхэн үүсгэх вэ: Энэхүү заавар нь Android Studio хөгжүүлэлтийн орчныг ашиглан Андройд апп бүтээх үндсийг заах болно. Андройд төхөөрөмж улам бүр түгээмэл болж байгаа тул шинэ програмын эрэлт нэмэгдэх болно. Android Studio нь ашиглахад хялбар (
Шүгэл хянадаг тоосны хайрцаг: 5 алхам
Шүгэл хянадаг хогийн сав: Энэхүү төсөлд дууны мэдрэгч нь таны хүрээлэн буй орчны дууны эрчмийг илрүүлж, дууны эрч хүч нь тодорхой босго хэмжээнээс дээш байвал servo моторыг хөдөлгөж (хогийн савыг онгойлгох) ажиллуулах болно
Arduino хөдөлгүүртэй тоосны тоосонцорыг хянах станц: 4 алхам (зурагтай)
Arduino хөдөлгүүртэй тоосны тоосонцорыг хянах станц: Та гэрийнхээ тоосны бохирдлыг 50 доллараас бага үнээр хянадаг төхөөрөмжүүдийн DIY интернэтийг хялбархан бүтээж, тоосны хэмжээ хэт өндөр байх үед өрөөг агааржуулах боломжтой болно. үүнийг гадаа гаргаад мэдэгдээрэй