¿Qué microcontrolador y lenguaje de programación debo usar para una pantalla meteorológica con acceso a Internet?


11

Soy un novato en IoT y quiero comenzar mi carrera en IoT. Mientras busco en Google nuevas empresas en IoT, encontré muchos blogs. Y encontré los lenguajes utilizados en IoT como C #, Java, Node.js y los microcontroladores como Arduino, Raspberry Pi, Intel, Netduino, etc.

Como soy nuevo en IoT, no sé qué idioma es mejor y qué microcontrolador utilizo para una startup.

Para el inicio básico que digo, quiero crear un dispositivo que tenga la pantalla que muestre el clima para la ubicación dada desde mi móvil. Por lo tanto, puede ser un buen ejemplo para el inicio que cubre el hardware, Internet y el software.

El dispositivo será alimentado por batería, una pequeña pantalla digital y sí, restricción de costos.

¿Qué microcontrolador e idioma debo usar que cumpla con mis requisitos para mostrar el clima?


1
Esta parece una pregunta mucho mejor que la anterior; mucho más centrado en un caso de uso específico. Para que podamos darle una buena respuesta, aquí hay algunas preguntas: ¿su dispositivo funcionará con alimentación de red o con batería? ¿Qué tan grande quieres que sea la pantalla? ¿Hay alguna restricción de costo?
Aurora0001

2
Además, para seleccionar el microcontrolador, esta respuesta es realmente fantástica.
Aurora0001

1
Gracias @ Aurora0001. He agregado más detalles a medida que comentabas, por favor verifica.
Jigarb1992

1
Picking nits: El Arduino es un microcontrolador. El Pi es una computadora completa, cosas como Pis y Beaglebones y Gumstix se denominan típicamente "computadoras de placa única" (SBC) o "computadora en módulos" (COM). A diferencia del Pi, el Arduino no ejecuta un sistema operativo: el Arduino es solo un Atmel ATmega ?? 8 en una pequeña placa agradable y fácil de usar que se envía con un IDE conveniente. El Pi es una computadora real con un núcleo de microprocesador ARM Cortex-A53. Puede usar, por ejemplo, un Pi para hacer todo el trabajo en red y mostrar la salida y el control complejo con un Arduino para hacer un trabajo simple como botones de lectura, etiquetas RFID o algo así.
Jason C

1
Dispositivos alimentados por batería: ¿te refieres a un teléfono inteligente / reloj inteligente (batería Li, duración de unos días entre recargas), o como un reloj (AA no recargable, duración de unos meses)? Eso impulsará su diseño y restringirá severamente sus opciones si elige este último.
pjc50

Respuestas:


5

Personalmente, seleccionaría una Raspberry Pi 3B para esto, aunque probablemente sea mucho más potente de lo que realmente necesita. Las razones para mi sugiriendo esto son:

  • Tiene una LAN inalámbrica 802.11 b / g / n incorporada, por lo que podrá conectarla a una red Wi-Fi en lugar de mediante un cable Ethernet

  • También es compatible con Bluetooth, por lo que es posible que pueda conectarse al teléfono a través de eso.

También necesitará una unidad de pantalla y, convenientemente, hay varias pantallas diseñadas para Raspberry Pi, como esta pantalla táctil 4DPI-32 . Simplemente debe poder colocar la pantalla directamente en el encabezado de 40 pines:

40 pin Fundación Raspberry Pi , CC BY-SA 4.0 . Sé que técnicamente es un Pi 2B, pero el GPIO es el mismo en el 3B.

En cuanto al aspecto de programación en este caso, todo lo que necesita hacer es obtener el clima de una API en algún lugar y mostrarlo en la pantalla como un programa GUI. La pantalla simplemente funciona como cualquier salida HDMI para el Pi, por lo que no necesita hacer nada especial. Para Python, puede usar Tkinter para crear una interfaz de usuario básica, o incluso puede optar por escribir una aplicación web en HTML / CSS / JS, según lo que le resulte más cómodo. Puede usar la API de OpenWeatherMap de forma gratuita; la documentación está vinculada para cada punto final de la API.

En este punto, depende de ti realmente. El mejor idioma aquí es el idioma con el que se siente más cómodo. Si te gusta AngularJS, solo crea una página HTML, busca el clima con Angular (o usa una biblioteca como esta para ayudarte) y muéstralo usando un poco de CSS para que se vea bien.

