Raspberry PI - połączenie przez bluetooth/sterowanie pinami

0

###Witam, mam w planach stworzyć taki projekcik:
####Aplikacja desktopowa na Raspberry PI 4:
Na początku będzie tylko do sterowania pinami GPIO. Jeśli się uda, będzie dodanie obsługi modułu bluetooth, aby włączyć bluetooth, zostać znalezionym przez inne urządzenie, połączenie się z tym urządzeniem i odbieranie od niego sygnałów (poprzez metody). Docelowo na podstawie tych sygnałów będzie sterowanie GPIO.
####Aplikacja mobilna na androida:
Obsługa bluetooth - ma włączyć bluetooth'a, wykryć urządzenia, połączyć się z aplikacją desktopową, która będzie śmigała na Raspberry i będzie wysyłała odpowiednie sygnały.

Generalnie wszystko chciałbym zrobić w .Net Core, ale mam parę pytań:

  1. Obsługa bluetooth, myślałem nad 32feet.NET lub BluetoothLE. czy może coś jeszcze innego?
  2. Czy powyższymi bibliotekami normalnie obsłużę bluetooth na raspbianie tak samo jak na Windowsie?
  3. Ogólnie macie jakieś porady/wskazówki na co zwracać uwagę przy takim projekcie?
  4. Czy macie jakieś tutoriale związane z obsługą bluetooth?
  5. Czy ten bluetooth to na pewno dobry pomysł, czy nie lepiej byłoby łączenie przez wi-fi?
  6. Jeśli lepszym rozwiązaniem jest wi-fi, to jak najlepiej zacząć (dokumentacja, tutoriale)?
1

PI4 tylko do sterowania pinami GPIO brzmi jak niezly overkill

3

Po stronie Raspberry 32feet może ci nie zadziałać, bo w dokumentacji masz jak wół:

Bluetooth support requires .NET Framework v4.6.1 for desktop Windows 7, 8 and 10. Android and Apple macOS and iOS are also supported.

BluetoothLE jest z kolei też tylko UWP, Android i iOS, nie ma tu Debiana. W ogóle .NET Core nie ma obecnie żadnej oficjalnej biblioteki GUI dla Linuksa, więc albo skorzystasz z czegoś takiego jak np. Avalonia albo GTK#, albo zbudujesz aplikację konsolową (lub jakąś usługę, która sobie będzie działała w tle).

Co do GPIO to swego czasu używałem Raspberry# (https://github.com/raspberry-sharp/raspberry-sharp-io), ale ono ostatni raz było dotykane bardzo dawno temu, nie wiem czy działa na Pi4, teraz z szybkiego Google znalazłem też Bifrost (https://github.com/jeremylindsayni/Bifrost), patrz też https://jeremylindsayni.wordpress.com/2017/05/01/controlling-gpio-pins-using-a-net-core-2-webapi-on-a-raspberry-pi-using-windows-10-or-ubuntu/ -- ale w zasadzie najbardziej sensownie wygląda to, co jest obecnie najbardziej oficjalne https://www.nuget.org/packages/System.Device.Gpio i w ogóle https://github.com/dotnet/iot - ale tego jeszcze nie używałem.

Ogólnie - Wi-Fi będzie znacznie prostsze dla ciebie, bo nie wiem czy są jakieś biblioteki do obsługi Bluetooth na Linuksie dla .NET. Trzeba poszukać. Ale to też zależy - czy potrzebujesz połączeń peer-to-peer, czy możesz mieć jeden router do którego jest połączony telefon i RPi, czy chcesz używać REST, czy może jednak MQTT albo jakikolwiek inny protokół do komunikacji.

[dodane]

I jest jeszcze taka opcja, że pozbędziesz się Linuksa i użyjesz Windows 10 IoT Core - na pewno dziala na Rpi2 i 3, powinno działać na 4 (nie testowałem) - to specjalna odmiana Windows 10 w której możesz odpalić jedną pełnowymiarową aplikację UWP i ma oficjalne wsparcie dla Bluetooth, Wi-Fi i GPIO. Ale to nie jest najlepsza możliwa droga, bo W10IoTCore jest bardzo specyficzne.

0

W przypadku Bluetooth LE jedna strona zwykle ta rozgłaszająca się jest serwerem a druga jest klientem. Program klienta dość łatwo napisać. Może być to nawet multisystemowa aplikacja PWA uruchamiana w przeglądarce. Strona serwera to znacznie większe wyzwanie. Tu będzie potrzeba wiedza dotycząca działania BLE. Trzeba utworzyć odpowiednie serwisy i charakterystyki. Podłączyć do nich obsługę zdarzeń itd. Ogólnie nazywa się to serwerem GATT.

0

@pavarotti jakiego edytora bądź IDE planujesz użyć do kodowania tego projektu?

Próbowałem kiedyś pisać w Visual Studio Code dla malinki z Raspbianem, niestety IntelliSense dla arm nie jest wspierany.

Ktoś ma doświadczenie w tym temacie? Chciałbym, żeby podpowiadało mi składnię itp.

https://github.com/OmniSharp/omnisharp-vscode/issues/2771
https://github.com/OmniSharp/omnisharp-vscode/issues/3741

0

A to nie mozesz pisac na desktopie?
Czy czegos nie zrozumialem i kod na rpi chcesz pisac w assemblerze?

0
stivens napisał(a):

A to nie mozesz pisac na desktopie?
Czy czegos nie zrozumialem i kod na rpi chcesz pisac w assemblerze?

Kod pisany na desktopie w Visual Studio Code (.Net Core), Raspberry podłączone zdalnie dzięki wtyczce:
https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack

1 użytkowników online, w tym zalogowanych: 0, gości: 1