Як досвідчений розробник починає працювати з IoT


10

Я досвідчений розробник, що використовує різноманітні технології, а також в режимі реального часу. Хочу дізнатися, як розробити для пристрою, який не є комп’ютером, планшетом чи будь-яким із звичних пристроїв, про які всі знають.

Я помітив, що глобальні торгові сайти пропонують обладнання для IoT, наприклад 2-канальний реле-модуль, плата розробки nodeMCU та інше обладнання, пов'язане з IoT. Я поняття не маю, що робити чи почати .

Якщо припустити, що я знаю, як кодувати, як почати розробку свого першого пристрою IoT?


У "інших" пристроїв є процесор або мікроконтролер, а також загальний комп'ютер, різниця лише в їх продуктивності, наявній пам'яті тощо
Bence Kaulics

9
Мені здається, існує розрив між "досвідченим розробником" та "як почати". Це дуже просто. Знайдіть додаток, який є актуальним для вас сьогодні (опалення, освітлення, автоматизація) та реалізуйте його. Щойно виникнуть конкретні запитання, ви маєте отримати хороші відповіді тут - швидше за все, вони з’являться за допомогою поліпшень чи ітерацій вашого оригінального прототипу. Як поставлено, це питання справді запитує думок, чітко правильної відповіді немає.
Шон Хуліхане

3
Я зробив правку, яка намагається дістатись до ядра питання, але зберігаючи частину початкового тексту. Я пропоную, що ОП @TheUnreal запитує другу частину: "Чи потрібно потрапляти в IoT, щоб бути спритною компанією, чи людина може це зробити так само добре в цьому світі?" як окреме питання, оскільки я вважаю, що воно все ще є актуальним.
Simon Munro

Відповіді:


14

Це дуже широке запитання, але я спробую дати декілька загальних покажчиків, сподіваюся, корисних для інших, а також вас (тому, будь ласка, прийміть мої вибачення, якщо я публікую речі, які ви вже знаєте).

Якщо ви запитуєте про датчики зчитування, це телеметрія, а не обов'язково IoT. Я зашифрував багато проектів, де автономний ПК читає та відображає певні вимірювання.

Якщо ви також хочете контролювати обладнання, що додається, це SCADA . Знову ж таки, це не обов'язково потрібно підключати до Інтернету.

Ось схема SCADA, яка дає дуже гарне відчуття ІОТ загалом. Зауважте, що PLC s на діаграмі - це датчики та управління пристроями, що підтримують IoT.

Архітектура SCADA

Ви можете попросити компенсації за обладнання для датчиків та контролерів у розділі Рекомендації щодо обладнання .

І, отримавши якийсь код, ви можете отримати поради щодо проблем у Stack Overflow .

Як правило, IoT для промисловості включає модель клієнт / сервер, при цьому клієнт вимірює / контролює апаратні пристрої та звітує перед / приймає команди з сервера. Сервер також, як правило, має базу даних і дозволяє створювати звіти для управління та тривог (і може доручити віддаленому апаратному пристрою переконфігурувати / відключити на основі отриманих даних).

Фу! Це вступ зі шляху. Тепер забруднити руки.

Якщо ви хочете потрапити в нітратну зернистість кодування, подивіться на розетки і зрозумійте різницю між TCP і UDP .

На щастя, десятиліття охопили більшість складних матеріалів у бібліотеках, і вам, мабуть, найкраще рекомендувати читати на послугах RESTful. Є численні безкоштовні онлайн-уроки, курси та відео, залежно від вашої мови; C - це традиційна вбудована мова, де деякі використовують C ++, але, звичайно, використовуйте все, що знаєте / почуваєте себе комфортно. Python надзвичайно популярний і простий у навчанні, а також є рекомендованою мовою для Raspberry Pi.

Особисто я віддаю перевагу компільованим мовам інтерпретованим, так як помилок виходить легше, але вибір залежить тільки від вас. Просто переконайтеся, що він має хорошу підтримку доступу до периферійних пристроїв через USB, Ethernet та - як і раніше надзвичайно поширений у промисловості - серійний порт.

Стосовно сервера 90% + світового сервера все ще працює на PHP. Однак є використання програми NodeJS, головним чином від людей, кодуючих програми браузера, які в даний час можна робити тільки в JavaScript і не хочуть вивчати дві мови. Я не рекомендую розробляти додатки IoT на основі браузера через обмеження доступу коду браузера до файлової системи та периферійних пристроїв (хоча, я хотів би згадати подібність Кордови , якщо ви хочете розробити для смартфона).

Для початку я рекомендую Raspberry Pi (кодування в Python або C).

Raspberry Pi дошка

І я * дуже * рекомендую сенсорний капелюх. Цей лише приклад, але він не дорогий і містить

  • Гіроскоп - датчик кутової швидкості: +/- 245/500 / 2000dps Акселерометр
  • Лінійний датчик прискорення: +/- 2/4/8/16 гр
  • Магнітометр - магнітний датчик: +/- 4/8/12/16
  • Барометр Гаусса: 260 - 1260 гПа абсолютний діапазон (точність залежить від температури і тиску, +/- 0,1 гПа при нормальних умовах)
  • Датчик температури (Температура з точністю до +/- 2 градусів у діапазоні 0-65 град.С)
  • Відносний датчик вологості (точний до +/- 4,5% у діапазоні 20-80% rH, точний до +/- 0,5 ° C в діапазоні 15-40 ° C)
  • 8x8 RGB світлодіодний матричний дисплей
  • Маленький джойстик з 5 кнопок

плата датчиків

Це дозволить вам зібрати деякі дані та повідомити про них на своєму сервері. Можливо, ви зможете знайти безкоштовну послугу в Інтернеті для отримання та відображення своїх даних. Я бачив деяких на інших сайтах SO, але забув, де.

Але, ймовірно, ви хочете кодувати власний сервер. Я б рекомендував PHP як мову програмування. Для Linux ви добре забезпечені LAMP (Linux, Apache, Mysql & PHP). Для Windows вам потрібно встановити WAMP (Windows… тощо).

Ви можете взяти свій вибір. Я використовую XAMPP в промислових програмах вже більше десяти років. Вам не доведеться використовувати Mysql, Sqlite може служити так само добре (беззмінна плагінка для мого власного питання про 6 років тому: " Sqlite або MySql? Як вирішити? "). Вам також доведеться дізнатися про CRUD .

Виходячи з даних, отриманих від клієнта / датчика, ви, можливо, захочете відправити команду назад, навіть просто просту (відображення: "температура занадто висока", що може означати закриття клапана в промисловій системі).

Можливо, ви хочете підняти тривогу в режимі реального часу (надішліть електронний лист із повідомленням, що температура занадто висока).

І ви також можете подумати над створенням звітів. Почніть з таблиці, що показує отримані дані. Розгляньте діаграму чи щось більш фантазійне. Додайте можливість експорту до значень, розділених комами (CSV), що дозволяє кінцевому користувачу імпортувати дані в електронну таблицю для подальшого аналізу та маніпулювання.

Якщо ви дійсно вирішите , що ви хочете звітність фантазії, ви можете зробити це в PHP, але, через кілька десятиліть , що я зараз переїхав робити більшу частину на стороні клієнта звіту речі, в браузері.

За загальними принципами, ознайомтеся з оглядом програм для однієї сторінки та AJAX . Я особисто провів багато досліджень і вибрав Google AngularJS мовою мовою програмування (є багато навчальних посібників та чудова підтримка), але ви можете безкоштовно використовувати звичайні JS, Jquery тощо.

Якщо ви вирішите також кодувати речі в браузері, і ви, можливо, будете також використовувати NodeJs на стороні сервера, так що вам доведеться вивчити лише одну нову мову програмування.

Занадто багато варіантів? Вибачте :-(

Я сподіваюся, що це дало вам кілька порад, але не соромтесь задавати питання, і повідомте мені, чи є тут відсутні якісь загальні поради.


1
Дякую Мавгу, більшість того, що ви сказали, я вже знаю, і не було проблемою, я роками працюю з PHP та Javascript, а також з corodva. Думаю, я почну купувати UNO R3 і побачити, як я можу звідти вийти.
TheUnreal

1
Я почав писати і просто не міг зупинитися :-) Сподіваюся, що це допоможе іншим. Кордова я не знаю досить добре. Це добре для доступу до апаратного забезпечення телефону, вапняної камери, SIM, датчика нахилу, але чи можна отримати доступ до послідовного порту? Тому що це багато використовується в промисловості; Ви можете перейти через USB до послідовного перетворювача, який ми використовуємо для ноутбуків, але чи може Кордова надсилати дані через USB? А Ethernet? продовження ...
Мауг каже, що повернути Моніку

1
... Ви знаєте JS, але я б не рекомендував використовувати його на вбудованому процесорі. Ви можете , але це, звичайно , не є нормальним. Можливо, час забрати якийсь Python чи C? Або, можливо, ви маєте на увазі браузер UNO R3 <--> сервер <-->? Дотримуйтесь Ардуїно, якщо ви вже знаєте це, всіма силами. Я переходжу на R Pi, але це лише мої особисті переваги. . Чи маєте ви на увазі проект навчання? Підказка, підказка… iot.stackexchange.com/questions/675/… :-)
Mawg каже відновити Моніку

9

Як досвідчений розробник, ви маєте можливість розуміти логіку, читати та писати код, розбирати речі та деякі інші важливі навички. Напевно, у вас немає розуміння основної електроніки та мистецтва отримання коду зі свого робочого столу на невеликому пристрої.

Стрибки на неправильному рівні складності можуть бути грізними, а це може означати, що ви здаєтеся занадто рано. Наприклад, люди рекомендують ESP8266 і NodeMCU, не замислюючись про те, що вам потрібно отримати потрібний, вам потрібен чіп, встановлений на дошці розробки, ви маєте отримати своє програмне забезпечення на ньому, вам потрібно підключити його до чогось і тільки тоді ви можете запустити JavaScript. Це багато різних навичок, які вам потрібні, і ви можете відмовитись на будь-якому з цих етапів.

