La diferencia entre desarrollar una aplicación con un Pi puede ser muy diferente o algo similar al desarrollo de una aplicación con un microcontrolador debido a las diferencias de hardware y las diferencias de la cadena de herramientas de desarrollo de software.
Hay una amplia gama de microcontroladores disponibles que van desde procesadores de 8 bits a 64 bits y tienen desde unos pocos K de RAM hasta unos pocos gigabytes de RAM. Los microcontroladores más capaces proporcionan una experiencia más similar a Pi. Los microcontroladores menos capaces no lo hacen.
E incluso con Pi hay grandes diferencias entre el desarrollo para el sistema operativo Windows 10 IoT y el desarrollo para Raspian, Mate u otro sistema operativo basado en Linux. Windows 10 IoT requiere una PC de desarrollo que use una cadena de herramientas de Visual Studio con depurador remoto dirigido al entorno del Programa Universal de Windows (UWP). El desarrollo para Raspian o Mate en realidad se puede hacer en un Pi con las herramientas disponibles en el Pi.
El Protocolo de aplicación restringida se utiliza para dispositivos pequeños y restringidos que se utilizan con el entorno de Internet de las cosas. Para tener una idea de la variedad de hardware y software de microcontroladores, esta página sobre la implementación del protocolo CoAP proporciona una idea del entorno al que se dirige. Menciona el sistema operativo Contiki del que he oído hablar vagamente junto con sistemas operativos más conocidos como iOS, OSX y Android. Los lenguajes de programación mencionados son Java, JavaScript, C, C #, Ruby, Go, Erlang, Rust y Python.
La cadena de herramientas utilizada para el desarrollo con microcontrolador varía según el fabricante y los tipos de recursos disponibles de las comunidades de desarrollo y las iniciativas de código abierto. En algunos casos obtienes un ensamblador cruzado, en otros casos obtienes un compilador cruzado C, y en otros casos obtienes una buena cadena de herramientas con todas las campanas y silbatos y emuladores y similares a la cadena de herramientas de Visual Studio para Windows 10 IoT.
El entorno de desarrollo real para un microcontrolador puede implicar el uso de un programador EEPROM y las herramientas de software para crear una nueva imagen y llevarla al dispositivo o el dispositivo puede tener la conectividad necesaria para permitir que una nueva imagen se descargue a través de una conexión en serie o más Una conexión de red.
Mi impresión es que la mayoría de los microcontroladores tienen un compilador cruzado C, aunque el compilador solo puede admitir estándares más antiguos como K&R o tal vez C98. Los compiladores cruzados de C a menudo tienen palabras clave no estándar para funciones específicas de microprocesador, por ejemplo, las palabras clave far
y near
para punteros con los antiguos procesadores 8080 y 8086 con su memoria segmentada.
También hay lenguajes especializados que se dirigen a microcontroladores como el lenguaje de programación FORTH . Estos idiomas a menudo tienen un diseño de tiempo de ejecución que apunta al metal desnudo para que no haya otro sistema operativo que no sea el tiempo de ejecución del idioma.
El sistema operativo puede variar desde prácticamente inexistente hasta un Linux básico hasta un sistema operativo especializado como freeRTOS o Windows Embedded o un Linux o Microsoft Windows completo. Vea este proyecto de SourceForge MINIBIAN para Raspberry Pi . Vea también este libro electrónico, Baking Pi: Desarrollo de sistemas operativos que describe el desarrollo de un sistema operativo rudimentario para Raspberry Pi en ensamblador.
Este artículo de Visual Studio Magazine, Programming the Internet of Things with Visual Studio , proporciona una descripción general de los diferentes dispositivos disponibles, seguido de una descripción general del uso del IDE de Visual Studio para el desarrollo de Linux y Windows.
Hay un enorme y creciente universo de dispositivos de microcontroladores programables y conectables en red disponibles ahora. A un nivel muy bajo, tiene una variedad de dispositivos simples de 16 y 32 bits de una variedad de fabricantes de chips tradicionales como Texas Instruments. (Jugué un poco con el kit de desarrollo SensorTag y es muy divertido, lo que me hace pensar que Watch DevPack también podría ser un gran conjunto de herramientas de aprendizaje).
Algunos dispositivos de microcontroladores más conocidos incluyen Arduino, BeagleBoard y Raspberry Pi. Todos estos entornos tienen un amplio soporte comunitario y están listos para conectarse a una gran cantidad de sensores externos, motores, servos y cualquier otra cosa que pueda imaginar. Adafruit, el supermercado de aprendizaje de electrónica fundado por Limor "Ladyada" Fried, proporciona todo tipo de periféricos para estas placas, junto con su propia línea de placas de desarrollo ligeras Feather.
...
El universo más interesante de dispositivos para desarrolladores familiarizados con Microsoft .NET Framework y Visual Studio pueden ser entornos compatibles con Windows 10 IoT Core. Estos son dispositivos x86 y ARM que admiten aplicaciones de la Plataforma universal de Windows (UWP) escritas en una variedad de lenguajes, incluidos C #, Visual Basic, Python y Node.js / JavaScript. Windows 10 IoT core es compatible con dispositivos que incluyen Raspberry Pi, Arrow DragonBoard 410C, Intel Joule y Compute Stick y MinnowBoard. También hay plataformas de productos interesantes, como el Askey TurboMate E1 ponible.
Un ejemplo específico de una aplicación de microcontrolador
Esta es una imagen de una placa de microcontrolador de una cafetera automática. Este parece ser un componente estándar para cafeteras automáticas fabricadas en China. El sitio web del fabricante está impreso en la PCB.
La imagen se compone de dos vistas. La vista de la izquierda es la parte posterior de la placa que contiene el microcontrolador y los circuitos de soporte. La vista de la derecha es la parte frontal del tablero con la pantalla LCD y un conjunto de botones que se utilizan para configurar la hora actual y realizar acciones como programar una hora de inicio, etc.
La vista de la derecha se ajusta a un transportista que luego se ajusta a una abertura en la parte delantera de la cafetera. Los interruptores en la PCB inferior se accionan con interruptores basculantes. La pantalla LCD, que parece tener un propósito especial, se usa para mostrar la hora y el estado actuales, así como para mostrar la interfaz de usuario al cambiar la configuración de la cafetera. El LED rojo se usa para indicar cuándo la cafetera está realmente haciendo café y para indicar cuándo se hace apagando la iluminación.
El microcontrolador es un ELAN Microelectronics Corp EM78P447NAM (hoja de datos) que es un microcontrolador de 8 bits. Algunas de las estadísticas básicas muestran que este es un dispositivo pequeño y mínimo, sin embargo, funciona muy bien para su propósito previsto. La intención es desarrollar software que luego se descarga en la ROM de escritura una vez como parte de la fabricación.
• Bajo consumo de energía:
* Less then 2.2 mA at 5V/4MHz
* Typically 35 µA, at 3V/32KHz
* Typically 2 µA, during sleep mode
• 4K × 13 bits en chip ROM
• Tres bits de protección para evitar la intrusión de códigos de memoria OTP
• Un registro de configuración para acomodar los requisitos del usuario
• 148 × 8 bits en registros de chip (SRAM, registro de propósito general)