Სარჩევი:

შექმენით Wearable Motion Tracker (BLE Arduino– დან პერსონალურ Android Studio აპლიკაციაში): 4 ნაბიჯი
შექმენით Wearable Motion Tracker (BLE Arduino– დან პერსონალურ Android Studio აპლიკაციაში): 4 ნაბიჯი

ვიდეო: შექმენით Wearable Motion Tracker (BLE Arduino– დან პერსონალურ Android Studio აპლიკაციაში): 4 ნაბიჯი

ვიდეო: შექმენით Wearable Motion Tracker (BLE Arduino– დან პერსონალურ Android Studio აპლიკაციაში): 4 ნაბიჯი
ვიდეო: შექმენით საკუთარი ქაღალდის გვირგვინი - მარტივი და სახალისო ყველა ასაკის ბავშვებისთვის 2024, დეკემბერი
Anonim
შექმენით Wearable Motion Tracker (BLE Arduino– დან პერსონალურ Android Studio აპლიკაციაში)
შექმენით Wearable Motion Tracker (BLE Arduino– დან პერსონალურ Android Studio აპლიკაციაში)

Bluetooth Low Energy (BLE) არის დაბალი სიმძლავრის Bluetooth კომუნიკაციის ფორმა. ტარებადი მოწყობილობები, ისევე როგორც ჭკვიანი ტანსაცმელი, რომელსაც მე ვეხმარები დიზაინში Predictive Wear, უნდა ზღუდავდეს ენერგიის მოხმარებას, სადაც ეს შესაძლებელია, ბატარეის ხანგრძლივობის გასაგრძელებლად და ხშირად გამოიყენოს BLE. Bluetooth სპეციალური ინტერესების ჯგუფი (SIG) განსაზღვრავს რამდენიმე სპეციფიკაციას, რომელიც მოწყობილობამ უნდა გამოიყენოს Bluetooth მოწყობილობასთან ურთიერთქმედების მიზნით, რომელსაც ისინი უწოდებენ "პროფილებს". პროგრამების უმეტესობა იყენებს გენერალური ატრიბუტის პროფილს (GATT) მონაცემების გასაგზავნად BLE ბმულზე. BLE– ში არის სამი ფუნდამენტური კონცეფცია: პროფილები, სერვისები და ატრიბუტები.

Bluetooth SIG– ს აქვს სტანდარტიზებული მრავალი საერთო პროფილი, სერვისი და ატრიბუტი. ამასთან, პერსონალური აპარატურის შექმნისას ხშირად არის საჭირო პერსონალური სერვისებისა და ატრიბუტების შექმნა და ბევრი გაკვეთილი არ არის ხელმისაწვდომი. იმისათვის, რომ საქმე უფრო გართულდეს, ადაფრუტი არ იძლევა რაიმე მითითებას მობილური აპლიკაციების შემუშავების შესახებ მათ BLE მოდულებთან ერთად და მათი პროგრამების წყაროს კოდი ძნელია შეცვალოს ინჟინერმა.

ეს გაკვეთილი მიზნად ისახავს ახსნას:

  1. როგორ შევქმნათ პერსონალური GATT სერვისები და მახასიათებლები
  2. როგორ დავგეგმოთ Adafruit Bluefruit LE SPI Friend, რომ ვიმოქმედოთ როგორც GATT სერვერი ამ პერსონალური სერვისებისა და მახასიათებლებისთვის
  3. როგორ დავპროგრამოთ 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. თითოეული მახასიათებლისათვის საჭირო თვისებების განსაზღვრა

არსებობს რამდენიმე თვისება, რომელსაც შეიძლება ახასიათებდეს მახასიათებელი.

  1. წაიკითხეთ: კლიენტს (Android აპლიკაცია) შეუძლია წაიკითხოს მნიშვნელობა GATT სერვერიდან (Arduino)
  2. დაწერეთ: კლიენტს შეუძლია შეცვალოს მნიშვნელობა GATT სერვერიდან
  3. მიუთითეთ: კლიენტი მიიღებს შეტყობინებას, თუ მნიშვნელობა შეიცვლება GATT სერვერიდან და კლიენტი სავარაუდოდ გაგზავნის დადასტურებას GATT სერვერზე
  4. შეატყობინეთ: კლიენტს ეცნობება, თუ მნიშვნელობა შეიცვლება 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– ს სრული კოდი აქ.

მიმოხილვა

რამდენიმე მნიშვნელოვანი რამ უნდა აღინიშნოს:

  1. 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" არ იმუშავებს.
  2. გაითვალისწინეთ, რომ setup () მეთოდით, "battery.begin (true);" მოუწოდებს "ble.reset ();" ავტომატურად თუ თქვენ არ იყენებთ ბატარეის მომსახურებას, როგორც მე, თქვენ უნდა გადააყენოთ ble მოდული (გამოიყენეთ "ble.reset ();") სადაც მე მაქვს ბრძანება "battery.begin (true);".
  3. 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 მონაცემებს და განსაზღვრავს სად დგას ან მოძრაობს მომხმარებელი. იხილეთ თქვენი შედეგები შეამოწმეთ შედეგები ეკრანზე! დააწკაპუნეთ სინქრონიზაციის ღილაკზე მონაცემების კიდევ ერთი წაკითხვისთვის.

გირჩევთ: