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?
Odpowiedzi:
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.
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).
I * bardzo * polecam czapkę z czujnikiem. Ten jest tylko przykładem, ale nie jest drogi i zawiera
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.
źródło
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.
źródło
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!
źródło
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 inteligentnego domu , 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:
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.
źródło