2008-09-21 6 views
8

Für jemanden, der die Grundlagen der eingebetteten Programmierung lernen möchte, was sind einige einfache Projekte, die sie angehen könnten?In welchen einfachen Projekten können Sie die Grundlagen der eingebetteten Programmierung erlernen?

Wir sprechen über jemanden, der die Grundlagen der Elektronik (Widerstände, Kondensatoren, digitale ICs, etc ...) kennt und grundlegende Löten durchführen kann. Ein Elektronik-Hobbyist, der in Embedded-Programmierung, oder vielleicht ein College-Student oder Junior in einem EE College-Abschluss zu bekommen versucht.

Die Plattform ist nicht wirklich wichtig und auch nicht die Sprache (es könnte C oder Assembler oder was auch immer sein). Der Punkt ist, Ideen für ein einfaches Projekt zu bekommen, das etwas tut.

Wenn es ein Buch über so etwas gibt, könnten Sie einen Link dazu schreiben?

Antwort

6

Ich kaufte kürzlich eine Arduino, die einfach aufzustehen ist und läuft. Es ist ein kleines, ziemlich billiges Board, auf dem ein Atmega168 mit I/O, Power, USB und anderen lustigen Dingen läuft. Es läuft nativer C-Code (wie man es von einem Atmega-Chip erwartet) und kann zum Ansteuern von Schaltungen durch Software verwendet werden.

0

Ein einfaches Projekt (ähnlich dem Hello World) wäre, einen LED-Chaser zu machen. Sie benötigen: 6 bis 10 LEDs und einen einfachen Schalter.

Jedes Mal, wenn Sie den Schalter drücken, blinken die LEDs in einem anderen Muster. Einige Muster:
1 LED-Scrolling rechts
1 LED links Scrollen
Alternating LEDs
...

Das lernen Sie über I/O-Pins, wie einen Timer verwenden, vielleicht wie ein Interrupt verwenden für den Schalter (oder Sie könnten Polling verwenden).

0

Persönlich würde ich einen einfachen Sound Recorder bauen. Lassen Sie uns den AD-Wandler und den PWM-Wellenausgang üben. Außerdem würde es lehren, wie der Code modularisiert werden kann, um eine Aufzeichnungs- und Wiedergabesteuerung zu ermöglichen. Einzige Einschränkung ist die Menge an Speicher, aber selbst eine 1-kB-Probe sollte Spaß machen.

4

Das folgende Projekt ist für die Klasse CSC460: Echtzeitbetriebssysteme an der Universität von Victoria. Dieses Projekt wurde entwickelt, um CS-Studenten, die keine Kenntnisse über eingebettete Systeme haben, eine komfortable Programmierung auf Mikrocontrollern zu ermöglichen.

Ziel:

Entwurf ein Sensor Aktorsystem die Temperatur eines Raumes zu steuern. In diesem Projekt lernen Sie pulse width modulation und AD (Analog to Digital) Konvertierung.

Parts:

  • ein 8-Bit AT90USB1287 Mikrocontrollers demonstration Platine
  • einen Temperatursensor (an Bord des AT90)
  • Ein Gleichstrommotor (empfindlich auf Spannungen zwischen 3,3 V und 5.0V)
  • Propeller oder Fanschaufel, die der Gleichstrommotor
  • One L293D H-Brücke paßt
  • Ein 5V-Regler

Entwurf:

Dieses System wird die Temperaturfühler verwenden, der AT90USB1287, um die aktuelle Raumtemperatur abzulesen und die Drehzahl des DC-Motors (mit angeschlossenem Lüfterflügel) einzustellen. Durch die Anpassung der Lüftergeschwindigkeit wird der Raum theoretisch abgekühlt.

Der Temperatursensor ist bereits an Bord des AT90USB1287 und an den AD-Port des Mikrocontrollers angeschlossen. Sie müssen das Datenblatt für diesen Mikrocontroller lesen und Code zum Konfigurieren und Abfragen des Temperatursensors schreiben.

