Forum: Mikrocontroller und Digitale Elektronik Hilfe: Von Arduino auf Mikrocontroller (Fernbedienung)


von Jonas W. (jakashhi)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe vor eine Fernbedienung mit nur sechs Tasten für meinen Opa zu 
machen, da er sich bei der orginalen Fernbedienung mit den ganzen Tasten 
immer verdrückt.

Soweit funktioniert die Elektronik auf einem Arduino auch. (Programm im 
Anhang)

Nun möchte ich dieses Projekt direkt auf einen Mikrocontroller 
"umbauen". Davon erhoffe ich mir Platzersparnis und weniger 
Stromverbrauch. Außerdem möchte ich da auch gleich noch etwas neues 
lernen. (Wie man an den Fragen bestimmt merkt 😉)

Welchen Mikrocontroller verwende ich da am besten? Ich brauche ja 6 
Inputs für die Tasten und einen Output für eine IR Led.

Kann ich das Programm (Anhang) dann einfach so verwenden? So ist er ja 
quasi die ganze Zeit aktiv und verbraucht Strom. Was ich so gelesen habe 
ist der Sleepmodus dafür auch nicht so gut geeignet, da der dann nicht 
gleich auf die Tastendrücke reagiert.

Und wie versorge das ganze dann am besten mit Strom? Diese kleinen LED 
Fernbedienungen haben ja auch nur so 3V Knopfzellen, reicht das?

von Steve van de Grens (roehrmond)


Lesenswert?

Ein ATmega328 lässt sich problemlos mit 3V versorgen. Beachte dass 2 
Batterien aber nur in frischem Zustand diese Spannung liefern deswegen 
nimm lieber eine mehr. Im Sleep Modus kann man pin-change Interrupts 
benutzen  um den Mikrocontroller durch Tastendruck aufzuwecken.

von N. M. (mani)


Lesenswert?

Dein Programm ist ja nicht gerade viel.
Trotzdem wäre es interessant wieviel der Arduino-Bloat braucht. Also 
erst Mal noch schauen wieviel Programm/Data momentan gebraucht wird.

Prinzipiell wird vermutlich fast jeder Controller gehen der genug 
Speicher und Pins hat.

Ein Controller mit möglichst weiterem Eingangsspannungsbereich wäre gut 
um ihn direkt mit den Batterien betreiben zu können.

Wahrscheinlich ein ATtiny oder so.

von J. S. (jojos)


Lesenswert?

Jaja Bloat. Aber zu blind zu lesen was da steht, keine 4K Flash.

von Keks F. (keksliebhaber)


Lesenswert?

Entweder direkt den verwendeten Controller, oder einen aus der ATTiny 2 
Series.

von Johannes T. F. (jofe)


Lesenswert?

Jonas W. schrieb:
> Welchen Mikrocontroller verwende ich da am besten?

Ich würde dafür auch einen der „neuen“ ATtiny 0-/1-/2-series nehmen, 
sogar ein ATtiny402 mit 5 I/O-Pins (UPDI mal ausgenommen) würde den Job 
schon machen; die sechs Tasten kann man über ein geeignetes 
Widerstandsnetz an einen Pin anschließen und über den AD-Wandler 
auswerten.

Jonas W. schrieb:
> Und wie versorge das ganze dann am besten mit Strom? Diese kleinen LED
> Fernbedienungen haben ja auch nur so 3V Knopfzellen, reicht das?

Am besten (langlebigsten und günstigsten) wären drei AA- oder AAA-Zellen 
in Reihe. 3-V-Lithiumzellen würde ich persönlich nicht nehmen, da 
weniger Kapazität und relativ teuer.

: Bearbeitet durch User
von Loco M. (loco)


Lesenswert?

Jonas W. schrieb:
> Nun möchte ich dieses Projekt direkt auf einen Mikrocontroller
> "umbauen". Davon erhoffe ich mir Platzersparnis und weniger
> Stromverbrauch. Außerdem möchte ich da auch gleich noch etwas neues
> lernen. (Wie man an den Fragen bestimmt merkt 😉)

Dein Vorhaben in allen Ehren, aber besorge deinem Opa doch erst einmal 
eine verfügbare Lösung. Du kannst ja parallel an deinem Projekt 
weiterarbeiten, und schauen wie weit du kommst.

Ich habe für meine Mutter die verlinkte Fernbedienung bestellt. Hat 6 
Tasten, die sich einfach erfühlen lassen (auch bei Dunkelheit), und jede 
Taste kann eine beliebige Funktion von der Originalfernbedienung lernen.

