Kategorie-Archiv: Arduino

Es werde Licht. Buntes Sensor-Licht.

Wie bereits angekündigt, habe ich ein kleines Video angefertigt, das eine kleine Auswahl der verschiedenen RGB-Lichtsignale zeigen soll.

Weiter unten gibt’s mehr Informationen, aber hier erstmal das Video:

Geplant ist also, dass der Markierer, die benötigten Lichtsignale an den Sensor sendet und dieser einfach nur ausführt. Der Markierer kann dabei auf eine Anzahl von bis zu 255 möglichen Lichtsignalen zurückgreifen.

In dem Video lassen sich die verschiedenen Farben schlecht unterscheiden, darum habe ich nicht alle gezeigt. Farben.. das kennt ihr.

9 Farben habe ich bislang eingebaut. Rot und Grün sind keine Teamfarben mehr. Die Farben sind einzig und allein dafür da, um Schaden und Heilung anzuzeigen.

Ja, ich weiß, der Sensor kann immer noch kein IR empfangen. Kommt schon noch ;) Da kann ich ja auch auf bereits existierende Funktionen zurückgreifen. Glaub ich.

Redesign der Sensoren mit i2c-Bus

sensor_in_devEs geht weiter im Pewduino-Projekt. Unser erster Meilenstein ist die Entwicklung von funktionierenden Sensoren. Zur Zeit wird der Sensor noch auf einem Mini-Breadboard mit Arduino Nano entwickelt. Wie ich im vergangen Post schon erwähnte, findet ein Atmel Mikrokontroller Platz in jedem Sensor.

Verbunden werden die Sensoren über den i2c-Bus. Der Arduino unterstützt die i2c-Kommunikation mittels der Wire-Library.

I2C muss man sich wie das heimische Netzwerk (LAN) vorstellen, nur eben viel simpler, aber ähnlich, denn jedes Gerät bekommt eine eigene Adresse zugewiesen. Allerdings gibt es keine automatische IP-Adressenvergabe, wenn ein neues Gerät in das “Netzwerk” angeschlossen wird. Und um maximale Benutzerfreundlichkeit zu gewährleisten, war die erste Hürde, dass jeder Sensor eine einzigartige Adresse im i2c-Netz bekommt, ohne dabei jeden Sensor manuell konfigurieren zu müssen. Es soll Plug-n-Play sein. So einfach. Keine kabelgebundene Konfiguration über den PC oder per Schalterchen auf dem Sensorboard.

Und da das i2c keinen “DHCP-Server” vorsieht, musste an dieser Stelle so etwas erst einmal entwickelt werden. Sehr simpel und rudimentär, aber es funktioniert.

Neue Sensoren bekommen vom Master, der Microcontroller der im Markierer steckt, eine Adresse zugewiesen, und prüfen selbstständig, ob die Adresse im Netz doppelt vorkommt. Denn das muss dringend vermieden werden!

Als nächsten Schritt muss die i2c-Kommunikation funktionieren. Der Sensor wird auf Befehle des Markierers reagieren, und andersrum. Aus dem Grund könnte im nächsten Blogpost wieder mal ein Video folgen. Yeah.

 

weiterführende Links:
http://www.i2c-bus.org/de/i2c-bus/
http://de.wikipedia.org/wiki/I%C2%B2C
http://arduino.cc/en/pmwiki.php?n=Reference/Wire

Timer Funktionen im Atmel Atmega328

Arduino Duemilanove 328

Arduino Duemilanove 328

Also bislang hatte ich in meinem pewduino Code noch keine Timer verwendet. Ich habe aber gemerkt, dass die eingebauten Timer ziemlich nützlich sein können :) Also habe ich mal im Internet gestöbert um nachzulesen, was Timer genau sind, und wie sie funktionieren.

Viele Anleitungen und Tutorials zu Timern sind aber ziemlich unverständlich für einen Programmier-Laien, finde ich. Allerdings habe ich eine Seite gefunden, die es trotzdem hingekriegt hat, die Fakten verständlich auf den Punkt zu bringen.

Und diese Seite möchte ich nun teilen (Links siehe unten)

Summary:  In my actual pewduino code, i didn’t use any timer function. I stumbled through the internet to learn something about it. Most of the tutorials are hard to understand, but i found a site which explained it very well. With this post, i want to share it:

http://extremeelectronics.co.in/avr-tutorials/avr-timers-an-introduction/
http://extremeelectronics.co.in/avr-tutorials/timers-in-compare-mode-part-i/
http://extremeelectronics.co.in/avr-tutorials/timers-in-compare-mode-part-ii/

Außerdem gibt es für Timer1 und Timer3 (nur Arduino Mega) auch eine Library vom Arduino Playground:

http://playground.arduino.cc/code/timer1

Wieder ein neuer Rekord: 133 Meter!

Habe noch einmal eine Komponente getauscht und dadurch meine Reichweite um 30 Meter erhöhen können. Leider war dann mein Testweg wieder zu Ende und ich muss mir einen neuen Messplatz suchen. 133 Meter … mehr als ausreichend.

Am Samstag dürfte eine neue Reichelt-Lieferung eintreffen. Mit dabei: die “angeblich” verbesserten Vishay TSOP31238. Laut Datenblätter verbraucht der TSOP31238 weniger Strom (immer gut), hat aber auch eine verbesserte Erkennung vor allem bei Sonnenlicht. Und vielleicht erhöht sich damit die Reichweite noch mal um ein paar Meter?

… man darf gespannt sein …

103,85 Meter! Persönlicher Rekord!

Wie versprochen habe ich eine neue 50 mm Glaslinse mit 125mm Brennweite gekauft. Im Baumarkt habe ich das passende graue, 50 mm Sanitärrohr mit Muffen gefunden. Mit meinem alten Setup und der neuen Optik (damals 25 mm) habe ich aber auch keine großen Sprünge gemacht. Ich habe neue Widerstände gekauft um mehr Strom an die LED zu kriegen.

Bei Sonnenuntergang habe ich dann meine persönliche Bestmarke von vor 3 Jahren nun geknackt. Laut meinem Smartphone war die Distanz 103,85 Meter. Ich bin mir aber sicher, dass das nicht alles gewesen ist. Jedenfalls ist das schon eine Entfernung mit der man langsam arbeiten kann.

Neue 50 mm Optik aus Sanitärrohr

Neue 50 mm Optik aus Sanitärrohr

P.S.: Das war kein Aprilscherz :D