Der Gleichstrommotor wird mit Pulsweitenmodulation gesteuert. PWM kann die Geschwindigkeit eines angeschlossenen Gleichstrommotors steuern, indem das Tastverhältnis des PWM-Signals variiert wird. Für weitere Informationen über PWM konsultieren Sie die große und detaillierte (vielleicht ein bisschen zu viel) data sheet für den AT90USB1287.

Sobald der Temperatursensor und der DC-Motor funktionieren, haben Sie dieses Projekt abgeschlossen. Die L293D-H-Brücke und der 5-V-Regler können verwendet werden, um die Leistung des Gleichstrommotors zu erhöhen (von 3,3 V an Bord bis zu 5,0 V von der H-Brücke).

2

Nach meiner Erfahrung gibt es eine anfängliche Lern ​​„Buckel“, wenn Sie in Embedded-Systemen werden, die hart sein kann, darüber hinwegzukommen, aber wenn Sie tun, werden Sie enttäuscht sein, wenn das erste Projekt, das Sie wählen, ist sehr einfach .

Es gibt einige Anfangsinvestitionen in die Entwicklungstools (dh die Chips und der Programmierer auf das Minimum). Wenn Sie ein sehr einfaches Projekt erstellen, können Sie nicht die nützlicheren Bereiche des Chips erkunden, daher ist die Menge an Wissen, die Sie erhalten, unverhältnismäßig zu der Menge an Ressourcen, die Sie investieren; sowohl in der Zeit als auch im Geld.

Ich schlage vor, etwas ansprechender zu machen als ein paar blinkende LEDs. Der schwierigste Teil der Entwicklung für eine neue Embedded-Plattform ist für mich immer die erste Kompilierung und das Hochladen des ersten Programms auf den Chip. Da dieser Schritt der gleiche ist, egal wie kompliziert oder einfach Ihr erstes Projekt ist, würde ich mich erneut dafür aussprechen, dass ich sofort ein mittelschweres Projekt starten würde. So etwas wie eine IR-Fernbedienung kommt mir in den Sinn. In jedem Fall sollten Sie viel Zeit investieren, wenn Sie wirklich etwas lernen wollen.

Ich würde auch vorschlagen, nicht für etwas wie ein BASIC STAMP oder sogar Arduino, da diese Geräte würden Sie nicht lehren, die wahren Fähigkeiten benötigt Embedded-Programmierung zu tun. Sie sind eher eine Plattform, auf der Ihr High-Level-Code läuft. Sie verwenden eine verherrlichte Version einer solchen Plattform, um diesen Beitrag, Ihren PC, zu lesen; kaum ein Embedded-Gerät. Auf der positiven Seite, sparen sie Ihnen eine Menge Ärger, wenn Sie nicht mit Elektronik vertraut sind.

Holen Sie sich einen 8-Bit-Chip von Microchip oder ATMEL, beide sehr beliebt und relativ billig zu starten, einen Programmierer und vielleicht ein Demoboard, das Demo-Board funktioniert, wenn Sie nicht mit Elektronik vertraut sind, für eine von denen Chips.Am wichtigsten ist, lesen Sie die beiliegenden Datenblätter, und versuchen Sie, etwas mäßig nützlich zu bauen. Programm in C oder Assembler. ATMEL ist viel besser mit Compilern und Support für C. Auf lange Sicht werden Sie froh sein, dass Sie keine Zeit damit verschwendet haben, eine Plattform zu erlernen, die niemand für ein kommerzielles Produkt verwendet und Sie werden ein besseres Verständnis für den Umgang damit bekommen die Grenzen von eingebetteten Systemen, da es keine bessere Informationsquelle als das Datenblatt gibt.

1

Es gibt ein ziemlich gutes Buch zum Thema "Embedded Linux Primer" (Christopher Hallinan ist der Autor). Dieses Buch führt Sie durch die Grundlagen der Entwicklung von Software auf einer eingebetteten Linux-Plattform. Koppeln Sie dies mit einem relativ günstigen Entwicklungssystem und der Himmel ist das Limit.

Holen Sie sich eine Ausgabe des Magazins Circuit Cellar (eine wirklich gute Quelle für Embedded Software und Hardware) und Sie werden Dutzende von Anzeigen für kleine Systeme finden, die Ihnen ermöglichen, sich schnell einzurichten.