Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
workshop:rf433ctl_workshop [2012-04-19 23:16] homunkoloss |
workshop:rf433ctl_workshop [2015-09-24 13:29] xro |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Workshop: Mikrocontrollerprogrammierung mit teensy ====== | + | ====== Funksteckdosen Fernsteuern mit teensy ====== |
+ | ====== aka Workshop: Mikrocontrollerprogrammierung mit teensy ====== | ||
====== Vorbereitung ====== | ====== Vorbereitung ====== | ||
Es müssen folgende Pakete installiert werden: | Es müssen folgende Pakete installiert werden: | ||
- | <html><pre>~ % sudo apt-get install subversion gcc-avr avr-libc build-essential \ | + | <code>~ % sudo apt-get install subversion gcc-avr avr-libc build-essential \ |
- | avrdude binutils-avr libusb-dev python-matplotlib</pre></html> | + | avrdude binutils-avr libusb-dev python-matplotlib</code> |
Weiters ist es ratsam einen eigenen Ordner für den Workshop anzulegen. | Weiters ist es ratsam einen eigenen Ordner für den Workshop anzulegen. | ||
- | <html><pre> | + | <code> |
~ % mkdir teensy_workshop | ~ % mkdir teensy_workshop | ||
~ % cd teensy_workshop | ~ % cd teensy_workshop | ||
- | </pre></html> | + | </code> |
====== hidrc ====== | ====== hidrc ====== | ||
Line 17: | Line 18: | ||
* Teensy | * Teensy | ||
* TSOP1838 | * TSOP1838 | ||
+ | |||
+ | ==== Pinbelegung ==== | ||
+ | TSOP1838: | ||
+ | D3: Data | ||
+ | Gesamter Port D ist als Input konfiguriert. | ||
+ | PC7 = VCC | ||
+ | PC6 = GND | ||
+ | |||
+ | Ansicht von vorne (Runde empfänger Teil sichtbar) | ||
+ | <html><pre> | ||
+ | _________ | ||
+ | | | | ||
+ | | O | | ||
+ | | | | ||
+ | --------- | ||
+ | | | | | ||
+ | | | | | ||
+ | D Gnd Vcc | ||
+ | </pre></html> | ||
==== Quellcode herunterladen ==== | ==== Quellcode herunterladen ==== | ||
Line 29: | Line 49: | ||
~/teensy_workshop/hidrc (svn)-[trunk:16] % make | ~/teensy_workshop/hidrc (svn)-[trunk:16] % make | ||
~/teensy_workshop/hidrc (svn)-[trunk:16] % cd teensy_loader_cli | ~/teensy_workshop/hidrc (svn)-[trunk:16] % cd teensy_loader_cli | ||
- | ...eensy_workshop/hidrc/teensy_loader_cli (svn)-[trunk:16] % make | + | ~/teensy_workshop/hidrc/teensy_loader_cli (svn)-[trunk:16] % make |
- | ...eensy_workshop/hidrc/teensy_loader_cli (svn)-[trunk:16] % cd .. | + | ~/teensy_workshop/hidrc/teensy_loader_cli (svn)-[trunk:16] % cd ../hid_listen |
- | ~/teensy_workshop/hidrc (svn)-[trunk:16] % cd hid_listen | + | |
~/teensy_workshop/hidrc/hid_listen (svn)-[trunk:16] % make | ~/teensy_workshop/hidrc/hid_listen (svn)-[trunk:16] % make | ||
+ | </pre></html> | ||
==== udev-Regel kopieren ==== | ==== udev-Regel kopieren ==== | ||
+ | <html><pre> | ||
~/teensy_workshop/hidrc/hid_listen (svn)-[trunk:16] % cd .. | ~/teensy_workshop/hidrc/hid_listen (svn)-[trunk:16] % cd .. | ||
~/teensy_workshop/hidrc (svn)-[trunk:16] % sudo cp udev-rules/49-teensy.rules /etc/udev/rules.d/49-teensy.rules | ~/teensy_workshop/hidrc (svn)-[trunk:16] % sudo cp udev-rules/49-teensy.rules /etc/udev/rules.d/49-teensy.rules | ||
~/teensy_workshop/hidrc (svn)-[trunk:16] % sudo /etc/init.d/udev reload | ~/teensy_workshop/hidrc (svn)-[trunk:16] % sudo /etc/init.d/udev reload | ||
+ | </pre></html> | ||
==== Programm auf teensy brennen ==== | ==== Programm auf teensy brennen ==== | ||
+ | <html><pre> | ||
~/teensy_workshop/hidrc (svn)-[trunk:16] % make program | ~/teensy_workshop/hidrc (svn)-[trunk:16] % make program | ||
+ | </pre></html> | ||
- | ===== Kommandos lernen ===== | + | ==== Kommandos lernen ==== |
+ | <html><pre> | ||
~/teensy_workshop/hidrc (svn)-[trunk:16] % cd hid_listen | ~/teensy_workshop/hidrc (svn)-[trunk:16] % cd hid_listen | ||
~/teensy_workshop/hidrc/hid_listen (svn)-[trunk:16] % ./hid_listen | ~/teensy_workshop/hidrc/hid_listen (svn)-[trunk:16] % ./hid_listen | ||
Line 55: | Line 80: | ||
^C | ^C | ||
130 ~/teensy_workshop/hidrc/hid_listen (svn)-[trunk:16] % vim ../keymap.h | 130 ~/teensy_workshop/hidrc/hid_listen (svn)-[trunk:16] % vim ../keymap.h | ||
+ | </pre></html> | ||
+ | |||
+ | === Keycode eintragen === | ||
+ | Den vorher ausgelesenen Wert (hier 722EEDD1) trägt man in die Datei /hid_listen/keymap.h ein. | ||
- | Keycode eintragen | ||
722EEDD1 -> 0x72,0x2E,0xED,0xD1 | 722EEDD1 -> 0x72,0x2E,0xED,0xD1 | ||
0x72,0x2E,0xED,0xD1,//Key//, //Modifier//, | 0x72,0x2E,0xED,0xD1,//Key//, //Modifier//, | ||
+ | |||
z.B.: 0x72,0x2E,0xED,0xD1, KEY_DELETE, KEY_ALT | KEY_CTRL, | z.B.: 0x72,0x2E,0xED,0xD1, KEY_DELETE, KEY_ALT | KEY_CTRL, | ||
+ | |||
Gültige Werte für //Key// und //Modifier// stehen in der Datei **usb_keyboard_debug.h** | Gültige Werte für //Key// und //Modifier// stehen in der Datei **usb_keyboard_debug.h** | ||
- | </pre></html> | ||
- | |||
- | ==== Pinbelegung ==== | ||
- | |||
- | TSOP1838: | ||
- | D3: Data | ||
- | Gesamter Port D ist als Input konfiguriert. | ||
- | PC7 = VCC | ||
- | PC6 = GND | ||
- | |||
- | Ansicht von vorne (Runde empfänger Teil sichtbar) | ||
- | <html><pre> | ||
- | _________ | ||
- | | | | ||
- | | O | | ||
- | | | | ||
- | --------- | ||
- | | | | | ||
- | | | | | ||
- | D Gnd Vcc | ||
- | </pre></html> | ||
===== rf433ctl ===== | ===== rf433ctl ===== | ||
==== Quellcode herunterladen ==== | ==== Quellcode herunterladen ==== | ||
- | <html><pre> | + | <code> |
- | homunkoloss@vidar ~/teensy_workshop % svn checkout https://svn.spreadspace.org/realraum/rf433rcv/ | + | homunkoloss@vidar ~/teensy_workshop % git clone https://github.com/realraum/rf433rcv |
homunkoloss@vidar ~/teensy_workshop % cd rf433rcv | homunkoloss@vidar ~/teensy_workshop % cd rf433rcv | ||
homunkoloss@vidar ~/teensy_workshop/rf433rcv (svn)-[rf433rcv:516] % cd pc | homunkoloss@vidar ~/teensy_workshop/rf433rcv (svn)-[rf433rcv:516] % cd pc | ||
homunkoloss@vidar ~/teensy_workshop/rf433rcv/pc (svn)-[rf433rcv:516] % make | homunkoloss@vidar ~/teensy_workshop/rf433rcv/pc (svn)-[rf433rcv:516] % make | ||
- | gcc -Wall -O2 -DOS_LINUX -c -o rawhid_test.o rawhid_test.c | + | </code> |
- | gcc -Wall -O2 -DOS_LINUX -c -o hid.o hid_LINUX.c | + | |
- | gcc -o rawhid_test rawhid_test.o hid.o -lusb | + | ==== teensy_loader_cli verlinken ==== |
- | strip rawhid_test | + | <code> |
- | gcc -o compress compress.c | + | |
- | gcc -o uncompress uncompress.c | + | |
- | gcc -Wall -O2 -DOS_LINUX -c -o reset.o reset.c | + | |
- | gcc -o reset reset.o hid.o -lusb | + | |
- | strip reset | + | |
- | </pre></html> | + | |
homunkoloss@vidar ~/teensy_workshop/rf433rcv/pc (svn)-[rf433rcv:516] % cd ~ | homunkoloss@vidar ~/teensy_workshop/rf433rcv/pc (svn)-[rf433rcv:516] % cd ~ | ||
homunkoloss@vidar ~ % ln -s teensy_workshop/hidrc/teensy_loader_cli | homunkoloss@vidar ~ % ln -s teensy_workshop/hidrc/teensy_loader_cli | ||
Line 115: | Line 118: | ||
homunkoloss@vidar ~/teensy_workshop/rf433rcv/pc (svn)-[rf433rcv:516] % cd ../teensy | homunkoloss@vidar ~/teensy_workshop/rf433rcv/pc (svn)-[rf433rcv:516] % cd ../teensy | ||
homunkoloss@vidar ~/teensy_workshop/rf433rcv/teensy (svn)-[rf433rcv:516] % make | homunkoloss@vidar ~/teensy_workshop/rf433rcv/teensy (svn)-[rf433rcv:516] % make | ||
- | |||
- | -------- begin -------- | ||
- | avr-gcc (GCC) 4.3.5 | ||
- | Copyright (C) 2008 Free Software Foundation, Inc. | ||
- | Dies ist freie Software; die Kopierbedingungen stehen in den Quellen. Es | ||
- | gibt KEINE Garantie; auch nicht für MARKTGÄNGIGKEIT oder FÜR SPEZIELLE ZWECKE. | ||
- | |||
- | |||
- | Compiling C: example.c | ||
- | avr-gcc -c -mmcu=atmega32u4 -I. -gdwarf-2 -DF_CPU=16000000UL -Os -funsigned-char -funsigned-bitfields -ffunction-sections -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./example.lst -std=gnu99 -MMD -MP -MF .dep/example.o.d example.c -o example.o | ||
- | example.c:52: Warnung: Funktionsdeklaration ist kein Prototyp | ||
- | |||
- | Compiling C: usb_rawhid.c | ||
- | avr-gcc -c -mmcu=atmega32u4 -I. -gdwarf-2 -DF_CPU=16000000UL -Os -funsigned-char -funsigned-bitfields -ffunction-sections -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./usb_rawhid.lst -std=gnu99 -MMD -MP -MF .dep/usb_rawhid.o.d usb_rawhid.c -o usb_rawhid.o | ||
- | |||
- | Linking: example.elf | ||
- | avr-gcc -mmcu=atmega32u4 -I. -gdwarf-2 -DF_CPU=16000000UL -Os -funsigned-char -funsigned-bitfields -ffunction-sections -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=example.o -std=gnu99 -MMD -MP -MF .dep/example.elf.d example.o usb_rawhid.o --output example.elf -Wl,-Map=example.map,--cref -Wl,--relax -Wl,--gc-sections -lm | ||
- | |||
- | Creating load file for Flash: example.hex | ||
- | avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature example.elf example.hex | ||
- | |||
- | Creating load file for EEPROM: example.eep | ||
- | avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \ | ||
- | --change-section-lma .eeprom=0 --no-change-warnings -O ihex example.elf example.eep || exit 0 | ||
- | |||
- | Creating Extended Listing: example.lss | ||
- | avr-objdump -h -S -z example.elf > example.lss | ||
- | |||
- | Creating Symbol Table: example.sym | ||
- | avr-nm -n example.elf > example.sym | ||
- | |||
- | Size after: | ||
- | text data bss dec hex filename | ||
- | 3604 0 710 4314 10da example.elf | ||
- | |||
- | -------- end -------- | ||
- | |||
homunkoloss@vidar ~/teensy_workshop/rf433rcv/teensy (svn)-[rf433rcv:516] % make program | homunkoloss@vidar ~/teensy_workshop/rf433rcv/teensy (svn)-[rf433rcv:516] % make program | ||
../pc/reset || true | ../pc/reset || true | ||
~/teensy_loader_cli/teensy_loader_cli -mmcu=atmega32u4 -w example.hex | ~/teensy_loader_cli/teensy_loader_cli -mmcu=atmega32u4 -w example.hex | ||
- | </pre></html> | + | </code> |
===== Variante Easy ===== | ===== Variante Easy ===== | ||
+ | {{:workshop:rf-433-proto.jpg|}} | ||
<html><pre> | <html><pre> | ||
homunkoloss@vidar ~/teensy_workshop/rf433rcv/pc (svn)-[rf433rcv:516] % ./autotaste.sh 0 > taste.txt | homunkoloss@vidar ~/teensy_workshop/rf433rcv/pc (svn)-[rf433rcv:516] % ./autotaste.sh 0 > taste.txt | ||
Line 378: | Line 345: | ||
~/teensy_workshop/hidrc (svn)-[trunk:16] % cp keymap_example.h keymap.h | ~/teensy_workshop/hidrc (svn)-[trunk:16] % cp keymap_example.h keymap.h | ||
+ | ---- | ||
+ | {{tag>workshop project}} |
realraum Graz, Brockmanngasse 15, 8010 Graz, realraum - Verein für Technik in Kultur und Gesellschaft