Is het ook mogelijk een Kaku dimmer set aan te sturen? Desnoods door het versturen van een 'ruw' signaal?
[ Voor 32% gewijzigd door -Tim- op 30-09-2011 10:29 ]
[ Voor 32% gewijzigd door -Tim- op 30-09-2011 10:29 ]
helaas werkt het niet met die code. Ik denk voor een groot deel omdat er slechts een thermometer in de transmitter zit.Fuzzillogic schreef op vrijdag 16 september 2011 @ 23:54:
@R0berto, [...] Over die Alecto: je kunt Fuzzillogic in "433MHz-communicatie met microcontrollers" eens proberen. Als het werkt, dan heb je geluk gehad
Ik gebruik een digitale oscilloscoop van €200. Dat is sowieso best handig bij het knutselen. Voor deze toepassing kan het echter goedkoper: de line-in van je pc. Dat is hier onlangs ook nog even langsgekomen meen ik. "zomaar" de uitgang van de ontvanger aansluiten lijkt me geen goed idee, daar hoort toch nog minimaal een weerstand tussen. Hoeveel precies durf ik niet te zeggen. Het is iig goedkoop, doeltreffend en geeft je onbeperkte opnamemogelijkheid, wat voor het bekijken van een digitaal signaal toch erg prettig is. Er staan vast legio voorbeelden en howtos op internet.R0berto schreef op vrijdag 30 september 2011 @ 15:47:
[...]
Dus dan wederom mijn vraag: hoe kan ik het signaal van uit de ether oppikken en analyseren??
Verwijderd
Hahaa wat een work-aroundjongerenchaos schreef op dinsdag 04 oktober 2011 @ 08:50:
@ Fuzzillogic
Ik heb een oplossing voor je dimmer probleem. Er is inderdaad geen vast refentiepunt, omdat bij aanschakelen de laatste dimstand wordt aangehouden. De oplossing is simpel:
Plaats voor de dimmer een ELRO of andere 433mhz schakelunit. Zodra de dimmer via de schakelunit wordt uitgeschakeld zal de dimmer weer in de 0 stand opstarten (de dimmer kan namelijk alleen de stand onthouden wanneer er spanning op de dimmer blijft staan).
[ Voor 4% gewijzigd door jongerenchaos op 06-10-2011 16:04 ]
[ Voor 14% gewijzigd door Sjoerd op 18-10-2011 21:55 ]
Modelbouw - Alles over modelbouw, van RC tot diorama
Modelbouw - Alles over modelbouw, van RC tot diorama
Thanks for the offer, maar het is ook een beetje zonde om €20 en meer te spenderen aan verzendkosten voor een set van €40Sjoerd schreef op woensdag 19 oktober 2011 @ 20:26:
Als je echt interesse hebt om alles HomeEasy compatible te maken ben ik bereid een setje naar je op te sturen om mee te testen (zou hem dan uiteindelijk ook weer wel graag terug hebben).
PHP devven is ook mijn belangrijkste bron van inkomsten. Maar hardware-dingetjes maken is een stuk tastbaarder, dat heeft toch wel meer charme eigenlijk.Ik denk zeker wel dat hier interesse voor is. Ben zelf echter PHP/webdeveloper en mijn kennis gaat dus ook niet zo ver qua elektronica. Een leuke GUI of controle panel in elkaar knutselen kan ik dan weer wel.
Ik ben net verhuisd en ga weer vanaf nul beginnen. in mijn oude huis was ik trouwens bezig om het scada pakket Mango te koppelen met arduino. Ik zag dat er een CAN-Bus shield was waarmee mogelijk nog meer mogelijkheden zijn om Mango te koppelen. alle gegevens zouden dan centraal gebracht kunnen worden op één arduino met een CAN-Bus shield.Fuzzillogic schreef op woensdag 19 oktober 2011 @ 00:03:
Ik vraag me af of er interesse is in een kit/all-in-one-vorm van dit systeem? Daarbij kun je denken aan een mooi kastje voor aan de muur met display, ingebouwde 433MHz zender en ontvanger. Dat aangevuld met een losse ......
Mensen hier met ideeën?
Het is mij eindelijk gelukt om de Arduino werkend te krijgen. Heb toch maar een Action setje gekocht. Het protocol van het Lidl setje is toch net iets anders. Nu eens kijken of ik daar uitkom. Tevens een Bluetooth module in bestelling staan om dat ding ook via Android te kunnen bedienen: https://sites.google.com/site/jsrsprojects/androidir En eigenlijk wil ik dat ding ook via mijn IR afstandsbediening kunnen bedienen. Dus nog ff kijken hoe dat zit met zo'n IR ontvanger. Nu nog ergens tijd zien te vinden. Overigens is er al iemand met Android aan de gang gegaan. http://www.youtube.com/watch?v=cXc8SxjUVcsFuzzillogic schreef op woensdag 19 oktober 2011 @ 00:03:
Ik kan alleen uit eigen ervaring getuigen dat de library voor de blokker/action/kaku behoorlijk goed werken, zowel zenden als ontvangen. Ik gebruik het dagelijks, om te "vertalen" van action- en kaku-zenders naar een blokker-ontvanger. Gelijktijdig speelt de Arduino als repeater voor een cresta-setje.
De dev-branch werkt ook met Arduino 1.0 RC en is eigenlijk aan te raden boven de default branch. (Wordt tijd dat ik de boel merge..)
Home Easy-support zou fijn zijn, maar ik heb geen enkele mogelijkheid om het te testen bij gebrek aan deze set. Als de code heel afwijkend is van de oude KaKu's, dan is een losse library de betere optie, net zoals het nu voor de CrestaReceiver werkt.
Ik vraag me af of er interesse is in een kit/all-in-one-vorm van dit systeem? Daarbij kun je denken aan een mooi kastje voor aan de muur met display, ingebouwde 433MHz zender en ontvanger. Dat aangevuld met een losse Cresta sensor en een kaku-achtige set met 3 ontvangers + remote. De µC is Arduino-compatible zijn (a la Leonardo) en gewoon met de Arduino IDE + open source libraries te programmeren. Eventueel nog mogelijkheid tot externe uitbreiding, via I2C/SPI/COM oid. Voordeel van dit alles: een laagdrempelig systeem dat gegarandeerd met elkaar samenwerkt.
Helaas ben ik slechts een softwaredeveloper met zeer beperkte kennis van elektrotechniek. Ik weet niet eens waar ik een mooie passende behuizing vandaan moet toveren, laat staan dat ik een kwalitatief goed printje kan ontwerpen.
Mensen hier met ideeën?
[ Voor 3% gewijzigd door pacificocean op 28-10-2011 13:49 ]
En die aanpassingen zitten dus in de dev-branch op bitbucketPiepersnijder schreef op maandag 31 oktober 2011 @ 18:03:
Dat kan zeker. Ik heb zelf die library aangepast voor de Elro.
Dat is precies wat ik ook zoek. De nieuwe KAKu codering in de library stoppen.stavast schreef op dinsdag 01 november 2011 @ 22:37:
Zat de NewKaku al ergens in een library? wil hem namelijk uit de nodo software halen en in de library stoppen.. (of is dit vloeken in de kerk?)
weet niet of ik er de tijd voor heb...
via die library kun je code makkelijker en overzichtelijker maken en handiger kunnen toepassen bij de communicatie over ethernet.pacificocean schreef op dinsdag 01 november 2011 @ 23:56:
Wat is jullie reden om new kaku uit nodo te halen en in de library te stoppen? Ik zo het juist andersom doen. Ation blokker set etc in nodo stoppen.
De insteek van Nodo is anders dan van de 433MHz library: daar waar Nodo een complete oplossing is voor domotica is deze library enkel bedoeld als bouwsteen voor je eigen sketches. Nodo heeft een event-systeem waarmee je je eigen domotica-bediening kunt maken, maar vroeger of later loop je toch tegen grenzen aan. Met deze library liggen die grenzen veel verder: je programmeert immers gewoon in Arduino/C++ wat toch ietsje krachtiger ispacificocean schreef op dinsdag 01 november 2011 @ 23:56:
Wat is jullie reden om new kaku uit nodo te halen en in de library te stoppen? Ik zo het juist andersom doen. Ation blokker set etc in nodo stoppen.
/me heeft eindelijk ook een icoontje.. woef.. boeien..
nuelectronics.com (freeduino, arduino, enz..), ebay.nl (hard to get dingen, prijs vergelijking enz), dickbest.nl (al mijn overig spul).WVL_KsZeN schreef op vrijdag 04 november 2011 @ 12:52:
Waar bestellen jullie je spullen eigenlijk? Ik ben op zoek naar een arduino, 433 zender, 433 ontvanger, een paar max3323 chips en een breadbordje. Kan niks vinden dat alles kan leveren, tis of het een of het ander...
Verwijderd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
| /* NewKaku Timing T = korte periode = 275 µs (of 375, werkt ook) lange periode = 3 of 4*T (werkt ook allebei) _ _ '0': | |_| |____ (T,T,T,3T) _ _ '1': | |____| |_ (T,3T,T,T) _ _ dim: | |_| |_ (T,T,T,T) Het frame bestaat normaal uit 32 bits: startpuls (T hoog, 9*laag) 26 adres 1 groep-bit 1 on/off/[dim] 4 unit (indien meerdere kanalen op één zender) [4] [dimniveau] stoppuls (T hoog, verder laag) */ //defineer TransmitterPin short int SendPin = 11; //defineer pulsetijd in us short int PulseTime = 275; //defineer lange puls vermenigvuldingsfactor short int LongPulseTimeMultiplier = 3; //defineer hoe vaak de code te herhalen; short int TimesToRepeat = 3; //defineer Wachttijd tussen herhalen van commando short int TimeBetweenRepeat = 1000; //defineer de 32 Bits om te verzenden char FrameToSend[]= "ABCDEF30onA"; //Om in de toekomst omzetten naar leesbaar formaat // adres ABCDEF3 groep 0 aan unit A // 5*hex(0t/mF)ABCDEF 2*bin(0t/m3)3 bin(0/1) bin(0/1) hex(0t/mF) // 101010111100110111101111 11 0 1 1010 // BitCommandToSend = 10101011110011011110111111011010; char BitCommandToSend[ ] = "10101011110011011110111111011010"; void setup() { } void loop() { //herhaal verzenden "TimesToRepeat" keer for (int i = 0; i < TimesToRepeat; i++){ //stuur startpuls digitalWrite(SendPin, HIGH); delayMicroseconds(PulseTime); digitalWrite(SendPin, LOW); delayMicroseconds(PulseTime*9); // stuur 32 bits frame for (int i = 0; i < 32; i++){ //wanneer het te zenden bit 1 is if(BitCommandToSend[i] == 1 ){ digitalWrite(SendPin, HIGH); delayMicroseconds(PulseTime); digitalWrite(SendPin, LOW); delayMicroseconds(PulseTime*LongPulseTimeMultiplier); digitalWrite(SendPin, HIGH); delayMicroseconds(PulseTime); digitalWrite(SendPin, LOW); delayMicroseconds(PulseTime); } //Wanneer het te zenden bit 0 is else if(BitCommandToSend[i] == 0 ){ digitalWrite(SendPin, HIGH); delayMicroseconds(PulseTime); digitalWrite(SendPin, LOW); delayMicroseconds(PulseTime); digitalWrite(SendPin, HIGH); delayMicroseconds(PulseTime); digitalWrite(SendPin, LOW); delayMicroseconds(PulseTime*LongPulseTimeMultiplier); } } //stuur StopPuls digitalWrite(SendPin, HIGH); delayMicroseconds(PulseTime); digitalWrite(SendPin, LOW); delayMicroseconds(PulseTime*5); } delayMicroseconds(TimeBetweenRepeat); } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| // Control New KAKU system via Ethershield (type 28J60) #include "etherShield.h" #include "ETHER_28J60.h" #include <NewKAKU.h> #define RF_TransmitPowerPin 4 // +5 volt / Vcc spanning naar de zender. #define RF_TransmitDataPin 5 // data naar de zender static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24}; // this just needs to be unique for your network, // so unless you have more than one of these boards // connected, you should be fine with this value. static uint8_t ip[4] = {192, 168, 123, 111}; // the IP address for your board. Check your home hub // to find an IP address not in use and pick that // this or 10.0.0.15 are likely formats for an address // that will work. static uint16_t port = 80; // Use port 80 - the standard for HTTP ETHER_28J60 e; void setup() { e.setup(mac, ip, port); delay(1000); } void loop() { char* params; if (params = e.serviceRequest()) { e.print("<H1>Web Remote</H1>"); if (strcmp(params, "?cmd=on") == 0) { NewKAKU_2_RawSignal(command2event(100, 100,1)); e.print("<A HREF='?cmd=off'>Turn off</A>"); } if (strcmp(params, "?cmd=off") == 0) { NewKAKU_2_RawSignal(command2event(100, 100,0)); e.print("<A HREF='?cmd=on'>Turn on</A>"); } e.respond(); } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
| #include "NewKAKU.h" /*********************************************************************************************\ * NewKAKU * Encoding volgens Arduino Home Easy pagina * Pulse (T) is 275us PDM * 0 = T,T,T,4T, 1 = T,4T,T,T, dim = T,T,T,T op bit 27 * * NewKAKU ondersteund: * on/off ---- 000x Off/On * all on/off ---- 001x AllOff/AllOn * dim absolute xxxx 0110 Dim16 // dim op bit 27 + 4 extra bits voor dim level * * Nodo Event = TTTTUUUUCCCCCCCC1111111122222222 -> T=Type, U=Unit, 1=Par-1, 2=Par-2 * Nodo commando NewKAKU = TTTTUUUUPPPPPPPPAAAAAAAALLLLCCCC -> T=Type, U=Unit, P=CMD_NEWKAKU_SEND, A=User adres, L=dimlevel, c=commando * NewKAKU (org.) = AAAAAAAAAAAAAAAAAAAAAAAAAACCUUUU(LLLL) -> A=KAKU_adres, C=commando, U=KAKU-Unit, L=extra dimlevel bits (optioneel) * NewKAKU van Nodo = 000000000000000000AAAAAAAACC0001(LLLL) -> H=Nodo_home, A=User adres, D=Dim, C=commando, L=extra dimlevel bits (optioneel) * Bit = 01234567890123456789012345678901 2345 -> Bit-0 gaat als eerste door de ether. * 1111111111222222222233 3333 * \*********************************************************************************************/ #define NewKAKU_RawSignalLength 132 #define NewKAKUdim_RawSignalLength 148 #define NewKAKU_1T 275 // us #define NewKAKU_mT 500 // us, midden tussen 1T en 4T #define NewKAKU_4T 1100 // us #define NewKAKU_8T 2200 // us, Tijd van de space na de startbit #define VALUE_OFF 0 #define VALUE_ON 1 #define RAW_BUFFER_SIZE 200 // Maximaal aantal te ontvangen bits*2 #define TX_REPEATS 5 #define RF_TransmitPowerPin 4 // +5 volt / Vcc spanning naar de zender. #define RF_TransmitDataPin 5 // data naar de zender #define SIGNAL_TYPE_NODO 1 #define UNIT 0x1 // Unit nummer van de Nodo. Bij gebruik van meerdere nodo's deze uniek toewijzen [1..F] unsigned int RawSignal[RAW_BUFFER_SIZE+2]; byte TransmitRepeat = TX_REPEATS; boolean Simulate; byte Unit; /*********************************************************************************************\ * Deze routine berekent de RAW pulsen uit een CMD_NEWKAKU plaatst deze in de buffer RawSignal \*********************************************************************************************/ void NewKAKU_2_RawSignal(unsigned long CodeNodo) //aanspreken met NewKAKU_2_RawSignal(command2event(CMD_KAKU_NEW, Par1, Par2)) (???, DEVICEID, 0/1) ??? had ik 100 staan. { unsigned long bitstream=0L; byte Bit, Level, i=1; byte x; /// aantal posities voor pulsen/spaces in RawSignal byte y; pinMode(RF_TransmitDataPin,OUTPUT); pinMode(RF_TransmitPowerPin,OUTPUT); // bouw het KAKU adres op bitstream=1|(CodeNodo>>2)&0x3FC0; // Door gebruiker gekozen adres uit de Nodo_code toevoegen aan adres deel van de KAKU code. Tevens compatibiliteit met Versie 1.1 door 1e bit te zetten (Home adres 1) // zet commando bit en level Level=CodeNodo&0xff; if(Level==VALUE_ON || Level==VALUE_OFF) { bitstream|=(Level==VALUE_ON)<<4; // bit-5 is het on/off commando in KAKU signaal Level=false; x=130;// verzend startbit + 32-bits = 130 } else { Level--;// Dim level 0..15 x=146;// verzend startbit + 32-bits = 130 + 4dimbits = 146 } // bitstream bevat nu de KAKU-bits die verzonden moeten worden. for(i=3;i<=x;i++)RawSignal[i]=NewKAKU_1T; // De meeste tijden in signaal zijn T. Vul alle pulstijden met deze waarde. Later worden de 4T waarden op hun plek gezet i=1; RawSignal[i++]=NewKAKU_1T; //pulse van de startbit RawSignal[i++]=NewKAKU_8T; //space na de startbit y=31; // bit uit de bitstream while(i<x) { if((bitstream>>(y--))&1) RawSignal[i+1]=NewKAKU_4T; // Bit=1; // T,4T,T,T else RawSignal[i+3]=NewKAKU_4T; // Bit=0; // T,T,T,4T if(x==146) // als het een dim opdracht betreft { if(i==111) // Plaats van de Commnado-bit uit KAKU RawSignal[i+3]=NewKAKU_1T; // moet een T,T,T,T zijn bij een dim commando. if(i==127) // als alle pulsen van de 32-bits weggeschreven zijn { bitstream=(unsigned long)Level; // nog vier extra dim-bits om te verzenden y=3; } } i+=4; } RawSignal[i++]=NewKAKU_1T; //pulse van de stopbit RawSignal[i]=NewKAKU_1T*32; //space van de stopbit tevens pause tussen signalen RawSignal[0]=i; // aantal bits*2 die zich in het opgebouwde RawSignal bevinden RawSendRF(); // zend het signaal } unsigned long command2event(int Command, byte Par1, byte Par2) { return ((unsigned long)SIGNAL_TYPE_NODO)<<28 | ((unsigned long)Unit)<<24 | ((unsigned long)Command)<<16 | ((unsigned long)Par1)<<8 | (unsigned long)Par2; } void RawSendRF(void) { int x; if(Simulate)return; digitalWrite(RF_TransmitPowerPin,HIGH); // zet de 433Mhz zender aan delay(5);// kleine pause om de zender de tijd te geven om stabiel te worden for(byte y=0; y<TransmitRepeat; y++) // herhaal verzenden RF code { x=1; while(x<=RawSignal[0]) { digitalWrite(RF_TransmitDataPin,HIGH); // 1 delayMicroseconds(RawSignal[x++]); digitalWrite(RF_TransmitDataPin,LOW); // 0 delayMicroseconds(RawSignal[x++]); } } digitalWrite(RF_TransmitPowerPin,LOW); // zet de 433Mhz zender weer uit } |
Klopt helemaal ja grenzen zijn 0-255. Nadat het werkte heb ik het gelijk hier neer gezet, misschien dat er dan anderen ook even naar kunnen kijken. misschien zitten er veel overbodige dingen in.NIB0R schreef op zaterdag 05 november 2011 @ 17:40:
Stavast. Als ik het goed begrijp. kan je met "NewKAKU_2_RawSignal(command2event(100, 100,1))"
Een 'nieuw kaku' apparaat aansturen. hierbij is de eerste "100" een vaste waarde. Waarvan jij ook niet weet waarom je die moet sturen. die laatste "1" is het aan/uit schakelen van het device. Dan is die middelste je zender ID. Wat zijn de grenzen tot waar ik die kan aanpassen? 0 tot 999? 0 tot FFF?
Ik hoop dat de 'nieuwe kaku' binnenkort in de library opgenomen kan worden. Of in een nieuwe library.
Vraag aan Fuzzlogic. Kan je met de ShowreceivedCode ook de code van een nieuwe kaku ontvangen?
Om het in de lijn te brengen met fuzzlogic is inderdaad een tweede stap. ik heb nu de functie van het NODO project gepakt en deze enigszins gewijzigd en er een library van gemaakt. nu ik de code en opbouw van het signaal beter begrijp kan ik verder gaan.NIB0R schreef op zaterdag 05 november 2011 @ 18:22:
Het is idd een library, maar Ik dacht meer aan een net stukje code. De command2event lijkt me een omweg enzo. Desalniettemin ben ik heel blij dat je dit hebt gemaakt en bedacht. Mij was het niet gelukt. Maar ik denk dat dit nog meer versimpeld kan worden.
Iets in de trend van functies als "newkaku_send(sender ID, on/off)". Je weet wel heel basic. Makkelijk te behappen voor de niet zulke hele goede programmeurs zoals ik. Helemaal ideaal zou zijn een receive functie net als in de fuzzlogic library zit. Dat je eenmalig je zender kan inlezen en hem daarna met je Arduino kan immiteren. Of je arduino waarschuwen als een externe newkaku remote wordt gebruikt.
ps. is de 0-255 niet wat weinig? ik dacht dat new kaku 2,7 miljoen unieke ID's had?
[ Voor 13% gewijzigd door stavast op 05-11-2011 20:40 ]
hoe gaat de verbinding onderling met elkaar. maw; wat is input en wat gaat er uit naar je tv?T_E_O schreef op dinsdag 08 november 2011 @ 11:53:
Heb zelf intussen ook wat probeerseltjes gebrouwen nav de "Nodo" die ik in elkaar geknutseld heb. Zo kan ik intussen gewoon de Hex-codes voor infrarood-signalen gebruiken, zoals ze op bijvoorbeeld deze pagina verzameld worden. Daardoor heb ik nu de discrete on/off-codes voor m'n TV en versterker, zodat ik nu een knopje "versterker aan" kan maken ipv "versterker power"
Ook ben ik een eindje onderweg met het uitpuzzelen van 't HomeEasy-EU protocol (met automatische codes). Erg ingewikkeld lijkt het niet te zijn, maar door beperkte ervaring op dit gebied heb ik misschien nog 'n keer wat hulp nodig daarbij.
Wat van dringender aard is, is dat m'n infrarood-signalen slecht werken zodra m'n (LCD-)televisie ingeschakeld staat. Als ik 't ding op de spaarstand "scherm uit" zet, dan is dat meteen opgelost, dus ik vermoed dat het beeldscherm voor interferentie zorgt ofzo. Wellicht heb ik ook wel de verkeerde LEDjes. Het zijn 950nm-leds van Conrad. Valt daar iets op aan te merken ?
Verder heb ik ook deze jongens nog liggen, maar die lijken helemaal niets te doen.
Not yet. Tijd enzo
de omschrijving zoals jij hem geeft zou volgens mij moeten werken, al weet ik het niet zeker.NIB0R schreef op woensdag 16 november 2011 @ 11:10:
Stavast, Ik ben nog niet verder geraakt.
Wel een vraag betreft jouw newkaku library. Als ik een newkaku receiver unit heb. Kan ik die dan in leren met de functie: NewKAKU_2_RawSignal(command2event(100, 100,1)) , zonder gebruik te maken van de nodo beheer tool.
Door de ontvanger op in leren te zetten, dan een aantal keer NewKAKU_2_RawSignal(command2event(100, 100,1)) te sturen zodat ze aan elkaar worden gekoppeld, en vervolgens deze regel te gebruiken als ik mijn newkaku device wil aan/uit zetten.
Of is de nodo beheertool noodzakelijk?
En heb je ook al een manier gevonden om een Newkaku zender device te ontvangen op de arduino?
Bijvoorbeeld de deur/raam sensor van kaku.
Verwijderd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
| signed short stateCounter = -1; String serialIncomming; boolean sending = false; void setup() { Serial.begin(115200); attachInterrupt(0, interruptHandler, CHANGE); pinMode(11, OUTPUT); } void loop() { char serialByte; while(Serial.available() > 0) { serialByte = Serial.read(); if(serialByte >= 0x20 && serialByte <= 0x7E) { serialIncomming += String(serialByte); } else if(serialByte == '\r') { if(serialIncomming == "on") sendSwitch(123456, false, true, 0, 3); else if(serialIncomming == "off") sendSwitch(123456, false, false, 0, 3); else if(serialIncomming == "assign") sendSwitch(123456, false, true, 0, 10); else if(serialIncomming == "unassign") sendSwitch(123456, false, false, 0, 10); else Serial.println("Unknown Command"); serialIncomming = ""; } } } void interruptHandler() { if(sending) return; static byte receivedBit; static unsigned long receivedCommand; static unsigned long lastChange = 0; unsigned long currentTime=micros(); unsigned int duration=currentTime-lastChange; lastChange=currentTime; if(duration > 2500 && duration < 2800) // Startbit { stateCounter = 0; receivedBit = 0; receivedCommand = 0; } else if(!(stateCounter & 0x80)) // stateCounter>=0 && stateCounter < 128 { if(duration > 1500) { stateCounter = -1; return; } receivedBit <<= 1; if(duration > 1000) receivedBit |= 0x01; if((stateCounter%4) == 3) { receivedCommand <<= 1; if(receivedBit == 4) // -___-_ '1' receivedCommand |= 0x01; else if(receivedBit == 1) // -_-___ '0' ; // No need to handle else if(receivedBit == 0) // -_-_ Dimming ; // Unhandled for now else { stateCounter = -1; return; } receivedBit = 0; } stateCounter++; } else if(stateCounter == 128) { Serial.print(receivedCommand); Serial.print(" Address:"); Serial.print(receivedCommand >> 6); Serial.print(" Group:"); Serial.print((receivedCommand >> 5)&0x01); Serial.print(" Cmd:"); Serial.print((receivedCommand >> 4)&0x01); Serial.print(" Unit:"); Serial.println((receivedCommand)&0x0F); stateCounter = -1; } } void sendSwitch(unsigned long address, boolean group, boolean state, short unit, short repeats) { unsigned long transmitCommand; transmitCommand = address << 6; transmitCommand |= group << 5; transmitCommand |= state<<4; if(!group) transmitCommand |= unit & 0x0f; sendSwitch(transmitCommand, repeats); } void sendSwitch(unsigned long transmitCommand, short repeatCount) { sending = true; Serial.print("Sending: "); Serial.println(transmitCommand); for(short repeats = 1; repeats <= repeatCount; repeats++) { digitalWrite(11, HIGH); delayMicroseconds(330); digitalWrite(11, LOW); delayMicroseconds(2600); for(short i = 31; i>=0; i--) { digitalWrite(11, HIGH); delayMicroseconds(330); if(bitRead(transmitCommand, i)) { digitalWrite(11, LOW); delayMicroseconds(1200); digitalWrite(11, HIGH); delayMicroseconds(330); digitalWrite(11, LOW); delayMicroseconds(200); } else { digitalWrite(11, LOW); delayMicroseconds(200); digitalWrite(11, HIGH); delayMicroseconds(330); digitalWrite(11, LOW); delayMicroseconds(1200); } } digitalWrite(11, HIGH); delayMicroseconds(330); digitalWrite(11, LOW); delayMicroseconds(10200); } sending = false; } |
[ Voor 4% gewijzigd door Fuzzillogic op 12-12-2011 23:47 ]
Verwijderd
[ Voor 0% gewijzigd door Verwijderd op 13-12-2011 00:10 . Reden: hz -> Hz ]
1
2
3
4
5
| kaKuTransmitter.sendSignal('1',1,true); kaKuTransmitter.sendSignal('1',2,true); kaKuTransmitter.sendSignal('1',3,true); kaKuTransmitter.sendSignal('1',4,true); kaKuTransmitter.sendSignal('2',1,true); |
[ Voor 9% gewijzigd door Technicality op 15-12-2011 02:41 ]
[ Voor 11% gewijzigd door memphis op 17-12-2011 00:32 ]
Ik weet niet wat het bereik is dat je wilt halen?memphis schreef op maandag 19 december 2011 @ 11:17:
Bedankt voor de tips maar 2.4ghz is geen optie omdat er naast de zender al een 2.4ghz ontvanger zit, op veel gebieden zijn er problemen met het ontvangst gemeld als er een zender naast de ontvanger zit op een dezelfde band.
Ik zal nog even rond kijken maar neig steeds meer om een oude 27MHz RC set te verbouwen.
Verwijderd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
| /* Deze routine stuurt de KAKU signalen volgens het nieuwe protocol _ _ '0': | |_| |____ (T,T,T,3T) _ _ '1': | |____| |_ (T,3T,T,T) _ _ dim: | |_| |_ (T,T,T,T) T = korte periode = 275 µs (of 375, werkt ook) lange periode = 3 of 4*T (werkt ook allebei) Het frame bestaat normaal uit 32 bits: startpuls (T hoog, 9*laag) 26 adres 1 groep-bit 1 on/off/[dim] 4 unit (indien meerdere kanalen op één zender) [4] [dimniveau] stoppuls (T hoog, verder laag) */ #define CMD_BIT 4 #define VALUE_ON 17 #define VALUE_OFF 0 #define INVALID_DIMMERVALUE 99 #define DIMMER_BITS 4 void outputKakuRFSignalAdvanced(unsigned long address, char group, char state, short unit, short repeats) { unsigned long transmitCommand = 0; short dim = INVALID_DIMMERVALUE; transmitCommand = address << 6;//copy address into transmitCommand transmitCommand |= ((unsigned long)group << 5);//copy group into transmitCommand if(state == VALUE_ON)//if command is ON, copy it into the transmitCommand transmitCommand |= 1<<CMD_BIT; else if(state != VALUE_OFF)//if command is not ON or OFF, it is a dimmervalue dim = state-1;//value is from 0-15 instead of 1-16 if(!group)//if command is not intended for a group, copy the specific unit transmitCommand |= unit & 0x0f; sendbitAdvanced(transmitCommand, dim, repeats); } void sendbitAdvanced(unsigned long transmitCommand, short dimmerValue, short repeatCount) { short repeats = 0; for(repeats = 1; repeats <= repeatCount; repeats++) { short i=0; unsigned long transmitbuffer = transmitCommand;//copy the command in the transmitbuffer short dim = dimmerValue;//assign the dimmervalue to an intermediate variable IOSET0 = 1<<PIN_O; delayMicroseconds(330); IOCLR0 = 1<<PIN_O; delayMicroseconds(2600); for(i = 31; i>=0; i--)//transmit all 32 bits in transmitbuffer { IOSET0 = 1<<PIN_O; delayMicroseconds(330); if(i==CMD_BIT && dim != INVALID_DIMMERVALUE)//if a valid dimmervalue is present, send a special command bit { IOCLR0 = 1<<PIN_O; delayMicroseconds(300); IOSET0 = 1<<PIN_O; delayMicroseconds(330); IOCLR0 = 1<<PIN_O; delayMicroseconds(300); } else//no valid dimmer value { if((transmitbuffer>>i)&0x01)//is the bit a 1 or a 0 { IOCLR0 = 1<<PIN_O; delayMicroseconds(1200); IOSET0 = 1<<PIN_O; delayMicroseconds(330); IOCLR0 = 1<<PIN_O; delayMicroseconds(200); } else { IOCLR0 = 1<<PIN_O; delayMicroseconds(200); IOSET0 = 1<<PIN_O; delayMicroseconds(330); IOCLR0 = 1<<PIN_O; delayMicroseconds(1200); } } if(i == 0 && dim != INVALID_DIMMERVALUE)//add dimmer value to end of command { i = DIMMER_BITS;//reset for loop to add 4 more bits transmitbuffer = dim;//add dimmer data to the transmit buffer dim = INVALID_DIMMERVALUE;//make sure this part is executed only once } } IOSET0 = 1<<PIN_O; delayMicroseconds(330); IOCLR0 = 1<<PIN_O; delayMicroseconds(10200); } } |
Klopt het dat deze niet werkt met de laatste Arduino software 1.0?Fuzzillogic schreef op maandag 19 september 2011 @ 17:48:
Feest!![]()
Ik heb net een nieuwe library-package online gezet.
- RemoteSwitch v2.1.0
- RemoteSensor v1.0.0
- InterruptChain v1.0.0
Er is een wijziging geweest in Arduino zelf. Probeer de dev-branch eens, die werkt iig voor 1.0 RC.tomtommie schreef op donderdag 12 januari 2012 @ 09:00:
[...]
Klopt het dat deze niet werkt met de laatste Arduino software 1.0?
Top! Deze werkt perfect, bedankt!Fuzzillogic schreef op donderdag 12 januari 2012 @ 10:26:
[...]
Er is een wijziging geweest in Arduino zelf. Probeer de dev-branch eens, die werkt iig voor 1.0 RC.
Modelbouw - Alles over modelbouw, van RC tot diorama
Bedankt! Ik ga de aanbiedingen in de gaten houden10ii schreef op zondag 22 januari 2012 @ 23:56:
Beste optie lijkt mij om naar klik aan klik uit te gaan.
- Deze werkt goed met de library, bijna plug and play met arduino!
- KaKu heeft mooie systemen die je in je schakeldoos in kan bouwen.
- Dus ook veilig
- Als je de aanbiedingen een beetje bij houd hoeft dit echt niet zo duur te zijn.
Heb zelf ook 4 units ingebouwd en nog enkelen apparaten voor in het stopcontact.
Modelbouw - Alles over modelbouw, van RC tot diorama
Verwijderd
Verwijderd
Dat is de reset als al geldige data binnen hebt gekregen. Maar je zult al veel vaker moeten resetten, op het moment dat blijkt dat het signaal niet (meer) correct blijkt te zijn. Bij elke pulse zul je dus op de drie genoemde scenario's moeten controleren.Verwijderd schreef op vrijdag 03 februari 2012 @ 12:30:
Fuzzillogic:
array_pos=0; Volgens mij is dit de reset ?
Kan jij misschien aangeven waar de reset moet plaats vinden?
/me heeft eindelijk ook een icoontje.. woef.. boeien..
Verwijderd
Zie hier. voor een 433 mhz transmitter/ receiver.Verwijderd schreef op maandag 06 februari 2012 @ 12:47:
Hey all,
Ik ben dit topic flink aan het rondzoeken geweest maar kan het niet vinden. Ik wil graag sturing van de stopcontacten doen via Arduino. Ik heb hier een arduino uno boardje liggen, maar welk schema, 433 chip hoort hier precies bij? Ik heb niks kunnen vinden!
Thnx alvast
Zou ook moeten gaan maar om er zeker van te zijn heb je een datasheet of zo nodig.Verwijderd schreef op woensdag 08 februari 2012 @ 12:10:
Cool! Thnx.
Kan ik deze kit ook gebruiken? Ik zou graag snel aan het testen willen
Verwijderd
Ja, dat kan. Zie example "Retransmitter", die precies dat doetVerwijderd schreef op zaterdag 11 februari 2012 @ 19:16:
Ik heb de conrads toch genomen, moest meerbij conrad hebben. @fuzzilogic, is het ook mogelijk om de ruwe ontvangen codes te versturen met jouw library?
dus de ontvangencode: Code: 176654, period duration: 325us. bijvoorbeeld?
Heeft iemand hier misschien nog iets over te zeggen? Ik heb zelf ook een dergelijke code geschreven maar dan in picBasic maar ik zie de fout helaas ook niet. Kan iemand wellicht een zetje in de goede richting geven?Verwijderd schreef op zaterdag 05 november 2011 @ 01:46:
Eergisteren ook een paar AtMega's328 en 433 rx/tx binnen gekregen om een arduino in elkaar te steken
Om terug te komen op de Nieuwe KaKu code's:
Op CO vond ik dit topic met timings.
even quick en dirty de onderstaande code (zonder dim) geschreven voor het aansturen van de zender.
C++:
1 verhaal aan code
Helaas heb ik dit niet werkend gekregen, de hardware werkt probleemloos met Fuzzilogic's Code
Iemand een suggestie?
1
| Zie hieronder |
[ Voor 45% gewijzigd door TEAMIKKE op 26-03-2012 09:17 ]
Verwijderd
ik ben nog niet erg actief in het 433 spectrum, maar ja, graag! Ben ook erg benieuwd naar de afmetingen.Verwijderd schreef op maandag 19 maart 2012 @ 23:27:
Ik heb een goedkope Yagi-antenne gebouwd voor 433.92MHz. Als 't iemand interesseert kan ik het ontwerp beschrijven.
franssie.bsky.social | 🎸 Niets is zo permanent als een tijdelijke oplossing | Een goed probleem komt nooit alleen | Gibson guitar Fender Guitar God Damn Guitar
Met behulp van de timings op de vorige pagina en wat aanwijzing op CO heb ik ondertussen het geheel werkend. Voor de liefhebber post ik nog even de werkende maar spartaanse code. Kan een stuk efficiënter maar het is wel duidelijk wat er gebeurt. Overigens heb ik me nog niet bezig gehouden met de dimfunctie, die zit er nog niet in verwerkt. Ik heb geen ontvangers die daar mee werken. Mooi topic dit, bedankt voor de vele info beschrevenTEAMIKKE schreef op zaterdag 17 maart 2012 @ 17:14:
[...]
Heeft iemand hier misschien nog iets over te zeggen? Ik heb zelf ook een dergelijke code geschreven maar dan in picBasic maar ik zie de fout helaas ook niet. Kan iemand wellicht een zetje in de goede richting geven?
Voor de duidelijkheid hangt aan portb.0 een 433mhz zendertje, aan porta.1 een led en verder wordt er gebruikt gemaakt van een extern 20mhz kristal.
code:
1 lap code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
| DEVICE 16F628A CONFIG WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF, HS_OSC ALL_DIGITAL TRUE XTAL 20 ; Nieuwe KAKU protocol ; _ _ ; '0' = | |_| |___ (T,T,T,3T) ; _ _ ; '1' = | |___| |_ (T,3T,T,T) ; _ _ ; dim = | |_| |_ (T,T,T,T) ; ; T = 275 us of 375 us ; ; Samenstelling signaal ; 26 adres bits ; 1 groep bit ; 1 on/of/dim bit ; 4 unit bits ; (4 dim bits) ; Stoppuls (T hoog, verder laag) DIM teller AS BYTE DIM wachttijd AS WORD SYMBOL Led1 = PORTA.1 ; Led SYMBOL Aan_knop = PORTA.2 ; Aan knop SYMBOL Uit_knop = PORTA.0 ; Uit knop SYMBOL Zender = PORTB.0 ; Zender ;76543210 PORTA = %00000000 PORTB = %00000000 TRISA = %00000101 TRISB = %00000000 wachttijd = 1000 HIGH Led1 ;opstart loopje DELAYMS wachttijd LOW Led1 DELAYMS wachttijd WHILE 1 = 1 ;hoofdprogramma IF Aan_knop = 0 THEN ;als de aan knop wordt ingedrukt HIGH Led1 ;een aan signaal zenden WHILE Aan_knop = 0 DELAYMS 10 WEND GOSUB sw1aan LOW Led1 DELAYMS 50 ENDIF IF Uit_knop = 0 THEN ;als de uit knop wordt ingedrukt HIGH Led1 ;een uit signaal zenden WHILE Uit_knop = 0 DELAYMS 10 WEND GOSUB sw1uit LOW Led1 DELAYMS 50 ENDIF IF Aan_knop = 0 AND Uit_knop = 0 THEN ;Als beide knoppen worden ingdrukt HIGH Led1 ;de zender aanmelden WHILE Uit_knop = 0 AND Uit_knop = 0 DELAYMS 10 WEND GOSUB sw1_aanmelden LOW Led1 DELAYMS 50 ENDIF DELAYMS 10 WEND ;-------------- sw1_aanmelden: FOR teller = 1 TO 10 ;10x het signaal herhalen GOSUB sw1aan NEXT RETURN ;-------------- sw1aan: ;kanaal 1 aanzetten FOR teller = 1 TO 5 GOSUB startpuls ;startpuls GOSUB laag ;Adres bestaat uit 26 bits GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB hoog GOSUB laag ;Groepbit GOSUB hoog ;on/off GOSUB laag ;units aanduiding GOSUB laag GOSUB laag GOSUB laag GOSUB stoppuls ;Stoppuls NEXT RETURN sw1uit: ;kanaal 1 uitzetten FOR teller = 1 TO 5 GOSUB startpuls ;startpuls GOSUB laag ;Adres bestaat uit 26 bits GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB laag GOSUB hoog GOSUB laag ;Groepbit GOSUB laag ;on/off GOSUB laag ;units aanduiding GOSUB laag GOSUB laag GOSUB laag GOSUB stoppuls ;Stoppuls NEXT RETURN ;-------------- startpuls: HIGH Zender DELAYUS 330 LOW Zender DELAYUS 2600 RETURN ;-------------- laag: HIGH Zender DELAYUS 330 LOW Zender DELAYUS 200 HIGH Zender DELAYUS 330 LOW Zender DELAYUS 1200 RETURN ;-------------- hoog: HIGH Zender DELAYUS 330 LOW Zender DELAYUS 1200 HIGH Zender DELAYUS 330 LOW Zender DELAYUS 200 RETURN ;-------------- stoppuls: HIGH Zender DELAYUS 330 LOW Zender DELAYUS 10200 RETURN ;-------------- END |
Ik kan morgen de AMST-606 (deur magneet schakelaar) voor je testen op me werk.Fuzzillogic schreef op donderdag 22 maart 2012 @ 15:15:
Is hier iemand met een scope en een nieuwe kaku-zender die even wat getallen kan bevestigen? Ik heb een sample-space van precies 1 zender en 0 ontvangers. Dat is vrij beperkt. Met een oscilloscoop heb ik de meeste getallen uit deze CO-post grotendeels kunnen verifiëren, met toch enkele verschillen:Deze timings zijn van belang omdat ik bezig ben met een new-kaku-receiver voor in de library (ja echt!). Mocht de periodetijd bij al deze apparaten ~260us zijn dan hoeft er geen periodetijd-detectie te komen en is herkenning betrouwbaarder. Mocht de periodetijd wél variëren, dan moet deze dus bepaald worden, en dan zijn m.n. de start- en stopsequenties van belang.
- De periodetijd (1T) is bij mij ~260us. Is dat altijd zo bij kaku? Zijn er klonen met afwijkende timing?
- Een '0'-bit is T, T, T, 5T, dus totaal 8T
- Een '1'-bit is T, 5T, T, T, hier dus ook 8T totaal.
- De start-sequence is bij mij 1T hoog, 10,44T laag. (totaal 2,96ms gemeten) CO meldt hier 1T hoog, 9T laag. Waarom dit geen mooi rond getal wordt is mij een raadsel
- De stop-sequence is bij mij 1T hoog, 40T laag. (totaal 10,60ms gemeten) CO meldt alleen 1T hoog "lang laag".
- 'dim' kan ik niet meten, bij gebrek aan hardware.
Meten is weten, meer meten is meer weten. Een grotere sample space is welkom!
Dat zou mooi zijn, maar dat is precies het ding dat ik ook heb. Dus of we daar veel mee opschieten betwijfel ikNIB0R schreef op donderdag 22 maart 2012 @ 21:42:
[...]
Ik kan morgen de AMST-606 (deur magneet schakelaar) voor je testen op me m'n werk.
Screenshots zijn mislukt. Er zat helemaal geen timing bij ofzoiets. Puur de pulsjes. Haha daar kan je niets mee.Fuzzillogic schreef op donderdag 22 maart 2012 @ 22:34:
[...]
Dat zou mooi zijn, maar dat is precies het ding dat ik ook heb. Dus of we daar veel mee opschieten betwijfel ik
[ Voor 5% gewijzigd door Fuzzillogic op 24-03-2012 22:39 ]
Bij de pin staat RSSI. En sja, dat klopt, alleen zou je idd verwachten dat er een laagdoorlaatfilter op zit.memphis schreef op zaterdag 24 maart 2012 @ 23:20:
RSSI is niet het analoge output signaal maar een ontvangst sterkte signaal.Zeker weten dat je het juiste benoemt of de juiste pin gebruikt? In mijn projectje komt aan de RSSI uitgang een ledbar met een LM3914 IC.
Slicers zijn voor frequency shift keying wat ik zo lees, maar dit protocol is simpel on/off keyingMaar om analoog naar digitaal te krijgen heb je een zgn data slicer nodig. Als je er op googled met afbeeldingen kom je de nodige schema's tegen maar alle met opamps.
Eve char: Warock <TEST>
Eve char: Warock <TEST>
Apple iPhone 17 LG OLED evo G5 Google Pixel 10 Samsung Galaxy S25 Star Wars: Outlaws Nintendo Switch 2 Apple AirPods Pro (2e generatie) Sony PlayStation 5 Pro
Tweakers is onderdeel van
DPG Media B.V.
Alle rechten voorbehouden - Auteursrecht © 1998 - 2025
•
Hosting door TrueFullstaq