Archiv der Kategorie: PC-Kram

Meine Lieblingsbeschäftigung :)

BitNotice #138 – Panasonic Lumix DMC-FZ300

BitNotice #138 - Panasonic Lumix DMC-FZ300

(257 MB) 00:15:40

2018-10-24 13:45 🛈

Da meine EOS ja den Geist aufgegeben hatte sollte Ersatz her. Alles können, nix kosten. Oder so. Geworden ist es die Lunix DMX-FZ300. Diese hat als Bridge-Kamera zwar keine Möglichkeit das Objektiv zu wechseln und dürfte durch den kleineren Bildsensor eine schlechtere Bildqualität, besonders bei wenig Licht, liefern, aber 4k, Mikrofonanschluss, Klappdisplay und Zeitlupe klang doch irgendwo verlockend.

Das FPS-gestotter ist natürlich nur zur Demonstration des Problems und hat keinesfalls etwas damit zu tun, dass etwas mit der genutzten Kamera nicht stimmte 😉

Review mit weiteren Daten sowie den Ecken und Kanten: https://www.youtube.com/watch?v=0MuKRRq4xfc

BitBastelei #305 – EC-Karten-Terminal-Recycling: LCD&Keypad an ESP8266

BitBastelei #305 - EC-Karten-Terminal-Recycling: LCD&Keypad an ESP8266

(318 MB) 00:30:29

2018-10-21 10:00 🛈

Vor einiger Zeit hatte ich ein altes EC-Kartenterminal zerlegt und schon angemerkt, dass man viele der Bauteile recyclen kann. Dieses mal geht es um das Display sowie die Tastatur – eigentlich eine einfache Aufgabe. Eigentlich.

Links

Quellcode Testsoftware

#include <Arduino.h>
#include <SPI.h>
#include <MCP23S17.h>
#include <Wire.h>
#include <LiquidCrystal_PCF8574.h>

extern "C" {
    #include "user_interface.h"
}

const char* kbdmap = "K##.0CRE321MSO654FTe987U";
const char* cmdmap = " +-*/";

#define ROWS 4
#define COLS 6

LiquidCrystal_PCF8574 lcd(0x27);
MCP gpio(0, 15);
int8_t last = 0;

String num1, num2;
byte cmd = 0;

void setPinMode(void) {
    uint16_t out = 0xFFFF;
    out <<= (ROWS);
    gpio.pinMode(out);
    gpio.pullupMode(out);
    gpio.inputInvert(out);
    out = ~out;
    gpio.digitalWrite(out);
}

void startLCD(void) {
    int error;
    Serial.println("LCD...");
    Wire.begin(D1, D2);
    Wire.beginTransmission(0x27);
    error = Wire.endTransmission();
    Serial.print("Return: ");
    Serial.print(error);

    if (error == 0) {
        Serial.println(": LCD found.");
    } else {
        Serial.println(": LCD not found.");
    }

    lcd.begin(20, 2); // initialize the lcd
    lcd.home();
    lcd.clear();
    lcd.print("BitBa // POS-Matrix");
}

void setup() {
    Serial.begin(115200);
    Serial.print("\nInit...");
    gpio.begin();

    setPinMode();

    Serial.println("OK");

    startLCD();
}

int8_t checkKeys(void) {
    byte row, col;
    int input;
    for(row = 0; row < ROWS; row++) {
        gpio.digitalWrite(row, LOW);
        delay(1);
        input = gpio.digitalRead();
        gpio.digitalWrite(row, HIGH);
        for(col=0; col < COLS; col++) {
            if(input & (1<<(ROWS + col))) {
                return (byte)(COLS * row + col);
            }
        }
    }
    return -1;
}

void loop() {
    int8_t input = checkKeys(); 
    int8_t check = 0xFF;
    float result = num2.toFloat();
    bool change = false;
    if(result == 0) result = num1.toFloat();

    if(input < (COLS*ROWS) && input >= 0 && last != input) {
        Serial.print(input);
        Serial.print(": ");
        last = input;
        if(input >= 0) {
            check = kbdmap[input];
            Serial.print(check);
        }else{
            check = 0xFF;
        }
        Serial.println();
        delay(15); //Poor maker debounce
    }else{
        check = 0xFF;
    }

    if(check != 0xFF) {
        switch(check) {
            //K##.0CRE321MSO654FTe987U
            case 'K':
                cmd = 4;
                change = true;
                break;
            case 'R':
                cmd = 3;
                change = true;
                break;
            case 'S':
                cmd = 2;
                change = true;
                break;
            case 'T':
                cmd = 1;
                change = true;
                break;
            case 'C':
                cmd = 0;
                num1 = "";
                num2 = "";
                change = true;
                break;
            case 'U':
                cmd = 0;
                num2 = "";
                change = true;
                break;
            case 'F':
                if(cmd == 0) {
                    if(num1.length() > 0) num1.remove(num1.length()-1);
                }else{
                    if(num2.length() > 0) num2.remove(num2.length()-1);
                }
                change = true;
                break;
            case '#':
                switch(cmd) {
                    case 1:
                        result = num1.toFloat() + num2.toFloat();
                        break;
                    case 2:
                        result = num1.toFloat() - num2.toFloat();
                        break;
                    case 3:
                        result = num1.toFloat() * num2.toFloat();
                        break;
                    case 4:
                        result = num1.toFloat() / num2.toFloat();
                        break;
                }
                cmd = 0;
                num1 = result;
                num2 = "";
                change = true;
                break;
            case '.':
            case '0':
            case '1':
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
            case '8':
            case '9':
                if(cmd == 0) {
                    num1 += (char)check;
                }else{
                    num2 += (char)check;
                }
                change = true;
        }

        if(change) {
            lcd.clear();
            lcd.setCursor(0, 0);
            lcd.print(num1);
            if(cmd > 0) {
                lcd.setCursor(18, 0);
                lcd.print(" ");
                lcd.print(cmdmap[cmd]);
                lcd.setCursor(0, 1);
                lcd.print(num2);
            }
        }
    }
}

 

 

