W jaki sposób doświadczony programista zaczyna korzystać z Internetu Rzeczy

10

Jestem doświadczonym programistą, który korzysta z różnych technologii oraz w czasie rzeczywistym. Chcę się nauczyć, jak tworzyć urządzenia, które nie są komputerami, tabletami ani innymi znanymi urządzeniami, o których wszyscy wiedzą.

Zauważyłem, że globalne witryny zakupów oferują sprzęt IoT, taki jak 2-kanałowy moduł przekaźnikowy, płytka rozwojowa nodeMCU i więcej sprzętu związanego z IoT. Nie mam pojęcia, co zrobić ani zacząć .

Zakładając, że wiem, jak kodować, jak zacząć opracowywać moje pierwsze urządzenie IoT?

TheUnreal
źródło
„Inne” urządzenia mają procesor lub mikrokontroler, a także ogólny komputer, jedyną różnicą jest ich wydajność, dostępna pamięć itp.
Bence Kaulics
9
Wydaje mi się, że istnieje rozdźwięk między pytaniami „doświadczony programista” i „jak zacząć”. To jest bardzo proste. Znajdź aplikację, która jest dla Ciebie aktualna (ogrzewanie, oświetlenie, automatyka) i zaimplementuj ją. Gdy pojawią się konkretne pytania, powinieneś uzyskać dobre odpowiedzi tutaj - najprawdopodobniej będą one pochodzić z ulepszeń lub iteracji oryginalnego prototypu. Jak postawiono, to pytanie naprawdę wymaga opinii, nie ma jednoznacznie właściwej odpowiedzi.
Sean Houlihane
3
Dokonałem edycji, która próbuje dotrzeć do jądra pytania, ale zachowuje część oryginalnego tekstu. Sugeruję, że OP @TheUnreal pyta drugą część: „Czy wejście do Internetu Rzeczy wymaga bycia zaradną firmą, czy też może to zrobić osoba na tym świecie?” jako osobne pytanie, ponieważ uważam, że nadal jest aktualne.
Simon Munro

Odpowiedzi:

14

To bardzo szerokie pytanie, ale postaram się udzielić kilku ogólnych wskazówek, które, mam nadzieję, przydadzą się innym, a także tobie (więc proszę o przeprosiny, jeśli opublikuję rzeczy, które już wiesz).

Jeśli pytasz o odczyt czujników, jest to telemetria i niekoniecznie Internet Rzeczy. Zakodowałem wiele projektów, w których samodzielny komputer odczytuje i wyświetla pomiary.

Jeśli chcesz również kontrolować podłączony sprzęt, jest to SCADA . Ponownie niekoniecznie musi być podłączony do Internetu.

Oto schemat SCADA, który ogólnie daje dobre wyczucie IoT. Należy zauważyć, że sterowniki PLC na schemacie to czujniki i elementy sterujące urządzeń obsługujących Internet Rzeczy.

Architektura SCADA

Możesz poprosić o rekomendacje sprzętowe dla czujników i kontrolera w Zaleceniach sprzętowych .

A kiedy już będziesz mieć kod, możesz uzyskać porady dotyczące problemów w Stack Overflow .

Zasadniczo Internet Rzeczy dla przemysłu obejmuje model klient / serwer, w którym klient mierzy / kontroluje urządzenia sprzętowe i raportuje do / odbiera polecenia z serwera. Serwer ma również ogólnie bazę danych i pozwala generować raporty dotyczące zarządzania i alarmów (i może instruować zdalny sprzęt o ponownej konfiguracji / wyłączeniu na podstawie otrzymanych danych).

Uff! To intro na uboczu. Teraz ubrudzimy sobie ręce.

Jeśli chcesz zagłębić się w szczegóły kodowania, spójrz na gniazda i zrozum różnicę między TCP i UDP .

Na szczęście dekady zapełniły większość trudniejszych rzeczy w bibliotekach i prawdopodobnie najlepiej jest przeczytać o usługach RESTful. Istnieje wiele bezpłatnych samouczków online, kursów i filmów, w zależności od języka; C to tradycyjny język osadzony, niektóre używają C ++, ale oczywiście używaj tego, co znasz / czujesz się komfortowo. Python jest niezwykle popularny i łatwy do nauczenia, a także jest zalecanym językiem dla Raspberry Pi.

