Skocz do zawartości

Dobór technologii mierzenia odległości pomiędzy dwoma mikrokontrolerami


SheepHunter

Pomocna odpowiedź

13 minut temu, kostuch napisał:

Jak zrobisz aplikację, żeby pikało/błyskało albo zminiejszało mu jakiś "licznik zdrowia" przy określonym RSSI, to gracz będzie wiedział że musi sp...adać 😉

To urządzenie na zawodniku też musi wtedy skanować. Tak nawiasem, 22 mA (przy aku 4 V) pasywne skanowanie z pełnym wypełnieniem na Pico W.

Link do komentarza
Share on other sites

2 godziny temu, SheepHunter napisał:

Czyli breloczki itag jako beacony + esp32 do mierzenia siły sygnału BLE. Muszę poszukać informację jak to zrobić ale już wiem czego szukać 😁 dziękuję, zaraz zamówię komponenty i jak dojdą wezmę się za pisanie kodu i testowanie 😊

Może być też esp32-C3. Jest na "kanapkach" w formacie modułu esp-12F jeżeli nie potrzeba wszystkich nóżek. Łatwiejsze do lutowania.

No i testować możesz fizycznie bez itaga. Esp może działać też jako beacon.

Może jest coś tańszego niż breloczki. Może być cokolwiek BLE, np klikacz do robienia selfie, jakaś opaska czy co tam teraz jest w modzie.

Link do komentarza
Share on other sites

nie robiłem nigdy nic z BLE dlatego zapytam: 
będzie się dało te itagi między sobą rozróżnić czy każdy będzie widoczny tak samo ? nie będą mi wprowadzać zakłóceń inne urządzenia które będą mieć ze sobą gracze ? (chociażby jakieś bransoletki ,piloty, breloczki itp. właśnie)

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

2 godziny temu, SheepHunter napisał:

nie będą mi wprowadzać zakłóceń inne urządzenia które będą mieć ze sobą gracze

Urządzenia połączone nie będą kolidowały z beaconami - inne kanały. Rozgłaszanie odbywa się na kanałach 37, 38, 39, połączenia 0 - 36 i tam skakają po kanałach, więc tutaj kolizje mogą się zdarzyć, zarówno jak i inne rozgłaszające urządzenia BLE i nie wszystkie pakiety dojdą. Filtrowanie sprzętowe może być ciekawą opcją, żeby radio nie wzbudzało kodu z innych odebranych beaconów. Co do WiFi 2,4 to rozgłaszanie wykorzystuje pasma częstotliwości niepokrywające się z WiFi.

Ostatecznie, można by pokusić się o "zrównoważenie" pasma "sieci", jak w sieci komórkowej i sąsiadujące komórki (hotspoty) miałyby niepokrywające się częstotliwości, ale nie ma większego problemu z rozgłaszaniem tylko np. na 37 kanale, ale skanowanie na jednym kanale to nRF (poza egzotykami jakimiś) co mi wiadomo da radę tylko, więc to tylko teoretyzowanie połączone z idealizowaniem.

Edytowano przez matsobdev
Link do komentarza
Share on other sites

12 godzin temu, matsobdev napisał:

Urządzenia połączone nie będą kolidowały z beaconami - inne kanały. Rozgłaszanie odbywa się na kanałach 37, 38, 39, połączenia 0 - 36 i tam skakają po kanałach, więc tutaj kolizje mogą się zdarzyć, zarówno jak i inne rozgłaszające urządzenia BLE i nie wszystkie pakiety dojdą. Filtrowanie sprzętowe może być ciekawą opcją, żeby radio nie wzbudzało kodu z innych odebranych beaconów. Co do WiFi 2,4 to rozgłaszanie wykorzystuje pasma częstotliwości niepokrywające się z WiFi.

Ostatecznie, można by pokusić się o "zrównoważenie" pasma "sieci", jak w sieci komórkowej i sąsiadujące komórki (hotspoty) miałyby niepokrywające się częstotliwości, ale nie ma większego problemu z rozgłaszaniem tylko np. na 37 kanale, ale skanowanie na jednym kanale to nRF (poza egzotykami jakimiś) co mi wiadomo da radę tylko, więc to tylko teoretyzowanie połączone z idealizowaniem.

i rozumiem, że mam umieścić dużo urządzeń które będzie się rozgłaszać i mierzyć siłę ich sygnału?

Link do komentarza
Share on other sites

Każdy serwer BLE (itag, opaska, itd) ma unikalny adres sprzętowy, więc jak będziesz miał ich listę, to resztę śmieci odfiltrujesz po stronie klienta (esp).

Niektórym urządzeniom można nadać własną nazwę, żeby było przyjemniej, np "Straszna nora smoka" 😉

 

Taki np standardowy callback wyzwalany po znalezieniu jakiegoś BLE:

const char* tagAddress = "ff:ff:10:0f:7c:1e"; //iTAG MAC
.
.
.
  

class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks
{
	void onResult(BLEAdvertisedDevice advertisedDevice)
	{
		//printf("Device found: %s\n", advertisedDevice.toString().c_str());
		char devAddress[18];
		snprintf(devAddress, 18, advertisedDevice.getAddress().toString().c_str());

		if (!strcasecmp(devAddress, tagAddress)) // Czy znalezione BLE to nasz itag?
		{
			BLEDevice::getScan()->stop();
			printf("OK - %s\n", advertisedDevice.toString().c_str());
			advDevice = new BLEAdvertisedDevice(advertisedDevice);
		}
	}
};

 

Rada:

Użyj stosu NimBLE. Zaoszczędzisz sporo pamięci.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.