BitfehlerASK

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche

AVR-NET-IO mit RFM12 steuert Funksteckdosen

Nachdem die Temperaturmessung mit Dallas 1-wire Bus und auch das LCD (2x16) funktionieren habe ich nun auch noch ein paar Funksteckdosen in Betrieb genommen.

Das RFM12 Modul

Kaum zu glauben aber auf dieser winzigen Platine ist die gesamte Elektronik, die für eine Funkübertragung erforderlich ist, Sender, Empfänger, Schnittstelle (SPI).

Rfm12-chip.jpg


Der Anschluss des RFM12 Funkmoduls erfolgt über „SPI“ und ein paar weitere Pins der „EXT.“ Steckerleiste. Der folgende Verdrahtungsplan hilft bei der Verkabelung des Moduls.

Myrfm12.jpg

In der Datei "pinning/hardware/netio.m4" die entsprechenden Einträge auskommentieren und auf die verwendeten Pins der „EXT.“ Steckerleiste lenken. Auf die Verwendung einer RX-LED wurde in dieser Anwendung verzichtet.

/* port the rfm12 module CS is attached to */ 
pin(SPI_CS_RFM12, PD5, OUTPUT) 
/* port the LEDS for rfm12 tx attached to */ 
pin(RFM12_TX_PIN, PB0, OUTPUT) 
RFM12_USE_INT(1)

Ist der Hauscode, die ersten fünf DIP-Schalter, der verwendeten Funksteckdose auf "11111" eingestellt, so ist sicher gestellt, das die Steuerung ganz einfach per Mausklick, über die Webseite "RFM12 ASK" des Ethersex HTTP-Servers (Inline RFM12), erfolgen kann.

Nach einem „make“ und Überspielen der entstandenen „ethersex.hex“ auf das AVR-NET-IO Board steht einem erfolgreichen Test nichts mehr im Wege.

Fotos vom Aufbau

Myrfm12-foto.jpg

Foto oben links/rechts: auf Pin 2 und 4 werden die Signale von „EXT.“ abgenommen. Auf 7 und 9 ist die LED „TX“ angesteckt. Das Flachbandkabel steckt in der Steckerleiste „ISP“.

Foto unten links: Das aufgefächerte Flachbandkabel von „ISP“ und die beiden Drähte (grün/schwarz) von „EXT.“ gehen direkt an die Lötpunkte der RFM12-Platine. Die beiden 10k Widerstände sind im Isolierbandwickel versteckt. Der grüne Draht, der in den „Himmel“ ragt, ist die 17 cm lange Drahtantenne. Ein einfacher und funktionierender Testaufbau.

Test der Funksteckdose

Entweder wie oben beschrieben über den Ethersex HTTP-Server oder auch auf folgende Weise. Voraussetzung für die folgenden Beispiele ist aber, dass der Hauscode (Systemcode) der verwendeten Funksteckdosen auf "11111" eingestellt ist:

Steckdose A - EIN: http://192.168.0.90/ecmd?rfm12 2272+0,5,81+76+10

Steckdose A - AUS: http://192.168.0.90/ecmd?rfm12 2272+0,5,80+76+10

Berechnung des zu sendenden Codes

Für ein JavaScript-Projekt will ich den ASK-Code automatisch aus den DIP-Schalter-Stellungen berechnen. Hier ist der Code!

/*
 * v[] ist ein Array, das die unmittelbaren DIP-Stellungen (1=OFF, 0=ON) des Senders/Empfängers in die 3 zu sendenden Bytes umwandelt.
 * cmd ist 1 oder 0, je nach gewünschtem State.
 *
 * z.B. Standard Hauscode (alle auf "ON"), Gerät "B":
 * var v = [0,0,0,0,0, 1,0,1,1,1];
 *
 */
var v1 = (v[3] << 0)
       + (v[2] << 2)
       + (v[1] << 4)
       + (v[0] << 6);
var v2 = (v[7] << 0)
       + (v[6] << 2)
       + (v[5] << 4)
       + (v[4] << 6);
var v3 = (cmd  << 0)
       + (cmd  << 2)
       + (v[9] << 4)
       + (v[8] << 6);
return "rfm12+2272+" + v1 + "," + v2 + "," + v3 + "+76+10";

Ich hoffe, es hilft jemandem! (Benutzer:Hotkey)

Berechnung des zu sendenden Codes in C

#include <stdio.h>
int main (void)
{
	int dip[12];
		// 1=OFF 0=ON (cracy)
		// Command
	dip[0]=1; // C1
	dip[1]=0; // C2
		// Steckdosencode
	dip[2]=1; // E
	dip[3]=1; // D
	dip[4]=1; // C
	dip[5]=1; // B
	dip[6]=0; // A
		// Hauscode
	dip[7]=0; // 5
	dip[8]=1; // 4
	dip[9]=1; // 3
	dip[10]=1; // 2
	dip[11]=0; // 1

	int v1 = (dip[11]<<6 | dip[10] <<4 | dip[9] <<2 | dip[8]);
	int v2 = (dip[7]<<6 | dip[6] <<4 | dip[5] <<2 | dip[4]); 
	int v3 = (dip[3]<<6 | dip[2] <<4 | dip[1] <<2 | dip[0]);
	printf ("rfm12 2272+%i,%i,%i+76+10\n",v1, v2, v3);
return 0;
}

Infos zum Hauscode (Systemcode)

Erst über einen Linktipp von stesie habe ich verstanden wie das mit dem Funk-Rattenschwanz "http://192.168.0.90/ecmd?rfm12 2272+0,5,85+76+10" genau funktioniert. Nun kann ich auch bereits vorhandene Funksteckdosen, die unter Hauscode 1 existieren, steuern. In der folgenden Tabelle habe ich zwei verschiedene Hauscode- und Funksteckdosen-Einstellungen dokumentiert.

Hauscode-2.jpg

Angeregt durch einen Beitrag unter [1]