Osobiście wolę języki skompilowane niż interpretowane, ponieważ łatwiej jest usunąć błędy, ale wybór należy do ciebie. Upewnij się tylko, że ma on dobrą obsługę dostępu do urządzeń peryferyjnych przez USB, Ethernet i - nadal niezwykle powszechny w branży - port szeregowy.

Po stronie serwera ponad 90% światowego serwera nadal działa w PHP. Pojawia się jednak zainteresowanie używaniem NodeJS, głównie przez ludzi, którzy kodują aplikacje przeglądarki, co obecnie można zrobić tylko w JavaScript i nie chcą uczyć się dwóch języków. Nie polecam tworzenia aplikacji IoT opartych na przeglądarce, ze względu na ograniczenia dostępu przeglądarki do systemu plików i urządzeń peryferyjnych (chociaż wspomniałbym o takich jak Cordova , jeśli chcesz tworzyć na smartfony).

Na początek polecam Raspberry Pi (kodowanie w Pythonie lub C).

Płyta Raspberry Pi

I * bardzo * polecam czapkę z czujnikiem. Ten jest tylko przykładem, ale nie jest drogi i zawiera

  • Żyroskop - czujnik prędkości kątowej: Akcelerometr +/- 245/500 / 2000dps
  • Liniowy czujnik przyspieszenia: +/- 2/4/8/16 g
  • Magnetometr - czujnik magnetyczny: +/- 4/8/12/16
  • Barometr Gaussa: zakres bezwzględny 260–1260 hPa (dokładność zależy od temperatury i ciśnienia, +/- 0,1 hPa w normalnych warunkach)
  • Czujnik temperatury (temperatura dokładna do +/- 2 ° C w zakresie 0-65 ° C)
  • Czujnik wilgotności względnej (dokładny do +/- 4,5% w zakresie 20-80% rH, dokładny do +/- 0,5 st. C w zakresie 15-40 st.)
  • Matrycowy wyświetlacz LED 8x8 RGB
  • Mały joystick z 5 przyciskami

płytka czujnika

Umożliwi to zebranie niektórych danych i zgłoszenie ich na serwer. Być może będziesz w stanie znaleźć bezpłatną usługę online do odbierania i wyświetlania danych. Widziałem kilka na innej stronie SO, ale zapomnij gdzie.

Ale prawdopodobnie chcesz zakodować własny serwer. Poleciłbym PHP jako język programowania. W przypadku Linuksa dobrze znasz LAMP (Linux, Apache, Mysql i PHP). W systemie Windows musisz zainstalować WAMP (Windows… itp.).

Możesz wybrać. Używam XAMPP w aplikacjach przemysłowych od ponad dekady. Nie musisz używać MySQL, Sqlite może równie dobrze służyć (wtyczka bez shali do mojego własnego pytania SO 6 lat temu: „ Sqlite lub MySql? Jak zdecydować? ”). Będziesz także musiał dowiedzieć się o CRUD .

Na podstawie danych otrzymanych od klienta / czujnika możesz chcieć odesłać polecenie, nawet po prostu (wyświetlenie: „temperatura za wysoka”, co może przełożyć się na zamknięcie zaworu w systemie przemysłowym).

Możesz chcieć wywoływać alarmy w czasie rzeczywistym (wyślij e-mail z informacją, że temperatura jest zbyt wysoka).

Możesz też pomyśleć o generowaniu raportów. Zacznij od tabeli przedstawiającej otrzymane dane. Rozważ mapę lub coś bardziej wyszukanego. Dodaj opcję eksportu do wartości rozdzielanych przecinkami (CSV), która pozwala użytkownikowi końcowemu na import danych do arkusza kalkulacyjnego w celu dalszej analizy i manipulacji.

Jeśli nie zdecydujesz, że chcesz raportowanie ochotę, to może to zrobić w PHP, ale po kilku dekadach, że mam teraz przeniósł się robi dużo po stronie klienta raport stuff w przeglądarce.

Aby uzyskać ogólne zasady, zapoznaj się z aplikacjami do obsługi pojedynczych stron i AJAX . Ja osobiście przeprowadziłem wiele badań i wybrałem Google AngularJS jako mój język programowania (istnieje wiele samouczków i świetne wsparcie), ale możesz swobodnie korzystać ze zwykłego JS, Jquery itp., Jak chcesz.