https://www.amazon.de/311402-orange/dp/B00778E5BS

von Georg M. (g_m)


Lesenswert?

Jonas W. schrieb:
> Kann ich das Programm (Anhang) dann einfach so verwenden? So ist er ja
> quasi die ganze Zeit aktiv und verbraucht Strom. Was ich so gelesen habe
> ist der Sleepmodus dafür auch nicht so gut geeignet, da der dann nicht
> gleich auf die Tastendrücke reagiert.

power-saving techniques for the Atmega328P processor:
http://www.gammon.com.au/power

von J. S. (jojos)


Lesenswert?

Bei der Wahl der Batterien ist auch wichtig wie weit die FB reichen 
soll. Für eine gute Reichweite werden die LED mit höherem Strom 
betrieben, gerne bis 100 mA. Das schaffen die CR2032 nicht. Die sind oft 
in den flachen China FB drin, mit denen muss man schon sehr genau 
zielen. Bei den ‚guten alten‘ reicht die Reflektion von Wänden. Von 
daher würde ich auch die AA einsetzen.
Und auch Sleep verwenden, das wacht schon schnell genug auf. Bei 
Zimmertemperatur wird der RC Oszi reichen, sonst einen Resonater nehmen, 
die sind afaik schneller am Start.

Beitrag #7610505 wurde von einem Moderator gelöscht.
Beitrag #7610512 wurde von einem Moderator gelöscht.
von Norbert (der_norbert)


Lesenswert?

Soooo, jetzt bitte alle mal die Füße hoch heben, das Niveau will durch!

Beitrag #7610546 wurde von einem Moderator gelöscht.
von Steve van de Grens (roehrmond)


Lesenswert?

Denkt dran, dass nicht jede Bibliothek auf jedenlm ATtiny lauffähig ist.

Wenn er sie auf einem Arduino Uno oder Nano erfolgreich benutzt hat, 
dann würde ich beim dort verwendeten Mikrocontroller bleiben.

: Bearbeitet durch User
Beitrag #7610561 wurde von einem Moderator gelöscht.
von Michael B. (laberkopp)


Lesenswert?

Jonas W. schrieb:
> Welchen Mikrocontroller verwende ich da am besten? I

ATmega328 ?

Du musst ihn nur von einem Arduino Uno Board mit DIP28 Sockel 
runterziehen und kannst ihn in deiner eigenen Schaltung benutzen.

Es ware aber klug, das Programm bis zum nächsten Tastendruck per 
PinChange Interrupt in sleep zu schicken.

Jonas W. schrieb:
> Diese kleinen LED Fernbedienungen haben ja auch nur so 3V Knopfzellen,
> reicht das?

Knopfzellen haben 1.5V nur frisch aus dem Laden, während der Benutzung 
fällt die Spannung auf 0.9V.
Mit 1.8V lauft der ATmega328 nicht mehr mit Quartz. 3 Knopfzellen wären 
besser.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Jonas W. schrieb:

> Welchen Mikrocontroller verwende ich da am besten? Ich brauche ja 6
> Inputs für die Tasten und einen Output für eine IR Led.

Nein. 6 Tasten kann man problemlos(*) mit 5 Pins abfragen. Dazu noch ein 
Pin für den IR-Out.

(*) theoretisch sogar mit noch weniger, aber da es gerade für eine FB 
äußerst sinnvoll ist, auf Tastendruck aufwachen zu können, ist eine 
stinknormale Tastenmatrix hier die beste Lösung. Denn die kann man so 
konfigurieren, das jede Taste auch in der Lage ist, die FB aufwachen zu 
lassen.

Damit kommen so ziemlich alle µC in Frage, die acht Beine haben. Ich 
würde das mit einem Tiny13 machen, du brauchst vermutlich mindestens 
einen Tiny45 oder sogar einen Tiny85.

> Kann ich das Programm (Anhang) dann einfach so verwenden?

Nein, das muß natürlich recht erheblich umgestrickt werden, wenn eine 
sinnvolle FB rauskommen soll.

von Keks F. (keksliebhaber)


Lesenswert?

Michael B. schrieb:
> Knopfzellen haben 1.5V nur frisch aus dem Laden, während der Benutzung
> fällt die Spannung auf 0.9V.
> Mit 1.8V lauft der ATmega328 nicht mehr mit Quartz. 3 Knopfzellen wären
> besser.

Er redet von einer CR2032 oder 2450.
Auf den externen Quartz kannst du verzichten.

Ist aber eh alles irrelevant, weil der Strom nicht genug ist für eine IR 
LED.

