Rolladensteuerung für Hutschiene im Selbstbau
Moderator: Co-Administratoren
-
- Beiträge: 32
- Registriert: 02.08.2021, 08:06
- System: Alternative CCU (auf Basis OCCU)
- Danksagung erhalten: 1 Mal
Re: Rolladensteuerung für Hutschiene im Selbstbau
Dann ein 1284P eventuell sogar als DIP Variante für die etwas betagteren Bastler (also ich z.B.). Kostet bei Reichelt 6,40 €.
Leiterplatte könnte ich erstellen...
Leiterplatte könnte ich erstellen...
-
- Beiträge: 12085
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 847 Mal
- Danksagung erhalten: 2139 Mal
- Kontaktdaten:
Re: Rolladensteuerung für Hutschiene im Selbstbau
Ist aber teuer geworden! Vor 1 Jahr hab ich dort 4.10 EUR für den 1284P DIP bezahlt.
Ein 644 würde bei 4 Kanälen auch reichen. Ausschlaggebend ist die höhere Anzahl I/O Pins ggü. dem 328P.
Speichermäßig würde der 328P sonst auch für 4 Kanäle reichen.
-
- Beiträge: 32
- Registriert: 02.08.2021, 08:06
- System: Alternative CCU (auf Basis OCCU)
- Danksagung erhalten: 1 Mal
Re: Rolladensteuerung für Hutschiene im Selbstbau
Also ich bin da völlig offen
Ich stell mir grad ein kleines Hutschienengehäuse vor mit einer JLCPCB Platine und oben schaut ein Antennendraht raus. Darunter eine Armada an Koppelrelais und da dran meine Tasterleitungen und meine Motorleitungen. Den Grundaufbau für 12 oder 24V können wir ja mal starten. Ob dann jemand eine 230V Platine daraus macht sei ihm selbst überlassen
Ich stell mir grad ein kleines Hutschienengehäuse vor mit einer JLCPCB Platine und oben schaut ein Antennendraht raus. Darunter eine Armada an Koppelrelais und da dran meine Tasterleitungen und meine Motorleitungen. Den Grundaufbau für 12 oder 24V können wir ja mal starten. Ob dann jemand eine 230V Platine daraus macht sei ihm selbst überlassen
-
- Beiträge: 32
- Registriert: 02.08.2021, 08:06
- System: Alternative CCU (auf Basis OCCU)
- Danksagung erhalten: 1 Mal
Re: Rolladensteuerung für Hutschiene im Selbstbau
Hi Jérôme,
würdest du das abändern der Software auf 4-Kanal übernehmen oder sieht das zeitlich eher schlecht aus ?
Wenn du mir dann noch den zu verwendenden Prozessor nennen könntest und die gewünschte Pins für Ein und Ausgabe würde ich mich mit der Platine ans Werk machen.
Alles natürlich auf Grundlage der Freiwilligkeit. Ich möchte hier niemanden mit meinen Problemen belasten...
Plan B wär ja dann immer noch die Variante mit 6 x 2fach Steuerung in einem Gehäuse...
Danke und Gruß
Papabastelt
würdest du das abändern der Software auf 4-Kanal übernehmen oder sieht das zeitlich eher schlecht aus ?
Wenn du mir dann noch den zu verwendenden Prozessor nennen könntest und die gewünschte Pins für Ein und Ausgabe würde ich mich mit der Platine ans Werk machen.
Alles natürlich auf Grundlage der Freiwilligkeit. Ich möchte hier niemanden mit meinen Problemen belasten...
Plan B wär ja dann immer noch die Variante mit 6 x 2fach Steuerung in einem Gehäuse...
Danke und Gruß
Papabastelt
-
- Beiträge: 12085
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 847 Mal
- Danksagung erhalten: 2139 Mal
- Kontaktdaten:
Re: Rolladensteuerung für Hutschiene im Selbstbau
Das ist ja keine große Sache, das bekommst du auch selbst hin.
Du definierst dir oben noch analog zu den bestehenden ON_RELAY_PIN / DIR_RELAY_PIN sowie ON_RELAY2_PIN,DIR_RELAY2_PIN noch 2 weitere Paare mit 3 und 4.
Das gleiche machst du auch mit den UP_BUTTON_PIN/DOWN_BUTTON_PIN.
Dann änderst du bei
typedef MultiChannelDevice<Hal, BlChannel, 2, BlindList0> BlindType;
die 2 in 4.
Die Zeilen mit den InternalButton<BlindType>... führst du auch chronologisch so fort bis
...
InternalButton<BlindType> btndown4(sdev, 8 );
Und das auch für das initPeerings():
Code: Alles auswählen
...
Peer p5(devid, 5);
Peer p6(devid, 6);
Peer p7(devid, 7);
Peer p8(devid, 8);
...
sdev.channel(3).peer(p5, p6);
sdev.channel(4).peer(p7, p8);
auch einfach fortführen.
Code: Alles auswählen
sdev.channel(3).init(ON_RELAY3_PIN, DIR_RELAY3_PIN);
sdev.channel(4).init(ON_RELAY4_PIN, DIR_RELAY4_PIN);
...
buttonISR(btnup3, UP_BUTTON3_PIN);
buttonISR(btndown3, DOWN_BUTTON3_PIN);
usw.
...
-
- Beiträge: 32
- Registriert: 02.08.2021, 08:06
- System: Alternative CCU (auf Basis OCCU)
- Danksagung erhalten: 1 Mal
Re: Rolladensteuerung für Hutschiene im Selbstbau
Dankeschön für die Info. Bin kein Softwerker aber ich probiere es mal wie beschrieben
Welchen Prozessor für 4 Kanal und lokale Bedienung (8 Tastereingänge) würdest du vorschlagen ?
Damit würde ich dann erstmal ins Rennen gehen.
Falls hier noch jemand Interesse an so einer Steuerung hat dann bitte hier melden und seine (Hardware-) Wünsche kundtun.
Ich versuche daraus dann mal was zu machen...
Hilfe in jeglicher Hinsicht ist auch immer gern gesehen.
Danke und Gruß
Papabastelt
Welchen Prozessor für 4 Kanal und lokale Bedienung (8 Tastereingänge) würdest du vorschlagen ?
Damit würde ich dann erstmal ins Rennen gehen.
Falls hier noch jemand Interesse an so einer Steuerung hat dann bitte hier melden und seine (Hardware-) Wünsche kundtun.
Ich versuche daraus dann mal was zu machen...
Hilfe in jeglicher Hinsicht ist auch immer gern gesehen.
Danke und Gruß
Papabastelt
-
- Beiträge: 12085
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 847 Mal
- Danksagung erhalten: 2139 Mal
- Kontaktdaten:
Re: Rolladensteuerung für Hutschiene im Selbstbau
Das war ja schon geklärt:Pappabastelt hat geschrieben: ↑04.08.2021, 09:09Welchen Prozessor für 4 Kanal und lokale Bedienung (8 Tastereingänge) würdest du vorschlagen ?
Pappabastelt hat geschrieben: ↑03.08.2021, 13:59Dann ein 1284P eventuell sogar als DIP Variante für die etwas betagteren Bastler (also ich z.B.). Kostet bei Reichelt 6,40 €.
-
- Beiträge: 32
- Registriert: 02.08.2021, 08:06
- System: Alternative CCU (auf Basis OCCU)
- Danksagung erhalten: 1 Mal
-
- Beiträge: 34
- Registriert: 20.11.2020, 16:23
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 1 Mal
Re: Rolladensteuerung für Hutschiene im Selbstbau
Hallo,
ich habe mich aus reiner Neugier mal daran gemacht einen 10 Kanal mit nem Mega 2560 in fliegender Verdrahtung zu basteln. Natürlich mit Levelshifter. Zum Schluss könnte man diese Konfig mit nem 2560 Core in nen Hutschienengehäuse stecken. Sofern die Verdrahtung bis in die Verteilung geht.
Irgendwie mag das ganze nicht so toll. Anlernen hat ohne Probleme funktioniert aber in der CCU3 Weboberfläche ist nur der erste Kanal unter "Einstellen" konfigurierbar und es gibt nur die 1. interne Taste. Und Auf Tastendrücke reagiert überhaupt nix.
Auch beim Start im "Serieller Monitor" scheint mir was merkwürdig. Sollte da nicht
Switch from 00 to 01
Switch from 01 to 02
usw stehen???
Hier mein abgeänderter Code.
Mfg Rico
ich habe mich aus reiner Neugier mal daran gemacht einen 10 Kanal mit nem Mega 2560 in fliegender Verdrahtung zu basteln. Natürlich mit Levelshifter. Zum Schluss könnte man diese Konfig mit nem 2560 Core in nen Hutschienengehäuse stecken. Sofern die Verdrahtung bis in die Verteilung geht.
Irgendwie mag das ganze nicht so toll. Anlernen hat ohne Probleme funktioniert aber in der CCU3 Weboberfläche ist nur der erste Kanal unter "Einstellen" konfigurierbar und es gibt nur die 1. interne Taste. Und Auf Tastendrücke reagiert überhaupt nix.
Auch beim Start im "Serieller Monitor" scheint mir was merkwürdig. Sollte da nicht
Switch from 00 to 01
Switch from 01 to 02
usw stehen???
Hier mein abgeänderter Code.
Code: Alles auswählen
//- -----------------------------------------------------------------------------------------------------------------------
// AskSin++
// 2017-12-14 papa Creative Commons - http://creativecommons.org/licenses/by-nc-sa/3.0/de/
//- -----------------------------------------------------------------------------------------------------------------------
// define this to read the device id, serial and device type from bootloader section
// #define USE_OTA_BOOTLOADER
#define EI_NOTEXTERNAL
#include <EnableInterrupt.h>
#include <AskSinPP.h>
#include <LowPower.h>
#include <Blind.h>
#define LED_PIN 5
#define CONFIG_BUTTON_PIN 3
////////////////////////////////////////////////////////////////////////////////////////////////Relay und Button Pins definiern
#define ON_RELAY_PIN 22
#define DIR_RELAY_PIN 23
#define ON_RELAY2_PIN 24
#define DIR_RELAY2_PIN 25
#define ON_RELAY3_PIN 26
#define DIR_RELAY3_PIN 27
#define ON_RELAY4_PIN 28
#define DIR_RELAY4_PIN 29
#define ON_RELAY5_PIN 30
#define DIR_RELAY5_PIN 31
#define ON_RELAY6_PIN 32
#define DIR_RELAY6_PIN 33
#define ON_RELAY7_PIN 34
#define DIR_RELAY7_PIN 35
#define ON_RELAY8_PIN 36
#define DIR_RELAY8_PIN 37
#define ON_RELAY9_PIN 38
#define DIR_RELAY9_PIN 39
#define ON_RELAY10_PIN 40
#define DIR_RELAY10_PIN 41
#define UP_BUTTON_PIN 42
#define DOWN_BUTTON_PIN 43
#define UP_BUTTON2_PIN 44
#define DOWN_BUTTON2_PIN 45
#define UP_BUTTON3_PIN 46
#define DOWN_BUTTON3_PIN 47
#define UP_BUTTON4_PIN 48
#define DOWN_BUTTON4_PIN 49
#define UP_BUTTON5_PIN 54
#define DOWN_BUTTON5_PIN 55
#define UP_BUTTON6_PIN 56
#define DOWN_BUTTON6_PIN 57
#define UP_BUTTON7_PIN 58
#define DOWN_BUTTON7_PIN 59
#define UP_BUTTON8_PIN 60
#define DOWN_BUTTON8_PIN 61
#define UP_BUTTON9_PIN 62
#define DOWN_BUTTON9_PIN 63
#define UP_BUTTON10_PIN 64
#define DOWN_BUTTON10_PIN 65
// 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 = {
{0x00, 0x05, 0xaf}, // Device ID
"JPBL200001", // Device Serial
{0x00, 0x05}, // Device Model
0x24, // Firmware Version
as::DeviceType::BlindActuator, // Device Type
{0x01, 0x00} // Info Bytes
};
/**
Configure the used hardware
*/
typedef AvrSPI<53, 51, 50, 52> RadioSPI;
typedef AskSin<StatusLed<LED_PIN>, NoBattery, Radio<RadioSPI, 2> > Hal;
DEFREGISTER(BlindReg0, MASTERID_REGS, DREG_INTKEY, DREG_CONFBUTTONTIME, DREG_LOCALRESETDISABLE)
class BlindList0 : public RegList0<BlindReg0> {
public:
BlindList0 (uint16_t addr) : RegList0<BlindReg0>(addr) {}
void defaults () {
clear();
// intKeyVisible(false);
confButtonTime(0xff);
// localResetDisable(false);
}
};
class BlChannel : public ActorChannel<Hal, BlindList1, BlindList3, PEERS_PER_CHANNEL, BlindList0, BlindStateMachine> {
private:
uint8_t on_relay_pin;
uint8_t dir_relay_pin;
public:
typedef ActorChannel<Hal, BlindList1, BlindList3, PEERS_PER_CHANNEL, BlindList0, BlindStateMachine> BaseChannel;
BlChannel () : on_relay_pin(0), dir_relay_pin(0) {}
virtual ~BlChannel () {}
virtual void switchState(uint8_t oldstate, uint8_t newstate, uint32_t stateDelay) {
BaseChannel::switchState(oldstate, newstate, stateDelay);
if ( newstate == AS_CM_JT_RAMPON && stateDelay > 0 ) {
motorUp();
}
else if ( newstate == AS_CM_JT_RAMPOFF && stateDelay > 0 ) {
motorDown();
}
else {
motorStop();
}
}
void motorUp () {
digitalWrite(dir_relay_pin, HIGH);
digitalWrite(on_relay_pin, HIGH);
}
void motorDown () {
digitalWrite(dir_relay_pin, LOW);
digitalWrite(on_relay_pin, HIGH);
}
void motorStop () {
digitalWrite(dir_relay_pin, LOW);
digitalWrite(on_relay_pin, LOW);
}
void init (uint8_t op, uint8_t dp) {
on_relay_pin = op;
dir_relay_pin = dp;
pinMode(on_relay_pin, OUTPUT);
pinMode(dir_relay_pin, OUTPUT);
motorStop();
BaseChannel::init();
}
};
// setup the device with channel type and number of channels
typedef MultiChannelDevice<Hal, BlChannel, 10, BlindList0> BlindType; ///////////////////////////////////////////////Anzahl Kanäle festlegen
Hal hal;
BlindType sdev(devinfo, 0x20);
ConfigButton<BlindType> cfgBtn(sdev);
InternalButton<BlindType> btnup(sdev, 1);
InternalButton<BlindType> btndown(sdev, 2);
InternalButton<BlindType> btnup2(sdev, 3);
InternalButton<BlindType> btndown2(sdev, 4);
InternalButton<BlindType> btnup3(sdev, 5);
InternalButton<BlindType> btndown3(sdev, 6);
InternalButton<BlindType> btnup4(sdev, 7);
InternalButton<BlindType> btndown4(sdev, 8);
InternalButton<BlindType> btnup5(sdev, 9);
InternalButton<BlindType> btndown5(sdev, 10);
InternalButton<BlindType> btnup6(sdev, 11);
InternalButton<BlindType> btndown6(sdev, 12);
InternalButton<BlindType> btnup7(sdev, 13);
InternalButton<BlindType> btndown7(sdev, 14);
InternalButton<BlindType> btnup8(sdev, 15);
InternalButton<BlindType> btndown8(sdev, 16);
InternalButton<BlindType> btnup9(sdev, 17);
InternalButton<BlindType> btndown9(sdev, 18);
InternalButton<BlindType> btnup10(sdev, 19);
InternalButton<BlindType> btndown10(sdev, 20);
//*/
void initPeerings (bool first) {
// create internal peerings - CCU2 needs this
if ( first == true ) {
HMID devid;
sdev.getDeviceID(devid);
Peer p1(devid, 1);
Peer p2(devid, 2);
Peer p3(devid, 3);
Peer p4(devid, 4);
Peer p5(devid, 5);
Peer p6(devid, 6);
Peer p7(devid, 7);
Peer p8(devid, 8);
Peer p9(devid, 9);
Peer p10(devid, 10);
Peer p11(devid, 11);
Peer p12(devid, 12);
Peer p13(devid, 13);
Peer p14(devid, 14);
Peer p15(devid, 15);
Peer p16(devid, 16);
Peer p17(devid, 17);
Peer p18(devid, 18);
Peer p19(devid, 19);
Peer p20(devid, 20);
sdev.channel(1).peer(p1, p2);
sdev.channel(2).peer(p3, p4);
sdev.channel(3).peer(p5, p6);
sdev.channel(4).peer(p7, p8);
sdev.channel(5).peer(p9, p10);
sdev.channel(6).peer(p11, p12);
sdev.channel(7).peer(p13, p14);
sdev.channel(8).peer(p15, p16);
sdev.channel(9).peer(p17, p18);
sdev.channel(10).peer(p19, p20);
}
}
void setup () {
DINIT(57600, ASKSIN_PLUS_PLUS_IDENTIFIER);
//storage().setByte(0,0);
bool first = sdev.init(hal);
sdev.channel(1).init(ON_RELAY_PIN, DIR_RELAY_PIN);
sdev.channel(2).init(ON_RELAY2_PIN, DIR_RELAY2_PIN);
sdev.channel(3).init(ON_RELAY3_PIN, DIR_RELAY3_PIN);
sdev.channel(4).init(ON_RELAY4_PIN, DIR_RELAY4_PIN);
sdev.channel(5).init(ON_RELAY5_PIN, DIR_RELAY5_PIN);
sdev.channel(6).init(ON_RELAY6_PIN, DIR_RELAY6_PIN);
sdev.channel(7).init(ON_RELAY7_PIN, DIR_RELAY7_PIN);
sdev.channel(8).init(ON_RELAY8_PIN, DIR_RELAY8_PIN);
sdev.channel(9).init(ON_RELAY9_PIN, DIR_RELAY9_PIN);
sdev.channel(10).init(ON_RELAY10_PIN, DIR_RELAY10_PIN);
buttonISR(cfgBtn, CONFIG_BUTTON_PIN);
buttonISR(btnup, UP_BUTTON_PIN);
buttonISR(btndown, DOWN_BUTTON_PIN);
buttonISR(btnup2, UP_BUTTON2_PIN);
buttonISR(btndown2, DOWN_BUTTON2_PIN);
buttonISR(btnup3, UP_BUTTON3_PIN);
buttonISR(btndown3, DOWN_BUTTON3_PIN);
buttonISR(btnup4, UP_BUTTON4_PIN);
buttonISR(btndown4, DOWN_BUTTON4_PIN);
buttonISR(btnup5, UP_BUTTON5_PIN);
buttonISR(btndown5, DOWN_BUTTON5_PIN);
buttonISR(btnup6, UP_BUTTON6_PIN);
buttonISR(btndown6, DOWN_BUTTON6_PIN);
buttonISR(btnup7, UP_BUTTON7_PIN);
buttonISR(btndown7, DOWN_BUTTON7_PIN);
buttonISR(btnup8, UP_BUTTON8_PIN);
buttonISR(btndown8, DOWN_BUTTON8_PIN);
buttonISR(btnup9, UP_BUTTON9_PIN);
buttonISR(btndown9, DOWN_BUTTON9_PIN);
buttonISR(btnup10, UP_BUTTON10_PIN);
buttonISR(btndown10, DOWN_BUTTON10_PIN);
initPeerings(first);
sdev.initDone();
}
void loop() {
bool worked = hal.runready();
bool poll = sdev.pollRadio();
if ( worked == false && poll == false ) {
hal.activity.savePower<Idle<> >(hal);
}
}
-
- Beiträge: 12085
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 847 Mal
- Danksagung erhalten: 2139 Mal
- Kontaktdaten:
Re: Rolladensteuerung für Hutschiene im Selbstbau
Mach mal einen kompletten RESET (Configtaster > 6 Sekunden oder Ablernen mit Werksreset) und lern neu an.