A diferença entre o desenvolvimento de um aplicativo com um Pi pode ser muito diferente ou um pouco semelhante ao desenvolvimento de um aplicativo com um microcontrolador devido a diferenças de hardware e diferenças na cadeia de ferramentas de desenvolvimento de software.
Existe uma grande variedade de microcontroladores disponíveis, que variam de processadores de 8 a 64 bits, com alguns K de RAM a alguns gigabytes de RAM. Microcontroladores mais capazes fornecem uma experiência mais semelhante ao Pi. Microcontroladores menos capazes não.
E mesmo com o Pi, existem grandes diferenças entre o desenvolvimento para o sistema operacional Windows 10 IoT e o desenvolvimento para Raspian, Mate ou outro SO baseado em Linux. A IoT do Windows 10 requer um PC de desenvolvimento usando uma cadeia de ferramentas do Visual Studio com depurador remoto visando o ambiente do Universal Windows Program (UWP). O desenvolvimento para Raspian ou Mate pode realmente ser feito em um Pi com as ferramentas disponíveis no Pi.
O Protocolo de Aplicativo Restrito é usado para dispositivos pequenos e restritos usados no ambiente Internet das Coisas. Para ter uma idéia da variedade de hardware e software do microcontrolador, esta página na implementação do protocolo CoAP fornece uma idéia do ambiente que está sendo direcionado. Ele menciona o sistema operacional Contiki, do qual ouvi vagamente, além de sistemas operacionais mais conhecidos, como iOS, OSX e Android. As linguagens de programação mencionadas são Java, JavaScript, C, C #, Ruby, Go, Erlang, Rust e Python.
A cadeia de ferramentas usada para o desenvolvimento com microcontrolador varia dependendo do fabricante, bem como que tipos de recursos estão disponíveis nas comunidades de desenvolvimento e nas iniciativas de código aberto. Em alguns casos, você obtém um assembler cruzado, em outros casos, um compilador cruzado C e, em outros casos, obtém uma boa cadeia de ferramentas com todos os sinos, assobios e emuladores e semelhante à cadeia de ferramentas do Visual Studio para Windows 10 IoT.
O ambiente de desenvolvimento real de um microcontrolador pode envolver o uso de um programador EEPROM e das ferramentas de software para criar uma nova imagem e enviá-la ao dispositivo ou o dispositivo pode ter a conectividade necessária para permitir que uma nova imagem seja baixada por uma conexão serial ou mais. uma conexão de rede.
Minha impressão é que a maioria dos microcontroladores possui um compilador cruzado C, embora o compilador possa suportar apenas padrões mais antigos, como K&R ou talvez C98. Os compiladores cruzados C geralmente têm palavras-chave não-padrão para recursos específicos do microprocessador, por exemplo, far
e near
palavras - chave para ponteiros com os antigos processadores 8080 e 8086 com sua memória segmentada.
Também existem linguagens especializadas que visam microcontroladores, como a linguagem de programação FORTH . Esses idiomas geralmente têm um design de tempo de execução que visa o bare metal, para que não haja outro sistema operacional além do tempo de execução do idioma.
O sistema operacional pode variar de praticamente inexistente a um Linux básico, a um SO especializado, como freeRTOS ou Windows Embedded ou um Linux ou Microsoft Windows completo. Veja este projeto SourceIBorge MINIBIAN para Raspberry Pi . Veja também este eBook, Baking Pi: Desenvolvimento de Sistemas Operacionais, que descreve o desenvolvimento de um sistema operacional rudimentar para Raspberry Pi em assembler.
Este artigo da Visual Studio Magazine, Programando a Internet das coisas com o Visual Studio , fornece uma visão geral dos diversos dispositivos disponíveis, seguida de uma visão geral do uso do Visual Studio IDE para desenvolvimento em Linux e Windows.
Existe um universo enorme e crescente de dispositivos de microcontroladores programáveis e programáveis em rede disponíveis agora. Em um nível muito baixo, você tem uma variedade de dispositivos simples de 16 e 32 bits de vários fabricantes tradicionais de chips, como a Texas Instruments. (Joguei um pouco com o kit de desenvolvimento SensorTag e é muito divertido, fazendo-me pensar que o Watch DevPack também pode ser um ótimo conjunto de ferramentas de aprendizado.)
Alguns dispositivos de microcontroladores mais conhecidos incluem Arduino, BeagleBoard e Raspberry Pi. Todos esses ambientes têm amplo suporte da comunidade e estão prontos para conectar-se a um grande número de sensores externos, motores, servos e qualquer outra coisa que você possa imaginar. A Adafruit, a superstore de aprendizado de eletrônicos fundada por Limor "Ladyada" Fried, fornece todos os tipos de periféricos para essas placas, juntamente com sua própria linha de placas leves de desenvolvimento Feather.
...
O universo mais interessante de dispositivos para desenvolvedores familiarizados com o Microsoft .NET Framework e o Visual Studio podem ser ambientes compatíveis com o Windows 10 IoT Core. Esses são dispositivos compatíveis com x86 e ARM que oferecem suporte a aplicativos da Plataforma Universal do Windows (UWP) escritos em uma variedade de idiomas, incluindo C #, Visual Basic, Python e Node.js./ JavaScript. O núcleo da IoT do Windows 10 suporta dispositivos como Raspberry Pi, Arrow DragonBoard 410C, Intel Joule e Compute Stick e MinnowBoard. Existem também plataformas de produtos interessantes, como o Askey TurboMate E1.
Um exemplo específico de um aplicativo de microcontrolador
Esta é uma imagem de uma placa de microcontrolador de uma cafeteira automatizada. Este parece ser um componente padrão para cafeteiras automatizadas fabricadas na China. O site do fabricante está impresso no PCB.
A imagem é composta por duas vistas. A vista à esquerda é a parte de trás da placa que contém o microcontrolador e o circuito de suporte. A vista à direita é a frente do quadro com a tela LCD e um conjunto de botões que são usados para definir a hora atual e executar ações como programar uma hora de início etc.
A vista à direita se encaixa em uma transportadora que se encaixa em uma abertura na frente da cafeteira. Os interruptores na placa de circuito impresso inferior são acionados com interruptores do balancim. O LCD, que parece ter uma finalidade especial, é usado para exibir a hora e o status atuais, bem como para exibir a interface do usuário ao alterar as configurações da cafeteira. O LED vermelho é usado para indicar quando a cafeteira está realmente fazendo café e para indicar quando terminar, desligando a iluminação novamente.
O microcontrolador é um ELAN Microelectronics Corp EM78P447NAM (datasheet) que é um microcontrolador de 8 bits. Algumas das estatísticas básicas mostram o que é um dispositivo pequeno e mínimo, mas funciona bem para o objetivo a que se destina. A intenção é desenvolver um software que é baixado na ROM de gravação única como parte da fabricação.
• Baixo consumo de energia:
* Less then 2.2 mA at 5V/4MHz
* Typically 35 µA, at 3V/32KHz
* Typically 2 µA, during sleep mode
• 4K × 13 bits na ROM do chip
• Três bits de proteção para impedir a intrusão de códigos de memória OTP
• Um registro de configuração para acomodar os requisitos do usuário
• 148 × 8 bits em registradores de chips (SRAM, registrador de uso geral)