Posts

Posts mit dem Label "I2C" werden angezeigt.

HMC5883L Sensor auslesen mit dem Netduino

Bild
HMC5883L Magnet Sensor auf dem Breadboard Shield und PullUp-Widerständen. Was mit dem Arduino geht, geht auch mit Netduino. Auch hier konnte ich ein funktionales Beispiel für den 3 Achsen Magnet Sensor HMC5883L als Klasse schreiben. public class HMC5883L {     /// Klasse für die I²C Verbindung     private I2CDevice _i2CDevice;     /// Die Variabeln zum Speichern der Ergebnisse nach der Messung.     private byte [] _Data = new byte [6];     /// Ruft die Achse X ab oder legt diese fest.     public int AxisX { get ; set ; }     /// Ruft die Achse Y ab oder legt diese fest.     public int AxisY { get ; set ; }     /// Ruft die Achse Z ab oder legt diese fest.     public int AxisZ { get ; set ; }     /// Der Konstruktor Initialisiert die Verbindung her und     /// stellt den Sensor mit einer Standard Konfiguration ein.     public HMC5883L()     {        // I²C Bus verbindung herstellen mit 100kHz         _i2CDevice = new I2CDevice ( new I2CDevice . Configuration (0x1E, 10

HMC5883L Sensor ohne (externe) Library auslesen mit dem Arduino

Bild
HMC5883 Magnet Sensor auf dem Breadboard Shield. Letztes Jahr habe ich bereits darüber geschrieben, allerdings keinen Code dazu gepostet. Ich habe nur beschrieben, was mit der Library verändert werden musste, damit diese funktioniert. Diesmal hatte ich Zeit, um mich etwas näher damit zu befassen und konnte nun endlich ein funktionales Beispiel schreiben. Um den Code fürs erste übersichtlich zu halten, habe ich das Skalieren und das Berechnen nach Norden ausgelassen. // Wird für die I²C Verbindung verwendet. #include < Wire .h> // Adresse des Sensors #define sensor_address 0x1E // Variabelen die für den Lese Vorgang benötigt werden byte data[6]; int axisX; int axisY; int axisZ; // Konfiguration der Seriellen Verbindung und Initialisierung des Sensors. void setup () {   Serial . begin (9600);   Serial . println ( "Init Sensor" );   // I²C Verbindung starten.   Wire . begin ();   // Operating Mode (0x02):   // Continuous-Measurement Mode (0x00)   SetConfigu

MPU6050 Sensor auslesen mit dem Netduino (Repost)

Bild
Fest verlötet auf meinem Shield. Anfang des Jahres habe ich bereits darüber geschrieben und dazu auch ein Beispiel Projekt gepostet. Nun möchte ich diesen Artikel neu aufsetzen und etwas mehr auf einzelne Punkte eingehen. Zunächst nochmal der Hinweis, es handelt sich wieder um einen reinen Funktionalen Programm Code und hat daher keine Fehlerbehandlung. Ein paar Informationen zu dem Sensor Hersteller InvenSens Bezeichnung MPU-6000 und MPU-6050 Sensor Achsen 6 Gyroskope Einstellungen +-250°/s, +-500°/s, +-1000°/s, +-2000°/s Beschleunigungseinstellungen +-2g, +-4g, +-8g, +-16g Verbindung I²C (der 6000er hat zusätzlich SPI) Kommen wir nun zum eigentlichen Thema. Ursprünglich gab es von Jeff Rowberg bereits eine fertige Library in C++ . Leider ließ sich dieser Code nicht für den Netduino verwenden und daher strebte ich an, eine C# und .NET Micro Framework Variante zu schreiben. Zugegeben, alleine mit dem PDF Dokument hätte ich das nicht verstanden und war fro

Daten vom Arduino verarbeiten und visualisieren

Bild
Arduino Nano 3.0 und der Magnet Sensor HMC5883L. Gelb=SDA (Pin4), Orange=SCL (Pin5), Rot=+5V und Schwarz=GND Wenn ich keine Lösung für dem Netduino habe, dann finde ich eine für Arduino. Eines meiner ersten Programme war eines zum Lesen der Sensordaten. Zunächst verwendete ich den Arduino Monitor, der allerdings nichts anderes tat, als eine serielle Verbindung herzustellen. Mit ein “wenig” C# und .NET Framework Kenntnis kann auch ein eigenes Programm geschrieben werden, das die Daten ebenfalls lesen kann. Mein neues Bespiel zeigt die magnetischen Einflüsse auf 3 Achsen an, was ich mit Hilfe von Windows Forms visualisiere. Windows Forms mit analoger Anzeige Warum Windows Forms? Die GUI ist schon etwas in die Jahre gekommen und bietet kaum Neuerungen, dennoch kann man grafisch immer noch etwas an Ergebnissen erreichen. Also wäre es doch schön, eine analoge Anzeige auf digitalem Boden zu schaffen. Aber erstmal eins nach dem anderen. Auf der Seite Gihub stellt der Entwickler

Arduino Nano 3.0 und MPU6050 in Quellcode Kurzfassung

Bild
Verkabelungsbeschreibung ist am ende dieses Blogs. Bereits Anfang des Jahres habe ich eine Lösung in C#  und .NET Micro Framework geschrieben. Ursprünglich habe ich die Lösung aus der in C++ geschriebenen Library portiert ( Library für Arduino ). Zuvor suchte ich nach einem kürzeren und funktionalem Beispiel, aber ohne Erfolg. Da ich nun selbst relativ gut mit dem Sensor vertraut bin, konnte ich ein kürzeres Beispiel für den Arduino schreiben. #include < Wire .h> #define sensor_address 0x68 void setup () {   // 9600 Baut reichen zum Betrachten aus.   Serial.begin (9600);   Wire.begin ();   delay (1000);     // Powermanagement aufrufen   // Sensor schlafen und Reset, Clock wird zunächst von Gyro-Achse Z verwendet     Serial.println ( "Powermanagement aufrufen - Reset" );   SetConfiguration(0x6B, 0x80);     // Kurz warten   delay (500);     // Powermanagement aufrufen   // Sleep beenden und Clock von Gyroskopeachse X verwenden   Serial.println ( "Powerm

MPU6050 Sensor auslesen mit dem Netduino

Bild
Netduino mit Shield - Aufsatz, für Sensor und Reglern Für mein Quadrocopter Projekt habe ich vor einigen Monaten einen zusätzlichen Sensor benötigt, da ich mit einem Beschleunigungssensor allein Schwierigkeiten hätte, das Gleichgewicht und die Lage festzustellen. Um dies etwas kompakter zu gestalten, fand ich im Internet das MPU6050 Sensor Modul, das einen Beschleunigungssensor und Gyroskopsensor auf einem Chip hat. Über Ebay erhält man das Modul zu einem günstigen Preis, man muss allerdings mit einer gewissen Wartezeit rechnen, so ca.. 3-4 Wochen. MPU6050 (Die Platine selbst, scheint für verschieden Sensor Typen gedacht zu sein, wegen der Aufschrift MPU-x050) Im Arduino Umfeld scheint der Sensor seine Verbreitung gefunden zu haben. Das dürfte auch an der fertigen Library liegen, womit sich in nur wenigen Codezeilen der Sensor für seine eigenen Projekte einbinden lässt . Eine bereitgestellte Lösung für Netduino gab es dafür nicht, was mich um so mehr dazu bewegt hat, hierfür

Den HMC5883L 3 Achsen Magnet Sensor auslesen

Bild
Der Sensor am Arduino Nano 3.0 Zuerst habe ich gedacht, dass der Sensor nicht funktioniert, bis ich den Beispielcode angepasst habe. In der Wiki zu diesem Sensor ist leider noch ein veralteter Code zu einer frühen Version vom Arduino Compiler. Nach einem Hinweis stellte sich heraus, dass sich die Bibliothek vom Arduino 1.0 gegenüber seiner älteren Version geändert hat. Im Quellcode der Datei HMC5883L.cpp war es notwendig, den Eintrag “#include <WProgram.h>” in “#include <Arduino.h>” abzuändern und die Einträge “wire.send” in “wire.write”. Anschließend ließ sich der Code auf den Arduino Nano 3.0 beschreiben und daraufhin auch erfolgreich auslesen. Ausgabe der Daten, die vom Sensor gemessen werden. Aus den drei Achsenwerten kann dann über das Gauß-Verfahren der Nordpol gemessen werden. Jetzt fehlt mir noch eine Portierung auf den Netduino. Einfache Verkabelung des Sensors Ich denke, das dürfte die Sache erleichtern, wenn ich zu den Beispielen auch

Beschleunigungssensor auslesen mit einem Netduino Plus

Bild
Arduino Plus, BMA020 und mein Sensor Shield Prototype Vielleicht hätte ich diesen Post früher veröffentlicht, wenn mich nicht andere Einflüsse behindert hätten. Dennoch habe ich es geschafft: statt mit dem Arduino Nano 3.0 ( zum Post ) habe ich den selben Sensor diesmal mit dem Netduino ausgelesen. Der Sinn dürfte klar sein, dass C und C# einfach sehr unterschiedlich sind. Das Prinzip ist allerdings das gleiche. Wobei es mit der mitgelieferten Bibliothek beim Arduino wesentlich kürzer erscheint, als beim Netduino und dem .Net Micro Framework. Anscheinend kommt man im C# nicht aus, ohne eine weitere Klasse zu schreiben, um an die Sensordaten heran zukommen. Bestimmt gibt es eine Lösung dafür, aber bei größeren Projekten macht es keinen Sinn. Zusammengesteckt und Verbindungen hergestellt Etwas lange habe ich nach einem Beispiel gesucht, wie man über den I²C Bus ein Modul erreicht und auch Daten bekommt. Die ersten Versuche zeigten sich mit Abstürzen und Abbruch des Program