LaborTageBadge2011: Unterschied zwischen den Versionen

Aus LaborWiki
Wechseln zu: Navigation, Suche
K
(Beispielcode)
Zeile 127: Zeile 127:
 
*Baut eine Dbus-Integration (wenn ihr es wagt *g*)
 
*Baut eine Dbus-Integration (wenn ihr es wagt *g*)
 
*...
 
*...
 +
 +
==Beispielcode==
 +
Kleines Tool in Perl was einem den CPU-Status farblich anzeigt. Desto roter desto schneller.
 +
<pre>#!/usr/bin/perl
 +
 +
use strict;
 +
 +
print "CPU2Badge minitool by bastetfurry, use at own risk and only when badge is connected!\n";
 +
 +
my $cpu_minimum = `less /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq`;
 +
my $cpu_maximum = `less /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq`;
 +
 +
my $factor = 655.35;
 +
 +
my $colorred = 0;
 +
my $colorgreen = 0;
 +
my $colorblue = 0;
 +
 +
my $i;
 +
my $retval;
 +
my $command = "";
 +
 +
my $oldval = 0;
 +
 +
while(1==1)
 +
{
 +
#Hole derzeitigen CPU-Status
 +
$i = `less /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq`;
 +
if($i ne $oldval)
 +
{
 +
print "Updating...\n";
 +
$oldval = $i;
 +
#Für Farbwert "normalisieren"
 +
$i = $i - $cpu_minimum;
 +
$i = int((($i / ($cpu_maximum-$cpu_minimum))*100)*$factor);
 +
 +
$colorred = $i;
 +
$colorgreen = 65535-$i;
 +
$colorblue = 0;
 +
 +
$command = "badge-tool -s$colorred:$colorgreen:$colorblue";
 +
#print $command . "\n";
 +
$retval = `$command`;
 +
}
 +
sleep(1); #Nicht das System fressen :3
 +
}</pre>
  
 
[[Kategorie:Labortage]]
 
[[Kategorie:Labortage]]
 
[[Kategorie:Microcontroller]]
 
[[Kategorie:Microcontroller]]

Version vom 30. Oktober 2011, 12:09 Uhr

           
LaborTageBadge2011

Release status: Stable [box doku]

Badge2011TopRender.jpg
Description Badge der Labortage 2011
Author(s)  Suschman
Last Version  1.0
Platform  AVR (ATtiny45)
License  GPL
Download  Software: GIT

Software: TRAC
Hardware: SVN

„Stable“ befindet sich nicht in der Liste (experimental, beta, stable, obsolete, unknown) zulässiger Werte für das Attribut „Pr status“.




About

Das "Ticket" der Labortage ist dieses mal kein Ram-Riegel, sondern eine echte Platine mit Funktion!
Genießt das Logo der Labortage auf der einen Seite, und bestückt euch euren eigenen RGB-LED Controller mit USB auf der anderen.

Bauteilsätze gibt es etwa ab Freitag Abend auf den Labortagen an der Theke.

Funktion

Der AVR kommuniziert mit dem PC über USB mit Hilfe der vUSB library. Darüber kann man dann mittles eines commandline programms die LED steuern, sowie den Taster abfragen und den Temperatursensor des AVR auslesen.
Grundsätzlich kann man die Firmware auf dem Badge als black box betrachten und sich am commandline tool austoben :). Dies auch, weil der der AVR über USB aufgrund der Funktionsweise seiner selfprogram-funktion nicht (ohne klimmzüge) über USB programmierbar ist und die der vorgesehene serielle one-pin Bootloader nicht fertig wurde...

Schaltung

Badge2011Schematic.png Badge2011Silk.png Badge2011TopRender.jpg Labtagebadge3d.png

Platine

Die Platine ist zweilagig mit Lötstoplack, Bestückungsdruck und HAL-Zinn. Auf der einen Seite befindet sich die Schaltung, auf der anderen das Logo der Labortage. Die Platine wurde mit freundlicher Unterstützung von Basista Leiterplatten gefertigt.

Stückliste

Name Part Reichelt
C1 SMD 0603 100nF X7R-G0603 100N
R1 SMD 0603 1,8 kOhm SMD-0603 1,8K
R2-R6 SMD 0603 68 Ohm SMD-0603 68
AVR ATtiny45 SO8 ATTINY 45-20SU
D1,D2 MiniMelf 1N4148 1N 4148 SMD
USB MiniUSB Buchse SMD USB BWM SMD
SW Kurzhubtaster SMD TASTER 9314
LED OSRAM MultiLED PLCC-4 LATB T66C

Aufbau

