¿Cómo comienza un desarrollador experimentado con IoT?

10

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?

Lo irreal
fuente
Los "otros" dispositivos tienen un procesador o microcontrolador, así como una computadora en general, la única diferencia está en su rendimiento, memoria disponible, etc.
Bence Kaulics
99
Me parece una desconexión entre las preguntas de 'desarrollador experimentado' y 'cómo comenzar'. Es muy sencillo. Encuentre una aplicación que sea relevante para usted hoy (calefacción, iluminación, automatización) e impleméntela. Una vez que haya preguntas específicas , debería obtener buenas respuestas aquí; lo más probable es que provengan de mejoras o iteraciones en su prototipo original. Como se plantea, esta pregunta es realmente pedir opiniones, no hay una respuesta claramente correcta.
Sean Houlihane
3
Hice una edición que intenta llegar al núcleo de la pregunta, pero conservando parte del texto original. Sugiero que OP @TheUnreal pregunte la segunda parte "¿Entrar en IoT requiere ser una empresa ingeniosa o un individuo puede hacerlo también en este mundo?" como una pregunta separada, ya que creo que sigue siendo relevante.
Simon Munro

Respuestas:

14

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.

Arquitectura SCADA

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).

Tablero Raspberry Pi

Y yo * altamente * recomiendo un sombrero sensor. Este es solo un ejemplo, pero no es costoso y contiene

  • Giroscopio - sensor de velocidad angular: acelerómetro +/- 245/500/2000 dps
  • Sensor de aceleración lineal: +/- 2/4/8/16 g
  • Magnetómetro - Sensor magnético: +/- 4/8/12/16
  • Barómetro Gauss: 260-1260 hPa rango absoluto (la precisión depende de la temperatura y la presión, +/- 0.1 hPa en condiciones normales)
  • Sensor de temperatura (temperatura precisa de +/- 2 ° C en el rango de 0-65 ° C)
  • Sensor de humedad relativa (precisión de +/- 4.5% en el rango de 20-80% HR, precisión de +/- 0.5 ° C en el rango de 15-40 ° C)
  • Pantalla de matriz de LED RGB 8x8
  • Joystick pequeño de 5 botones

tablero de sensores

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í.

Mawg dice que reinstalar a Mónica
fuente
1
Gracias Mawg, la mayoría de lo que dijiste ya lo sé y no era una pregunta relevante, estoy trabajando con PHP y Javascript, así como con Corodva durante años. Creo que comenzaré a comprar UNO R3 y veré cómo puedo proceder desde allí.
TheUnreal
1
Empecé a escribir y simplemente no pude parar :-) Espero que ayude a otros. No conozco a Córdoba lo suficientemente bien. Es bueno para acceder al hardware del teléfono, la cámara, la SIM, el sensor de inclinación, pero ¿puede acceder al puerto serie? Porque eso se usa mucho en la industria; puede pasar con un convertidor USB a serie, que es lo que usamos para las computadoras portátiles, pero ¿puede Cordova enviar datos a través de USB? Y Ethernet? continúa ...
Mawg dice que reinstalar a Monica
1
... Conoces JS, pero no recomendaría usarlo en un procesador incorporado. Usted puede , pero ciertamente no es normal. ¿Tal vez es hora de comprar Python o C? ¿O tal vez te refieres al navegador UNO R3 <--> servidor <-->? Quédate con Arduino si ya lo sabes, por supuesto. Me cambio a R Pi, pero esa es solo mi preferencia personal. . ¿Tienes un proyecto de aprendizaje en mente? Sugerencia, sugerencia ... iot.stackexchange.com/questions/675/… :-)
Mawg dice que reinstale a Monica
9

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.

Simon Munro
fuente
1
Esta es la respuesta más cercana a mis preguntas. Gracias.
TheUnreal
6

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!

Lijadoras de serpiente
fuente
Ya tengo una idea, pero quiero experimentar este mundo antes de saltar a esto. Creo que comenzaré a comprar Uno R3 y publicaré preguntas tan pronto como me vaya.
TheUnreal
1
Un Arduino Uno es bueno para controlar elementos físicos, pero es costoso adaptarse a los protocolos de red, ya que básicamente tiene que agregar otro mejor microcontrolador o computadora para hacerlo. A veces puedes encontrar una parte que hace ambas cosas, otras veces tienes un sistema de red que delega la tarea de control eléctrico a algo así como un Arduino
Chris Stratton
2

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 , 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:

¿Cómo puedo comenzar a practicar desarrollar mi primer dispositivo IoT?

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.

anónimo2
fuente
1
¿Y dónde es mejor comenzar que iot.stackexchange.com/questions/675/… ?
Mawg dice que reinstalar a Monica