2 Kanal Dimmer auf STM32 Basis zur Diskussion

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

der-pw
Beiträge: 435
Registriert: 26.01.2019, 13:39
Wohnort: Wolfenbüttel
Hat sich bedankt: 126 Mal
Danksagung erhalten: 100 Mal
Kontaktdaten:

Re: 2 Kanal Dimmer auf STM32 Basis zur Diskussion

Beitrag von der-pw » 16.03.2023, 12:47

TRyan hat geschrieben:
28.02.2023, 13:54
In dem fake STM32 scheint, das I2C nicht richtig zu funktionieren, bzw. kann das EEPROM nicht richtig schreiben/lesen.
Magst du vielleicht noch sagen, woher du deine Blue-Pills besorgt hast?
Dann rennt man nicht gleich gegen dieselbe Wand (sondern eine andere :D )

Ich habe meine damals im AZ-Delivery Shop beim großen A gekauft.
2019 für 10€ aktuell für 30€, aber die haben definitiv auch keine echten STMs verbaut.
Da spackt allerdings eher der Taktgeber für den LSE, der uns hier aber nicht interessiert.

Hab jetzt aktuell mal welche von Ali geordert mit der Bezeichnung "Original Chip" statt "Made in China" :lol: :lol:
zwar für ein anderes Projekt, aber ich werde mal einen auf eine Dimmerplatine aufsockeln und testen.
Grüße,
Patrick

https://github.com/der-pw

heidepower
Beiträge: 66
Registriert: 26.12.2018, 20:32

Re: 2 Kanal Dimmer auf STM32 Basis zur Diskussion

Beitrag von heidepower » 01.08.2023, 21:17

Hi, ich benutze die 1Kanal Version "HM-LC-Dim1PWM-CV" auf einem STM32 und würde gerne einen Drehencoder benutzen. Leider reagiert der Aktor auf keine Aktion des encoders.

Ein langer und kurzer Druck wird in der Console erkannt, aber eine Drehbewegung nicht.

Code: Alles auswählen

AskSin++ v5.0.2 (Aug  1 2023 20:44:33)
Address Space: 32 - 1217
CC init1
CC Version: 04
 - ready
Config Freq: 0x2165BA
ID: 126701  Serial: AskSinPP21
<- 0F 01 A2 10 126701 00FFFF 06 01 00 00 00 00  - 7074
-> 0A 01 80 02 00FFFF 126701 00  - 7206
waitAck: 01
<- 0F 02 A2 10 126701 00FFFF 06 02 00 00 3E 00  - 7238
-> 0A 02 80 02 00FFFF 126701 00  - 7370
waitAck: 01
<- 0F 03 A2 10 126701 00FFFF 06 03 00 00 40 00  - 7401
-> 0A 03 80 02 00FFFF 126701 00  - 7532
waitAck: 01
 debounce
 pressed
 released
-> 0B 04 02 40 126701 126701 01 00  - 15820

 debounce
 pressed
 longpressed
-> 0B 05 02 40 126701 126701 41 01  - 19786
 longpressed
-> 0B 06 02 40 126701 126701 41 01  - 20186
 longreleased
Nach dem Reset

Code: Alles auswählen

RESET
AskSin++ v5.0.2 (Aug  1 2023 20:44:33)
Address Space: 32 - 1217
00000000
Init Storage: CAFE76DB
CC init1
CC Version: 04
 - ready
Config Freq: 0x2165BA
ID: 126701  Serial: AskSinPP21
<- 0F 01 86 10 126701 000000 06 01 00 00 00 00  - 7717
<- 0F 02 86 10 126701 000000 06 02 00 00 00 00  - 7815
<- 0F 03 86 10 126701 000000 06 03 00 00 00 00  - 7916
 debounce
 pressed
 released
-> 0B 04 02 40 126701 126701 01 00  - 13935

 debounce
 pressed
 longpressed
-> 0B 05 02 40 126701 126701 41 01  - 15344
 longreleased

Temp: 269
<- 0F 06 86 10 126701 000000 06 01 0A 00 00 0A  - 21929
ignore 19 50 00 8F 24249D F00001 00 0F AC BA F6 52 CE 8C 31 4A 51 C9 75 6B 69 91  - 24171
ignore 0E 03 A2 10 F33201 00FFFF 06 01 00 00 78  - 31746
ignore 0A 03 80 02 00FFFF F33201 00  - 31870