von N. M. (mani)


Lesenswert?

J. S. schrieb im Beitrag #7610561:
> ohne dumme Beleidigungen kannst du wohl nicht antworten? Sprichst du im
> Real Life auch so mit deinen Mitmenschen?

Nur wenn mich andere Menschen zuerst beleidigen. Dann, ja spreche ich 
auch im richtigen Leben so. Fass dir also auch mal an die eigene Nase ob 
man Leute gleich als blind anpöbeln muss.

Steve van de Grens schrieb:
> Denkt dran, dass nicht jede Bibliothek auf jedenlm ATtiny lauffähig ist.

Ja, auf das wollte ich raus. Ich denke dass es die hier ist:
https://bengtmartensson.github.io/Arduino-IRremote/

Da stehen dann ja die unterstützen Controller.

J. S. schrieb im Beitrag #7610561:
> Aber es erst mal behaupten, warum?

Bloat ist für mich alles, was mehr braucht als man benötigt. Der TO 
benötigt augenscheinlich kein RC6, Panasonic, Samsung usw. Also ist es 
erst Mal deutlich mehr als er benötigt, oder?

von J. S. (jojos)


Lesenswert?

N. M. schrieb:
> Also ist es
> erst Mal deutlich mehr als er benötigt, oder?

Nein, bei wenig Programmiererfahrung ist es mehr sich erst in diese 
Protokolle und dann noch in die Umsetzung einzulesen. Auch Zeit fürs 
Hobby ist Geld. Meinetwegen darf die Lib noch viel mehr können, der 
Linker hat ja offensichtlich das nicht benötigte rausgeworfen. Und wenn 
noch andere Geräte bedient werden sollen ist der Code dafür schon da. 
Für mich ist eine Lib gut wenn sie universell ist, nicht wenn ich für 
jedes IR/RF Protokoll gleich wieder eine andere brauche.

von DAVID B. (bastler-david)


Lesenswert?

Ich habe vor einigen Monaten mal genau das selbe versucht und bin 
gescheitert.

Die IRremote.h braucht 16Mhz und damit fallen auch die stabilen 5V an.
Das konnte ich bei mir mit einen step up Converter  7805  Elko aber 
klären.


Was ich nicht klären konnte war das die IR Diode keine sauberen Signale 
sendete, Egal mit welchen Transistor oder vorwiderstand.
Es kahm mir auch auf dem Oszilloskop so vor als ob der Atmega 8 und 328P 
( hab beide versucht) zu instabile schaltflanken haben.

Was dazu führte das man sehr oft eine taste drucken musste bis es 
überhaupt mal erkannt wurde.

Von den alle 2 Tage Akku aufladen mal abgesehen, verwarf ich den Aufbau 
an diesen punkt wieder.

Wünsche dir aber gutes gelingen und hoffe das du es besser kannst.
Ein paar Bilder von deinen fertigen "Gebastel wären schön"


Schönen Abend noch.

von Joachim B. (jar)


Lesenswert?

Loco M. schrieb:
> Ich habe für meine Mutter die verlinkte Fernbedienung bestellt. Hat 6
> Tasten, die sich einfach erfühlen lassen

sowas ähnliches bestellten wir auch für unsere Oma, sehr hilfreich 
anstatt immer wieder die Sender neu einzustellen.

von Manfred P. (pruckelfred)


Lesenswert?

Michael B. schrieb:
>> Welchen Mikrocontroller verwende ich da am besten? I
> ATmega328 ?
> Du musst ihn nur von einem Arduino Uno Board mit DIP28 Sockel
> runterziehen und kannst ihn in deiner eigenen Schaltung benutzen.

Also einen originalen Uno kaufen und dann im eigenen Aufbau noch 
zumindest den Quarz an den AT328 bauen. 16MHz, die er unterhalb 5 Volt 
nicht garantieren mag.

Da nehme ich doch einen ProMini-Clone mit 8 MHz und löte Spannungsregler 
und LED runter. Zum Programmieren per USB brauche ich noch einen 
CH340-Adapter für 1,50 Dollar, das ist für mich die billigere Lösung.

> Es ware aber klug, das Programm bis zum nächsten Tastendruck per
> PinChange Interrupt in sleep zu schicken.

Das ist unvermeidbar, wenn die Schaltung nicht täglich am Ladegerät 
stecken soll. Ist überschaubar, dafür finden sich fertige Beispiele samt 
.lib.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?


: Bearbeitet durch Moderator
von Steve van de Grens (roehrmond)


Lesenswert?

