La differenza tra lo sviluppo di un'applicazione con un Pi può essere molto diversa o in qualche modo simile allo sviluppo di un'applicazione con un microcontrollore a causa delle differenze hardware e delle differenze nella toolchain di sviluppo software.
È disponibile una vasta gamma di microcontrollori che vanno da processori da 8 bit a 64 bit e hanno ovunque da pochi K di RAM a pochi gigabyte di RAM. I microcontrollori più capaci offrono un'esperienza più simile al Pi. I microcontrollori meno capaci no.
E anche con il Pi ci sono grandi differenze tra lo sviluppo per il sistema operativo IoT di Windows 10 e lo sviluppo per Raspian, Mate o altri sistemi operativi basati su Linux. Windows 10 IoT richiede un PC di sviluppo che utilizza una toolchain di Visual Studio con debugger remoto destinato all'ambiente UWP (Universal Windows Program). Lo sviluppo per Raspian o Mate può effettivamente essere fatto su un Pi con gli strumenti disponibili sul Pi.
Il protocollo di applicazione vincolata viene utilizzato per dispositivi piccoli e vincolati utilizzati con l'ambiente Internet of Things. Per avere un'idea della varietà di hardware e software del microcontrollore, questa pagina sull'implementazione del protocollo CoAP fornisce un'idea dell'ambiente a cui si rivolge. Menziona il sistema operativo Contiki di cui ho vagamente sentito parlare insieme a sistemi operativi più noti come iOS, OSX e Android. I linguaggi di programmazione menzionati sono Java, JavaScript, C, C #, Ruby, Go, Erlang, Rust e Python.
La catena di strumenti utilizzata per lo sviluppo con microcontrollore varia a seconda del produttore e dei tipi di risorse disponibili dalle comunità di sviluppo e dalle iniziative open source. In alcuni casi si ottiene un assemblatore incrociato, in altri casi si ottiene un compilatore a croce C, e in altri casi si ottiene una bella catena di strumenti con tutte le campane, i fischietti e gli emulatori e simili alla toolchain di Visual Studio per Windows 10 IoT.
L'ambiente di sviluppo effettivo per un microcontrollore può comportare l'utilizzo di un programmatore EEPROM e gli strumenti software per creare una nuova immagine e inviarla al dispositivo o il dispositivo potrebbe disporre della connettività necessaria per consentire il download di una nuova immagine tramite una connessione seriale o tramite una connessione di rete.
La mia impressione è che la maggior parte dei microcontrollori abbia un compilatore incrociato C sebbene il compilatore possa supportare solo standard più vecchi come K&R o forse C98. I compilatori incrociati C hanno spesso parole chiave non standard per caratteristiche specifiche del microprocessore, ad esempio le parole chiave far
e e near
per i puntatori con i vecchi processori 8080 e 8086 con la loro memoria segmentata.
Esistono anche linguaggi speciali destinati ai microcontrollori come il linguaggio di programmazione FORTH . Queste lingue hanno spesso un design di runtime che si rivolge al bare metal in modo che non vi sia alcun sistema operativo diverso dal runtime di lingua.
Il sistema operativo può variare da Linux praticamente inesistente a un bare bones a un sistema operativo speciale come freeRTOS o Windows Embedded o un completo Linux o Microsoft Windows. Guarda questo progetto di SourceForge MINIBIAN per Raspberry Pi . Vedi anche questo eBook, Baking Pi: Sviluppo di sistemi operativi che descrive lo sviluppo di un sistema operativo rudimentale per Raspberry Pi in assemblatore.
Questo articolo di Visual Studio Magazine, Programmazione dell'Internet of Things con Visual Studio , offre una panoramica dei numerosi dispositivi disponibili, seguita da una panoramica dell'utilizzo dell'IDE di Visual Studio per lo sviluppo per Linux e Windows.
C'è un universo enorme e in crescita di dispositivi di microcontrollore programmabili e programmabili disponibili subito. A un livello molto basso hai una varietà di semplici dispositivi a 16 e 32 bit di una varietà di produttori di chip tradizionali come Texas Instruments. (Ho giocato un po 'con il kit di sviluppo SensorTag ed è molto divertente, facendomi pensare che Watch DevPack potrebbe anche essere un ottimo set di strumenti di apprendimento.)
Alcuni dispositivi di microcontrollore più noti includono Arduino, BeagleBoard e Raspberry Pi. Tutti questi ambienti dispongono di un ampio supporto da parte della community e sono pronti per essere collegati a un numero enorme di sensori, motori, servi esterni già pronti e qualsiasi altra cosa tu possa immaginare. Adafruit, il superstore per l'apprendimento dell'elettronica fondato da Limor "Ladyada" Fried, fornisce tutti i tipi di periferiche per queste schede, insieme alla propria linea di schede di sviluppo Feather leggere.
...
L'universo più interessante di dispositivi per sviluppatori che hanno familiarità con Microsoft .NET Framework e Visual Studio potrebbero essere ambienti compatibili con Windows 10 IoT Core. Si tratta di dispositivi x86 e basati su ARM che supportano app UWP (Universal Windows Platform) scritte in una varietà di lingue tra cui C #, Visual Basic, Python e Node.js / JavaScript. Il core IoT di Windows 10 supporta dispositivi tra cui Raspberry Pi, Arrow DragonBoard 410C, Intel Joule e Compute Stick e MinnowBoard. Esistono anche piattaforme di prodotti interessanti come Askey TurboMate E1 da indossare.
Un esempio specifico di un'applicazione a microcontrollore
Questa è l'immagine di una scheda microcontrollore di una caffettiera automatizzata. Questo sembra essere un componente standard per le macchine da caffè automatiche prodotte in Cina. Il sito Web per il produttore è stampato sul PCB.
L'immagine è composta da due viste. La vista a sinistra è il retro della scheda contenente il microcontrollore e i circuiti di supporto. La vista a destra è la parte anteriore della scheda con lo schermo LCD e una serie di pulsanti che vengono utilizzati per impostare l'ora corrente e per eseguire azioni come la programmazione di un'ora di inizio, ecc.
La vista a destra si inserisce in un supporto che si inserisce in un'apertura nella parte anteriore della caffettiera. Gli interruttori sul PCB inferiore sono azionati con interruttori a bilanciere. Il display LCD, che sembra essere uno scopo speciale, viene utilizzato per visualizzare l'ora e lo stato correnti, nonché per visualizzare l'interfaccia utente quando si modificano le impostazioni della caffettiera. Il LED rosso viene utilizzato per indicare quando la caffettiera sta effettivamente preparando il caffè e per indicare quando fatto spegnendo l'illuminazione.
Il microcontrollore è un ELAN Microelectronics Corp EM78P447NAM (scheda tecnica) che è un microcontrollore a 8 bit. Alcune delle statistiche di base mostrano che dispositivo piccolo e minimale sia, tuttavia, funziona perfettamente per lo scopo previsto. L'intento è quello di sviluppare un software che viene quindi scaricato nella ROM di scrittura una volta come parte della produzione.
• Basso consumo energetico:
* Less then 2.2 mA at 5V/4MHz
* Typically 35 µA, at 3V/32KHz
* Typically 2 µA, during sleep mode
• 4K × 13 bit su chip ROM
• Tre bit di protezione per impedire l'intrusione di codici di memoria OTP
• Un registro di configurazione per soddisfare le esigenze dell'utente
• 148 × 8 bit sui registri dei chip (SRAM, registro generale)