Სარჩევი:
- ნაბიჯი 1: რაც გჭირდებათ
- ნაბიჯი 2: Bluetooth მოდულის მომზადება
- ნაბიჯი 3: ნაწილების დამონტაჟება
- ნაბიჯი 4: დაწყვილება
- ნაბიჯი 5: პროგრამული უზრუნველყოფა
- ნაბიჯი 6: ტესტი
ვიდეო: სოდიალური მტვრის სენსორი Android- ზე: 6 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
ერთი წლის წინ ჩემს მეგობარს ჰქონდა შაბათ -კვირის სემინარი გარემოს მონიტორინგის შესახებ. სემინარის მიზანი იყო ჟოლოს პი დაფასთან დაკავშირებული მტვრის სენსორის შექმნა, რათა გაზომვის მონაცემები მიეყენებინა ზოგიერთ სერვერზე, რომელიც უზრუნველყოფდა მტვრის კონცენტრაციის ხშირად განახლებულ რუქებს. ჩემმა მეგობარმა მკითხა, არის თუ არა საშუალება სენსორის მონაცემების პირდაპირ მის სმარტფონზე მონიტორინგისა და შესვლისთვის. ასე რომ, მე გამოვიძიე ინტერნეტი მონაცემთა ცხრილისთვის და დავინახე, რომ სენსორს ჰქონდა მარტივი UART ინტერფეისი 9600Baud 8N1 პროტოკოლით. მაგრამ როგორ დააკავშიროთ UART სმარტფონს? ისე, ეს ადვილია. მე უბრალოდ უნდა გამოვიყენო ერთ -ერთი ყველაზე გავრცელებული პატარა Bluetooth მოდული, რომელიც უზრუნველყოფს ემულაციულ კომპორს ანდროიდზე. ახლა ნახე როგორ მოვახერხე.
ნაბიჯი 1: რაც გჭირდებათ
თქვენ გჭირდებათ შემდეგი ნაწილები
- JST XH 7-პინიანი შესაერთებელი Sodial ინტერფეისისთვის მავთულხლართებით. შევიძინე ჩემი eBay– ზე.
- Bluetooth მოდული HC05 ან 06 თავსებადია UART კონექტორთან
- USB სერიული გადამყვანი TTL დონის ინტერფეისით. ჩვენ ვიყენებთ ამას BT მოდულის უნიკალური სახელის მისაცემად
- სოდური SDS011 მტვრის სენსორი. ჩემი ავიღე Ebay– დან
- veroboard- ის ნაჭერი
- USB-B კონექტორი
- მავთული
- ხის ნაჭერი ყველაფრის დასამაგრებლად
შემდეგ დაგჭირდებათ რამდენიმე მარტივი ინსტრუმენტი:
- ხის საჭრელი ბუქსი
- პინცეტი
- solder რკინის და solder
- მავთულის საჭრელი
- ცხელი წებოს იარაღი
- 8 მმ სილიკონის ყდის ნაჭერი (სურათზე არ არის)
თქვენ შეგიძლიათ ჩამოტვირთოთ Sodial SDS011 მონაცემთა ცხრილი აქ Sodial SDS011 მონაცემთა ცხრილი
ნაბიჯი 2: Bluetooth მოდულის მომზადება
BT- მოდულს აქვს UART ინტერფეისი TTL დონეზე. მისი ხელახალი კონფიგურაცია შესაძლებელია "AT" ბრძანებებით, როგორც ეს ძველ დროში გავაკეთეთ ინტერნეტ მოდემებთან. თქვენს აპარატზე ტერმინალურ პროგრამასთან დასაკავშირებლად თქვენ უნდა მოერგოთ UART თქვენს კომპიუტერს. მე გამოვიყენე USB-RS232 გადამყვანი, რომელიც ვიყიდე ამაზონში. მე გამოვიყენე კონექტორი BT- მოდულისთვის და 3, 3V დენის წყარო და GND გადავიყვანე კონვერტორიდან BT- მოდულში. შემდეგ დავაკავშირე შესაბამისი TxD და RxD ხაზები კროსვორდზე. TxD USB კონვერტორიდან RxD BT მოდულიდან და პირიქით.
მე მაქვს ლინუქსის აპარატი და ვიყენებ cutecom- ს. USB კონვერტორის დაკავშირების შემდეგ კომპორტი იყო "ttyUSB0". თქვენ შეგიძლიათ იპოვოთ კომპორტის სახელები "/dev" დირექტორიაში თქვენს linux აპარატზე. Windows მომხმარებლებისთვის მე გირჩევთ "hterm". ადვილია ოპერაცია. ჩაწერეთ "AT" და პასუხად უნდა მიიღოთ "AT". შემდეგ ჩაწერეთ "AT+NameSensor", რათა BT მოდულს მიანიჭოთ სახელი "Sensor"
ნაბიჯი 3: ნაწილების დამონტაჟება
გაჭერით ხის ნაჭერი ზომით, რომელიც შესაფერისია ყველა ნაწილის აღებისთვის. შეაერთეთ ყველა სიგნალი, როგორც ეს მოცემულია სქემატურ რეჟიმში. კარგი იდეაა მავთულხლართების გარშემო სილიკონის ყდის დადება, მათი დასაცავად. შეაერთეთ USB-B დანამატი პერფორფზე. იგი გამოიყენება მხოლოდ ელექტროენერგიის მიწოდებისთვის. შეასწორეთ ყველა ნაწილი ხრახნებით ხის ბაზაზე. საბოლოოდ ცხელი წებო კაბელები დაფიქსირება მათ ხეზე.
ნაბიჯი 4: დაწყვილება
ჩართეთ სენსორის პროგრამა USB დენის წყაროს ჩართვით. BT- მოდულზე წითელი LED იწყებს მოციმციმებას. არ შეეცადოთ დააკავშიროთ ის თქვენს Android სმარტფონთან. თქვენ უნდა შეიყვანოთ პინ კოდი. ეს არის "1234". კოდის შეყვანის შემდეგ თქვენი სმარტფონი უნდა იყოს დაწყვილებული BT მოდულთან.
ნაბიჯი 5: პროგრამული უზრუნველყოფა
მე მომწონს Android პროგრამების დაწერა მიზნობრივ პლატფორმაზე. ეს გიშველის იმ ემულაციისგან, რომელსაც უნდა გაინტერესებდე, თუ მუშაობ Android Studio– სთან. მე აღმოვაჩინე სამი შესაფერისი განვითარების ინსტრუმენტი Android- ზე
- მინტორის ძირითადი. ძირითადი თარჯიმანი, რომელსაც აქვს მდიდარი კომპლექტი ბრძანებების გადასაჭრელად ანდროიდზე თითქმის ყველაფერი. თქვენ შეგიძლიათ შექმნათ მალსახმობები თქვენი აპებისთვის. Mintoris Basic არ შეიცავს შემდგენელს. თქვენ უნდა გქონდეთ დაინსტალირებული Mintoris ყველა მოწყობილობაზე, რომელსაც იყენებთ. თქვენ უნდა გადაიხადოთ მხოლოდ ერთხელ (დაახლოებით 7 ევრო)
- ძირითადი! უკიდურესად კარგი ძირითადი თარჯიმანი და შემდგენელი (დამატება რამდენიმე ევროდ). თითქმის ყველაფერზეა დამოკიდებული ანდროიდი და თქვენ შეგიძლიათ შეადგინოთ რეალური პროგრამები მათი განაწილებისათვის Basic- ის გარეშე! სამიზნე მოწყობილობაზე. სამწუხაროდ ძირითადი! მოკლებულია მინტორისის დიაგრამის დიაგრამის დიაგრამის ფუნქციებს
- AIDE არის ნახევრად პროფესიონალური IDE ჯავაში ანდროიდის განვითარებისათვის ანდროიდზე. AIDE– ით თქვენ გაქვთ მაქსიმალური მოქნილობა, მაგრამ თქვენ უნდა ისწავლოთ java. AIDE– ს წლიური ხარჯები დაახლოებით 50 ევროა
მე მინტორის შევარჩიე. ამ ნაწილში მე არ მოგცემთ პროგრამას სამეურვეო პროგრამა მინტორისში, მაგრამ ფუნქციის ბლოკების მოკლე აღწერას
მომდევნო ნაწილში სამი მასივი გამოცხადებულია ორი სენსორის მონაცემთა ხაზისთვის და შესაბამისი დროის ნიშნული. დროის ნიშნულის მონაცემები გამოიყენება დიაგრამის x ღერძის მარკირებისთვის. Sodial აწარმოებს მონაცემთა ორ ნაკადს, თითოეული განსაზღვრულია ნაწილაკების განსაკუთრებული ზომისთვის. ორი dustdata- მასივი იღებს ამ მნიშვნელობებს.
WakeLock ნაწილობრივი
TextColor 100, 75, 10
TextColorA 50, 50, 50
TextAlign 0
ტექსტის ზომა 24
CLS
ამომხტარი ფანჯარა "მტვრის სენსორის საზომი (გ) ARJ 2017"
გლობალური dustData (), dustDataF (), timeStamp () გლობალური ინდექსი, არჩევანი, maxData, ფაილის სახელი $
დაბნელებული დრო ბეჭედი (59)
მტვრის მტვერი მონაცემები (59)
მტვრის მტვერი DataF (59)
Dim მენიუ $ (4) = "მაქს. 100 მონაცემთა ნაკრები", "მაქს. 1000 მონაცემთა ნაკრები", "მაქს. 5000 მონაცემთა ნაკრები", "მაქს. 10000 მონაცემთა ნაკრები", "გასვლა"
'დაიწყე მასივები
I = 0 -დან 59 -მდე
მტვერი მონაცემები (i) = 0
dustDataF (i) = 0
დროის მარკა (i) = i
შემდეგი მე
შემდეგი, სია მენიუ არის კონფიგურირებული. ეს აძლევს მომხმარებელს არჩევანს, რომ შეარჩიოს მონაცემთა შეგროვების მაქსიმალური ზომა. ეს მხოლოდ უსაფრთხოების გადამრთველია, რათა სმარტფონმა არ დაუშვას უსასრულო მონაცემები. ფუნქციები BTgetPaired $ () აბრუნებს ანდროიდულ მოწყობილობაზე ყველა დაწყვილებული მოწყობილობის ჩამონათვალს, მათ სახელებს და BT- მისამართს.
L ist მენიუ $ (), არჩევანი
შეარჩიეთ მაქსიმალური რაოდენობა, თუ მონაცემები შეინახება
runLevel = 1
აირჩიეთ არჩევანი
საქმე 0 maxData = 100
საქმე 1 maxDate = 1000
საქმე 2 maxData = 5000
საქმე 3 maxData = 10000
საქმე 4 maxData = 0
დასრულების არჩევა
დაკავშირების სენსორი
მუქი წყვილი $ (0)
წყვილი $ () = BTGetPaired $ ()
თუ წყვილი $ (0) = "არცერთი" მაშინ
დაბეჭდე "დაწყვილებული მოწყობილობები ვერ მოიძებნა. ჩართულია BT?" დაბეჭდე "პროგრამა დასრულდა"
Დასასრული
Დაასრულე თუ
ჩამოთვალეთ წყვილი $ (), მოწყობილობა $
სახელი $ = საქონლის ამონაწერი $ (მოწყობილობა $, 0)
მისამართი $ = საქონლის ამონაწერი $ (მოწყობილობა $, 1)
BTConnect 1, მისამართი $
'დაელოდეთ კავშირს
პროგრესი ჩართულია
დაბეჭდეთ "ცდილობს დაკავშირებას"; მისამართი $
I = 1 -დან 20 -მდე
პროგრესი i/2
თუ BTGetstate (1) = 4 მაშინ Exit For Wait 1000
შემდეგი მე
პროგრესი გამორთულია
წარმატების შემთხვევაში დაუკავშირდით BT მოწყობილობას
თუ BTGetState (1) = 4 მაშინ დაბეჭდეთ "დაკავშირებულია" სხვაგვარად ბეჭდვა "დაკავშირება ვერ მოხერხდა"; სახელი $
დაბეჭდე "პროგრამა დასრულდა"
Დასასრული
Დაასრულე თუ
მომდევნო ბლოკი აჩვენებს მონაცემთა მოპოვებას. თითოეული მონაცემთა სესიისთვის ფაილი ავტომატურად იხსნება და სახელდება დროის და თარიღის მიხედვით. შემდეგ მარყუჟი კითხულობს სენსორის მონაცემებს. მონაცემები შეფუთულია რამდენიმე ბაიტში. ბაიტების ნაკრები იდენტიფიცირებულია ორი ASCII სიმბოლოთი 170 და 171. შემდეგი მონაცემები რეორგანიზებულია და ივსება მტვრის მასივებში
გრაფიკა ჩართულია
გახსენით მონაცემთა ფაილი დასაწერად
fileName $ = FormatTime $ (t, "yyyy-MM-dd-kk-mm-ss") + ".dat"
გახსენით 1, fileName $, "w+" დაბეჭდეთ "გახსნილი მონაცემთა ფაილი"; ფაილის სახელი $ Writeln 1, FormatTime $ (დრო (), "yy-MM-dd")
მწერალი 1, "დროის მტვერი 2.5 მტვერი 10"
შეავსეთ მასივი გაზომილი მონაცემებით
მონაცემები $ = "" პაკეტი $ = ""
ინდექსი = 0
Do while 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 $ (დრო (), "kk: mm: ss") + "" + Str $ (dustDataF (ინდექსი)) + "" + Str $ (dustData (ინდექსი))
მონაცემები $ = ""
maxData = maxData-1
ინდექსი = ინდექსი+1
თუ ინდექსი> 59 მაშინ ინდექსი = 0
dustData (ინდექსი) = 0
dustDataF (ინდექსი) = 0
Დაასრულე თუ
Დაასრულე თუ
DrawGraph ()
დაელოდე 100
მარყუჟი
დახურვა 1
გრაფიკა გამორთულია
CLS ბეჭდვა "პროგრამა დასრულდა"
Დასასრული
ბოლო ნაწილი არის ქვეგეგმა, რომელსაც ეწოდება მონაცემების ყოველი მიღების შემდეგ. ის ასუფთავებს ეკრანს, ხატავს დიაგრამას ფაქტობრივი მონაცემებით, რომელიც ინახება მტვრისა და დროის ნიშნულის მასივებში.
'დახაზეთ კოორდინატები, ეტიკეტები, ტკიპები და ასევე მონაცემთა მოსახვევები
ქვე DrawGraph ()
გრაფიკული რეჟიმში ეკრანი იწმინდება მიმდინარე ფერში
ფერი 0, 0, 0
CLS
ფერი 0, 0, 100
დააყენეთ გრაფიკული ფერი, რომელიც გამოიყენება ქსელის ხაზების დასახატად
TextColor 100, 100, 100, 50
'TextColor არის ბადის ძირითადი სათაურის ფერი
TextColorA 100, 100, 100
'TextColorA გამოიყენება ღერძის სათაურებისა და ქსელის ანოტაციებისთვის.
დააყენეთ ღერძის სათაურის ტექსტის ზომა
”ქსელის მთავარი სათაური არის 2x ამ ზომის
ტექსტის ზომა 20
FixDecimal 0
დააყენეთ 2 ათობითი ადგილის ჩვენება
PadDigits 2
'დახაზეთ ბადე გრაფიკისთვის' დააყენეთ X & Y დიაპაზონი და სათაური
ღერძი AxisX 0, 59, "დრო/წ"
AxisY 0, 10000, "ug/m3"
ბადე 3, "მტვრის კონცენტრაცია"
დახაზეთ მტვრის გრაფიკები
ფერი 100, 0, 0
GraphXY დროის შტამპი (), dustDataF ()
ფერი 0, 100, 0
GraphXY დროის შტამპი (), 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". თქვენ ასევე შეგიძლიათ მისი პოვნა აქ
იხილეთ ვიდეო უფრო დეტალური და ტესტირებისთვის. ბევრი გართობა და მეტი იდეა!
გირჩევთ:
DIY სუნთქვის სენსორი არდუინოსთან ერთად (გამტარი ნაქსოვი გაჭიმვის სენსორი): 7 ნაბიჯი (სურათებით)
წვრილმანი სუნთქვის სენსორი არდუინოსთან ერთად (გამტარი ნაქსოვი გაჭიმვის სენსორი): ეს წვრილმანი სენსორი მიიღებს გამტარი ნაქსოვი გაჭიმვის სენსორის ფორმას. ის შემოეხვევა თქვენს მკერდს/კუჭს, ხოლო როდესაც თქვენი გულმკერდი/მუცელი გაფართოვდება და იკუმშება, ასევე გაიზრდება სენსორი და, შესაბამისად, შეყვანის მონაცემები, რომლებიც მიეწოდება არდუინოს. Ისე
მტვრის რუფლერი (სუმოს ბოტი): 4 ნაბიჯი
მტვრის რუფლერი (Sumo Bot): ინსტრუმენტებისა და მასალების სია მტვრის რუფლერის ასაგებად გამოყენებული ინსტრუმენტები და მასალები ძალიან პირდაპირი და ადვილად მოსაპოვებელია. ელექტრონიკა: ბატარეის პაკეტი, უწყვეტი ბრუნვის მაღალი ბრუნვის სერვისები (x3), მიმღები და დისტანციური. ქაფის ბირთვის 3x2 'ფურცელი x-a
არდუინოს მტვრის შესწავლა: 8 ნაბიჯი
არდუინოს მტვრის კვლევა: როგორი იქნებოდა მარსზე ცხოვრება? ჰაერი სუნთქავს? უსაფრთხოა? რამდენი მტვერია იქ? რამდენად ხშირია ქარიშხლები? ოდესმე გაინტერესებთ ამ კითხვებზე პასუხი?
Arduino– ს მტვრის ნაწილაკების მონიტორინგის სადგური: 4 ნაბიჯი (სურათებით)
Arduino– ს მტვრის ნაწილაკების მონიტორინგის სადგური: თქვენ შეგიძლიათ მარტივად ააწყოთ ნივთების წვრილმანი ინტერნეტი, რომელიც აკვირდება თქვენს სახლში მტვრის დაბინძურებას 50 დოლარზე ნაკლებ ფასად და მიიღეთ შეტყობინება, როდესაც მტვრის დონე ძალიან მაღალი გახდება, ასე რომ თქვენ შეგიძლიათ გაათბოთ ოთახი, ან შეგიძლიათ დააყენოთ გადი გარეთ და მიიღე შეტყობინება თუ არის
Nokia 6280 ეკრანის საფარის მოცილება მტვრის გაწმენდისთვის: 7 ნაბიჯი
Nokia 6280 ეკრანის საფარის მოცილება მტვრის დასუფთავების მიზნით: მრავალი სხვა მოდელისგან განსხვავებით, Nokia 6280 არ არის შექმნილი ისე, რომ მომხმარებლებს თავად შეეძლოთ ეკრანის საფარის ამოღება. ეს აღიზიანებს მათ, ვინც მტვერს იჭერს რეალურ LCD- სა და ეკრანის საფარს შორის, რაც ბევრი მფლობელია … სინამდვილეში, დროთა განმავლობაში, ეს