der-pw
Beiträge: 435
Registriert: 26.01.2019, 13:39
Wohnort: Wolfenbüttel
Hat sich bedankt: 126 Mal
Danksagung erhalten: 100 Mal
Kontaktdaten:

Re: 2 Kanal Dimmer auf STM32 Basis zur Diskussion

Beitrag von der-pw » 01.08.2023, 21:39

R4/R5 und C4/C5 hast du aber bestückt?
Grüße,
Patrick

https://github.com/der-pw

heidepower
Beiträge: 66
Registriert: 26.12.2018, 20:32

Re: 2 Kanal Dimmer auf STM32 Basis zur Diskussion

Beitrag von heidepower » 01.08.2023, 23:10

der-pw hat geschrieben:
01.08.2023, 21:39
R4/R5 und C4/C5 hast du aber bestückt?
Ja, habe ich…mein Layout und Schaltplan habe ich auch schon mehrwach kontrolliert.

papa
Beiträge: 705
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 24 Mal
Danksagung erhalten: 120 Mal

Re: 2 Kanal Dimmer auf STM32 Basis zur Diskussion

Beitrag von papa » 02.08.2023, 05:20

Welchen Sketch hast Du genommen ?
Anfragen zur AskSin++ werden nur im Forum beantwortet

heidepower
Beiträge: 66
Registriert: 26.12.2018, 20:32

Re: 2 Kanal Dimmer auf STM32 Basis zur Diskussion

Beitrag von heidepower » 02.08.2023, 13:01

papa hat geschrieben:
02.08.2023, 05:20
Welchen Sketch hast Du genommen ?
https://github.com/pa-pa/AskSinPP/blob/ ... PWM-CV.ino

Das is der Code der auf dem STM32 aufgespielt ist. #define USE_HW_SERIAL wurde auskommentiert sowie Device ID und Dervice Sreial wurde von mir angepasst.

Code: Alles auswählen

//- -----------------------------------------------------------------------------------------------------------------------
// AskSin++
// 2018-08-09 papa Creative Commons - http://creativecommons.org/licenses/by-nc-sa/3.0/de/
// ci-test=yes board=bluepill aes=no
//- -----------------------------------------------------------------------------------------------------------------------

// define this to read the device id, serial and device type from bootloader section
// #define USE_OTA_BOOTLOADER

#define STORAGEDRIVER at24cX<0x50,128,32>
#define TICKS_PER_SECOND 500UL

// Derive ID and Serial from the device UUID
//#define USE_HW_SERIAL

#include <SPI.h>    // when we include SPI.h - we can use LibSPI class
#include <Wire.h>
#include <EEPROM.h> // the EEPROM library contains Flash Access Methods
#include <OneWireSTM.h>
#include <AskSinPP.h>

#include <Dimmer.h>
#include <Sensors.h>
#include <sensors/Ds18b20.h>


// we use a STM32
// STM32 pin for the LED
#define LED_PIN LED_BUILTIN

// STM32 pin for the config button
#define CONFIG_BUTTON_PIN PB12

#define DIMMER1_PIN PB1

#define ENCODER1_SWITCH PB15
#define ENCODER1_CLOCK  PB13
#define ENCODER1_DATA   PB14


// number of available peers per channel
#define PEERS_PER_CHANNEL 6

// all library classes are placed in the namespace 'as'
using namespace as;

// define all device properties
const struct DeviceInfo PROGMEM devinfo = {
    // ID and Serial gets derived from STM32-UUID (see #define USE_HW_SERIAL)
    {0x12,0x67,0x01},       // Device ID
    "AskSinPP21",           // Device Serial
    {0x00,0x67},            // Device Model
    0x2C,                   // Firmware Version
    as::DeviceType::Dimmer, // Device Type
    {0x01,0x00}             // Info Bytes
};

/**
 * Configure the used hardware
 */
typedef LibSPI<PA4> RadioSPI;
typedef AskSin<StatusLed<LED_BUILTIN>,NoBattery,Radio<RadioSPI,PB0> > HalType;
typedef DimmerChannel<HalType,PEERS_PER_CHANNEL> ChannelType;
typedef DimmerDevice<HalType,ChannelType,3,3> DimmerType;

HalType hal;
DimmerType sdev(devinfo,0x20);
DimmerControl<HalType,DimmerType,PWM16<> > control(sdev);
ConfigButton<DimmerType> cfgBtn(sdev);
InternalEncoder<DimmerType> enc1(sdev,1);


