Ciao e buongiorno a tutti.
Come dicevo nel topic di presentazione i miei progetti sono per lo più ludici/modellistici e infatti in questo momento sto cercando di realizzare una pulsantiera WiFI per la gestione di scambi di trenini.
Ho passato settimane a spulciare tutta la documentazione riguardante la gestione della scheda HC12 da parte di Arduino prendendo come punto di partenza le varie discussioni su questo forum e leggendo tutti i link che contenevano.
Finalmente avendo un po' di tempo ho potuto dedicarmi alla preparazione dei vari pezzi, ho fatto i collegamenti scritto gli sketch e poi..... nulla (come mi aspettavo).
Conoscendo le mie lacune parto a piccoli passettini quindi non ho fatto interamente il programma come dovrà venire ma mi sono limitato a provare a mandare un segnale tra due arduino nano.
Ma veniamo alla sostanza.
Trasmettitore.
Hardware
Arduino Nano
Push Button collegato al pin D2 (e dall'altra parte ai pin +5V e GND con resistenza 10kohm)
Led collegato + al pin 12 e - al GND con resistenza 330ohm
HC12 collegata come segue:
Arduino pin +5V => HC12 VCC
Arduino pin GND => HC12 GND
Arduino pin 9 => HC12 RXD
Arduino pin 10 => HC12 TXD
Alimentazione tramite la presa USB di Arduino collegata o al PC o a una power bank
const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 12; // the number of the LED pin
const int HCRX = 9; // the number of the Arduino TX pin
const int HCTX = 10; // the number of the Arduino RX pin
int buttonState = 0; // variable for reading the pushbutton status
#include <SoftwareSerial.h> // Inclui a biblioteca Software Serial
SoftwareSerial HC12(HCRX,HCTX); // Create Software Serial Port
void setup() {
Serial.begin(9600); // Open serial port to computer
HC12.begin(9600); // Open serial port to HC12
pinMode(ledPin, OUTPUT); // initialize the LED pin as an output:
pinMode(buttonPin, INPUT); // initialize the pushbutton pin as an input:
}
void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
} else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
HC12.write(buttonState);
Serial.println(buttonState);
}
Alimentando la scheda sembra fare quello che deve. Il led si accende quando premo il pulsante mentre sul monitor seriale leggo 0 (pulsante rilasciato) o 1 (pulsante premuto). Vedo anche che su Arduino si accende il led rosso integrato con scritto TX.
Ricevente
Hardware
Arduino Nano
Buzzer attivo collegato + al pin 12 e - al GND
Led collegato + al pin 12 e - al GND con resistenza 330ohm
HC12 collegata come segue:
Arduino pin +5V => HC12 VCC
Arduino pin GND => HC12 GND
Arduino pin 9 => HC12 RXD
Arduino pin 10 => HC12 TXD
Alimentazione tramite la presa USB di Arduino collegata o al PC o a una power bank
const int HCRX = 9; // the number of the Arduino TX pin
const int HCTX = 10; // the number of the Arduino RX pin
int buttonState = 0; // variable for reading the pushbutton status
#include <SoftwareSerial.h> // Inclui a biblioteca Software Serial
SoftwareSerial HC12(HCRX,HCTX); // Create Software Serial Port
void setup() {
Serial.begin(9600); // Open serial port to computer
HC12.begin(9600); // Open serial port to HC12
pinMode(12, OUTPUT); // Dichiara PIN led
}
void loop() {
while (HC12.available()) {
buttonState = HC12.read();
if (buttonState == 1) {
digitalWrite(12, HIGH); // turn the Led/Buzzer on (HIGH is the voltage level)
} else {
digitalWrite(12, LOW); // turn the Led/Buzzer off by making the voltage LOW
}
}
}
A questo punto però se avvio entrambi gli Arduino (a circa 3-4m di distanza) e premo il pulsante sul trasmettitore non succede nulla.
Collegando il ricevitore al Pc e monitorando tramite seriale sul video non succede nulla quindi suppongo che non riceva nulla (quindi l'istruzione while non è soddisfatta).
Sono abbastanza sicuro di aver sbagliato qualcosa a livello di sketch ma non capisco cosa.
Altra informazione che potrebbe essere d'aiuto. Le due schede HC sono gemelle. Nel senso che fanno parte di una scatola di 5 e sono semplicemente state aperte e montate dando per scontato che abbiano le stesse impostazioni di fabbrica.
Un grazie anticipato per l'aiuto.