Controllo Bluetooth con 12F675
Questo è un semplice controllo tramite bluetooth. La cosa è veloce da implementare usando quei moduli disponibili sul mercato. Con un HC-06 e pochi componenti si crea una facile controllo con la comunicazione di dati via seriale.
Il progetto è un modulo che permette il controllo di 2 relè sulla scheda. Si possono controllare diversi dispositivi sparsi per casa senza dovere passare fili, tramite uno smartphone o computer con il bluetooth. Posso solo dire che la distanza non è eccellente e ci si deve accontentare di avere la comunicazione entro la stessa stanza.
Descrizione
Un progetto composto da un microcontrollore della Microchip (esattamente il 12F675, 8 piedini), un modulo bluetooth e qualche componente discreto.
È prevista una alimentazione leggermente livellata in entrata di 12 Vdc. Dalla alimentazione a 12 V poi c’è un regolatore a 5 Vdc sulla scheda, per il microcontrollore. Mentre per pilotare le bobine dei relè basterà i 12 Volts.
Inoltre è incluso un partitore per l’ ingresso del modulo HC-06, per compatibilità ai 3,3 Volts usati dal modulo.
Il progetto include alcune peculiarità :
-
Il numero di 2 uscite. Il programma permetterebbe di configurare l’ uso di una.
-
Le uscite sono configurabili attive alte oppure basse. Nel programma per difetto si è assunto uscite attive alte. Per pilotare i relè a bordo. Potrebbe essere in certi casi necessaria l’ opzione attive bassa oppure i relè in logica inversa.
-
Le uscite possono essere configurate sia come fisse che come temporizzate. Il 12F675 si prende cura di tenere il conteggio. Da cui, una volta avviato un conteggio, chi ha inviato il comando potrà anche assentarsi.
-
I comandi si inviano con un breve messaggio e aspetta che siano stati inviati tutti i sei caratteri richiesti per completare la trasmissione.
-
Previsto l’utilizzo di quarzo a 16 MHz oppure a 20 MHz. Basta cambiare la dichiarazione agli inizi del programma col $define XTAL16 (per i 16 MHz) oppure
$define XTAL20 (per i 20 MHz).
Schema Elettrico
Ovviamente i transistor non sono critici, qualsiasi tipo NPN farà il suo lavoro, comunque devono aver i piedini come i 2N2222, del tipo BC547, per esempio.
L’ alimentatore deve essere da 12 Volt leggermente filtrato e alquanto robusto per alimentare i relé, se alimentati dalla scheda. Meglio che sia da un Ampere.
Nello schema si denota un connettore (4 poli) per alloggiare l’ HC-06.
Lista materiale
Quantità |
Posizione | Valore |
Specifiche |
Condensatori | |||
2 | C1-C2 | 22 pF | |
2 | C3-C4 | 100µF | 16V |
Resistenze | |||
1 | R1 | 1k8 | |
1 | R2 | 3k3 | |
2 | R4-R5 | 1k5 | |
Circuiti integrati | |||
1 | U1 | PIC12F675 | |
1 | U2 | 78L05 | |
Transistor | |||
2 | Q1-Q2 | 2N2222 | |
Diodi | |||
2 | D1-D2 | 1N4148 | |
Varie | |||
1 | H1 | 100 µH | |
1 | J1 | Per HC-06 | |
1 | J2 | Per Alimentazione | |
2 | J3-J4 | Per comando relé | |
1 | X1 | Quarzo da 16 MHz |
Circuito Stampato
SOTTO
SOPRA
ATTENZIONE!!
Lo stampato di sotto è rovesciato, per metterlo sulla faccia ramata tramite trasferimento con il fotoresist o toner a caldo.
Si può scaricare tutto il pacchetto qui.
Descrizione delle funzionalità del programma
Le variabili che permettono di configurare sono le seguenti:
$define ACTIVE_LOW
se viene commentata la linea, le uscite diventano attive alte. I relé che ho usato invece funzionano in logica positiva. Quindi il programma modificato potrebbe valere solo al di fuori di questa scheda.
symbol BUFLEN
se viene alterato si può usare una diversa capacità d’ input dalla seriale. Solo per coloro che intendono modificare il firmware per diversi scopi, entro certi limiti.
symbol PORTMASK
si definisce quelle uscite che non saranno influenzate da una accensione generale.Questo per evitare che comandi che richiedono solo un impulso, possano essere impostati a condizione permanente continua.
symbol NUMTIMER
Il modulo ha 2 relé, perciò c’è messo uno ( che viene contato dall’ indice zero). Nel caso si volesse installare solo un relè, si potrebbe modificare questo parametro.
Come si potrebbe intuire i valori sono stati messi in una lista all’ inizio del firmware. Per coloro che capiscono la programmazione sarà facile da individuare.
I comandi da inviare al controllo sono siffatti:
-
Per accensione fissa di una uscita si comanda con la lettera maiuscola A o B. Interverra’ il limite imposto da quante uscite s’è configurato con NUMTIMER.
-
Per lo spegnimento si usa la lettera miniscola a o b . Che opererà sul relativo canale.
-
Per lo spegnimento di tutte le uscite si usa la lettera x minuscola incluse le uscite temporizzate.
-
Per l’ accensione di tutte le uscite, si usa la lettera X maiuscola. Saranno escluse quelle definite non accessibili dalla maschera di output.
-
Per i comandi con i temporizzatori si usa la seguente stringa:
t
(carattere iniziale fisso) definizione per indicare un timer, non importa se maiuscola o minuscola.0 o 1
(secondo carattere fisso) definiti dal firmware. ATTENZIONE che l’ HEX carica per 2 uscite. L’indicizzazione parte da zero.s o m oppure h
(terzo carattere fisso) definizione della unita’ misura da impostare. Con s si indica i secondi, m si indicano i minuti e h le ore. Non importa se maiuscola o minuscola.da una a tre cifre
il valora da impostare al timer con la grandezza precedente voluta. Per le ore c’è il limite fissato a 9 ore.
Riempimento della stringa con spazi
conclude la stringa ricevuta. quindi con il programma DCmote si dovrà impostare i comandi con un riempimento con spazi fino a 6 caratteri ricevuti.
Per esempio “t1s45 “, si traduce con l’ uscita 2 attiva per 45 secondi. Virgolette escluse e uno spazio dopo in cinque.
Caso limite, inviando un valore zero ad un timer, questo viene concluso
Esiste un altro programma nel pacchetto, che ho usato per inviare un impulso ai comandi del cancello, dato che non serve mantenere premuto di continuo.
Lascia un Commento
Vuoi partecipare alla discussione?Fornisci il tuo contributo!