Სარჩევი:
- მარაგები
- ნაბიჯი 1: შეიმუშავეთ პერსონალური მომსახურება და მახასიათებლები
- ნაბიჯი 2: Arduino კოდი
- ნაბიჯი 3: Android Studio კოდი
- ნაბიჯი 4: საბოლოო განაცხადი
ვიდეო: შექმენით Wearable Motion Tracker (BLE Arduino– დან პერსონალურ Android Studio აპლიკაციაში): 4 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:15
Bluetooth Low Energy (BLE) არის დაბალი სიმძლავრის Bluetooth კომუნიკაციის ფორმა. ტარებადი მოწყობილობები, ისევე როგორც ჭკვიანი ტანსაცმელი, რომელსაც მე ვეხმარები დიზაინში Predictive Wear, უნდა ზღუდავდეს ენერგიის მოხმარებას, სადაც ეს შესაძლებელია, ბატარეის ხანგრძლივობის გასაგრძელებლად და ხშირად გამოიყენოს BLE. Bluetooth სპეციალური ინტერესების ჯგუფი (SIG) განსაზღვრავს რამდენიმე სპეციფიკაციას, რომელიც მოწყობილობამ უნდა გამოიყენოს Bluetooth მოწყობილობასთან ურთიერთქმედების მიზნით, რომელსაც ისინი უწოდებენ "პროფილებს". პროგრამების უმეტესობა იყენებს გენერალური ატრიბუტის პროფილს (GATT) მონაცემების გასაგზავნად BLE ბმულზე. BLE– ში არის სამი ფუნდამენტური კონცეფცია: პროფილები, სერვისები და ატრიბუტები.
Bluetooth SIG– ს აქვს სტანდარტიზებული მრავალი საერთო პროფილი, სერვისი და ატრიბუტი. ამასთან, პერსონალური აპარატურის შექმნისას ხშირად არის საჭირო პერსონალური სერვისებისა და ატრიბუტების შექმნა და ბევრი გაკვეთილი არ არის ხელმისაწვდომი. იმისათვის, რომ საქმე უფრო გართულდეს, ადაფრუტი არ იძლევა რაიმე მითითებას მობილური აპლიკაციების შემუშავების შესახებ მათ BLE მოდულებთან ერთად და მათი პროგრამების წყაროს კოდი ძნელია შეცვალოს ინჟინერმა.
ეს გაკვეთილი მიზნად ისახავს ახსნას:
- როგორ შევქმნათ პერსონალური GATT სერვისები და მახასიათებლები
- როგორ დავგეგმოთ Adafruit Bluefruit LE SPI Friend, რომ ვიმოქმედოთ როგორც GATT სერვერი ამ პერსონალური სერვისებისა და მახასიათებლებისთვის
- როგორ დავპროგრამოთ Android მოწყობილობა, რომ იმოქმედოს როგორც GATT კლიენტი, რომ წაიკითხოს მონაცემები GATT სერვერიდან
ეს გაკვეთილი არ არის გამიზნული გადასაღებად წარმოებისათვის მზა აპლიკაციაში - ეს უბრალოდ შესავალია BLE– ში.
ფონური კითხვა:
- Adafruit Bluefruit LE SPI მეგობრების დოკუმენტაცია
- თუ თქვენ არ იცნობთ GATT ან BLE
მარაგები
- 1x - Arduino მოწყობილობა (მე გაეროს ვიყენებ ამ გაკვეთილისთვის)
- 1x - Adafruit Bluefruit LE SPI მეგობარი
- 8x - მამრობითი to მამრობითი jumper მავთულები
- ძირითადი soldering აღჭურვილობა (to solder header pins on SPI Friend)
- კომპიუტერი (არდუინოს მოწყობილობისა და ანდროიდის მოწყობილობის დასაპროგრამებლად)
ნაბიჯი 1: შეიმუშავეთ პერსონალური მომსახურება და მახასიათებლები
შესავალი
ეს სტატია მშვენივრად მუშაობს იმის ახსნაში, თუ როგორ უნდა შეიმუშაოს პერსონალური მომსახურება და მახასიათებლები. მე გირჩევთ ამ სტატიის წაკითხვას. მე გთავაზობთ ძალიან მარტივ მიმოხილვას ქვემოთ, რომელიც უგულებელყოფს დახვეწილობას სიმარტივის სასარგებლოდ.
GATT სერვისები არის მახასიათებლების კრებული.
GATT მახასიათებლები შეიცავს თვისებას, მნიშვნელობას და ნულოვან ან მეტ აღმწერებს.
- თვისება: როგორ უნდა მოხდეს მონაცემების დამუშავება კლიენტის მიერ (Android აპლიკაცია) მაგ. წაიკითხეთ, დაწერეთ, დაწერეთ უპასუხოდ, შეატყობინეთ და მიუთითეთ.
- მნიშვნელობა: მახასიათებლის ფაქტობრივი მნიშვნელობა მაგ. 1089 წ
- აღმწერები: ეს არის ინფორმაცია ღირებულების შესახებ მაგ. ერთეული, მილიწამი
დიზაინი
კარგი, ახლა თქვენ იცით რა არის სერვისები და მახასიათებლები, ჩვენ უნდა გავარკვიოთ როგორ შევქმნათ ზოგიერთი სერვისი და მახასიათებლები, რომ მივიღოთ ჩვენი პერსონალური მონაცემები და გავაგზავნოთ ჩვენი GATT სერვერიდან (Arduino) კლიენტზე (Android აპლიკაცია). განვიხილოთ არდუინოს მოწყობილობა, რომელიც აგროვებს მონაცემებს ამაჩქარებელ-გიროსკოპული მოდულიდან (AGM). ჩვენ გვსურს შევაგროვოთ გიროსკოპი და აჩქარების გაზომვები სამი სივრცითი ღერძიდან და დრო, როდესაც ეს გაზომვები იქნა მიღებული და ეს მონაცემები გადავეცით ჩვენს მობილურ აპლიკაციას. ჩვენ ასევე გვინდა ვიცოდეთ როდის გვჭირდება მოწყობილობის დატენვა, ამიტომ გვსურს წავიკითხოთ ბატარეის დონე და გადავცეთ ის ჩვენს მობილურ აპლიკაციას.
1. შეგვიძლია გამოვიყენოთ რომელიმე სტანდარტული სერვისი და მახასიათებელი?
Bluetooth SIG– ს აქვს სტანდარტიზებული მრავალი საერთო სერვისი და მახასიათებელი. პირველ რიგში, შეამოწმეთ ეს თუ არა თქვენ შეგიძლიათ აირჩიოთ სტანდარტიზებული სერვისები და მახასიათებლები. სტანდარტულ სერვისებსა და მახასიათებლებს შეუძლიათ გამოიყენონ გაცილებით მცირე მონაცემთა პაკეტები, რადგან უნივერსალურად უნიკალური იდენტიფიკატორი (UUID) არის 16 ბიტიანი, ხოლო პერსონალურ სერვისებსა და მახასიათებლებს უნდა გამოიყენონ 128 ბიტიანი UUID– ებისთვის. დაწვრილებით UUID– ებზე მოგვიანებით. ჩვენი ძიებიდან ჩვენ აღმოვაჩინეთ სტანდარტიზებული "ბატარეის სერვისი", რომელიც შეიცავს ერთ დამახასიათებელ "ბატარეის დონეს".
2. გამოყავით მონაცემების ყველა მნიშვნელობა, რომლის გაგზავნა გსურთ BLE– ზე მახასიათებლებსა და სერვისებში
ჩვენ შეგვიძლია ჩვენი პერსონალური მონაცემების რაოდენობა დავყოთ შვიდ პერსონალურ მახასიათებლად ერთი პერსონალური სერვისის ფარგლებში. ჩვენ ამ სერვისს დავარქმევთ "AGM სერვისს". ის შეიცავს 7 მახასიათებელს: x- აჩქარება, y- აჩქარება, z- აჩქარება, x- გიროსკოპი, y- გიროსკოპი, z- გიროსკოპი და დროის მითითება.
3. თითოეული მახასიათებლისათვის საჭირო თვისებების განსაზღვრა
არსებობს რამდენიმე თვისება, რომელსაც შეიძლება ახასიათებდეს მახასიათებელი.
- წაიკითხეთ: კლიენტს (Android აპლიკაცია) შეუძლია წაიკითხოს მნიშვნელობა GATT სერვერიდან (Arduino)
- დაწერეთ: კლიენტს შეუძლია შეცვალოს მნიშვნელობა GATT სერვერიდან
- მიუთითეთ: კლიენტი მიიღებს შეტყობინებას, თუ მნიშვნელობა შეიცვლება GATT სერვერიდან და კლიენტი სავარაუდოდ გაგზავნის დადასტურებას GATT სერვერზე
- შეატყობინეთ: კლიენტს ეცნობება, თუ მნიშვნელობა შეიცვლება GATT სერვერიდან და კლიენტი არ ელოდება GATT სერვერზე დადასტურების გაგზავნას
ამ გაკვეთილისთვის ჩვენ დავაყენებთ ჩვენს ყველა მახასიათებელს წასაკითხად, გარდა ბატარეის დონისა, რომელსაც ექნება როგორც შეტყობინების, ისე წაკითხვის თვისებები.
4. შექმენით UUIDs საბაჟო სერვისებისთვის და მახასიათებლებისთვის და იპოვეთ სტანდარტული UUIDs
როგორც მოკლედ აღვნიშნე ადრე, Bluetooth SIG სტანდარტიზებული სერვისები და მახასიათებლები იყენებს 16 ბიტიან UUID– ს, ხოლო პერსონალური სერვისები და მახასიათებლები 128 ბიტიან UUID– ებს. მაგალითად, იხილეთ ბატარეის სერვისისთვის მინიჭებული ნომერი Bluetooth SIG– ზე. მინიჭებული ნომერი 0x180F წარმოადგენს 128 ბიტიან UUID "0000180F-0000-1000-8000-00805F9B34FB". ოთხი ციფრი (16 ბიტი) თამამად უნიკალურია კონკრეტული სტანდარტიზებული სერვისისთვის ან მახასიათებლისთვის, ხოლო სხვა სიმბოლოები დაცულია ყველა სტანდარტიზებულ სერვისსა და მახასიათებელს შორის. მას შემდეგ, რაც კლიენტმა და GATT სერვერმა იციან, რომ სტანდარტიზებული სერვისები და მახასიათებლები განსხვავდება მხოლოდ თამამი ციფრებით, მონაცემთა პაკეტის ზომა შეიძლება მნიშვნელოვნად შემცირდეს. ამასთან, საბაჟო მომსახურება და მახასიათებლები არ შეიძლება მოქმედებდეს იმავე ვარაუდით.
ამის ნაცვლად, საბაჟო სერვისებმა და მახასიათებლებმა უნდა გამოიყენონ შეუმოკლებელი 128 ბიტიანი UUID. აქ არის UUID ონლაინ გენერატორი. სტანდარტული UUID– ის გარდა ნებისმიერი UUID მისაღებია საბაჟო UUID– ისთვის. თუმცა, ტიპური დასახელების კონვენცია არის პერსონალური სერვისის აღნიშვნა 00000001-… და მახასიათებლები ამ საბაჟო სერვისის 00000002-…
აქ არის იმ სერვისებისა და მახასიათებლების შეჯამება, რომელსაც ჩვენ განვახორციელებთ მათ UUID– თან ერთად
ნაბიჯი 2: Arduino კოდი
განაახლეთ BLUEFRUIT LE SPI მეგობარი
პირველი, შეაერთეთ Adafruit Bluefruit LE SPI მეგობარი, როგორც ისინი მიუთითებენ მათ დაკავშირების სახელმძღვანელოში და ჩართეთ Arduino მოწყობილობა. დარწმუნდით, რომ შეგიძლიათ იპოვოთ Adafruit Bluefruit LE SPI Friend თქვენს Android მოწყობილობაზე Bluetooth მოწყობილობების სკანირებისას. ჩამოტვირთეთ Bluefruit Connect აპლიკაცია, დაუკავშირდით Adafruit Bluefruit LE SPI Friend- ს და მიეცით საშუალება განაახლოოს მოწყობილობის firmware. ეს ნაბიჯი მნიშვნელოვანია. თუ არ განაახლებთ firmware– ს, ბრძანებები, რომლებსაც თქვენ აძლევთ მოწყობილობას Arduino– ს საშუალებით, სავარაუდოდ ჩავარდება და აშკარა შეცდომა არ გექნებათ იმის გასაგებად, თუ რა არის პრობლემა.
აქ არის ჩემი რეპო ამ პროექტისთვის. თქვენ შეგიძლიათ ნახოთ Arduino– ს სრული კოდი აქ.
მიმოხილვა
რამდენიმე მნიშვნელოვანი რამ უნდა აღინიშნოს:
- Setup () მეთოდით, ყველა მორგებული UUID უნდა შეიცავდეს "-"-ს ყოველ ორ სიმბოლოს შორის. მაგალითად, "AT+GATTADDCHAR = UUID128 = 00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66" იმუშავებს. "AT+GATTADDCHAR = UUID128 = 00000005-627E-47E5-A3fCDDABD97AA966" არ იმუშავებს.
- გაითვალისწინეთ, რომ setup () მეთოდით, "battery.begin (true);" მოუწოდებს "ble.reset ();" ავტომატურად თუ თქვენ არ იყენებთ ბატარეის მომსახურებას, როგორც მე, თქვენ უნდა გადააყენოთ ble მოდული (გამოიყენეთ "ble.reset ();") სადაც მე მაქვს ბრძანება "battery.begin (true);".
- Setup () მეთოდში შეცვალეთ "if (! Ble.begin (false))" "" if (! Ble.begin (true)) "თუ გსურთ გამართვა.
ეს კოდი საკმაოდ გასაგებია. მე ჩავრთე თითოეული ინდივიდუალური მეთოდის აღწერა. დაყენების მეთოდი BLE მოდულს მზადაა იმოქმედოს როგორც GATT სერვერი. მარყუჟის მეთოდი გადის აქსელერომეტრის გიროსკოპის მოდულის (AGM) ყალბი გაწმენდით და ამ მნიშვნელობებისთვის წარმოქმნის შემთხვევით რიცხვს 1 -დან 100 -მდე. ბატარეა დატენულია 1% -ით ბატარეის გამოყენების სიმულაციისთვის. თქვენ შეგიძლიათ მარტივად შეცვალოთ ეს კოდი ფაქტიური სენსორის მნიშვნელობებით. ეს კოდი ვარაუდობს, რომ თქვენ გადასცემთ AGM მონაცემების მასივს, 6 გაზომვით, ვიდრე ერთ გაზომვას, რადგან AGM მონაცემების ფანჯრის გაანალიზება უფრო სასარგებლოა, ვიდრე მონაცემთა ერთი წერტილი. მასივის ზომის შეცვლისას გაითვალისწინეთ, რომ ცვლილებები იქნება საჭირო android სტუდიის კოდში. მასივის მონაცემების გადასაღებად, თქვენ უნდა გაიაროთ მრიცხველი იმ მონაცემებთან ერთად, რომელთა გაგზავნასაც აპირებთ. ეს მრიცხველი გაძლევთ საშუალებას იპოვოთ სად ხართ ფანჯარაში android studio პროგრამიდან, ასე რომ თქვენ შეგიძლიათ დაელოდოთ ფანჯარაში დაკარგული მონაცემების წერტილების მოსმენას. მრიცხველის გარეშე ან განსხვავებული ზომის მასივით, android სტუდიის პროექტი ან გამოტოვებს მონაცემთა წერტილებს, ან დაიმუხტება მარყუჟში და ელოდება დანარჩენ მონაცემთა წერტილებს, რასაც ელოდება.
ნაბიჯი 3: Android Studio კოდი
აქ არის ჩემი რეპო ამ პროექტისთვის. თქვენ შეგიძლიათ ნახოთ Android Studio– ს სრული კოდი აქ.
მიმოხილვა
მე განვაგრძობ ამის განახლებას უფრო საფუძვლიანი მიმოხილვით, თუ როგორ მუშაობს arduino და android კოდი დეტალურად… აპლიკაცია სრულად ფუნქციონირებს, ასე რომ თქვენ შეგიძლიათ თავისუფლად შეხედოთ კოდს ამასობაში.
ნაბიჯი 4: საბოლოო განაცხადი
გილოცავთ! თქვენი აპლიკაცია გადმოწერილია თქვენს ტელეფონში, ხოლო თქვენი აცვიათ მოწყობილობა დამუხტულია და გადასცემს მონაცემებს.
გაუშვით პროგრამა
დასაწყებად, დააჭირეთ პროგრამის გამშვების ხატულას.
გაცემული ნებართვები
თქვენ უნდა დაამტკიცოთ ზოგიერთი ნებართვის გამოყენება აპლიკაციის სწორად მუშაობისთვის.
მოწყობილობების სკანირება
შემდეგი, დააწკაპუნეთ ღილაკზე "სკანირება" პროგრამის ზედა მარცხენა კუთხეში.
შეარჩიეთ თქვენი ტარებადი მოწყობილობა
შემდეგი, შეარჩიეთ თქვენი ტარებადი მოწყობილობა ხელმისაწვდომი BLE მოწყობილობების სიიდან. მისი სახელია "BLE Arduino აპარატურა". მიიღეთ მონაცემები დაელოდეთ სანამ აპლიკაცია მიიღებს AGM მონაცემებს და განსაზღვრავს სად დგას ან მოძრაობს მომხმარებელი. იხილეთ თქვენი შედეგები შეამოწმეთ შედეგები ეკრანზე! დააწკაპუნეთ სინქრონიზაციის ღილაკზე მონაცემების კიდევ ერთი წაკითხვისთვის.
გირჩევთ:
შექმენით ძირითადი "Hello World" აპლიკაცია Scratch– დან Flutter– ში: 7 ნაბიჯი
შექმენით ძირითადი "Hello World" აპლიკაცია Scratch in Flutter- ში: გამარჯობა ბიჭებო, მე შევქმენი Flutter Tutorial დამწყებთათვის. თუ გსურთ ახლავე დაიწყოთ flutter- ის განვითარება მაშინ ეს დაგეხმარებათ დამწყებთათვის Flutter Tutorial- ში
შექმენით ეს 5Hz– დან 400 KHz– მდე LED Sweep სიგნალის გენერატორი ნაკრებიდან: 8 ნაბიჯი
ააშენეთ ეს 5Hz to 400KHz LED Sweep სიგნალის გენერატორი ნაკრებიდან: ააშენეთ ეს მარტივი გაწმენდის სიგნალის გენერატორი ადვილად ხელმისაწვდომი ნაკრებიდან. თუკი ჩემს ბოლო ინსტრუქციულ სახეს დაათვალიერებდი (გააკეთე პროფესიონალური ხედვის წინა პანელები), მე ალბათ არ გამოვტოვებდი რაზე ვმუშაობდი იმ დროს, რომელიც იყო სიგნალის გენერატორი. მინდოდა
როგორ დაამატოთ MSUM პრინტერები თქვენს პერსონალურ კომპიუტერზე: 13 ნაბიჯი
როგორ დაამატოთ MSUM პრინტერები თქვენს პერსონალურ კომპიუტერზე: ეს არის სახელმძღვანელო, რომელიც დაგეხმარებათ ნებისმიერი პერსონალური კომპიუტერის MSUM პრინტერის დამატებაში. სანამ ამას შეეცდებოდეთ დარწმუნდით, რომ დაკავშირებული ხართ MSUM– ის wifi– თან. ამ სახელმძღვანელოს შესავსებად საჭიროა შემდეგი ელემენტი: 1. ნებისმიერი პერსონალური კომპიუტერი 2. MSUM პრინტერი
გაგზავნეთ ტემპერატურა და ტენიანობა Blynk აპლიკაციაში (Wemos D1 Mini Pro) .: 15 ნაბიჯი (სურათებით)
გაგზავნეთ ტემპერატურა და ტენიანობა Blynk აპლიკაციაში (Wemos D1 Mini Pro)
მოციმციმე შედარება პერსონალურ კომპიუტერზე: 5 ნაბიჯი
დახუჭეთ შედარება პერსონალურ კომპიუტერზე: შეასრულეთ დავალება თქვენს პერსონალურ კომპიუტერზე, რომელიც ადრე შეიძლებოდა შესრულებულიყო მხოლოდ დიდი, ჩახლართული, ძვირადღირებული მანქანით და უკეთესად. ეს ინსტრუქცია იყენებს უამრავ სიტყვას საკმაოდ მარტივი პროცედურის აღსაწერად, მაგრამ ანაზღაურება ღირს. თქვენ გაიცინებთ