class TempSens : public Alarm {
  Ds18b20  temp;
  OneWire  ow;
  bool     measure;
public:
  TempSens () : Alarm(0), ow(PB5), measure(false) {}
  virtual ~TempSens () {}

  void init () {
    Ds18b20::init(ow, &temp, 1);
    if( temp.present()==true ) {
      set(seconds2ticks(15));
      sysclock.add(*this);
    }
  }

  virtual void trigger (AlarmClock& clock) {
    if( measure == false ) {
      temp.convert();
      set(millis2ticks(800));
    }
    else {
      temp.read();
      DPRINT("Temp: ");DDECLN(temp.temperature());
      control.setTemperature(temp.temperature());
      set(seconds2ticks(60));
    }
    measure = !measure;
    clock.add(*this);
  }
};
TempSens tempsensor;

void setup () {
  delay(5000);
  DINIT(57600,ASKSIN_PLUS_PLUS_IDENTIFIER);
  Wire.begin();
  bool first = control.init(hal,DIMMER1_PIN);
  buttonISR(cfgBtn,CONFIG_BUTTON_PIN);
  buttonISR(enc1,ENCODER1_SWITCH);
  encoderISR(enc1,ENCODER1_CLOCK,ENCODER1_DATA);


  if( first == true ) {
    sdev.channel(1).peer(enc1.peer());
    DimmerList3 l3 = sdev.channel(1).getList3(enc1.peer());
    l3.lg().actionType(AS_CM_ACTIONTYPE_INACTIVE);
  }

  tempsensor.init();

  sdev.initDone();
  sdev.led().invert(true);
  
  // Adjust CC1101 frequency
  // hal.radio.initReg(CC1101_FREQ2, 0x21);
  // hal.radio.initReg(CC1101_FREQ1, 0x65);
  // hal.radio.initReg(CC1101_FREQ0, 0xE2);

  DDEVINFO(sdev);
}

void loop () {
  enc1.process<ChannelType>(sdev.channel(1));

  bool worked = hal.runready();
  bool poll = sdev.pollRadio();
  if( worked == false && poll == false ) {
//    hal.activity.savePower<Idle<true> >(hal);
  }
}

papa
Beiträge: 705
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 24 Mal
Danksagung erhalten: 120 Mal

Re: 2 Kanal Dimmer auf STM32 Basis zur Diskussion

Beitrag von papa » 03.08.2023, 04:35

Hm - bist DU Dir sicher, dass die Pins stimmen
Anfragen zur AskSin++ werden nur im Forum beantwortet

Benutzeravatar
stan23
Beiträge: 2038
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 582 Mal
Danksagung erhalten: 336 Mal
Kontaktdaten:

Re: 2 Kanal Dimmer auf STM32 Basis zur Diskussion

Beitrag von stan23 » 03.08.2023, 07:43

Ich benutze die gleiche Platine mit dem Sketch HM-LC-Dim5PWM-CV mit einem einzelnen Kanal und habe dort die gleichen Pins für den Encoder.
Tatsächlich sind sogar beide Encoder dran und beide auf den gleichen Kanal verbunden.
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

der-pw
Beiträge: 435
Registriert: 26.01.2019, 13:39
Wohnort: Wolfenbüttel
Hat sich bedankt: 126 Mal
Danksagung erhalten: 100 Mal
Kontaktdaten:

Re: 2 Kanal Dimmer auf STM32 Basis zur Diskussion

Beitrag von der-pw » 03.08.2023, 08:50

Den Sketch hatte ich ja mal eingereicht. Da mein Platinendesign ja auf deiner (papa) Vorlage basiert, passt soweit auch das Pinmapping.
Bin gerade im Urlaub und kann daher nichts testen.
Grüße,
Patrick

https://github.com/der-pw

heidepower
Beiträge: 66
Registriert: 26.12.2018, 20:32

Re: 2 Kanal Dimmer auf STM32 Basis zur Diskussion

Beitrag von heidepower » 03.08.2023, 15:58

papa hat geschrieben:
03.08.2023, 04:35
Hm - bist DU Dir sicher, dass die Pins stimmen
Kann ich heuet Abend nochmal prüfen...

An dem Encoder sind noch 3 Widerstände drauf...passt das?

https://www.amazon.de/GIAK-Drehwinkelge ... th=1&psc=1

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“