Forum: Mikrocontroller und Digitale Elektronik AVR attiny usb zufallszahlengenerator


von R. B. (dxx255)


Lesenswert?

Hallo
Ich würde gerne einen echten zufallszahlengenerator mittels attiny und 
vusb realisieren. ist das möglich? kennt jemand ein passendes tutorial 
dazu?
Bitte um Hilfe

von Max H. (hartl192)


Lesenswert?

Ich würde nach einem Rauschgenerator suchen, das Rauschen dann mit dem 
ADC messen und die Messwerte an den PC senden.

: Bearbeitet durch User
von Eumel (Gast)


Lesenswert?

Roman B. schrieb:
> ist das möglich?

Ja, ob du wirklich einwandfreien Zufall hinkriegst kannst du dann ja 
Untersuchen.

Roman B. schrieb:
> kennt jemand ein passendes tutorial
> dazu?

Ich nicht.

von R. B. (dxx255)


Lesenswert?

ich dachte mir, ich könnte einen pseudo zufallsgenerator mit einem adc 
wert initialisieren und so recht gute ergebnisse erzielen! mein problem 
ist eher die usb übertragung zum pc.

von kopfkratzer (Gast)


Lesenswert?

kopfkratz
Tja nun Rauschgenerator wurde schon genannt, häng einfach ein paar PTCs 
parallel und in reihe an den ADC mit unstabilisierter 
Versorgungsspannung.

von R. B. (dxx255)


Lesenswert?

Aber wie übertrage ich die Daten an den PC? Ich dachte, dass ich eine 
tastatur mittels vusb realisiere und den wert per konpfdruck "eingeben" 
lasse. dann bräuchte ich nämlich keine treiber oder zusatzsoftware! Aber 
och kenne mich leider mit vusb nicht aus. Gibt es noch andere einfachere 
lösungen?

: Bearbeitet durch User
von Felix S. (pepe)


Lesenswert?

RS232 ?
eventuell mit nem FTDI FT232R ?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Roman B. schrieb:
> Aber wie übertrage ich die Daten an den PC? Ich dachte, dass ich eine
> tastatur mittels vusb realisiere und den wert per konpfdruck "eingeben"
> lasse.

Mit V-USB geht das. Schau mal bei Obdev nach dem 'Easy-Logger' Projekt, 
das ist ein kleiner Logger mit ATTiny, der sich als Tastatur am Rechner 
anmeldet.

http://www.obdev.at/products/vusb/easylogger.html

Statt der Messwerte im Originalprojekt nimmst du deinen Zufallszahlen 
Generator.

von Stephan B. (matrixstorm)


Lesenswert?

Hallo

Matthias Sch. schrieb:
> Mit V-USB geht das. Schau mal bei Obdev nach dem 'Easy-Logger' Projekt,
> das ist ein kleiner Logger mit ATTiny, der sich als Tastatur am Rechner
> anmeldet.

Ja geht, ich wuerde aber einen Interrupt-Endpunkt zu diesem Zweck 
empfehlen.
Auf jeden Fall nicht als HID Tastatur - ansonsten blockiert dein Device 
dann alle Eingaben waehrend es Zufall "sendet".

Falls du tiefer gehende Hilfe/Beratung zu V-USB benoetigst: Ich biete 
mich an, schick mir einfach eine PN.

