Actualmente soy desarrollador web, pero estoy interesado en la programación integrada. ¿Qué idiomas y herramientas puedo aprender a trabajar en esta área?

En el frente de la microcomputadora aficionada, Arduino es lo más liviano posible; con Uno pesando 16Kb de memoria Flash, si se deshace del gestor de arranque y se ocupa directamente del hardware. Arduino recomienda usar su DSL, aunque si usted es un programador profesional y quiere expandir sus habilidades, probablemente sea mejor que simplemente construya en C (el lenguaje Arduino es realmente una versión simplificada de C con GC y algunas bibliotecas grandes).

Podría fácilmente gastar un poco más de dinero para obtener una pizarra más grande, pero mucha de la diversión puede ser escribir algo que sea eficiente. Le enseñará algunas habilidades valiosas que se pueden aplicar en otros lugares: necesitará aprender ingeniería electrónica básica para unir todo, además de escribir software dedicado que haga un solo trabajo.

Depende de lo que quieras construir realmente; sin embargo, un primer paso para decidir qué te gustaría hacer es jugar con una simulación de Arduino como UnoArduSim

Hay muchos lenguajes que se utilizan para la programación integrada, como lenguaje ensamblador, C, Python, Java, Perl e incluso Smalltalk. C es probablemente el más popular.

La programación integrada requiere que comprenda la programación a nivel de hardware, por lo que le corresponde familiarizarse con el hardware. Arduino es un punto de partida razonable, pero sugeriría obtener una Raspberry Pi y jugar con eso.

  1. Compre algunos microcontollers PIC y aprenda a programarlos. (Hace algunos años escribí un libro sobre eso, pero ahora está un poco desactualizado y actualmente no tengo tiempo para actualizarlo). Puede descargar el último IDE desde el microchip (ese es el nombre de la compañía). Los microcontroladores PIC son bastante fáciles y tienen toneladas de documentación. Recomiendo el PIC18F2550 (tiene soporte USB)
  2. Acostumbrarse a esa documentación para la programación incrustada no es, en mi opinión como experto en software, tan legible como usted está acostumbrado. Está seco y escrito por chicos de hardware. Algo aburrido. Pero persevera y obtendrás la información que deseas.
  3. Use C. Principalmente C. Assembler también puede ayudarlo más tarde: muchos códigos de ejemplo están escritos en ensamblador, pero no he tenido problemas para usar C y mantener el otro al mínimo
  4. Si va a hacer esto profesionalmente, aprenda que a veces, por alguna oscura razón, no todos los programas C comienzan por main () . Algunos incluso no tienen un main (). Los chicos del software están confundidos por eso. En un caso, trabajé con un programa que comenzó con una rutina de ensamblador que luego saltó a una función general en C. No main () en absoluto. Pero no te preocupes demasiado, este no es un tipo de cosas para principiantes
  5. Arduino es genial para hacer cosas interesantes. Pero también recomendaría comenzar con los PIC (o si desea mantenerse dentro de arduino ATMEL pero personalmente prefiero los PIC)

Casi todo el código incrustado está escrito en C o ensamblador. Dudo que alguno esté escrito en Java. Probablemente desee practicar un poco en el aprendizaje de C (deje el ensamblador hasta más tarde; no es necesario) antes de intentar programar un Arduino y si obtiene uno, también tendrá que aprender algo de electrónica básica.

También vale la pena pensar en una Raspberry Pi. Es una casa a medio camino entre una PC y un Arduino. Todavía tiene una pantalla, teclado y mouse, pero también tiene pines de interfaz a los que puede conectar cosas y controlarlas. Sin embargo, debe apagarlo como una PC cuando lo apaga, por lo que no es tan bueno para los trabajos integrados adecuados.

Creo que las otras respuestas cubrieron las herramientas más populares, por lo que no puedo agregar mucho. Sin embargo, Coursera comenzó varias clases anteayer que deberían proporcionar todo lo que necesita. Una introducción a la programación de Internet de las cosas (IOT) – Universidad de California, Irvine | Coursera

More Interesting

Si quiero crear un sitio web de comercio electrónico utilizando datos de terceros, ¿qué lenguajes de programación web debo aprender?

Estoy considerando codificar bootcamps en Nueva York, particularmente para convertirme en un desarrollador de pila completa. ¿Qué bootcamp es el mejor?

Cuando busco en Google "000000..000001", ¿por qué recibo el mensaje "Nuestros sistemas han detectado tráfico inusual de la red de su computadora. Por favor intente su solicitud más tarde"?

¿Soy la única persona que piensa que jQuery y bootstrap deben colocarse en el compartimento 'no tocar este' del cinturón de herramientas del desarrollador / diseñador?

Quiero crear una aplicación con un motor de aplicación de Google, ¿por dónde empiezo?

Estoy teniendo dificultades para implementar una tarifa recurrente. ¿Qué tengo que hacer?

Deseo ser un desarrollador front-end. ¿Cuál es el alcance de esto en India? ¿Qué habilidades se requieren para ser un desarrollador front-end?

¿Cómo haría una versión 'expandida' de una página web usando HTML, CSS y jQuery?

Quiero que mi blog sea profesional y limpio, ¿cuál es mi mejor opción en la creación de sitios web?

Me gustaría conseguir un trabajo como desarrollador. Estoy aprendiendo Java, HTML, CSS. ¿Qué proyectos puedo hacer para saber lo que no sé y también agregar a una cartera?

Soy un desarrollador web y móvil freelance para principiantes. ¿Necesito tener una tarjeta de visita?

Tengo una idea de red social para bancos, prestatarios y tiendas en línea. ¿Puede algún desarrollador web experto cofundar esto?

Soy principiante en Java. ¿Cómo puedo construir una aplicación basada en cliente-servidor?

Quiero aprender JavaScript y construir cosas geniales con él, pero no me interesan los CSS, HTML, hacer 'tooltips geniales' o juegos. ¿Qué puedo hacer con eso?

He intentado toneladas de lenguajes de programación y frameworks, pero no soy dueño de ninguno. Sé que necesito concentrarme en varios idiomas, pero no quiero perderme otras tecnologías nuevas. ¿Qué tengo que hacer?