Para obtener realmente la ubicación, sospecho que sería más fácil permitir que el usuario escriba su ubicación en la pantalla táctil de Pi. Enviar la ubicación de su teléfono probablemente sea un poco más difícil, aunque es posible que pueda encontrar algo si investiga mucho.

Para el uso de la batería, vale la pena leer esta pregunta sobre Raspberry Pi Stack Exchange .


1
Tengo que conectar los kits de Vilros Pi , que funcionan de inmediato y ahorrar una tonelada de configuración inicial molesta. También fuera de tema, pero para la depuración, he encontrado que esto (y su versión reforzada si busca en el sitio) es increíblemente útil. Caro para un solo uso, pero vale la pena si lo usa todo el tiempo. Funciona bien con un adaptador HDMI -> VGA.
Jason C

1
No. Primero debido a la dependencia de una tarjeta SD frágil, segundo porque realmente no se puede comenzar a fabricar en cantidades moderadas. Un pi puede obtener una prueba de concepto, pero luego tendrá que rediseñarlo en torno a algo que realmente pueda usar en un producto. Además, es básicamente un no arrancador completo para la energía de la batería en cualquier uso serio.
Chris Stratton

@ChrisStratton: Para un principiante como el OP, un RPi parece una opción viable en mi opinión. Sí, para la producción a gran escala, esto no sería lo ideal, pero me concentré en proporcionar una idea accesible y fácil de modificar; Un POC es exactamente lo que se necesita aquí. No creo que la tarjeta SD sea realmente una gran preocupación tampoco para una configuración de aficionado; En la producción en masa, la historia es diferente, pero para empezar, creo que debería funcionar lo suficientemente bien. Sin embargo, estoy abierto a cualquier sugerencia para un mejor enfoque.
Aurora0001

Incluso aparte de las formas en que esos problemas lo hacen no viable en un producto, el requisito de energía de la batería del póster lo descarta desde el principio. Debido a que el pi es una arquitectura configurada sin la administración de energía de un dispositivo móvil, no obtendrá más de unas pocas horas con una batería razonable.
Chris Stratton

10

Los Cebolla Omega 2 dice ser el equipo con Linux más pequeño del mundo. Es posible que esa afirmación no sea del todo cierta (vea el vocore2 a continuación, por ejemplo), pero en mi experiencia tiene que estar en el 3. Más pequeño. Solo cuesta $ 5, wifi incorporado, diseñado específicamente para IoT. Tiene algunos escudos disponibles en su sitio web . Producto nuevo, parece tener una comunidad fuerte y activa. Los patrocinadores de Kickstarter obtienen el dispositivo. Vale la pena echarle un vistazo.

Además, como se señaló en los comentarios, echa un vistazo al vocore2 , que en realidad parece ser más pequeño que la cebolla, y más barato a $ 4. Actualmente se está financiando en IndieGoGo y las fechas de envío estimadas son febrero de 2017 (el próximo mes al momento de escribir este artículo). También parece tener una variedad de muelles disponibles, y tiene un enrutador wifi incorporado, lo cual es genial.

Me los encontré el otro día y no tengo experiencia con ellos. Sin embargo, tenga en cuenta que, debido a su novedad, algunos de los paquetes de Linux que puede estar acostumbrado a usar pueden no estar disponibles todavía (por ejemplo, sé que al momento de escribir esto, un paquete gstreamer no está disponible en Onion sin embargo, debes construir desde la fuente, aunque gstreamer no es relevante para ti).

Además de eso, como dice la otra respuesta, el Pi es un gran dispositivo de bajo costo. No olvides la Raspberry Pi Zero , otra pequeña computadora de $ 5 en la línea de la cebolla. No tiene todos los puertos a bordo que tienen los Pi más grandes, pero si no le importa, o si solo desea usar un 3 para el desarrollo y un cero para su tamaño en los productos finales, es otra opción que vale la pena considerar.

Otros dispositivos, algunos caros, incluyen:

  • BeagleBone Black (esta es la única alternativa de Pi que consideraría seriamente debido a su bajo costo).
  • Gumstix ($$$, pero los usamos todo el tiempo en proyectos para su tamaño)
  • Udoo ($$$ pero tiene un gran impacto )
  • Toradex Colibri (un poco difícil de trabajar, pero también los usamos mucho, mejores especificaciones que un Gumstix, y tenemos la opción de ejecutar Windows CE con una función de arranque instantáneo si prefiere una cadena de herramientas de Windows y prácticamente cero tiempo de arranque )