Hinweis: Der bei 19:40 gezeigter GPIO-Expander wurde mir seinerzeit von ICStation.com zur Verfügung gestellt.

BitNotice #137 – Und noch ein 40W-LED-Panel. Für 5€.

BitNotice #137 - Und noch ein 40W-LED-Panel. Für 5€.

(2 GB) 00:16:46

2018-10-17 16:13 🛈

Ab und an lohnt es sich durch die Artikellisten diverser Plattformen zu scrollen – ein 40W LED-Panel für 5€ incl. Versand? OK, gebraucht, aber wohl funktionsfähig. Neu kostet der Spaß etwa das 6-fache, also hey, ich bin dabei.

BitBastelei #304 – Server-Akkupacks: Was steckt drin

BitBastelei #304 - Server-Akkupacks: Was steckt drin

(73 MB) 00:17:14

2018-10-14 10:00 🛈

In professionellen Speichersystemen kommen oft Batterien oder große Kondensatoren zum Einsatz, um bei Stromausfällen die Risiken eines Datenverlustes zu minimieren. Erstere müssen regelmäßig getauscht werden um Probleme durch Alterung zuvorzukommen. Schauen wir doch mal, was da so im Inneren steckt.

BitNotice #136 – Step-Up-Module mit höheren Spannungen

BitNotice #136 - Step-Up-Module mit höheren Spannungen

(514 MB) 00:29:09

2018-10-10 17:30 🛈

Schaltregler um die Spannung zu erhöhen, auch als „Step-Up“ oder „Boost“ bekannt, gibt es wie Sand am Meer. Aber was, wenn man mal ein paar Volt mehr brauch?

BitBastelei #303 – DIY Storage-System mit SAS-Expander

BitBastelei #303 - DIY Storage-System mit SAS-Expander

(583 MB) 00:28:02

2018-10-07 10:00 🛈

Zu wenig USB? Hub. Zu wenig Netzwerk? Switch. Zu wenig S-ATA? Auch hier gibt es mit so genannten SAS-Expandern eine Art Verteiler, welche es ermöglichen mehrere Geräte an einem SAS-Anschluss zu betreiben. Und das Beste: Sie sind recht günstig zu haben. Ein solcher bildet die Basis für den Ersatz meines bisherigen Wäscheleinensystems. Und das damit ein Fake-USB-Kabel und die Flex zu tun haben? Nu das bekommen wir sicher auch noch raus.

Inhalt:

  • 00:00 Bisheriger Aufbau
  • 08:21 Server-Recycling: Storage-Gehäuse
  • 14:04 Das neue Konzept
  • 17:36 Aufbau und Fehlersuchen

BitNotice #135 – Mailbag: PCIe-USB-Voodoo, Staubsensor

BitNotice #135 - Mailbag: PCIe-USB-Voodoo, Staubsensor

(80 MB) 00:06:53

2018-10-04 18:29 🛈

Ihr kennt das: Noch ein paar Euro mehr Warenwert bis zum kostenlosen Versand. Also schnell noch ein paar interessant erscheinende Dinge mit in den Warenkorb. Schaunwama

BitBastelei #302 – Solar-Router – Ideen und Wege

BitBastelei #302 - Solar-Router - Ideen und Wege

(557 MB) 00:36:19

2018-09-30 10:00 🛈

WLAN ist praktisch – dumm nur, dass man nicht überall Empfang hat. Oder Strom. Ich möchte an einem Ort einen vom Stromnetz autarken Freifunk-Router installieren – versorgt per Solar. In diesem Video schauen wir auf die Mittel und Wege einen Router – oder übertragen auch andere Geräte mit ähnlichem Aufbau – über die Sonne zu versorgen.

Hinweis: Der hier gezeigte 841er wird auf Grund seines geringen Speichers mittelfristig vermutlich nicht mehr mit Freifunk funktionieren und sollte daher nicht für neue Aufbauten verwendet werden.

BitBastelei #301 – Canon EOS 550D Fehlersuche

BitBastelei #301 - Canon EOS 550D Fehlersuche

(446 MB) 00:24:22

2018-09-23 10:00 🛈

Ugh, doll. Meine Canon EOS 550D lässt sich plötzlich nicht mehr Einschalten. Eine Ursache ist nicht zu sehen und auch durchtauschen von Akku, Objektiv & Co bringt keine Änderung. Also bleibt nur eins: Zerlegen und hoffen, dass die Ursache sichtbar wird.

BitBastelei #300 – Externe Grafikkarte am PC/Server? Quick’n’Dirty-Weg

BitBastelei #300 - Externe Grafikkarte am PC/Server? Quick'n'Dirty-Weg

(534 MB) 00:21:27

2018-09-16 10:00 🛈

Grafikkarten im Server? Was für dein Ein oder Anderen vermutlich seltsam klingt ist doch gar nicht so ungewöhnlich, denn mit diesen kann man nicht nur Spiele spielen, sondern auch hoch-parallelisierte Berechnungen durchführen. Da ich aktuell mit diversen dieser Techniken herumexperimentiere soll also auch mein Home-Server eine solche erhalten. Nur gibt es da so ein paar Hindernisse.