Я опытный разработчик, использующий различные технологии, а также в режиме реального времени. Я хочу узнать, как разработать устройство, которое не является компьютером, планшетом или другим знакомым устройством, о котором все знают.
Я заметил, что глобальные торговые центры предлагают оборудование IoT, такое как 2-канальный модуль ретрансляции, плата разработки nodeMCU и больше оборудования, связанного с IoT. Я понятия не имею, что делать или начать .
Предполагая, что я знаю, как кодировать, как начать разработку моего первого устройства IoT?
Ответы:
Это очень широкий вопрос, но я постараюсь дать несколько общих указаний, которые, надеюсь, будут полезны и другим, и вам (поэтому, пожалуйста, примите мои извинения, если я опубликую то, что вы уже знаете).
Если вы спрашиваете о считывании датчиков, это телеметрия, а не обязательно IoT. Я написал много проектов, где автономный ПК читает и отображает результаты измерений.
Если вы также хотите контролировать подключенное оборудование, это SCADA . Опять же, он не обязательно должен быть подключен к Интернету.
Вот схема SCADA, которая дает очень хорошее представление о IoT в целом. Обратите внимание, что ПЛК на схеме - это датчики и органы управления устройствами с поддержкой IoT.
Вы можете запросить аппаратные рекомендации для датчиков и контроллеров в Рекомендации по оборудованию .
И, как только у вас есть код, вы можете получить совет по проблемам в Stack Overflow .
Как правило, IoT для промышленности включает модель клиент / сервер, где клиент измеряет / контролирует аппаратные устройства и сообщает / получает команды от сервера. Сервер также обычно имеет базу данных и позволяет генерировать отчеты для управления и аварийных сигналов (и может дать команду удаленному оборудованию перенастроить / завершить работу на основе полученных данных).
Уф! Это вступление из пути. Теперь, чтобы запачкать наши руки.
Если вы хотите вникнуть в тонкость кодирования, посмотрите на сокеты и поймите разницу между TCP и UDP .
К счастью, десятилетия обернули большую часть хитрости в библиотеках, и вам, вероятно, лучше посоветовать почитать о сервисах RESTful. Существуют многочисленные бесплатные онлайн-учебники, курсы и видео, в зависимости от вашего языка; C - это традиционный встроенный язык, некоторые используют C ++, но, конечно, используют все, что вы знаете / чувствуете себя комфортно. Python очень популярен и прост в освоении, а также является рекомендуемым языком для Raspberry Pi.
Лично я предпочитаю скомпилированные языки для интерпретации, так как легче выявлять ошибки, но выбор остается за вами. Просто убедитесь, что он имеет хорошую поддержку для доступа к периферийным устройствам через USB, Ethernet и - все еще чрезвычайно распространенный в отрасли - последовательный порт.
Что касается серверной части, более 90% мировых серверов все еще работают на PHP. Тем не менее, использование NodeJS стало популярным, в основном от людей, которые пишут приложения для браузера, что в настоящее время может быть сделано только на JavaScript и не хочет изучать два языка. Я не рекомендую разрабатывать приложения IoT на основе браузера из-за ограничений доступа кода браузера к файловой системе и периферийным устройствам (хотя я бы упомянул, например, Cordova , если вы хотите разрабатывать для смартфонов).
Для начала я бы порекомендовал Raspberry Pi (кодирование на Python или C).
И я очень рекомендую сенсорную шапку. Это только пример, но это не дорого и содержит
Это позволит вам собрать некоторые данные и сообщить о них на ваш сервер. Возможно, вы сможете найти бесплатный онлайн-сервис для получения и отображения ваших данных. Я видел некоторые на других сайтах 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 на стороне сервера, так что вам придется изучать только один новый язык программирования.
Слишком много вариантов? К сожалению :-(
Я надеюсь, что это дало вам несколько советов, но не стесняйтесь задавать вопросы и дайте мне знать, если здесь отсутствует какой-либо общий совет.
источник
Как опытный разработчик, вы обладаете способностью понимать логику, читать и писать код, разбираться в вещах и иметь некоторые другие важные навыки. Чего у вас, вероятно, нет, так это понимания основ электроники и искусства получения кода с рабочего стола, работающего на небольшом устройстве.
Прыжки на неправильном уровне сложности могут быть пугающими и могут означать, что вы слишком рано сдаётесь. Например, люди рекомендуют ESP8266 и NodeMCU, не думая, что вам нужен правильный, вам нужен чип, установленный на плате разработки, вы должны установить на него свое программное обеспечение, вам нужно подключить его к чему-то, и только тогда вы можете запустить JavaScript. Это много разных навыков, которые вам нужны, и вы можете отказаться от любого из этих этапов.
Я рекомендую начать с Arduino. Arduino изменил сообщество разработчиков так, как легко подключить Arduino к USB-порту, и цепочка компиляции, сборки, развертывания - все для вас. Вы можете написать некоторый код и быстро мигать несколькими светодиодами.
Я также предлагаю вам начать с официального стартового набора Arduino . Хотя это очень просто, инструкции просты, и вы получаете кучу полезных электронных фрагментов (макет, перемычки, светодиоды и т. Д.), Которые остаются полезными.
Не расстраивайтесь из-за того, насколько Arduino является основным. Получите некоторый энтузиазм в первую очередь для электроники и практической части, прежде чем пытаться что-то слишком сложное. Если вы находите интересную электронику и хотите сделать больше, оставайтесь с Arduino и получите более сложный комплект. Я купил робота BOE Shield-Bot . Это может быть не самый лучший или самый дешевый робот, но у него действительно хороший учебник, в котором подробно рассказывается, как управлять сервоприводами и тому подобным. Вы также получите гораздо больше полезных битов.
Если вы справитесь с этим, вы либо сдадите и вернетесь к серверному программному обеспечению, либо купите больше битов, паяльников, больше плат и компонентов. Очень скоро вы попадете с ящиком разбитых снов, как и все мы.
Я бы не рекомендовал использовать Пи слишком рано. Это скорее компьютер, чем вещь, и в нем нет важных функций, которые необходимы в начале вашего понимания (например, аналоговый ввод). Вы очень быстро превзойдете Arduino (он не очень легко подключается к Интернету), но это хорошее место, чтобы посмотреть, понравится ли вам это.
источник
Я продолжу отвечать на ваш первый вопрос.
Если вы хотите просто узнать, я могу порекомендовать вам несколько книг о IoT, но я думаю, вы можете найти их самостоятельно. Если это понятно, то я бы порекомендовал вам начать работу над собственным небольшим проектом, таким образом вы научитесь лучше всего перед лицом реальных проблем.
Вам нужно будет решить, что вы хотите создать. Вот несколько идей и идей для начала:
Arduino Projects -> Микроконтроллер
Проекты Raspberry Pi -> Микропроцессор (более мощный)
hackaday.com -> Смешанные компоненты
Как только у вас появится представление о том, что вы хотите сделать, вам нужно придумать требования для вашего проекта. Микроконтроллер, датчики, исполнительные механизмы, протоколы связи и т. Д.
Как видите, самыми популярными устройствами являются Arduino , Raspberrypi и все остальные родственники, beaglebone black , onion и т. Д. Существует еще много других, отличия заключаются в цене, совместимости с другими датчиками и популярности. Популярные из них более совместимы и имеют больше поддержки на форумах.
Мы можем помочь вам с требованиями, основанными на вашем проекте. Удачи!
источник
Другие сосредоточились на первом аспекте вашего вопроса; Я собираюсь сосредоточиться на последнем. Вы спросили, может ли кто-нибудь войти в IoT или вам нужна большая компания с большим количеством ресурсов.
Если вы просмотрите тег « умный дом» , то увидите, что есть устройства IoT, которые уже сделали всю работу на стороне сервера. Существует множество устройств IoT, которые может купить «каждый», включая камеру Nest, термостат и т. Д., Amazon Echo, Google Home, умные печи, холодильники и т. Д.
Даже многие новые автомобили считаются объектами, которые должны восприниматься или контролироваться дистанционно ... хотя, возможно, пока не контролируемой частью. :)
Это приводит к ответу на ваш первый вопрос:
Вам не обязательно начинать с разработки: вы можете начать с чего-то более простого. Если вы хотите заняться разработкой, вы можете просто сделать решительный шаг, как некоторые предлагали, но у вас есть возможность начать с простого и постепенно перейти в область более сложного.
источник