También tenga en cuenta que Vilros hace algunos impresionantes kits de iniciación Pi (más barato en Amazon) envasados previamente, con un sistema operativo, Wifi, disipadores de calor, un caso de trabajo, se resuelve la derecha de la caja y ahorra un montón de trabajo de configuración del ronco. También vale la pena echarle un vistazo si vas a la ruta Pi. Vilros también solía hacer kits de inicio de Beaglebone, que ya no parecen estar disponibles en su sitio, pero si busca en Newegg / Amazon / etc. todavía puedes encontrar stock disponible.


Por cierto, un Arduino (u otro microcontrolador, en contraste con las computadoras de una sola placa completas enumeradas anteriormente) probablemente no sea lo que desea aquí. El Arduino es solo un Atmel ATmega168 / 328. No ejecuta un sistema operativo y realmente no hace nada más que precisamente lo que le dices que haga. Entonces, por ejemplo, para redes necesitaría el escudo de ethernet, que se entrega con una biblioteca de control de ethernet completa que creo que proporciona una pila TCP y UDP (nunca la he usado, solo navego por su sitio) y, por supuesto, toma un Mucho espacio de código limitado.

Entonces tendrías que construir tu cliente meteorológico y todo lo demás, y tienes que hacerlo todo en 32 KB o menos. Es un sabor de desarrollo diferente al desarrollo de Linux / Windows en Pi / Beaglebone / Gumstix / Colibri / etc. Un poco fuera del alcance de esta respuesta.

Para lo que Arduino es bueno aquí es como un complemento a su sistema principal para hacer cosas de interfaz de hardware, como leer sensores de presión, botones, controlar elementos electrónicos básicos, ese tipo de cosas.

El desarrollo de sistemas integrados es una bestia completamente diferente al desarrollo de escritorio que harías en Pi, y realmente no recomendaría intentar hacer esto solo con un Arduino, especialmente sin experiencia.


1
vocore2 es más pequeño y más barato en este momento ($ 4) y aún ejecuta OpenWRT (Linux)
Matija Nalis

2
¿Cuál es la historia de código abierto con este?
Sean Houlihane

@SeanHoulihane Gran pregunta. Veré si puedo averiguarlo, su página de Kickstarter y su página de inicio carecen del asunto. De hecho, estoy un poco molesto por el reclamo "más pequeño" de la gente de Onion después del comentario anterior de Matija vocore2, pero tal vez puedan redimirse (en mis humildes ojos) con una arquitectura abierta.
Jason C

3
Recuerde, la gente puede reclamar cualquier cosa en Kickstarter ...
Sean Houlihane

@SeanHoulihane Oh, hombre, no me hagas comenzar con mi diatriba de odio de Kickstarter, je. Resistir, resistir ... Aún así, Kickstarter afirma y deja a un lado la apertura, tanto el Omega como el Vocore son dispositivos nuevos que se ven geniales. Y también tenemos el RPi Zero en el frente de bajo costo.
Jason C

6

Sugiero un enfoque paso a paso para averiguar qué idioma y controlador debe usar. El microcontrolador que necesita dependerá de las tareas que desee que realice. Teóricamente, la tarea establecerá algunos requisitos que cumplirá un microcontrolador apropiado, por lo que debe elegir el microcontrolador según estos requisitos.

  1. Definir una historia de usuario para el dispositivo. ¿Qué esperas de él? ¿De qué quieres que sea capaz?

    En su caso, ya está definido por usted:

    Un dispositivo alimentado por batería que debería ser capaz de recibir entradas de un teléfono inteligente y mostrar la información meteorológica de las ubicaciones solicitadas en su propia pantalla.

  2. Ahora el paso 1. te da algo para comenzar. Puede decidir qué hardware necesita en un nivel de diagrama de bloques.

    Sin duda necesitará una pantalla y posiblemente un módulo WiFi o Bluetooth para comunicarse con su teléfono móvil. El acceso a bases de datos meteorológicos globales posiblemente requerirá conexión a Internet. Debe controlar ambos con un MCU o el módulo WiFi (necesita Internet para poder excluir Bluetooth) debe poder controlar la pantalla y ejecutar su software.

  3. Puede comenzar a buscar piezas específicas. Puede comenzar por decidir qué batería usará, de modo que puede tener en cuenta el consumo de energía de sus piezas potenciales. He resumido un proceso general para seleccionar MCU en una de mis respuestas anteriores . Básicamente, lo mismo debe hacerse aquí. Encuentre una pantalla barata, probablemente usará una interfaz SPI o I2C para la comunicación. Luego puede buscar un módulo Wifi con SPI / I2C y tiene una MCU integrada o una MCU separada y un módulo WiFi. El módulo WiFi individual probablemente usará UART para comunicarse, por lo que la MCU individual debería tener eso junto con el SPI / I2C.

  4. En cuanto al idioma. La mayoría de los microcontroladores limitarán sus posibilidades en este campo. En la mayoría de los casos, sus opciones serán C, C ++ o Ensamblaje, estrictamente hablando de microcontroladores aquí y no de computadoras de placa única.

    Si decide usar un BeagleBone o Raspberry que pueda ejecutar Linux u otro sistema operativo potente, entonces le digo que el mejor lenguaje será el que mejor conozca, por supuesto, debería ser capaz de manejar la tarea. ( Puede ejecutar Java en el RPi si lo desea ) .

    La apertura de un socket a un servicio de datos meteorológicos globales también se puede hacer en C, C # o Python. Sería un poco más difícil procesar JSON con C pero ciertamente posible.

