IR Wireless Remote Control Module

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • IR Wireless Remote Control Module

      Beim freundlichen Chinesen gibt es kleine Fernbedienungen mit den Abmessungen 85x40x7. Im Lieferumfang ist noch ein Empfangsmodul (3 Bein IC) und ein 3poliges Kabel.
      Leider war in meiner Packung kein Empfangsmodul mehr dabei, aber für 1,15 Euro Kaufpreis lohnt sich eine Reklamation nicht. Auch die bei dem Auktionsfoto mit abgebildete LED fehlte (wozu auch immer die sein soll)
      Ich habe stattdessen ein TSOP38 aus der Kramkiste genommen, geht genauso gut.

      Die Fernbedienung sendet ein Telegramm von 68ms Länge, zuerst eine Startlücke mit 9ms, gefolgt von einem High von 4,5ms. (1/2)
      Danach folgen die 32 Bit Daten, dabei immer eine Lücke von 1/16 gefolgt von einem High von 1/16 oder 3/16, je nach Daten.
      Die ersten 8 Bit sind immer 0 und die zweiten 8 Bit sind immer 1.
      Das dritte Oktett enthält die Daten, das vierte Oktett das Zweierkomplement der Daten.
      Damit kann man die Übertragung leicht überprüfen.

      Die Software synchronisiert sich mit Timer0 auf den Startpuls und summiert dann einfach die 32 Bits in eine Long-Variable.
      In der Hauptschleife wird das Komplement geprüft und die entsprechende Tastenaktion ausgeführt.
      In diesem Fall einfach die Ausgabe auf ein LCD.

      Die Reichweite ist ordentlich, ich kann hier etwa 4 Meter weg gehen, mit meinem TSOP38 als Empfänger gibt es keine Probleme.

      Gruß, Michael

      BASCOM-Quellcode: Fernbedienung

      1. '(
      2. Infrarotfernbedienung vom freundlichen Chinesen
      3. Michael Bascomforum.de 05/2018
      4. 0 25
      5. 1 69
      6. 2 70
      7. 3 71
      8. 4 68
      9. 5 64
      10. 6 67
      11. 7 7
      12. 8 21
      13. 9 9
      14. asterisk 22
      15. hash 13
      16. up 24
      17. left 8
      18. ok 28
      19. right 90
      20. down 82
      21. ')
      22. $regfile = "M328pdef.dat" 'Atmega328p CPU
      23. $crystal = 16000000 '16Mhz Oszillator
      24. $hwstack = 64
      25. $swstack = 64
      26. $framesize = 40
      27. Config Lcd = 16 * 2
      28. Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4
      29. Cursor Off
      30. Cls
      31. Config Clock = Soft
      32. Config Date = YMD , Separator =.' ANSI-Format
      33. Config Timer1 = Timer , Prescale = 256 'Sekundentimer
      34. On Timer1 T1_irq
      35. Start Timer1
      36. Enable Timer1
      37. On Int0 I_0irq 'Signaleingang
      38. Config Int0 = Falling
      39. Enable Int0
      40. Config Timer0 = Timer , Prescale = 1024 'Timer0 Signallänge
      41. On Timer0 T0_overflow
      42. Enable Timer0
      43. Enable Interrupts
      44. Led Alias Portb.5
      45. Dim X As Byte
      46. Dim Telegrammzaehler As Byte
      47. Dim Telegramm As Long
      48. Dim Zeit As Long
      49. Dim Temp As Byte
      50. Dim Eingang(4) As Byte At Telegramm Overlay
      51. Dim Neuesekunde As Bit
      52. Do
      53. If Neuesekunde = 1 Then
      54. Locate 1 , 1
      55. Lcd "Remote "
      56. Lcd Time(zeit)
      57. Neuesekunde = 0
      58. End If
      59. X = Eingang(3) + Eingang(4)
      60. If X = 255 Then
      61. Locate 2 , 1
      62. Lcd " Taste = "
      63. Select Case Eingang(3)
      64. Case 25:
      65. Lcd "0 "
      66. Case 69:
      67. Lcd "1 "
      68. Case 70:
      69. Lcd "2 "
      70. Case 71:
      71. Lcd "3 "
      72. Case 68:
      73. Lcd "4 "
      74. Case 64:
      75. Lcd "5 "
      76. Case 67:
      77. Lcd "6 "
      78. Case 7:
      79. Lcd "7 "
      80. Case 21:
      81. Lcd "8 "
      82. Case 9:
      83. Lcd "9 "
      84. Case 22:
      85. Lcd "Astersk"
      86. Case 13:
      87. Lcd "Hash "
      88. Case 24:
      89. Lcd "up "
      90. Case 8:
      91. Lcd "left "
      92. Case 28:
      93. Lcd "ok "
      94. Case 90:
      95. Lcd "right "
      96. Case 82:
      97. Lcd "down "
      98. End Select
      99. End If
      100. Waitms 50
      101. Loop
      102. T1_irq:
      103. Timer1 = 3036
      104. Neuesekunde = 1
      105. Incr Zeit
      106. Return
      107. I_0irq:
      108. Temp = Timer0
      109. Timer0 = 0
      110. Select Case Temp
      111. Case 12 To 22
      112. If Telegrammzaehler <= 31 Then
      113. Telegramm.telegrammzaehler = 0
      114. Toggle Portd.7
      115. End If
      116. Case 30 To 40
      117. If Telegrammzaehler <= 31 Then
      118. Telegramm.telegrammzaehler = 1
      119. Toggle Portd.6
      120. End If
      121. Case 210 To 215
      122. Led = 1
      123. Telegrammzaehler = 255
      124. End Select
      125. Incr Telegrammzaehler
      126. If Telegrammzaehler >= 32 Then
      127. Telegrammzaehler = 32
      128. End If
      129. Return
      130. T0_overflow:
      131. Led = 0
      132. Telegrammzaehler = 31
      133. Return
      Alles anzeigen
      IR_China_Telegramm.png

      IR_Remote.jpg
    • Super, Michael,
      diese Fernbedienung habe ich auch hier, aber noch nicht den Mut und die Muße mich damit zu befassen. IR- Protokolle finde ich zwar toll, hab aber noch nicht den richtigen Dreh gefunden um diesen Herr zu werden. Daher ja auch mal meine Frage hier im Forum, nach einer implementierten Lösung in der BASCOM- Software. Ich hab mich bislang noch nicht mit dem Zeitprotokoll anfreunden können, das steht aber noch auch meinem Wunschlernzettel.

      Meine Module sind komplett gekommen, da hab ich dann einen Hürde weniger. Die ARDUINO´s hab ich ja jetzt auch unter Kontrolle, da kann ich mich ja mal mit andererleuts Code beschäftigen :) . In der Schule verwende ich derzeit (zum Schuljahresende, da hat man ja schon was gelernt) einen Fahrzeugbausatz (vom Chinesen), der zunächst Spuren folgen soll. Diesen Bausätzen kann ich mit Deinem Code ja jetzt noch eine Fernsteuerung verpassen. Die laufen ja eh nur im Klassenzimmer mit geringer Entfernung.

      Danke für´s Posten, Christian
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • na so ein zufall :D ich hab ja auch noch sone FB. Hatte mich damals informiert, ist angeblich das NEC protokoll. Hab sogar irgendwo ein Programm für nen universell IR decoder in Bascom. Bin aber nie zu gekommen, liegt noch alles in der "zu erledigen" Kiste.
      a_42_02cc30b2 für die angenommene Arbeit.
      Ein traum währ natürlich ne lib für sowas. Jede menge RECS80 Sender hab ich auch noch hier.

      Tobias
    • Es scheint unterschiedliche Fernbedienungen mit ähnlicher Optik zu geben, denn mein Exemplar hat die Navigationstasten oben und den Zahlenblock unten. Allerdings scheint der "Unterbau" eine identische 3 x 7 Matrix zu sein, denn bei dem Code aus #1 habe ich einige Tasten ohne Belegung und auf den anderen Tasten "seitenverkehrte" Belegungen.

      Ich habe den IR- Code für die Tastaturvariante mal ausgelesen und stelle hier den abgeänderten Code ein, der für oben genannte "verdrehte" Tastatur gilt.


      BASCOM-Quellcode

      1. '(
      2. Infrarotfernbedienung vom freundlichen Chinesen
      3. Michael Bascomforum.de 05/2018
      4. `Für "verdrehte" Tastatur (siehe Thread im bascomforum.de) geändert von ceperiga
      5. 0 82
      6. 1 22
      7. 2 25
      8. 3 13
      9. 4 12
      10. 5 24
      11. 6 94
      12. 7 8
      13. 8 28
      14. 9 90
      15. asterisk 66
      16. hash 74
      17. up 70
      18. left 68
      19. ok 64
      20. right 67
      21. down 21
      22. ')
      23. $regfile = "M328pdef.dat" 'Atmega328p CPU
      24. $crystal = 16000000 '16Mhz Oszillator
      25. $hwstack = 64
      26. $swstack = 64
      27. $framesize = 40
      28. Config Lcd = 16 * 2
      29. Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4
      30. Cursor Off
      31. Cls
      32. Config Clock = Soft
      33. Config Date = YMD , Separator =.' ANSI-Format
      34. Config Timer1 = Timer , Prescale = 256 'Sekundentimer
      35. On Timer1 T1_irq
      36. Start Timer1
      37. Enable Timer1
      38. On Int0 I_0irq 'Signaleingang
      39. Config Int0 = Falling
      40. Enable Int0
      41. Config Timer0 = Timer , Prescale = 1024 'Timer0 Signallänge
      42. On Timer0 T0_overflow
      43. Enable Timer0
      44. Enable Interrupts
      45. Led Alias Portb.5
      46. Dim X As Byte
      47. Dim Telegrammzaehler As Byte
      48. Dim Telegramm As Long
      49. Dim Zeit As Long
      50. Dim Temp As Byte
      51. Dim Eingang(4) As Byte At Telegramm Overlay
      52. Dim Neuesekunde As Bit
      53. Do
      54. If Neuesekunde = 1 Then
      55. Locate 1 , 1
      56. Lcd "Remote "
      57. Lcd Time(zeit)
      58. Neuesekunde = 0
      59. End If
      60. X = Eingang(3) + Eingang(4)
      61. If X = 255 Then
      62. Locate 2 , 1
      63. Lcd " Taste = "
      64. Select Case Eingang(3)
      65. Case 82:
      66. Lcd "0 "
      67. Case 22:
      68. Lcd "1 "
      69. Case 25:
      70. Lcd "2 "
      71. Case 13:
      72. Lcd "3 "
      73. Case 12:
      74. Lcd "4 "
      75. Case 24:
      76. Lcd "5 "
      77. Case 94:
      78. Lcd "6 "
      79. Case 8:
      80. Lcd "7 "
      81. Case 28:
      82. Lcd "8 "
      83. Case 90:
      84. Lcd "9 "
      85. Case 66:
      86. Lcd "Astersk"
      87. Case 74:
      88. Lcd "Hash "
      89. Case 70:
      90. Lcd "up "
      91. Case 68:
      92. Lcd "left "
      93. Case 64:
      94. Lcd "ok "
      95. Case 67:
      96. Lcd "right "
      97. Case 21:
      98. Lcd "down "
      99. End Select
      100. End If
      101. Waitms 50
      102. Loop
      103. T1_irq:
      104. Timer1 = 3036
      105. Neuesekunde = 1
      106. Incr Zeit
      107. Return
      108. I_0irq:
      109. Temp = Timer0
      110. Timer0 = 0
      111. Select Case Temp
      112. Case 12 To 22
      113. If Telegrammzaehler <= 31 Then
      114. Telegramm.telegrammzaehler = 0
      115. Toggle Portd.7
      116. End If
      117. Case 30 To 40
      118. If Telegrammzaehler <= 31 Then
      119. Telegramm.telegrammzaehler = 1
      120. Toggle Portd.6
      121. End If
      122. Case 210 To 215
      123. Led = 1
      124. Telegrammzaehler = 255
      125. End Select
      126. Incr Telegrammzaehler
      127. If Telegrammzaehler >= 32 Then
      128. Telegrammzaehler = 32
      129. End If
      130. Return
      131. T0_overflow:
      132. Led = 0
      133. Telegrammzaehler = 31
      134. Return
      Alles anzeigen
      PS: Die Fernbedienung arbeitet mit NEC- Protokoll
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • ceperiga schrieb:

      mein Exemplar hat die Navigationstasten oben und den Zahlenblock unten.
      ahh, ok, jetzt, da du es sagst, sehe ich es auch.
      Es wäre interessant, so eine Fernbedienung mal zu öffnen, ich vermute unter den Lücken auch Tastenfelder, also neben der Up- und der Down-Taste.
      Dann würde der Unterschied nur in der Tastenfolie mit den Knackfröschen bestehen.


      ceperiga schrieb:

      Die Fernbedienung arbeitet mit NEC- Protokoll
      ok, das kannte ich so bisher noch nicht, ich habe meine Protokolle immer selbst ausgedröselt ;)
      Hier habe ich ein PDF zu NEC gefunden:
      techdocs.altium.com/printpdf/212919

      P.S.: Kannst du noch kurz beschreiben, welcher Empfänger dem Fernbedienungs-Set beiliegt?
    • Ist jetzt vielleicht etwas pedantisch (oder unwissend), aber aus dem Programm sehe ich nicht, dass da ein Zweierkomplement verwendet wird. Eine Addition einer Zahl mit ihrem Zweierkomplement ergibt bei mir 0. 20 hat als Zweierkomplement -20, zusammen addiert =0. Hier wird wohl einfach das Datum nochmals getoggelt gesendet, 0 wird als 1, 1 als 0 gesendet, die Addition ergibt dann lauter 1er, beim byte 255.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Jetzt wäre es halt noch die Krönung, wenn man irgendwie Einfluß auf die gesendete Adresse hätte (erste 8 bit, hier wohl immer =0). Dann hätte man dann 'Mehrspielersteuerungen' für Roboter.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Michael schrieb:

      Es wäre interessant, so eine Fernbedienung mal zu öffnen, ich vermute unter den Lücken auch Tastenfelder, also neben der Up- und der Down-Taste.
      Dann würde der Unterschied nur in der Tastenfolie mit den Knackfröschen bestehen.
      Ich denke, da brauch man nichts öffnen. Auf meinen "falsch" belegten Tasten waren genau die Tasten, die auf Deiner Fernbedienung richtig bezeichnet waren. Ich hab auch noch eine andere, bis auf das Tastfeld gleiche Fernbedienung mit den kompletten 3 x 7 Tasten

      Michael schrieb:

      P.S.: Kannst du noch kurz beschreiben, welcher Empfänger dem Fernbedienungs-Set beiliegt?
      Der Empfänger ist ein VS 1838, aber ich denke, da geht jeder gebräuchliche 38kHz- Empfänger

      Schraubbaer schrieb:

      weil es angeblich das NEC prototoll benutzt
      Die Fernbedienung nutzt definitiv das NEC- Protokoll
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Früher ™ konnte man das ohne probleme weil die sender ICs wie z.b. SAA3004 für die Adresse eigene Pins hatten. Nur sind die dedizierten IC an sich ausgestorben weil man das heute einfacher und flexibler mit Prozessoren machen kann. Ein Tiny würde da vollkommen reichen.
      Einzig immer das Problem nen schickes Gehäuse zu haben.Man müsste nen Chinesen überzeugen ein Bausatz mit Gehäuse und AVR Platine zum selberprogrammieren zu Produzieren.
      IMG_1027.JPG
      Sowas z.b. (war ein kommerzielles Produkt für die Möbelindustrie) gabs mit 4,6 und 8 Tasten.

      Tobias
    • Mit 3D- Druck sollte man da schon ein brauchbares Gehäuse selber hinbekommen. Für eigene Entwicklungen mit BASCOM würde ja auch das RC5- Protokoll ausreichen. Das beherscht BASCOM ja sowohl beim Senden, wie auch beim Empfangen. Frontplattendesign hatten wir im Forum ja schon an anderer Stelle, das geht dann auch hier.
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • tschoeatsch schrieb:

      Jetzt wäre es halt noch die Krönung, wenn man irgendwie Einfluß auf die gesendete Adresse hätte (erste 8 bit, hier wohl immer =0). Dann hätte man dann 'Mehrspielersteuerungen' für Roboter.
      Ich hab' zu kurz gedacht. Es müssten ja alle Empfänger alle Signale einfangen und dann das 'persönliche' heraus picken und verarbeiten. Das würde nur bei sehr kleinen Senderaten funktionieren. Ein Mischsignal aus 2 Sendern ist sicherlich nicht so einfach zu decodieren.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Unabhängig vom IR ist ein mischsignal immer ein Problem bei einen geteilten Übertragungsmedium. Dafür ist ja grad IR auch nicht unbedingt gedacht. Wird reduziert indem im gegensatz zu Funk die "Kommunikation" eher zielgerichtet ist und zwischen den Datenblöcken doch recht grosse Pausen sind . In der hoffnung das die Sendeblöcke dann immer in der Pause des anderes Senders liegen.
      Die Protokollauswertung an sich verwirft ja eh schadhafte Pakete. Störungen sind auch immer ein problem, Sonneneinstrahlung und Leuchtstoffröhren haben hohen UV Anteil und stören stark. Wie das mit LED Leuchtmitteln ist kann ich nicht sagen, als ich das vor knapp 25 Jahren gemacht hab gabs die noch nicht.
      Zur Entkopplung verschiedenener Sender kann man auch andere Frequenzen als 38Khz nehmen, die TSOP gibts ja in verschiedenen abstufungen, die Filtern dann das meiste der falschen Frequenz raus. Gegen nen IR Scheinwerfer als Störer kommen sie aber trotzdem nicht an solange dein Singal schwächer ist.

      Tobias
    • @Michael: Öffnen der Fernbedienung ist nicht notwendig, es reicht aus, die Deckfolie vorsichtig abzuziehen. Diese gibt dann den Blick auf die 3 x 7 Matrix frei und läßt sich anschließend leicht wieder aufsetzen. Wenn man das nicht ständig macht, übersteht die Fernbedienung das schadfrei.

      Gruß Christian
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Michael schrieb:

      Hätteste ja mal ein Foto machen können, wenn du schon dabei bist
      Das ist bei mir sehr umständlich, fotografieren, SD- Karte aus der Kamera nehmen, in den Computer stecken, Bild anpassen und dann posten. Es gibt nichts Besonderes zu sehen, Platine mit den üblichen Leiterbahnpads, auf welche die Drucktasten wirken, auf der Rückseite der Controller unter einem schwarzen "Klecks", also Massenware ohne bekannten Controller, war ja zu erwarten.

      PS: Ich glaub ich muß mir mal ein Tablet anschaffen, damit geht zumindest das leichter.
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Das Fotografieren auf sd-Karte hält fit. Dabei musst du beide Hände und Arme bewegen, der Oberkörper wird auch leicht gebeugt. Alles Bewegungen, die beim Fotografieren mit dem tablet wegfallen würden und nur auf Wischbewegungen mit einem Finger reduziert werden. Überleg' es dir gut! a_35_aee4835d
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------