Arduino Programmazione remota/wireless

Spread the love

Il problema.

Ho sviluppato uno schetch usando il solito cavo USB e comunicazione seriale per il “debug” nello specifico la libreria per DHT12, ed ho messo la libreria su github.

Ma arriva una Issue: “quando la temperatura scende sotto lo 0 il valore che ricavo è sbagliato”.

Ora devo testare il problema nel mio congelatore (: P)  e  non voglio riscrivere  il programma e magari usare lo WIFI per una situazione semplice come questa.

Quindi, senza riscrivere lo sketch, voglio continuare a programmare e testare come prima, ma il mio Arduino deve andare nel congelatore.

Ho bisogno di 2 cose, una è una batteria, ma non so quanti test devo fare quindi ho bisogno di una batteria ricaricabile e un adattatore per lavorare con il microcontrollore da remoto, come il Bluetooth

Componenti

Per la connessione remota vado ad usare:

  • Un adattatore Bluetooth come:
    • HC-05

    • o SPP-C (Se cerchi puoi trovarlo a 1,5 $)

  • un condensatore 0.1uf (per HC-05).
SSP-C bluetooth module

Connessione remota

Per creare una connessione remota senza cavo USB, utilizzo il modulo bluetooth come  pass-through seriale .

Prima di tutto dobbiamo programmare il nostro modulo bluetooth con Arduino in maniera che funga da pass-through seriale. Lo schema di connessione è per la programmazione dell’adattatore bluetooth.

Connection schema for programming bluetooth module

Nel mio laboratorio ho 2 moduli un HC-05 e un SPP C.

Io uso un HC-05 per la connessione al mio CNC, ma l’SPP-C costa di meno ed è sufficiente per questa operazione.

Normalmente utilizzo la velocità di trasmissione 115200 per la trasmissione seriale, quindi configuro il mio modulo bluetooth a quella velocità.

Configurare il modulo bluetooth: HC-05 (zs-040)

Per prima cosa carica questo file (preso da github) su Arduino.

E’ necessario prestare attenzione alla presenza del pulsante (per passare alla modalità di configurazione premere quel pulsante anziché il pin 9 dello schema). Quando il led lampeggia lentamente (ogni 2 secondi) ci si trova in modalità di configurazione, la modalità di configurazione mette il dispositivo sui 38400 baudrate, quindi è necessario mettere seriale e software su tale boudrate.

Ora inserisci questi comandi nel tuo monitor seriale:

AT 
AT+ORGL
AT+POLAR=1,0
AT+NAME=mischianti
AT+UART=115200,0,0
AT+INIT

Questi parametri impostano il bluetooth in modalità pass-throught seriale. 
Presta attenzione a questi parametri:

mischianti --> Device name to set
115200 --> Baudrate to set

E presta attenzione anche al AT-ORGL che fa il reset del device.

AT+INIT può dare Error (17) ma non preoccuparti Significa che è già in quella modalità.

Configurare il modulo bluetooth : SPP C

Per prima cosa carica questo file su Arduino.

Il codice per SPP-C non è così pulito come quello dell’HC-05, ma il risultato finale sarà lo stesso.

Il baud rate seriale e impostato qui:

#define SERIAL_SPEED 115200

Il baud rate del bluetooth è qui here:

#define BLUETOOTH_SPEED 38400

La prima volta devi settare il bluetooth a 9600 per gli HC-06, e 38400 per gli SPP-C devices.

Poi setta il baud rate del bluetooth a:

#define SET_BLUETOOTH_SPEED 115200

Puoi settare un nuovo device name qui:

#define BT_NAME "TEST-Reef"

Inviare comandi AT al modulo HC-05 bluetooth con Arduino come serial pass-through

Alla stessa maniera di come usiamo il nostro modulo bluetooth possiamo usare Arduino per inviare comandi alla seriale del modulo bluetooth.

Carica lo schetck di default su arduino:

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

Collega in questa maniera il modulo così da “risentire” delle informazioni passate sui pin TX e RX.

Tiemi premuto il bottone dell’HC-05 (se presente) e collega la VCC, (ora dovrebbe lampeggiare lentamente) (Sul mio modulo anche con il bottone non ho avuto bisogno di tenerlo premuto).

Ora apri il monitor seriale collegalo alla porta USB di Arduino ed imposta i 38400 badrate di default del nostro modulo bluetooth, e seleziona sia CR che LN.

Ora dovresti essere direttamente in contatto con il modulo bluetooth passando attraverso il nostro Arduino, prova a mandare il comando AT ed attendi l’OK.

Perciò ora potete mandare i comandi AT che vi ho mostrato sopra:

AT 
AT+ORGL
AT+POLAR=1,0
AT+NAME=mischianti
AT+UART=115200,0,0
AT+INIT

Usare un modulo USB-TTL (FTDI) per inviare i comandi

Altra soluzione naturalmente è inviare i comandi tramite un convertitore USB seriale.

Effettuate il collegamento ed operate come sopra.

Il pin EN e il VCC devono stare collegati 😛 per andare in programming mode.

Collegare l’adattatore Bluetooth a Arduino come connessione seriale

Per HC05 l’unica cosa da notare è che la gamba lunga (+) del condensatore stia sul reset, il negativo deve stare su DTR (o MCU-INT o Stato) dell’adattatore bluetooth, è possibile utilizzare anche un condensatore ceramico 0.1uf.

Il modulo SPP-C nel mio caso non funziona se aggiungo il condensatore, ma funziona bene senza :D.
SPP-C e similari:

L’RX  dell’adattatore bluetooth viene cablato su  TX del microcontrollor e da  TX a RX, quindi è necessario connettere VCC e GND e DTR o MCU-INT o lo STATE all’adattatore bluetooth al RESET del  microcontrollore.

Per una migliore stabilità è buona cosa fare un partitore di tensione per il pin RX del bluetooth come nell’immagine, perché la tensione di trasferimento è 3.3v non 5v.

Sketch caricato via USB

Ho creato uno schetch molto semplice da caricare, è solo un numero progressivo scritto sulla seriale ogni 1500 millisecondi. 
Nel video è mostrato l’uso standard via cavo USB.

Sketch caricato via Bluetooth

In questo video lo schetch precedente è stato caricato da remoto tramite bluetooth senza modificare il codice.

Test reale

Ora ho bisogno di una risposta dal mio congelatore.

Dal profondo del mio frigorifero, vicino alle salsicce, il test remoto mi ha detto (dannazione) che c’è un bug quando il sensore va sotto 0.

Grazie

Il bug ora è risolto.

Potrebbero interessarti anche...