Как опытный разработчик начинает работать с IoT

10

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

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

Предполагая, что я знаю, как кодировать, как начать разработку моего первого устройства IoT?

TheUnreal
источник
«Другие» устройства имеют процессор или микроконтроллер, а также обычный компьютер, единственная разница заключается в их производительности, доступной памяти и т. Д.
Bence Kaulics,
9
Мне кажется, что вопросы между «опытным разработчиком» и «как начать» не совпадают. Это очень просто. Найдите приложение, которое актуально для вас сегодня (отопление, освещение, автоматизация) и внедрите его. Если у вас есть конкретные вопросы, вы должны получить здесь хорошие ответы - скорее всего, они будут получены в результате улучшений или итерации вашего исходного прототипа. Как и положено, этот вопрос действительно требует мнений, нет однозначно правильного ответа.
Шон
3
Я сделал правку, в которой пытаюсь понять суть вопроса, но сохраняю часть исходного текста. Я полагаю, что OP @TheUnreal спрашивает вторую часть: «Нужно ли для того, чтобы войти в IoT, быть находчивой компанией или может ли это делать и человек в этом мире?» как отдельный вопрос, так как я думаю, что он все еще актуален.
Саймон Манро

Ответы:

14

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

Если вы спрашиваете о считывании датчиков, это телеметрия, а не обязательно IoT. Я написал много проектов, где автономный ПК читает и отображает результаты измерений.

Если вы также хотите контролировать подключенное оборудование, это SCADA . Опять же, он не обязательно должен быть подключен к Интернету.

Вот схема SCADA, которая дает очень хорошее представление о IoT в целом. Обратите внимание, что ПЛК на схеме - это датчики и органы управления устройствами с поддержкой IoT.

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

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

И, как только у вас есть код, вы можете получить совет по проблемам в Stack Overflow .

Как правило, IoT для промышленности включает модель клиент / сервер, где клиент измеряет / контролирует аппаратные устройства и сообщает / получает команды от сервера. Сервер также обычно имеет базу данных и позволяет генерировать отчеты для управления и аварийных сигналов (и может дать команду удаленному оборудованию перенастроить / завершить работу на основе полученных данных).

Уф! Это вступление из пути. Теперь, чтобы запачкать наши руки.

Если вы хотите вникнуть в тонкость кодирования, посмотрите на сокеты и поймите разницу между TCP и UDP .

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

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

Что касается серверной части, более 90% мировых серверов все еще работают на PHP. Тем не менее, использование NodeJS стало популярным, в основном от людей, которые пишут приложения для браузера, что в настоящее время может быть сделано только на JavaScript и не хочет изучать два языка. Я не рекомендую разрабатывать приложения IoT на основе браузера из-за ограничений доступа кода браузера к файловой системе и периферийным устройствам (хотя я бы упомянул, например, Cordova , если вы хотите разрабатывать для смартфонов).

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

Raspberry Pi доска

И я очень рекомендую сенсорную шапку. Это только пример, но это не дорого и содержит

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

сенсорная плата

Это позволит вам собрать некоторые данные и сообщить о них на ваш сервер. Возможно, вы сможете найти бесплатный онлайн-сервис для получения и отображения ваших данных. Я видел некоторые на других сайтах SO, но забыть, где.

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

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

Основываясь на данных, полученных от клиента / датчика, вы можете захотеть отправить команду обратно, даже просто (отображение: «слишком высокая температура», что может означать закрытие клапана в промышленной системе).

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

И вы также можете подумать о создании отчетов. Начните с таблицы, показывающей полученные данные. Рассмотрим график, или что-то более причудливое. Добавьте параметр экспорта в значения, разделенные запятыми (CSV), который позволяет конечному пользователю импортировать данные в электронную таблицу для дальнейшего анализа и манипулирования.

Если вы действительно решите , что вы хотите отчетность фантазии, вы можете сделать это в PHP, но, спустя несколько десятилетий , что я сейчас переехал делать большую часть на стороне клиента отчета вещи, в браузере.

Для общих принципов, получите обзор одностраничных приложений и AJAX . Лично я провел много исследований и выбрал в качестве языка программирования Google AngularJS (есть много учебных пособий и отличная поддержка), но вы можете свободно использовать простой JS, Jquery и т. Д., Как вам угодно.

Если вы тоже решите кодировать браузер, и вам также может понадобиться использовать NodeJ на стороне сервера, так что вам придется изучать только один новый язык программирования.

Слишком много вариантов? К сожалению :-(

Я надеюсь, что это дало вам несколько советов, но не стесняйтесь задавать вопросы и дайте мне знать, если здесь отсутствует какой-либо общий совет.

Mawg говорит восстановить Монику
источник
1
Спасибо Mawg, большинство из того, что вы сказали, я уже знаю, и это не было проблемой, я работаю с PHP и Javascript, а также с corodva в течение многих лет. Я думаю, что я начну покупать UNO R3 и посмотрим, как я могу продолжить оттуда.
TheUnreal
1
Я начал писать и просто не мог остановиться :-) Я надеюсь, что это поможет другим. Я не знаю Кордову достаточно хорошо. Это удобно для доступа к телефонному оборудованию, известковой камере, SIM-карте, датчику наклона, но может ли он получить доступ к последовательному порту? Потому что используется много в промышленности; Вы можете обойтись с USB на последовательный преобразователь, который мы используем для ноутбуков, но может ли Cordova передавать данные через USB? А Ethernet? продолжение ...
Мауг говорит восстановить Монику
1
... Вы знаете JS, но я бы не рекомендовал использовать его на встроенном процессоре. Вы можете , но это, конечно , не нормально. Может быть, пора подобрать Python или C? Или, может быть, вы имеете в виду UNO R3 <-> сервер <-> браузер? Придерживайтесь Arduino, если вы уже знаете это, во что бы то ни стало. Я переключаюсь на R Pi, но это только мое личное предпочтение. , Вы имеете в виду учебный проект? Подсказка, подсказка… iot.stackexchange.com/questions/675/… :-)
Моуг говорит восстановить Монику
9

Как опытный разработчик, вы обладаете способностью понимать логику, читать и писать код, разбираться в вещах и иметь некоторые другие важные навыки. Чего у вас, вероятно, нет, так это понимания основ электроники и искусства получения кода с рабочего стола, работающего на небольшом устройстве.

Прыжки на неправильном уровне сложности могут быть пугающими и могут означать, что вы слишком рано сдаётесь. Например, люди рекомендуют ESP8266 и NodeMCU, не думая, что вам нужен правильный, вам нужен чип, установленный на плате разработки, вы должны установить на него свое программное обеспечение, вам нужно подключить его к чему-то, и только тогда вы можете запустить JavaScript. Это много разных навыков, которые вам нужны, и вы можете отказаться от любого из этих этапов.

Я рекомендую начать с Arduino. Arduino изменил сообщество разработчиков так, как легко подключить Arduino к USB-порту, и цепочка компиляции, сборки, развертывания - все для вас. Вы можете написать некоторый код и быстро мигать несколькими светодиодами.

Я также предлагаю вам начать с официального стартового набора Arduino . Хотя это очень просто, инструкции просты, и вы получаете кучу полезных электронных фрагментов (макет, перемычки, светодиоды и т. Д.), Которые остаются полезными.

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

Если вы справитесь с этим, вы либо сдадите и вернетесь к серверному программному обеспечению, либо купите больше битов, паяльников, больше плат и компонентов. Очень скоро вы попадете с ящиком разбитых снов, как и все мы.

Я бы не рекомендовал использовать Пи слишком рано. Это скорее компьютер, чем вещь, и в нем нет важных функций, которые необходимы в начале вашего понимания (например, аналоговый ввод). Вы очень быстро превзойдете Arduino (он не очень легко подключается к Интернету), но это хорошее место, чтобы посмотреть, понравится ли вам это.

Саймон Манро
источник
1
Это самый близкий ответ на мои вопросы. Спасибо.
TheUnreal
6

Я продолжу отвечать на ваш первый вопрос.

Если вы хотите просто узнать, я могу порекомендовать вам несколько книг о IoT, но я думаю, вы можете найти их самостоятельно. Если это понятно, то я бы порекомендовал вам начать работу над собственным небольшим проектом, таким образом вы научитесь лучше всего перед лицом реальных проблем.

Вам нужно будет решить, что вы хотите создать. Вот несколько идей и идей для начала:

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

Проекты Raspberry Pi -> Микропроцессор (более мощный)

hackaday.com -> Смешанные компоненты

Как только у вас появится представление о том, что вы хотите сделать, вам нужно придумать требования для вашего проекта. Микроконтроллер, датчики, исполнительные механизмы, протоколы связи и т. Д.

Как видите, самыми популярными устройствами являются Arduino , Raspberrypi и все остальные родственники, beaglebone black , onion и т. Д. Существует еще много других, отличия заключаются в цене, совместимости с другими датчиками и популярности. Популярные из них более совместимы и имеют больше поддержки на форумах.

Мы можем помочь вам с требованиями, основанными на вашем проекте. Удачи!

Змея Сандерс
источник
У меня уже есть идея, но я хочу испытать этот мир, прежде чем прыгнуть в него. Я думаю, что начну покупать Uno R3 и отправлять вопросы, как только я уйду.
TheUnreal
1
Arduino Uno хорош для управления физическими объектами, но его адаптация к сетевым протоколам обходится дорого, так как для этого вам нужно добавить еще один лучший микроконтроллер или компьютер. Иногда вы можете найти одну часть, которая выполняет обе функции, в других случаях у вас есть система, обращенная к сети, которая делегирует задачу электрического управления чему-то вроде Arduino
Крис Страттон,
2

Другие сосредоточились на первом аспекте вашего вопроса; Я собираюсь сосредоточиться на последнем. Вы спросили, может ли кто-нибудь войти в IoT или вам нужна большая компания с большим количеством ресурсов.

Если вы просмотрите тег « , то увидите, что есть устройства IoT, которые уже сделали всю работу на стороне сервера. Существует множество устройств IoT, которые может купить «каждый», включая камеру Nest, термостат и т. Д., Amazon Echo, Google Home, умные печи, холодильники и т. Д.

Даже многие новые автомобили считаются объектами, которые должны восприниматься или контролироваться дистанционно ... хотя, возможно, пока не контролируемой частью. :)

Это приводит к ответу на ваш первый вопрос:

Как я могу начать практиковать разработку моего первого устройства IoT?

Вам не обязательно начинать с разработки: вы можете начать с чего-то более простого. Если вы хотите заняться разработкой, вы можете просто сделать решительный шаг, как некоторые предлагали, но у вас есть возможность начать с простого и постепенно перейти в область более сложного.

анонимный2
источник
1
И с чего лучше начать, чем iot.stackexchange.com/questions/675/… ?
Моуг говорит восстановить Монику