Der Aufbau erfordert durch die relativ dichte Bestückung in SMD und mit 0603 Bauteilen etwas Erfahrung im Löten von SMD. Wenn ihr es euch nicht zutraut, kommt zum Lightning Talk (Samstag 19:00), fragt Suschman oder sucht euch einen Bastler der für etwas Mate Hand anlegt ;).
Bestückt wird von den niedrigen zu den hohen Bauteilen. Also zuerst C1, R1 und R2 bis R6 verlöten. Dann die beiden Dioden D1 und D2, dabei auf die Polarität achten. Nun die LED, deren abgeschrägte Kante auf Pad1 richtung Aussenkante-Stitleiste zeigt. Der AVR hat einen Punkt zur Markierung der mit dem Bestückungsdruck übereinstimmen muss. Zum Schluss kommen die Mini USB Buchse und der Taster. Die Stiftleiste wird nicht bestückt, ausser ihr last die LED weg und möchtet eine andere abgesetzt anschliessen.
Arbeitet sorgfältig und macht immer mal wieder eine Sichtprüfung auf Kurzschlüsse und schlechte Lötstellen.

Software

Der AVR ist im Bauteilesatz der Labortage vorprogrammiert, das Binary für den PC muss unter Linux noch mit libusb übersetzt werden. Für Windows kann es prinzipiell auch übersetzt werden, dies ist aber nicht getestet.

Bauen für Linux

Debian/Ubuntu wird angenommen:

sudo aptitude install build-essential git libusb-dev
git clone http://www.das-labor.org/usergit/labortage2011badge/
cd ./labortage2011badge/commandline
make
./badge-tool 
usage:
   ./badge-tool [<option>] <command> <parameter string>
 where <option> is one of the following:
   -p --pad[=<pad value>] ............................ pad writing data with <pad value> (default 0) to specified length
   -f --file <name> .................................. use file <name> for reading or writing data
   --i-am-sure ....................................... do not ask safety question
   -l --loop <value> ................................. execute action <value> times
 <command> is one of the following
   -s --set-rgb <red>:<green>:<blue> ................. set color
   -g --get-rgb ...................................... read color from device and print
   -r --read-mem <addr>:<length> ..................... read RAM
   -w --write-mem <addr>:<length>[:data] ............. write RAM
   -z --read-flash <addr>:<length> ................... read flash
   -q --reset[=<delay>] .............................. reset the controller with delay in range 0..9
   -b --read-button .................................. read status of button
   -k --wait-for-button[=(on|off)] ................... wait for button press (default: on)

   -t --read-temperature ............................. read temperature sensor and output raw value
Please note:
  If you use optional parameters you have to use two different way to specify the parameter,
  depending on if you use short or long options.
  Short options: You have to put the parameter directly behind the option letter. Exp: -koff
  Long options: You have to seperate the option from the parameter with '='. Exp: --pad=0xAA

Berechtigungen

Wenn sich das Programm nur als root nutzen lässt, kann dass an einer fehlenden udev-rule liegen. Abhilfe kann eine Regel wie die folgende schaffen:

BUS=="usb",OWNER="root",GROUP="dialout"

In der Datei /etc/udev/rules.d/20-usb.rules . Euer user sollte dann natürlich in der Gruppe dialout sein. Ihr könnt natürlich auch eine beliebige andere Gruppe oder Eigentümer wählen.

Zu beachten ist, dass bei dem obigen Beispiel ALLE USB Geräte unter dem Zugriff der entsprechenden Gruppe und Eigentümer steht.

Stuff (Ideen)

  • Eat more Humans
  • Programmiert eine Playroutine für fading Animationen
  • Baut eine Dbus-Integration (wenn ihr es wagt *g*)
  • ...

Beispielcode

Kleines Tool in Perl was einem den CPU-Status farblich anzeigt. Desto roter desto schneller.

#!/usr/bin/perl

use strict;

print "CPU2Badge minitool by bastetfurry, use at own risk and only when badge is connected!\n";

my $cpu_minimum = `less /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq`;
my $cpu_maximum = `less /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq`;

my $factor = 655.35;

my $colorred = 0;
my $colorgreen = 0;
my $colorblue = 0;

my $i;
my $retval;
my $command = "";

my $oldval = 0;

while(1==1)
{
	#Hole derzeitigen CPU-Status
	$i = `less /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq`;
	if($i ne $oldval)
	{
		print "Updating...\n";
		$oldval = $i;
		#Für Farbwert "normalisieren"
		$i = $i - $cpu_minimum;
		$i = int((($i / ($cpu_maximum-$cpu_minimum))*100)*$factor);

		$colorred = $i;
		$colorgreen = 65535-$i;
		$colorblue = 0;

		$command = "badge-tool -s$colorred:$colorgreen:$colorblue";
		#print $command . "\n";
		$retval = `$command`;
	}
	sleep(1); #Nicht das System fressen :3
}