Моя рекомендація - почати з Arduino. Там, де Arduino змінив спільноту виробника, було те, наскільки легко підключити Arduino до USB-порту, а ланцюг компіляції, побудови, розгортання - це все для вас. Ви можете написати якийсь код і спалахнути світлодіоди дуже швидко.

Я також пропоную почати з офіційного стартового набору Arduino . Хоча це дуже просто, інструкції є простими, і ви отримуєте купу корисних електронних шматочків та шматочків (макет, джемперні дроти, світлодіоди тощо), які залишаються корисними.

Не відштовхуйтесь від того, наскільки основний Arduino. Потрібно сподобатися спочатку електроніці та практичній роботі, перш ніж спробувати щось надто складне. Якщо електроніка вам здається цікавою і хочете зробити більше, дотримуйтесь Arduino та отримайте більш складний комплект. Я купив робота BOE Shield-Bot . Це може бути не найкращий або найдешевший робот, але він має справді хороший підручник, який детально розглядає питання управління сервоприводами тощо. Ви також приземляєтеся набагато кориснішими бітами.

Якщо ви перейдете через це, ви або відмовитесь і повернетесь до програмного забезпечення на стороні сервера, або придбаєте більше біт, паяльників, більше плат та компонентів. Дуже скоро ви приземлитеся з ящиком розбитих мрій, як і всі ми.

Я б не рекомендував використовувати Pi дуже рано. Це скоріше комп'ютер, ніж річ, і не має важливих функцій, необхідних на початку вашої подорожі (наприклад, аналоговий ввід). Ви дуже швидко переросте Arduino (він не дуже легко підключається до Інтернету), але це хороше місце, щоб побачити, чи це вам буде подобатися.


1
Це найближча відповідь на мої запитання. Дякую.
TheUnreal

6

Я продовжу відповідати на ваше перше запитання.

Якщо ви хочете просто навчитися, я можу порекомендувати вам кілька книг про IoT, але, мабуть, ви можете шукати їх самостійно. Якщо це зрозуміло, я б рекомендував вам почати працювати над власним невеликим проектом, саме так ви дізнаєтесь найкраще, стикаючись із проблемами реального життя.

Вам потрібно буде вирішити, що саме ви хочете створити. Ось кілька натхнень та крутих ідей для початку:

Arduino Projects -> Мікроконтролер

Проекти Raspberry Pi -> Мікропроцесор (потужніший)

hackaday.com -> Змішані компоненти

Як тільки ви маєте уявлення про те, що ви хочете зробити, тоді вам потрібно придумати вимоги до свого проекту. Мікроконтролер, датчики, пускачі, протоколи зв'язку тощо.

Як ви бачите, найпопулярніші пристрої - це Arduino , Raspberrypi та всі інші родичі, гончарний чорний , цибуля тощо, є ще багато, відмінності - ціна, сумісність з іншими датчиками та популярність. Популярні більш сумісні та мають більшу підтримку на форумах.

Ми допоможемо вам виконати вимоги, що базуються на вашому проекті. Удачі!


У мене вже є ідея, але я хочу випробувати цей світ, перш ніж стрибати в цей. Я думаю, що я почну купувати Uno R3 і розміщувати питання, як тільки поїду.
TheUnreal

1
Arduino Uno хороший для контролю фізичних об'єктів, але його дорого адаптуватися до мережевих протоколів, оскільки для цього вам потрібно додати ще один кращий мікроконтролер або комп'ютер. Іноді ви можете знайти одну частину, яка спрацьовує і те, і інше, коли у вас є система, спрямована на мережу, яка делегує завдання електричного управління на щось на зразок Arduino
Chris Stratton

2

Інші зосередилися на першому аспекті вашого питання; Я збираюся зосередитись на останньому. Ви запитували, чи просто хтось може потрапити в IoT чи вам потрібно бути великою компанією з багатьма ресурсами.

Якщо переглядати тег , ви побачите, що є пристрої IoT, на яких уже зроблено всі серверні сторони. Існує безліч пристроїв IoT, які може придбати «просто кожен», в тому числі будуть Nest cam, термостат тощо, Amazon Echo, Google Home, розумні духовки, холодильники тощо.

Навіть багато нових автомобілів кваліфікуються як об'єкти, які слід чути або контролювати віддалено ... хоча, можливо, ще не керована частина. :)

Це призводить до відповіді на ваше перше запитання:

Як я можу почати практикувати розробку свого першого пристрою IoT?

Не обов’язково починати з розробки: можна починати з чогось більш простого. Якщо ви хочете вступити в його сторону, що розвивається, ви можете просто зайнятися зануренням, як деякі з них запропонували, але у вас є доступна можливість почати з простого і поступово переходити в царство більш складного.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.