Schlagwort-Archive: Arduino

BitBastelei #322 – STM8: Wenn’s mal günstiger sein soll

BitBastelei #322 - STM8: Wenn's mal günstiger sein soll

(198 MB) 00:17:34

2019-02-24 11:00 🛈

Mikrocontroller stecken heute in fast jedem Produkt. Wenn man selbst bastelt findet sich meist ein ATMega328P (aka Arduino), ESP8266/ESP32 oder vielleicht mal ein STM32. Wenn das Projekt eher anspruchslos ist, man aber noch ein paar Cent sparen möchte, ist auch der eher selten anzutreffende STM8 eine Option. Schauen wir mal, wie man ihn Programmiert bekommt und er sich schlägt.

Links zum Thema

BitBastelei #321 – WLAN-Stromzähler mit Modbus, ESP8266/Arduino und SDM120

BitBastelei #321 - WLAN-Stromzähler mit Modbus, ESP8266/Arduino und SDM120

(1 GB) 00:35:49

2019-02-17 11:00 🛈

Vor einiger Zeit hatte ich mir einen Messwandlerzähler besorgt, welcher beim Thema Stromnetzanalyse deutlich mehr Daten als mein bisheriger S0-Zähler liefern sollte. Die digitale Schnittstelle dazu nennt sich „Modbus“ und basiert auf RS485. Um mich damit vertraut zu machen habe ich mir einen kleineren, einphasigen Modbus-Zähler geschnappt und mir angesehen was notwendig ist um diesen mit einem ESP8266 zu verbinden.

Links zum Thema

BitBastelei #318 – RGB-LED-Video-Wall-Panel (P4)

BitBastelei #318 - RGB-LED-Video-Wall-Panel (P4)

(1 GB) 00:30:04

2019-01-27 11:00 🛈

Mit der in #308 gezeigten LED-Matrix ließ sich ja schon einiges an Spaß haben, aber eine Farbe und 8×8 LEDs ist halt auch etwas einschränkend. Nun also „mehr und bunt“: Eine RGB-LED-Matrix, welche normal bei großen Videoleinwänden zum Einsatz kommt, ist als neues Spielzeug eingetroffen.

Weitere Informationen und Links

Korrekturen und Ergänzungen:

Inzwischen hat BigClive auch eine eigene Software zum Ansteuern dieser LED-Module online gestellt: https://www.youtube.com/watch?v=_dB1w99AwGE

BitBastelei #311 – Lange Funkstrecken mit Arduino, LoRaWAN/RFM95W und The Things Network

BitBastelei #311 - Lange Funkstrecken mit Arduino, LoRaWAN/RFM95W und The Things Network

(362 MB) 00:23:35

2018-12-02 11:00 🛈

Wenn man Daten drahtlos übertragen möchte ist mit den üblichen Funkmodulen für Arduino & Co meist nach wenigen hundert Metern Schluss. Zwar gibt es mit Handymodulen einfache Möglichkeiten, jedoch ist hierzu eine entsprechende Datenkarte samt Vertrag notwendig. An dieser Stelle kommt die proprietäre Modulationsart „LoRa“ (Long Range) ins Spiel: Hiermit können draußen im frei Nutzbaren 868MHz-Bereich Strecken von mehreren Kilometern überbrückt werden. Wem das nicht reicht kann auf LoraWAN zurückgreifen. Hierbei betreiben Freiwillige und Firmen LoRa-Empfänger, welche empfangene Datenpakete ins Internet weiterleiten.

Ardunio-Library
https://github.com/matthijskooijman/arduino-lmic

LoRa-Videos von Andreas Spiess (EN)
https://www.youtube.com/watch?v=hMOwbNUpDQA&list=PL3XBzmAj53Rkkogh-lti58h_GkhzU1n7U

TheThingsNetwork
https://thethingsnetwork.org

Hamnetdb (Funkstrecken simulieren)
https://hamnetdb.net/map.cgi

RMOnline (Funkausbreitung simulieren)
http://www.ve2dbe.com/rmonline.html

BitBastelei #310 – VSCode und PlatformIO statt Arduino IDE

BitBastelei #310 - VSCode und PlatformIO statt Arduino IDE

(144 MB) 00:32:35

2018-11-25 11:00 🛈