N. M. schrieb:
> Bloat ist für mich alles, was mehr braucht als man benötigt.
> Der TO benötigt augenscheinlich kein RC6, Panasonic, Samsung usw.

Der Sinn von C++ Bibliotheken besteht darin, nützliche wiederverwendbare 
Funktionen zu bündeln. Eine Bibliothek ist per Definition eine Sammlung. 
Bei ihrer Benutzung wird nur das verwendet, was das jeweilige Programm 
braucht. Also kein Bloat. Sieht man auch an der Größe des resultierenden 
Binaries.

Benutzt du MS Office (oder ein ähnliches Produkt)?
Benutzt du den Adobe Reader?

Das ist Bloat, wen du es so nennen willst.

: Bearbeitet durch User
von Steve van de Grens (roehrmond)


Lesenswert?

Ob S. schrieb:
> Nein. 6 Tasten kann man problemlos(*) mit 5 Pins abfragen. Dazu noch ein
> Pin für den IR-Out.

Und irgendwie noch den Programmieradapter dran fummeln.

Ich kann die sportliche Herausforderung dahinter nachvollziehen, aber 
das ist nicht für einen Anfänger. Diese unnötige Komplexität muss man 
sich nicht antun.

> Ich würde das mit einem Tiny13 machen,

In den passt sein Programm jetzt schon nicht rein.

: Bearbeitet durch User
von Steve van de Grens (roehrmond)


Lesenswert?

DAVID B. schrieb:
> Die IRremote.h braucht 16Mhz und damit fallen auch die stabilen 5V an.

Auszug aus https://github.com/Arduino-IRremote/Arduino-IRremote:
"For sending, the default software generated PWM has problems on AVR 
running with 8 MHz. The PWM frequency is around 30 instead of 38 kHz and 
RC6 is not reliable."

Ein bisschen mehr als 8 MHz sind bei 3,6 - 4,5 Volt kein Problem. Es 
müssen ja nicht gleich 16 MHz sein. Wobei das (obwohl außerhalb der 
Spec) mit hoher Wahrscheinlichkeit auch noch gehen würde.

: Bearbeitet durch User
von Björn W. (bwieck)


Angehängte Dateien:

Lesenswert?

Falls es den TO interessiert, hier meine Umsetzung einer OK-TV 
Fernbedienung mit weniger Tasten als die originale. (NEC Protokoll)

µC ist ein ATTiny24 mit 8Mhz interner RC-Oszillator.
Der Controller liegt normalerweise im Power-Down und wird per PC-INT bei 
Tastendruck geweckt.

Die Versorgung macht eine Li-Ion Zelle aus einem Einweg-Verdampfer, hält 
bisher 4 Monate.

Der Quellcode ist in Assembler geschrieben, ich kann leider nichts 
anderes.

von Keks F. (keksliebhaber)


Lesenswert?

Steve van de Grens schrieb:
> DAVID B. schrieb:
>> Die IRremote.h braucht 16Mhz und damit fallen auch die stabilen 5V an.
>
> Auszug aus https://github.com/Arduino-IRremote/Arduino-IRremote:
> "For sending, the default software generated PWM has problems on AVR
> running with 8 MHz. The PWM frequency is around 30 instead of 38 kHz and
> RC6 is not reliable."
> Ein bisschen mehr als 8 MHz sind bei 3,6 - 4,5 Volt kein Problem. Es
> müssen ja nicht gleich 16 MHz sein. Wobei das (obwohl außerhalb der
> Spec) mit hoher Wahrscheinlichkeit auch noch gehen würde.

Sorry, dann ist die Bibliothek Schrott. Wieso Software PWM? Was ist das 
denn für ein Scheiß?

von Johannes T. F. (jofe)


Lesenswert?

Keks F. schrieb:
>> "For sending, the default software generated PWM has problems on AVR
>> running with 8 MHz. The PWM frequency is around 30 instead of 38 kHz and
>> RC6 is not reliable."
> Sorry, dann ist die Bibliothek Schrott. Wieso Software PWM? Was ist das
> denn für ein Scheiß?

Ja, das habe ich mich auch gefragt. Einfach den Output-Pin per Timer 
toggeln reicht, PWM braucht man nicht, und die 38 kHz kann man auch bei 
8 MHz mit 0,2 % Fehler erzeugen.

von Peter D. (peda)


Lesenswert?

Michael B. schrieb:
> Mit 1.8V lauft der ATmega328 nicht mehr mit Quartz.

Lt. Datenblatt bei 1,8V sogar bis 4MHz.

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.