Arcade BT Joystick / Nano / HC-05 Energie sparen

→ Stromverbrauch senken

Moin Jungs,

ich stelle ab und zu alte Rechner (C64 & Co.) in Schulen aus.
Der Rechner mit Monitor und Spiel (PacMan oder Space Invaders o.Ä.)
steht hinter einer fetten Glasscheibe. (Vandalismus/Diebstahl- Schutz)
Daher musste ich mir für den (Retro) Joystick etwas einfallen lassen.

Bluetooth bot sich da an. Prinzipiell funktioniert alles. VideoClip Joystick
Die Empfängerseite schaltet nach “Kontaktaufnahme” mit dem Joystick über ein SSR
für eine gewisse Zeit den Monitor, die Boxen und den Rechner auf 230V. Das tut alles.

Die Stromversorgung des Senders (Joystick) ist eine 20.000mAh PowerBank (bei 3,7V).
Ich benutze als Sender einen HC-05. Als Arduino JETZT einen Nano. (vorher Uno).

Hier ist mein Code:

unsigned long previousMillis = 0; // speichert wie viele Sekunden seit derletzten Änderung vergangen sind
unsigned long interval = 240000;    // Interval zwischen zwei Änderungen

void setup() 
{
pinMode(2, INPUT_PULLUP); // als Eingang mit PullUp definieren
pinMode(3, INPUT_PULLUP); // als Eingang mit PullUp definieren
pinMode(4, INPUT_PULLUP); // als Eingang mit PullUp definieren
pinMode(5, INPUT_PULLUP); // als Eingang mit PullUp definieren
pinMode(6, INPUT_PULLUP); // als Eingang mit PullUp definieren
pinMode(7, INPUT_PULLUP); // als Eingang mit PullUp definieren
pinMode(8, OUTPUT);       // BT Modul Stromvers. AUSGANG

  Serial.begin(9600);
  while (!Serial) {;}
  DDRD = B00000000;
  DDRB = B00111111; 
}
byte iZustandEingaenge=0;
byte iZustandAlt=0;
byte iByteMaske=B11111100;

void loop()
{
//Einlesen Register D und verdecken der Bits von RX u TX
iZustandEingaenge=PIND & iByteMaske;
// Bitshift runter von Port D Bit 2 bis 7 (wg RX u TX auf 1 und 2) auf Ports B 8 bis 13 (das sind Bits 1-6 auf Port B)
iZustandEingaenge = iZustandEingaenge >> 2;


// Wenn sich am Zustande der Eingänge etwas geändert hat, wird gesendet
// und der BT Stick Eingeschaltet
if(iZustandEingaenge != iZustandAlt)
{    digitalWrite(8, HIGH);
    //write statt print oder println um keine ASCII Steuerzeichen zu übertragen
    Serial.write(iZustandEingaenge);
    previousMillis = millis();
    iZustandAlt = iZustandEingaenge;
}
else
{}

if ((iZustandEingaenge == iZustandAlt) && (millis() - previousMillis > interval))
{  
  digitalWrite(8, LOW);
}
}

Wenn ich alles überprüft habe, werden ich sämtliche LEDs totlegen,
und den HC-05 über einen Arduino-Pin abschalten wenn inaktiv.

Kann ich den Nano schlafen legen, und aufwecken, wenn jemand den Joystick
betätigt? Wo kann ich mich diesbezüglich einlesen? Habt Ihr einen guten Tip
für mich?
(Bitte denkt daran, dass ich Anfänger bin - lieber einfacher und weniger
effizient, als kompliziert und ich kann es gar nicht)

Besten Dank !

Stefan

JoySelfmade.jpg

Der Arduino NANO ist die schlechte Wahl. Den USB-Serial adapter kannst Du nicht abschalten; der verbraucht immer Strom. Nimm einen Arduino Mini oder Mini Pro

Grüße Uwe

o.k. ?!

Schade - aber danke für den Tipp !

Stefan

Wie ist denn die Minimalbeschaltung von einem ATmega328P Chip? Wenn ich nur den nehmen würde? Nen Programmer hab ich. Oder hab ich da jetzt nen Denkfehler?

Stefan

2 Atmega328P mitgenommen und mittels Uno-Board und "MySmartUSB light" programmiert. Montag sind die Quarze da, Kondensator-Tüddel hab ich noch. Die PowerBank war heute im Postkasten. Dann kann es ja bald los gehen.

Stefan

hi,

wenn Du schreibst, daß Du mit 3,7V arbeitest, dann mußt Du die ja auf 5V kommen oder?

spar' Dir das doch, stell den 328er auf 8MHz, dann fällt der quartz weg und Du kannst die 3,7V direkt anschließen. keine ahnung, ob der HC05 mit 3,7V funkt, aber wenn nicht, wird's ja da hoffentlich auch einen geben.

zweitens: nach allem, was ich so weiß, beherrscht der ESP8266 wesentlich sffizientere energiesparmodi als die AVRs. wird auch mit der aerduino-ide proggrammiert, arbeitet mit 3,3V und hat wlan an bord. da könntest Du bluetooth weglassen und eine verbindung zu einem zweiten ESP an der konsole aufbauen. kosten ein paar euro bei ebay, aliexpress oder banggood.

es gibt welche mit usb, die einfach angesteckt und wie ein arduino programmiert werden, und welche ohne usb, da isses ein bißchen ein geraffel, aber geht, wenn man's dann raushat, auch.

gruß stefan

Hallo Eisbär,

Da habe ich mich ganz blöde ausgedrückt. Die Powerbank hat einen 5 Volt Ausgang, denn sie arbeitet mit Step Up Wandler. Die Akkus in der Powerbank bringen es aber nur auf 3,7 Volt. Das ist ein dämlicher Werbetrick, denn es stehen einem ja dann gar keine 20 000 Milliamperestunden zu Verfügung. Eine Angabe in Wattstunden wäre hier sicher ehrlicher.

An das WLAN traue ich mich noch nicht heran. Das wird erst in einem meiner nächsten Projekte verwirklicht werden. Ich habe den Joystick ja bereits soweit, dass er Verbindung zur Basisstation aufnimmt und scheue mich daher wieder alles auseinander zu fleddern.

Ich werde berichten.

Stefan

Ich bin ein paar Schritte weiter. Wie auf den Bildern zu sehen,
habe ich einen Atmega328 genommen und das BT Modul daran
getüddelt.
Es läuft so weit ich es beurteilen kann.
“Noch” ohne weitere Optimierungen liegt der Stromverbrauch
im Ruhemodus bei etwa 8mA - und im Paringmodus bei 48 mA.
Im verbundenen Zustand konnte ich noch nicht testen,
da ich die Gegenstelle nicht dabei hatte.

Die Powerbank musste ich zerlegen, da deren Elektronik
bei dem (zu) geringen Strombedarf nach 1- 2 Minuten
abgeschaltet hat.
Nächste Überraschung: die Powerbank hat nur 3,6 Volt Zellen
verbaut. Da es hier bereits vorgeschlagen wurde,
habe ich die Gelegenheit zum Anlass genommen, alles direkt
auf 3.6 Volt laufen zu lassen.

Jetzt zurück zu meiner ersten Frage?!
Habt Ihr einen Vorschlag, wie ich in der Ruhezeit
(Kiddies in den Klassen / Nachts) den Stromverbrauch
weiter senken kann?
Der Chip müsste bestenfalls bei Joystickbewegung wach werden.
Wie nennt sich das? Wo kann ich mich einlesen?

Stefan

Kleines Update

Stromverbrauch im gekoppelten Zustand 18-20 mA.

Stefan