Ich hatte vor Ewigkeiten einmal etwas vergleichbares (Zufall entnahm ich 
einer Zenerdiode) fuer mein tinyUSBboard 
(http://matrixstorm.com/avr/tinyusbboard/) gebastelt.

MfG

: Bearbeitet durch User
von Elliot W. (hexagon5un)


Lesenswert?

Ich habe genau so ein USB-Zufallsgenerator gebastelt.  Als 
Zufallgenerator habe ich ein Synthi module utilisiert.  Nicht genau 
dieses, aber so ähnlich: 
http://www.musicfromouterspace.com/analogsynth_new/EXPERIMENTERBOARD/pdf/schempg6_schem.pdf

Mit zwei OpVerstärker kann Man die Zentrum und Breite regeln.  Ich habe 
die nicht als Tiefpass benutzt wie in PDF.  (Bitte entschuldigen -- bin 
Amerikaner und kann nicht so besonderes gut Deutsch.)  So geht die 
Spannung im Raum von ~1 V bis ~4 V.

Danach geht das Signal ins ATMega uber v-USB zu meinem Laptop.  Ich habe 
es rein als digital-Signal benutzt.  Wenn ein statistiche Bias noch 
drinn steht, kann mann es reduzieren beim nutzen (1,0) als 1 und (0,1) 
als 0.  (Wann kommt 1,1 oder 0,0 dann sampelt man noch mal.)  Der 
Zufallsgenerator hat ein Bandbreite grosser als 500kHZ (genauer: relatif 
flach Spectrum von 10k-500kHz).

Mann könnte auch ein Hashfunktion nutzen, um zu besser die zahlen 
"vor-weissen" (sagt man auf Englisch, noch mal bitte entschuldige). 
Aber so was hat ich nicht gebraucht.

Ein Trick war 12V Spannung für der Zufalls Transistor: nutze ich ein 4x 
Spannungs Erhöer mit Kondensatoren, bei uC getrieben.  Ob das ein 
Tieffrequenz in den Zahlen machte, konnte ich es nicht finden.

Eines Tages muss ich es darüber posten als Webpage.

Ein Problem mit ADC und Co als Zufallsgenerator, wenn Mann es nutzt als 
Crypto-ding, ist die 50Hz Stromfrequenz -- es ist überall.

Viel Spass!

von R. B. (dxx255)


Lesenswert?

Das tinyusbboard ist ein super tipp! Danke dafür! soetwas werde ich mir 
bauen. welche möglichkeit hätte ich noch, die zufallszahlen einzulesen?

von R. B. (dxx255)


Lesenswert?

Hab mir jetzt ein tinyusbboard gebaut, allerdings lässt sich das 
Testprogramm nicht kompillieren! Ich verwende Arduino Code und erhalte 
folgende Fehlermeldung:
1
/usr/share/arduino/hardware/tools/avr/bin/avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -D__PROG_TYPES_COMPAT__ -I/usr/share/arduino/hardware/arduino/cores/arduino -I/usr/share/arduino/hardware/arduino/variants/standard -I/home/administrator/sketchbook/libraries/UsbKeyboard /tmp/build3367799079179550109.tmp/sketch_mar15a.cpp -o /tmp/build3367799079179550109.tmp/sketch_mar15a.cpp.o 
2
In file included from sketch_mar15a.ino:1:0:
3
/home/administrator/sketchbook/libraries/UsbKeyboard/UsbKeyboard.h:55:1: warning: narrowing conversion of ‘161’ from ‘int’ to ‘char’ inside { } is ill-formed in C++11 [-Wnarrowing]
4
/home/administrator/sketchbook/libraries/UsbKeyboard/UsbKeyboard.h:55:1: warning: narrowing conversion of ‘224’ from ‘int’ to ‘char’ inside { } is ill-formed in C++11 [-Wnarrowing]
5
/home/administrator/sketchbook/libraries/UsbKeyboard/UsbKeyboard.h:55:1: warning: narrowing conversion of ‘231’ from ‘int’ to ‘char’ inside { } is ill-formed in C++11 [-Wnarrowing]
6
/home/administrator/sketchbook/libraries/UsbKeyboard/UsbKeyboard.h:55:1: warning: narrowing conversion of ‘149’ from ‘int’ to ‘char’ inside { } is ill-formed in C++11 [-Wnarrowing]
7
/home/administrator/sketchbook/libraries/UsbKeyboard/UsbKeyboard.h:55:1: warning: narrowing conversion of ‘129’ from ‘int’ to ‘char’ inside { } is ill-formed in C++11 [-Wnarrowing]
8
/home/administrator/sketchbook/libraries/UsbKeyboard/UsbKeyboard.h:55:1: warning: narrowing conversion of ‘149’ from ‘int’ to ‘char’ inside { } is ill-formed in C++11 [-Wnarrowing]
9
/home/administrator/sketchbook/libraries/UsbKeyboard/UsbKeyboard.h:55:1: warning: narrowing conversion of ‘129’ from ‘int’ to ‘char’ inside { } is ill-formed in C++11 [-Wnarrowing]
10
/home/administrator/sketchbook/libraries/UsbKeyboard/UsbKeyboard.h:55:1: warning: narrowing conversion of ‘192’ from ‘int’ to ‘char’ inside { } is ill-formed in C++11 [-Wnarrowing]
11
/usr/share/arduino/hardware/tools/avr/bin/avr-gcc -c -g -assembler-with-cpp -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=105 -DUSB_VID=null -DUSB_PID=null -D__PROG_TYPES_COMPAT__ -I/usr/share/arduino/hardware/arduino/cores/arduino -I/usr/share/arduino/hardware/arduino/variants/standard -I/home/administrator/sketchbook/libraries/UsbKeyboard -I/home/administrator/sketchbook/libraries/UsbKeyboard/utility /home/administrator/sketchbook/libraries/UsbKeyboard/usbdrvasm.S -o/tmp/build3367799079179550109.tmp/UsbKeyboard/usbdrvasm.S.o 
12
avr-gcc: error: unrecognized command line option ‘-assembler-with-cpp’
Hier mein Sourcecode:
1
#include "UsbKeyboard.h"
2
void setup() {
3
    UsbKeyboard.update();
4
    UsbKeyboard.sendKeyStroke(KEY_H);
5
    UsbKeyboard.sendKeyStroke(KEY_E);
6
    UsbKeyboard.sendKeyStroke(KEY_L);
7
    UsbKeyboard.sendKeyStroke(KEY_L);
8
    UsbKeyboard.sendKeyStroke(KEY_O);
9
10
    UsbKeyboard.sendKeyStroke(KEY_SPACE);
11
12
    UsbKeyboard.sendKeyStroke(KEY_W);
13
    UsbKeyboard.sendKeyStroke(KEY_O);
14
    UsbKeyboard.sendKeyStroke(KEY_R);
15
    UsbKeyboard.sendKeyStroke(KEY_L);
16
    UsbKeyboard.sendKeyStroke(KEY_D);
17
}
18
19
void loop() {
20
21
}
Kann mir jemand sagen, wie ich dieses Problem löse?
Danke im Voraus

: Bearbeitet durch User
von Stephan B. (matrixstorm)


Angehängte Dateien:

Lesenswert?

Hi.

Das liegt an der Arduino VUSB library, in der die PIN-Belegungen 
statisch gehackt sind.

Wenn du in Arduino VUSB verwenden willst, dann komm' am besten (heute?) 
mal auf meinen TeamSpeak3 Server: 
ts3server://vps.matrixstorm.com:10987?nickname=RomanB

Ansonsten erklaere ich es auch gern hier - die Zeit wird ich mir gern 
sparen...

MfG

: Bearbeitet durch User
von R. B. (dxx255)


Lesenswert?

Danke für die Hilfe!
Ich habe jetzt eine funktionsfähige Version gebaut, allerdings muss ich 
noch ein wenig daran herumbasteln! Ich habe VUSB mit Control Übertragung 
verwendet und zwar ohne Arduino code.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.