Soy un desarrollador experimentado que utiliza una variedad de tecnologías, así como en tiempo real. Quiero aprender cómo desarrollar un dispositivo que no sea una computadora, tableta o cualquiera de los dispositivos familiares que todos conocen.
Noté que los sitios de compras globales ofrecen hardware de IoT, como el módulo de relé de 2 canales, la placa de desarrollo de nodeMCU y más hardware relacionado con IoT. No tengo idea de qué hacer o empezar .
Suponiendo que sé cómo codificar, ¿cómo comienzo a desarrollar mi primer dispositivo IoT?
Respuestas:
Esta es una pregunta muy amplia, pero trataré de dar algunos consejos generales, con suerte útiles para los demás, así como para usted (por lo tanto, acepte mis disculpas si publico cosas que ya sabe).
Si está preguntando acerca de la lectura de sensores, esto es telemetría y no necesariamente IoT. He codificado muchos proyectos en los que una PC independiente lee y muestra algunas mediciones.
Si también desea controlar el hardware conectado, este es SCADA . De nuevo, no necesariamente tiene que estar conectado a internet.
Aquí hay un diagrama de SCADA, que da una muy buena idea del IoT en general. Tenga en cuenta que los PLC en el diagrama son sensores y controles de dispositivos habilitados para IoT.
Puede solicitar recomendaciones de hardware para sensores y controladores en Recomendaciones de hardware .
Y, una vez que tenga algo de código, puede obtener consejos para problemas en Stack Overflow .
En general, IoT para la industria involucra el modelo cliente / servidor, con el cliente midiendo / controlando dispositivos de hardware e informando / recibiendo comandos del servidor. El servidor también generalmente tiene una base de datos y permite la generación de informes para la administración y las alarmas (y puede indicar al hardware remoto que reconfigure / apague en función de los datos recibidos).
¡Uf! Esa es la introducción fuera del camino. Ahora para ensuciarnos las manos.
Si desea entrar en el meollo de la codificación, observe los sockets y comprenda la diferencia entre TCP y UDP .
Afortunadamente, las décadas han envuelto la mayoría de las cosas más difíciles en las bibliotecas, y probablemente sea mejor que lea sobre los servicios RESTful. Existen numerosos tutoriales, cursos y videos gratuitos en línea, según su idioma; C es un lenguaje embebido tradicional, algunos usan C ++, pero por supuesto, usa lo que sabes / te sientes cómodo. Python es muy popular y fácil de aprender, además de ser el lenguaje recomendado para Raspberry Pi.
Personalmente, prefiero los idiomas compilados a los interpretados, ya que es más fácil eliminar los errores, pero la elección es totalmente suya. Solo asegúrese de que tenga un buen soporte para acceder a periféricos a través de USB, Ethernet y, aún extremadamente común en la industria, puerto serie.
Para el lado del servidor, más del 90% del servidor del mundo todavía se está ejecutando en PHP. Sin embargo, existe una aceptación del uso de NodeJS, principalmente de personas que codifican aplicaciones de navegador, que actualmente solo se pueden hacer en JavaScript y no quieren aprender dos idiomas. No recomiendo desarrollar aplicaciones de IoT basadas en el navegador, debido a las restricciones en el código del navegador para acceder al sistema de archivos y periféricos (aunque, mencionaría los gustos de Cordova , si desea desarrollar para teléfonos inteligentes).
Para comenzar, recomendaría una Raspberry Pi (codificación en Python o C).
Y yo * altamente * recomiendo un sombrero sensor. Este es solo un ejemplo, pero no es costoso y contiene
Eso le permitirá recopilar algunos datos e informarlos a su servidor. Es posible que pueda encontrar un servicio gratuito en línea para recibir y mostrar sus datos. He visto algunos en otro sitio SO, pero olvídate de dónde.
Pero, probablemente desee codificar su propio servidor. Recomendaría PHP como lenguaje de programación. Para Linux, está bien provisto de LAMP (Linux, Apache, Mysql y PHP). Para Windows, debe instalar un WAMP (Windows ... etc.).
Puedes elegir. He usado XAMPP en aplicaciones industriales durante más de una década. No tiene que usar Mysql, Sqlite puede servir igual de bien (enchufe sin shaw para mi propia pregunta SO de hace 6 años, " Sqlite o MySql? ¿Cómo decidir? "). También tendrá que aprender sobre CRUD .
En función de los datos recibidos del cliente / sensor, es posible que desee enviar un comando de regreso, incluso simplemente (pantalla: "temperatura demasiado alta", que podría traducirse en cerrar una válvula en un sistema industrial).
Es posible que desee generar alarmas en tiempo real (envíe un correo electrónico diciendo que la temperatura es demasiado alta).
Y es posible que también desee pensar en generar informes. Comience con una tabla que muestre los datos recibidos. Considere una tabla, o algo más elegante. Agregue una opción para exportar a valores separados por comas (CSV) que permite al usuario final importar los datos en una hoja de cálculo para su posterior análisis y manipulación.
Si no decide que desea informes de fantasía, que puede hacerlo en PHP, pero, después de algunas décadas de que ahora me he mudado a hacer gran parte del lado del cliente informe de la materia, en el navegador.
Para principios generales, obtenga una descripción general de las aplicaciones de página única y AJAX . Yo, personalmente, investigué mucho y elegí AngularJS de Google como mi lenguaje de programación (hay muchos tutoriales y un gran soporte), pero puedes usar JS, Jquery, etc. como quieras.
Si decide codificar cosas del navegador también, y podría usar NodeJs en el lado del servidor, de modo que solo tenga que aprender un nuevo lenguaje de programación.
¿Demasiadas opciones? Lo siento :-(
Espero que esto le haya dado algunos consejos, pero siéntase libre de hacer preguntas, y avíseme si falta algún consejo general aquí.
fuente
Como desarrollador experimentado, tiene la capacidad de comprender la lógica, leer y escribir código, descifrar cosas y algunas otras habilidades importantes. Lo que probablemente no tenga es una comprensión de la electrónica básica y el arte de obtener código de su escritorio ejecutándose en un dispositivo pequeño.
Saltar al nivel incorrecto de complejidad puede ser desalentador y puede significar que te rindas demasiado pronto. Por ejemplo, las personas recomiendan el ESP8266 y el NodeMCU sin pensar que necesita obtener el correcto, necesita el chip montado en una placa de desarrollo, debe instalar su software, debe conectarlo a algo y solo entonces puedes ejecutar JavaScript. Estas son muchas habilidades diferentes que necesita, y podría renunciar a cualquiera de esas etapas.
Mi recomendación es comenzar con un Arduino. Donde Arduino marcó la diferencia en la comunidad de fabricantes fue lo fácil que es conectar un Arduino en un puerto USB, y la cadena de compilación, construcción e implementación está ordenada por usted. Puede escribir un código y parpadear algunos LED muy rápidamente.
También sugiero que comience con el kit de inicio oficial Arduino . Si bien es muy simple, las instrucciones son sencillas y obtienes un montón de piezas electrónicas útiles (tablero, cables de puente, LED, etc.) que siguen siendo útiles.
No se desanime por lo básico que es el Arduino. Obtenga un poco de entusiasmo primero por la electrónica y la parte práctica antes de intentar algo demasiado complejo. Si le parece interesante la electrónica y quiere hacer más, quédese con el Arduino y obtenga un kit más complejo. Compré el robot BOE Shield-Bot . Puede que no sea el robot mejor o más barato, pero tiene un tutorial realmente bueno que detalla cómo controlar los servos y demás. También aterrizas con muchos más bits útiles.
Si lo supera, se dará por vencido y volverá al software del lado del servidor, o comprará más bits, soldadores, más placas y componentes. Muy pronto aterrizarás con un cajón de sueños rotos como el resto de nosotros.
No recomendaría usar el Pi demasiado pronto. Es más una computadora que una cosa, y no tiene características importantes que son necesarias al comienzo de su viaje de comprensión (como la entrada analógica). Superará rápidamente el Arduino (no se conecta a Internet muy fácilmente), pero es un buen lugar para ver si esto será algo que disfrute.
fuente
Procederé a responder su primera pregunta.
Si solo quieres aprender, puedo recomendarte algunos libros sobre IoT, pero creo que puedes buscarlos tú mismo. Si eso está claro, le recomendaría que comience a trabajar en su propio proyecto pequeño, así es como aprende mejor, enfrentando problemas de la vida real.
Tendrá que decidir qué es lo que desea crear. Aquí hay algo de inspiración e ideas geniales para comenzar:
Proyectos Arduino -> Microcontrolador
Proyectos de Raspberry Pi -> Microprocesador (más potente)
hackaday.com -> Componentes mixtos
Una vez que tenga la idea de lo que quiere hacer, debe presentar los requisitos para su proyecto. El microcontrolador, sensores, actuadores, protocolos de comunicación, etc.
Como puede ver, los dispositivos más populares son Arduino , Raspberrypi y todos los demás parientes, beaglebone black , onion , etc. Hay muchos más, las diferencias son el precio, la compatibilidad con otros sensores y la popularidad. Los populares son más compatibles y tienen más soporte en los foros.
Le podemos ayudar con los requisitos basados en su proyecto. ¡Buena suerte!
fuente
Otros se han centrado en la primera faceta de su pregunta; Me voy a centrar en lo último. Preguntó si cualquiera puede ingresar a IoT o si tiene que ser una gran empresa con muchos recursos.
Si explora la etiqueta de la casa inteligente , verá que hay dispositivos IoT que ya tienen todo el lado del servidor hecho por usted. Hay muchos dispositivos IoT que "cualquier persona" puede comprar, incluidos Nest Cam, termostato, etc., Amazon Echo, Google Home, hornos inteligentes, refrigeradores, etc.
Incluso muchos autos nuevos califican como objetos para ser detectados o controlados de forma remota ... aunque quizás todavía no sean la parte controlada. :)
Esto lleva a la respuesta de su primera pregunta:
No necesariamente tiene que comenzar desarrollando: puede comenzar con algo más simple. Si desea entrar en el lado en desarrollo, simplemente puede dar el paso, como algunos han sugerido, pero tiene la opción disponible para comenzar de manera simple y avanzar gradualmente hacia el reino de lo más complejo.
fuente