RFM12 library/en: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
(15 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{ProjektInfoBox | {{ProjektInfoBox | ||
|name = rfm12lib | |name = rfm12lib | ||
Zeile 7: | Zeile 6: | ||
|author = [[Benutzer:Hansinator|Hansinator]], [[Benutzer:Tixiv|Tixiv]], [[Benutzer:Soeren|Soeren]] | |author = [[Benutzer:Hansinator|Hansinator]], [[Benutzer:Tixiv|Tixiv]], [[Benutzer:Soeren|Soeren]] | ||
|username = | |username = | ||
|version = | |version = 1.1.0 | ||
|update = | |update = | ||
|platform = AVR | |platform = AVR | ||
Zeile 29: | Zeile 28: | ||
* Low-battery detection feature (using the RFM12) | * Low-battery detection feature (using the RFM12) | ||
* Low-power Wakeup timer feature (using the RFM12) | * Low-power Wakeup timer feature (using the RFM12) | ||
== Documentation == | == Documentation == | ||
Here's | Here's the online documentation for version 1.1.0:<br /> | ||
http://www.hansinator.de/rfm12lib/ | http://www.hansinator.de/rfm12lib/ | ||
A downloadable version can be found here:<br /> | |||
http://www.das-labor.org/files/rfm12lib_doc_1_0_0.zip | |||
== Download == | == Download == | ||
The | The lastest version can be found on Github [https://github.com/das-labor/librfm12 librfm12] | ||
The source of version 1.1.0 is available as a downloadable ZIP file [http://www.das-labor.org/files/rfm12lib-1.1.0.zip here] (MD5: 4545ad72782bf9465c1be109ecce9da5). | |||
Alternatively, you could checkout the newest version from our subversion repository. You can [http://www.das-labor.org/LaborLibTrac/browser/rfm12 browse] the repository or directly check out the sources with the command: | |||
svn co https://www.das-labor.org/storage/LaborLib/rfm12/ | svn co https://www.das-labor.org/storage/LaborLib/rfm12/ | ||
== Using the Library == | == Using the Library == | ||
Zeile 57: | Zeile 55: | ||
sei(); | sei(); | ||
while ( | while (1) | ||
{ | { | ||
/* ... */ | /* ... */ | ||
Zeile 63: | Zeile 61: | ||
rfm12_tick(); /* periodic tick function - call that one once in a while */ | rfm12_tick(); /* periodic tick function - call that one once in a while */ | ||
} | } | ||
== Technical Details == | |||
=== Collision Prevention === | |||
Before a packet is actually sent, the RFM12's status register is read in order to measure the current signal strength. When the signal strength is above a treshold, it is assumed that there's a transmission underway. The library then waits some time until the "ether" is free and starts the transmission when the module hasn't seen any traffic for some time. | |||
Collision prevention is enabled by default. You can disable it by defining this '''"#define RFM12_NOCOLLISIONDETECTION 1"''' in your rfm12_config.h. | |||
[[category:Automatisierung]] | |||
[[category:Datenfunk mit dem Microcontroller]] |
Aktuelle Version vom 12. Juli 2014, 17:36 Uhr
rfm12lib Release status: stable [box doku] | |
---|---|
Description | The rfm12 library provides the ability to use RFM12(B) modules in conjunction with Atmel AVR microcontrollers |
Author(s) | Hansinator, Tixiv, Soeren |
Last Version | 1.1.0 () |
Platform | AVR |
License | GPLv2 or later |
Download | SVN browse |
Library Features[Bearbeiten | Quelltext bearbeiten]
- Basic packet format, including:
- An 8-bit (0..255) packet type or address field
- Packet length up to 255 bytes
- A simple header checksum
- Interrupt or polling based packet transfer handling
- Multiple frequency bands, depending on the used module (433, 868 and 915 MHz)
- Collision avoidance (carrier sense)
- Usage of synchronization patterns to start data reception
- Hardware or software SPI support
- Transmit only mode, to reduce the size of the binary
- Basic ASK (amplitude shift keying) receive and transmit functionality (for radio controlled outlets and the like)
- Low-battery detection feature (using the RFM12)
- Low-power Wakeup timer feature (using the RFM12)
Documentation[Bearbeiten | Quelltext bearbeiten]
Here's the online documentation for version 1.1.0:
http://www.hansinator.de/rfm12lib/
A downloadable version can be found here:
http://www.das-labor.org/files/rfm12lib_doc_1_0_0.zip
Download[Bearbeiten | Quelltext bearbeiten]
The lastest version can be found on Github librfm12
The source of version 1.1.0 is available as a downloadable ZIP file here (MD5: 4545ad72782bf9465c1be109ecce9da5).
Alternatively, you could checkout the newest version from our subversion repository. You can browse the repository or directly check out the sources with the command:
svn co https://www.das-labor.org/storage/LaborLib/rfm12/
Using the Library[Bearbeiten | Quelltext bearbeiten]
The file rfm12_config.h contains all the configuration as well as a pin assignment table. See the documentation for more info.
Here's an example how to use the library:
uint8_t teststring[] = "teststring\r\n"; uint8_t packettype = 0xEE; rfm12_init(); /* initialize the library */ sei(); while (1) { /* ... */ rfm12_tx (sizeof(teststring), packettype, teststring); rfm12_tick(); /* periodic tick function - call that one once in a while */ }
Technical Details[Bearbeiten | Quelltext bearbeiten]
Collision Prevention[Bearbeiten | Quelltext bearbeiten]
Before a packet is actually sent, the RFM12's status register is read in order to measure the current signal strength. When the signal strength is above a treshold, it is assumed that there's a transmission underway. The library then waits some time until the "ether" is free and starts the transmission when the module hasn't seen any traffic for some time.
Collision prevention is enabled by default. You can disable it by defining this "#define RFM12_NOCOLLISIONDETECTION 1" in your rfm12_config.h.