Jeśli zdecydujesz się również na kodowanie rzeczy w przeglądarce, możesz równie dobrze używać NodeJ po stronie serwera, abyś mógł nauczyć się tylko jednego nowego języka programowania.

Za dużo wyborów? Przepraszam :-(

Mam nadzieję, że to dało ci jakąś radę, ale zadawaj pytania i daj mi znać, jeśli brakuje tu jakiejkolwiek ogólnej porady.

Mawg mówi, że przywróć Monikę
źródło
1
Dzięki Mawg, większość z tego, co powiedziałeś, już wiem i nie było pytaniem, pracuję z PHP i JavaScript, a także z corodvą od lat. Myślę, że zacznę kupować UNO R3 i zobaczę, jak mogę z tego zacząć.
TheUnreal
1
Zacząłem pisać i po prostu nie mogłem przestać :-) Mam nadzieję, że to pomoże innym. Kordowa nie znam wystarczająco dobrze. Jest dobry do uzyskiwania dostępu do sprzętu telefonu, aparatu wapiennego, karty SIM, czujnika przechyłu, ale czy może uzyskać dostęp do portu szeregowego? Ponieważ jest to często stosowane w przemyśle; możesz sobie poradzić z konwerterem USB na szeregowy, którego używamy do laptopów, ale czy Cordova może wysyłać dane przez USB? A Ethernet? ciąg dalszy ...
Mawg mówi o przywróceniu Moniki
1
... Znasz JS, ale nie zalecałbym używania go na wbudowanym procesorze. Państwo może , ale to na pewno nie normalne. Może czas na podniesienie Pythona lub C? A może masz na myśli przeglądarkę UNO R3 <--> server <-->? Trzymaj się Arduino, jeśli już go znasz. Przełączam się na R Pi, ale to tylko moje osobiste preferencje. . Czy masz na myśli projekt edukacyjny? Podpowiedź, podpowiedź… iot.stackexchange.com/questions/675/… :-)
Mawg mówi o przywróceniu Moniki
9

Jako doświadczony programista masz umiejętność rozumienia logiki, czytania i pisania kodu, wymyślania rzeczy i innych ważnych umiejętności. To, czego prawdopodobnie nie masz, to zrozumienie podstawowej elektroniki i sztuki pobierania kodu z pulpitu na małym urządzeniu.

Wskakiwanie na złym poziomie złożoności może być zniechęcające i może oznaczać, że zbyt szybko się poddajesz. Na przykład ludzie polecają ESP8266 i NodeMCU, nie myśląc, że musisz dostać właściwy, potrzebujesz układu zamontowanego na płycie programistycznej, musisz zainstalować na nim oprogramowanie, musisz coś do niego podłączyć i tylko to możesz uruchomić JavaScript. To wiele różnych umiejętności, których potrzebujesz, i możesz zrezygnować z jednego z tych etapów.

Radzę zacząć od Arduino. Arduino zmieniło społeczność twórców pod względem łatwości podłączenia Arduino do portu USB, a łańcuch kompilacji, kompilacji, wdrażania jest dla Ciebie posortowany. Możesz napisać kod i bardzo szybko flashować niektóre diody LED.

Sugeruję również, aby zacząć od oficjalnego zestawu startowego Arduino . Chociaż jest to bardzo proste, instrukcje są łatwe i otrzymujesz garść użytecznych elektronicznych bitów i kawałków (płyta chlebowa, przewody rozruchowe, diody LED itp.), Które pozostają przydatne.

Nie zniechęcaj się tym, jak podstawowe jest Arduino. Nabierz entuzjazmu od elektroniki i części praktycznych, zanim spróbujesz czegoś zbyt złożonego. Jeśli uważasz elektronikę za interesującą i chcesz zrobić więcej, trzymaj się Arduino i otrzymaj bardziej złożony zestaw. Kupiłem robota BOE Shield-Bot . Może nie jest to najlepszy ani najtańszy robot, ale ma naprawdę dobry samouczek, który szczegółowo opisuje sterowanie serwami i tym podobne. Dostajesz także dużo więcej przydatnych bitów.