Hablando de costos en general. La mejor opción es buscar dispositivos de visualización habilitados para WiFi, habrá muchos resultados y la mayoría utilizará el mismo hardware, y probablemente este sea el más barato.


Puede usar un módulo WiFi ESP8266 que sea compatible con Arduino para conectarse a Internet e interactuar con una pantalla. Requerirá muchos ajustes que un Raspberry Pi, pero será más barato.

Aquí hay un proyecto de Hackaday sobre la pantalla OLED ESP8266 + .


2
Buen desglose del proceso. Micropython está disponible para muchas placas pequeñas, quizás un factor a tener en cuenta es el ecosistema de la placa, y si hay bibliotecas de código abierto (aunque los proveedores de MCU a menudo también ofrecen buenas bibliotecas).
Sean Houlihane

6

Crear una startup no se trata de lo que puedes hacer con la tecnología y ni siquiera del producto. Para un inicio exitoso que pueda cautivar a los VC, primero debe pensar en el mercado al que va a servir. Pero pensar en el mercado que atenderá no es suficiente. Necesita tener datos reales sobre el mercado. No se trata solo de algo que tiene sentido para ti. Crear un producto y luego tratar de venderlo no es un enfoque exitoso y esa es la forma en que terminan las startups que no tienen éxito. Un mercado es una NECESIDAD REAL. Cuando crea un producto, créelo para abordar un mercado específico. Esto es lo que hace un producto exitoso, un producto que se vende solo porque la gente ya lo está buscando. Los VC solo invierten en startups que tienen dichos productos, especialmente si ya están vendiendo.

Para elegir una tecnología para desarrollar su producto primero, necesita saber qué necesita hacer su producto, así es cómo va a resolver el problema en el mercado seleccionado. Luego mire lo que los clientes potenciales están dispuestos a pagar por ello. Luego, elija la tecnología que permita el tiempo de comercialización más rápido mientras mantiene el costo dentro del presupuesto. Luego subcontrate el desarrollo u obtenga un socio que pueda hacerlo y esté dispuesto a trabajar con usted. Comparta las ganancias 50/50 con su pareja. Luego, cuando tenga un prototipo, comience a diseñar su plan de negocios y recuerde que solo puede cautivar a los VC si les muestra cómo pueden ganar dinero.

Si necesita reducir el costo de su producto para la producción en masa, puede usar lenguajes de nivel inferior y microcontroladores menos ingeniosos como Microchip PIC o Silicon Labs EFM con ASM / C / C ++. Si el producto no se va a producir en masa (más de 100k), use un lenguaje de nivel superior y microcontroladores más ingeniosos, como Micro Python o Lua con ARM32 MIPS, o incluso Linux con ARM32 / 64. Esto ahorra en costos de desarrollo pero aumenta el precio del hardware. Recuerde, el precio del producto no es solo una PCB con componentes; El desarrollo, la vivienda, el embalaje y todo lo demás necesario para vender el producto deben incluir su costo. Pon eso en el plan de negocios. Y no vaya a un VC con un Arduino o una Raspberry pi o una Cebolla o cualquier cosa que parezca un gadget de aficionado,

Arranca, no baja, y la mejor de las suertes.


Realmente tiene un sentido completo de marketing. Gracias :)
Jigarb1992
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.