Die Arduino IDE dürfte nahezu jeder kennen, der mit Mikrocontrollern herumspielt. Ich selbst nutze in meinem Videos jedoch immer wieder auch PlatformIO auf Basis von VSCode. Daimmer mal wieder Fragen zur Einrichtung aufkamen also mal ein schneller Blick auf die Unterschiede, Installation und Funktionen.

BitBastelei #308 – LED-Matrix mit MAX7219

BitBastelei #308 - LED-Matrix mit MAX7219

(490 MB) 00:22:16

2018-11-11 11:00 🛈
Wenn es darum geht viele LEDs anzusteuern gibt es viele Möglichkeiten: Serielle Systeme wie z.B. die „Neopixel“-Streifen oder Matrizen wie z.B. bei meiner 7-Segment-Anzeige sind die häufigsten Vertreter. Letztere hatte ich zuletzt händisch mit Schieberegistern und Dekadenzählern aufgebaut – mit dem MAX7219 gibt es jedoch einen fertigen Controller, welcher einen deutlich einfacheren Aufbau verspricht.

Hinweise und Ergänzungen:

Code

BitBastelei #308 – LED-Matrix mit MAX7219 weiterlesen

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.

BitBastelei #298 – BME280 am ESP8266: Temperatur, Luftfeuchte, Luftdruck per WLAN

BitBastelei #298 - BME280 am ESP8266: Temperatur, Luftfeuchte, Luftdruck per WLAN

(311 MB) 00:18:31

2018-09-02 10:00 🛈
Sensoren habe ich viele, der BME280 verspricht aber ein Alleskönner zu sein: Neben Temperatur und Luftfeuchte soll er auch den Luftdruck übermitteln können. Zusammen mit einem ESP8266 ist so schnell eine eigene „Wetterstation“ gebaut, welche die Messwerte auf einer Webseite anzeigt, per MQTT an Haussteuerungen wie HomeAssistant gibt oder mittels HTTP einen Volkszähler befüllt.

Code:
https://github.com/adlerweb/ESP8266-BME280-Multi
Video von Chris Figge
https://www.youtube.com/watch?v=KMwVNuzghsY

BitBastelei #296 – WiFi-Schalter Sonoff Basic – eWeLink, Tasmota, PlatformIO/Android

BitBastelei #296 - WiFi-Schalter Sonoff Basic - eWeLink, Tasmota, PlatformIO/Android

(278 MB) 00:31:55

2018-08-19 10:00 🛈
In der letzten Folge BitBasics hatten wir ja bereits gesehen, wie man mit einem ESP8266 einen WLAN-Schalter bauen kann. Heute werfen wir mal einen Blick auf ein kommerzielles Produkt.

Achtung: Der Anschluss an das öffentliche Stromnetz darf nur durch autorisiertes Fachpersonal erfolgen

Inhalt:

0:00 Das Gerät
4:24 Innenleben
6:26 Anschluss
8:39 eWeLink: Die offizielle App
13:32 Was ist Tasmota
15:11 Der Programmierport
23:07 Einrichtung und Nutzung von PlatformIO
26:09 Anpassung von Tasmota mit PlatformIO
28:47 Eigene Software mit PlatformIO

Links:

eWeLink: http://sonoff.itead.cc/en/ewelink
Tasmota: https://github.com/arendst/Sonoff-Tasmota
Produkt: https://amzn.to/2waRaFP *
oder: http://s.click.aliexpress.com/e/MizYO16 *
PlatformIO: https://platformio.org/
Selfmade-Code: https://github.com/adlerweb/sonoff-mqtt

* Affiliate-Link: Durch Nutzung erkennt der Anbieter, dass Ihr über meine Seite zu ihnen gefunden habt. Ich werde prozentual an euren Umsätzen beteiligt. Für euch bleiben die Preise natürlich gleich.

Das Gerät wurde selbst erworben.

BitNotice #133 – ESP32 jetzt direkt per Arduino nutzbar

BitNotice #133 - ESP32 jetzt direkt per Arduino nutzbar

(20 MB) 00:02:58

2018-08-14 19:45 🛈
Die Zeiten, in denen man selbst Hand anlegen musste sind vorbei: Seit einigen Tagen kann die ESP32-Toolchain für Arduino direkt über den Boardmanager installiert werden