Jeśli sobie z tym poradzisz, albo poddasz się i wrócisz do oprogramowania po stronie serwera, albo kupisz więcej bitów, lutownic, więcej płyt i komponentów. Już wkrótce wylądujesz z szufladą niespełnionych marzeń, tak jak my wszyscy.

Nie zalecałbym używania Pi zbyt wcześnie. To bardziej komputer niż rzecz i nie ma ważnych funkcji, które są niezbędne na początku podróży zrozumienia (jak wejście analogowe). Bardzo szybko przerosniesz Arduino (nie łączy się ono z Internetem bardzo łatwo), ale jest to dobre miejsce, aby sprawdzić, czy spodoba ci się to.

Simon Munro
źródło
1
To najbliższa odpowiedź na moje pytania. Dziękuję Ci.
TheUnreal
6

Przejdę do odpowiedzi na twoje pierwsze pytanie.

Jeśli chcesz się tylko nauczyć, mogę polecić Ci książki o IoT, ale myślę, że możesz przeszukać je samodzielnie. Jeśli jest to jasne, polecam rozpocząć pracę nad własnym małym projektem, w ten sposób uczysz się najlepiej, w obliczu rzeczywistych problemów.

Musisz zdecydować, co chcesz stworzyć. Oto kilka inspiracji i fajnych pomysłów na początek:

Projekty Arduino -> Mikrokontroler

Projekty Raspberry Pi -> Mikroprocesor (mocniejszy)

hackaday.com -> Mieszane składniki

Kiedy już wiesz, co chcesz zrobić, musisz wymyślić wymagania dotyczące swojego projektu. Mikrokontroler, czujniki, siłowniki, protokoły komunikacyjne itp.

Jak widać najpopularniejsze urządzenia to Arduino , Raspberrypi i wszyscy inni krewni, beaglebone czarny , cebula itp. Istnieje wiele innych, różnice to cena, kompatybilność z innymi czujnikami i popularność. Popularne są bardziej kompatybilne i mają większe wsparcie na forach.

Pomagamy Ci spełnić wymagania oparte na Twoim projekcie. Powodzenia!

Snake Sanders
źródło
Mam już pomysł, ale chcę doświadczyć tego świata, zanim w niego wejdę. Myślę, że zacznę kupować Uno R3 i zamieszczać pytania, jak tylko pójdę.
TheUnreal,
1
Arduino Uno jest dobry do kontrolowania fizycznych elementów, ale dostosowanie go do protokołów sieciowych jest drogie, ponieważ w zasadzie trzeba do tego dodać kolejny lepszy mikrokontroler lub komputer. Czasami można znaleźć jedną część, która działa obie, innym razem masz system sieciowy, który deleguje zadanie sterowania elektrycznego do czegoś w rodzaju Arduino
Chris Stratton
2

Inni skupili się na pierwszym aspekcie twojego pytania; Skupię się na tym drugim. Zapytałeś, czy tylko ktoś może dostać się do Internetu Rzeczy lub czy musisz być dużą firmą z wieloma zasobami.

Jeśli przejrzysz tag , zobaczysz, że istnieją urządzenia IoT, które już wykonały całą stronę serwera. Istnieje wiele urządzeń IoT, które „każdy może kupić”, w tym kamera Nest, termostat itp., Amazon Echo, Google Home, inteligentne piekarniki, lodówki itp.

Nawet wiele nowych samochodów kwalifikuje się jako obiekty, które można zdalnie wykryć lub kontrolować ... choć może jeszcze nie kontrolowana część. :)

To prowadzi do odpowiedzi na twoje pierwsze pytanie:

Jak zacząć ćwiczyć i rozwijać swoje pierwsze urządzenie IoT?

Nie musisz zaczynać od rozwoju: możesz zacząć od czegoś prostszego. Jeśli chcesz dostać się do rozwijającego się jej boku, to mógłby po prostu się zanurzyć, jak niektórzy sugerowali, ale masz opcję dostępną na rozpoczęcie proste i stopniowe przejście do sfery bardziej skomplikowane.

anonimowy2
źródło
1
A gdzie lepiej zacząć od iot.stackexchange.com/questions/675/… ?
Mawg mówi o przywróceniu Moniki