4 Relè per l’interfaccia GSM [hack]

Realizzare un'interfaccia GSM a 4 relè è semplice, modificando (hack) il progetto GSM2 (utilizzare il vecchio telefonino come telecontrollo GSM) che diventerà GSM4.

Un progetto realizzato tempo fa che mi ha dato molte soddisfazioni è stata l'interfaccia telefonica gsm per poter riutilizzare alcuni vecchi telefonini come telecontrollo GSM. L'articolo relativo è stato postato da alcuni famosi Blog americanai, nell'ormai lontano 2008. Oggi, grazie a Jonnyno, che usufruendo di una promozione riservata agli abbonati Premium, ho l'occasione di fare un Hack.

Un hack di un progetto da me realizzato, non mi era mai capitato 🙂

Per comprendere meglio il post seguente, consiglio di leggere l'articolo relativo a come Utilizzare il vecchio telefonino come telecontrollo GSM

La richiesta è stata di aumentare il numero di relè, portandoli da 2 a 4.

Da una analisi preliminare risulta evidente che la modifica deve essere affrontata sotto due punti di vista: hardware e software.

Modifica a 4 relè per l'interfaccia GSM [hardware]

A livello hardware bisogna ovviamente partire dallo schema elettrico seguente.

Quindi individuare quali pin del microcontrollore utilizzare per collegare gli altri due relè richiesti.

La prima soluzione a cui ho pensato è stata quella di utilizzare i due pin di ingresso RA0 e RA4. Ma RA4 può funzionare solo da ingresso? NO, dopo una verifica al datasheet del PIC16F628 mi rammento che su questi 'nuovi' micro il pin RA4 è bidirezionale. Però in questo modo non avrei a disposizione gli ingressi e, considerato che questo non è sato specificato nella richiesta, preferirei NON utilizzare questa soluzione.

La seconda soluzione che mi è venuta in mente è quella di utilizzare i pin RB6 e RB7 collegandoli tramite dei ponticelli perche dedicati anche alla programmazione/debug del microcontrollore. Una volta programmato il micro, si possono tranquillamente attivare i ponticelli e quindi permettere il funzionamento dei relè supplementari.

Un'altra possibile soluzione è quella di utilizzare i pin RA3 e RA2(VREF) modificando il collegamento ADJ del regolatore LM1117 con una resistenza verso massa, quindi fissando la tensione a livello hardware.

Sia la seconda che la terza soluzione sono fattibili, dipende soprattutto dalla necessità di effettuare un debug utilizzando i nuovi relè. Direi che una volta effettuata la modifica firmware, basterà programmare il micro e quindi testarlo direttamente, considerando che il debug completo è già stato effettuato in precedenza.

Vada per RB6 e RB7 (ma voi potete farla anche su su RA2 e RA3 se volete arrivare a 6 relè).

Identificati i pin, non rimane che fare l'hack hardware inserendo in una basetta vicina i due relè supplementari:

Si possono notare i collegamenti (da fare a RB6 e RB7), l'alimentazione 12V e la massa GND, i due transistor ed i relè ai quali vanno aggiunte le due morsettiere per i contatti.

Modifica a 4 relè per l'interfaccia GSM [software]

La modifica al firmware richiede prima una presa di visione generale del software per poi individuare la parte di definizione e configurazione porte e la parte di attuazione relè esistenti.

Per effettuare la patch eliminare le righe con - iniziale ed aggiungere quelle con il + ovviamente eliminare i segni + quando si inserisce la modifica.

La definizione delle uscite relè cambierà con queste aggiunte:

#define	 RELE1	PORTA,1	; Uscita RELE_1
#define	 RELE2	PORTA,3	; Uscita RELE_2

+#define RELE3	PORTB,6	; Uscita RELE_3
+#define RELE4	PORTB,7	; Uscita RELE_4

Settare FLAG, ma forse conviene utilizzare FLAG2 in quanto i bit di FLAG sono già occupati

FLAG		EQU	0x2F
;0
rele1		EQU	0x01
rele2		EQU	0x02
ricez		EQU	0x03	; 1= ricevuto ISR_RCREG >> INDF
sms		EQU	0x04	; 1= ricevuto '+'
ring		EQU	0x05	; 1= ricevuto 'R'
cifre		EQU	0x06	; 0=index_phonebook = 1cifra
				; 1=index_phonebook = 2cifre
national	EQU	0x07	; 0=international 	(+)
				; 1=national number   	(no +)

+FLAG2		EQU	0x25    ; Locazione di memoria libera per inserire FLAG2
+rele3		EQU	0x01
+rele4		EQU	0x02

Configurare RB6 e RB7 come uscite

-          	movlw   B'11111111' 
-         	movwf   TRISB
+          	movlw   B'00111111' 
+         	movwf   TRISB

Porre a zero le uscite relative ai due nuovi relè (posizione iniziale)

		movfw	PORTB		; acquisici DIP_SW
		movwf	DIP_SW
+               bcf     RELE3
+               bcf     RELE4
; autoapprendimento IN_1 & IN_2

Questa parte è di commento ma vale la pena riportarla per una maggiore comprensione della modifica.

; 1ON		\\ 03  B1 A7 13
; 1OFF		\\ 04  B1 A7 D1 08
; 1ONOFF	\\ 06  B1 A7 F3 69 34 02

; 2ON		\\ 03  B2 A7 13
; 2OFF		\\ 04  B2 A7 D1 08
; 2ONOFF	\\ 06  B2 A7 F3 69 34 02

+; 3ON		\\ 03  B3 A7 13
+; 3OFF		\\ 04  B3 A7 D1 08
+; 3ONOFF	\\ 06  B3 A7 F3 69 34 02

+; 4ON		\\ 03  B4 A7 13
+; 4OFF		\\ 04  B4 A7 D1 08
+; 4ONOFF	\\ 06  B4 A7 F3 69 34 02

; attivare il rele1,rele2,error in modo passo/impulsivo

La verifica dei dati ricevuti avviene tra la stringa PDU ed un dato da noi definito.

		bcf	FLAG,rele1
		bcf	FLAG,rele2
+		bcf	FLAG2,rele3
+		bcf	FLAG2,rele4

		movlw	'1'
		xorwf	INDF,w
		SKPNZ
		bsf	FLAG,rele1
		movlw	'2'
		xorwf	INDF,w
		SKPNZ
		bsf	FLAG,rele2

+		movlw	'3'
+		xorwf	INDF,w
+		SKPNZ
+		bsf	FLAG2,rele3
+		movlw	'4'
+		xorwf	INDF,w
+		SKPNZ
+		bsf	FLAG2,rele4	

Ecco finalmente la parte di attivazione/disattivazione relè in modalità passo passo o impulsiva.

rele_on
		btfsc	FLAG,rele1
		bsf	RELE1
		btfsc	FLAG,rele2
		bsf	RELE2
+		btfsc	FLAG2,rele3
+		bsf	RELE3
+		btfsc	FLAG2,rele4
+		bsf	RELE4
		SETZ
		RETURN

rele_off
		btfsc	FLAG,rele1
		bcf	RELE1
		btfsc	FLAG,rele2
		bcf	RELE2
+		btfsc	FLAG2,rele3
+		bcf	RELE3
+		btfsc	FLAG2,rele4
+		bcf	RELE4
		SETZ
		RETURN

rele_onoff
		btfsc	FLAG,rele1
		bsf	RELE1
		btfsc	FLAG,rele2
		bsf	RELE2
+		btfsc	FLAG2,rele3
+		bsf	RELE3
+		btfsc	FLAG2,rele4
+		bsf	RELE4

		call	t3s

		btfsc	FLAG,rele1
		bcf	RELE1
		btfsc	FLAG,rele2
		bcf	RELE2
+		btfsc	FLAG2,rele3
+		bcf	RELE3
+		btfsc	FLAG2,rele4
+		bcf	RELE4
		SETZ
		RETURN

La modifica è stata simulata con risultato positivo.

Nuove funzioni nelle istruzioni GSM4

A questo punto non ci resta che integrare le istruzioni con i comandi relativi all'attivazione o disattivazione dei RELE3 e RELE4 sia in modalità passo passo che impulsiva. Questi sono gli SMS da inviare e le relative funzioni:

3ON -> Attiva il RELE3
3OFF -> Disattiva il RELE3
3ONOFF -> Attiva impulsivo il RELE3

4ON -> Attiva il RELE4
4OFF -> Disattiva il RELE4
4ONOFF -> Attiva impulsivo il RELE4

Con queste semplici modifiche è quindi possibile gestire 4 relè di uscita e realizzare un telecontrollo GSM a 4 relè. Sarà quindi possibile, tramite un SMS attivare luci, caldaie, aprire cancelli etc. etc. il tutto facilmente ed a basso costo riutilizzando il vostro vecchio telefonino GSM

Il firmware GSM4 completo di modifica a 4RELE è disponibile a soli 5 euro.   Download
Scarica subito una copia gratis

6 Commenti

  1. jonnyno 29 Febbraio 2012
  2. Emanuele Bonanni Emanuele 29 Febbraio 2012
  3. jonnyno 29 Febbraio 2012
  4. jonnyno 2 Marzo 2012
  5. Emanuele Bonanni Emanuele 2 Marzo 2012
  6. jonnyno 2 Marzo 2012

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend