46-IRSND-Library (STM32F4)

Diese Library bindet den IRSND zum senden von Infrarot-Signalen (wie eine IR-Fernbedienung) für den STM32F4 ein. Als Sende-Diode kann jede “normale” IR-LED benutzt werden und über einem Vorwiderstand (z.B. 180 Ohm) an den PIN der CPU angeschlossen werden. (Wer will das die LED heller leuchtet, kann sie auch mit einem zusätzlichen Transistor schalten…dann bekommt man event. eine höhere Reichweite)

IRSND : “Infrarot-Multiprotokoll-Encoder” ist Opensource, die Quellfiles und ein ausführlicher Artikel findet sich im Mikrocontroller Forum.
http://www.mikrocontroller.net/articles/IRMP

IRSND ist sehr Umfangreich und unterstützt sehr viele IR-Protokolle. Welche Protokolle benutzt werden sollen, kann in einem H-File eingestellt werden. Damit kann der Codeumfang verkleinert werden.

Es werden zwei Timer benötigt und ein GPIO Pin. (im Beispiel TIM2, TIM10 und PB8)
Hinweis : der Pin ist nicht beliebig sondern wird vom benutzten Timer vorgegeben, weil dessen AF Funktion (PWM) benutzt wird. (Bitte im RefManual nachlesen falls ihr einen anderen benutzen wollt)

Die Daten die gesendet werden sollen, müssen in einer Struktur abgespeichert werden. Darin enthalten ist der IR-Codetyp, eine Adressnummer und eine Kommandonummer.

Welche Werte das zu steuernde Gerät benötigt muss zuvor ermittelt werden. Am einfachsten mit der IRMP-Library von hier an der “original” Fernbedienung auslesen.
Meine Test Fernbedienung liefert als Codetyp “5″ als Adresse den Wert “8194″ und z.B. beim drücken der Taste “ARD″ den Wert “33024″ zurück.

Beispielbild :

irsnd

Benutzte Pins :

1
PB8 -> IR-Sender

Voraussetzungen :

1
2
Benutzte Module der CooCox-IDE : GPIO, TIM, MISC
Benutzte Librarys : IRSND

Struktur :

1
2
3
4
5
6
typedef struct {
  uint8_t protocol; 
  uint16_t address; 
  uint16_t command;
  uint8_t flags;
}IRMP_DATA;

Funktionen :

1
2
void UB_IRSND_Init(void);                     // zum initialisieren von IRSND
void UB_IRSND_Write(IRMP_DATA * irmp_data_p); // zum senden der IR-Daten

Beispiel :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//--------------------------------------------------------------
// File     : main.c
// Datum    : 14.06.2013
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.0
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo der IRSND-Library
// Hinweis  : Diese zwei Files muessen auf 8MHz stehen
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------
 
#include "main.h"
#include "stm32_ub_irsnd.h"
 
void Delay(volatile uint32_t nCount)
{
  while(nCount--)
  {
  }
}
 
int main(void)
{
  IRMP_DATA  myIRData;  // Variable für IR-Daten
 
  SystemInit(); // Quarz Einstellungen aktivieren
 
  // init vom IRSND
  UB_IRSND_Init();
 
  // einen festen IR-Code einstellen
  // (am TV auf "ARD" umschalten)
  myIRData.protocol=5;
  myIRData.address=8194;
  myIRData.command=33024;
  myIRData.flags=0;
 
  while(1)
  {
    // kleine Pause (ca 3sec)
    Delay(30000000);
    // IR-Daten senden
    UB_IRSND_Write(&myIRData);
  }
}

Hier die Library zum Download :

ub_stm32f4_irsnd_v100

Hier der komplette CooCox-Projektordner zum Download :

Demo_46_IRSND


Wie hat Dir dieser Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert