Primo Step: Verificare il funzionamento della scheda Cytron MDD10A, materiale occorrente:
Scheda Cytron MDD10A acquistata presso Futura Elettronica di Gallarate
Scheda Maker UNO+ Cytron acquistata presso Futura Elettronica di Gallarate
Potenziometro rotativo da 100 kOhm acquistata presso Futura Elettronica di Gallarate
Potenziometro lineare da 10 kOhm acquistata presso Futura Elettronica di Gallarate
2 motorini a 5 Volt c.c.
Programma realizzato:
// File:MDD10_E_DUE_MOTORI_15_1_25
// IDE:Arduino 1.8.12
//Scheda utilizzata:MAKER UNO + da installare
// Da Impostazioni inserire nel URL aggiuntive per il Gestore schede
// "https://cytrontechnologies.github.io/package_cytron_makeruno_index.json"
// Strumenti=>> Gestore schede=>>Digitare Maker => Maker Uno by Cytron...=> Installa
// Funzionamento della scheda MDD10 in modalità antifase bloccata
#include <CytronMakerSumo.h>
#define pwm_2 4
#define pwm_1 7
#define dir_2 3
#define dir_1 6
#define pot A1
float t_ch1;
void setup() {
// define pin name
pinMode(dir_1, OUTPUT);
pinMode(dir_2, OUTPUT);
pinMode(pwm_1, OUTPUT);
pinMode(pwm_2, OUTPUT);
pinMode(pot,INPUT);
Serial.begin(9600);
}
void loop() {
int reading = 0;
int output=0;
int opposite_output=0;
digitalWrite(pwm_1,HIGH);
digitalWrite(pwm_2,HIGH);
t_ch1=pulseIn(dir_2,HIGH);
for (int i=0;i<5;i++)
reading+= analogRead(pot);
reading/=5;
output=reading>>2; //convert 10-bit to 8-bit
opposite_output=255-output;
analogWrite(dir_2,output);
analogWrite(dir_1,opposite_output);
delay(200);
//Serial.println("DIR ORARIA Duty Cycle MINORE di un 1 ms DAC 130-252");
//Serial.println("DIR FERMI Duty Cycle circa 1 ms DAC 125-129");
//Serial.println("DIR ANTIORARIA Duty Cicle MAGGIORE 1 ms DAC 124 - 4 ");
Serial.println(output);
Serial.print("Millisecondi ");
Serial.println(t_ch1/1000);
}
Funziona perfettamente. N.B. L'alimentazione della Scheda deve essere pari ai Volt di funzionamento dei motori a c.c.
Durante il "caricamento" del programma su Arduino, Maker uno, ecc.. la scheda MDD10 non deve essere alimentata.
COLLEGAMENTI DA EFFETTUARE ... Si può anche utilizzare Arduino e ...Maker uno + della Cytron (Che ho utilizzato per il test)
MODALITA' di funzionamento della scheda
Modalità segno-magnitudine
In questa modalità, è necessario utilizzare 2 segnali separati per controllare il motore.
Questo perché è necessario definire il ciclo di lavoro PWM per la velocità del motore e la direzione del motore individualmente.
Modalità antifase bloccata (Come si evince dal programma) utilizzata nel programma sopra esposto
In questa modalità, è richiesto solo 1 segnale per controllare la velocità (pin PWM) e la direzione del motore (pin DIR).
Il PIN del PWM è sempre in stato HIGH, mentre il PIN di direzione(DIR) è alimentato con segnali PWM.
Ci sono 3 casi qui:
- Quando il ciclo di lavoro è <50%, il motore ruota dalla velocità più alta e gradualmente rallenta
- Quando il ciclo di lavoro è del 50%, il motore si ferma.
-Quando il ciclo di lavoro è >50%, il motore inizia a ruotare nella direzione opposta fino a raggiungere la velocità massima.
VERIFICA CON OSCILLOSCOPIO DIDATTICO - Per modalità di utilizzo vedere link; COMPONENTISTICHE ELETTRONICHE didattiche
TEST con l'uso del mini Oscilloscopio per verificare che l'uscita (pin 25) PWM sia attiva nel generare le onde quadre (duty Cycle):
PROGRAMMA CON L'ESP32 PER UNA SOLA USCITA:
const int PWM_CHANNEL = 0;
const int PWM_FREQ = 500;
const int PWM_RESOLUTION = 8;
const int MAX_DUTY_CYCLE = (int)(pow(2, PWM_RESOLUTION) - 1);
const int LED_OUTPUT_PIN = 25;
const int POT_PIN = 34;
const int DELAY_MS = 100;
void setup() {
ledcSetup(PWM_CHANNEL, PWM_FREQ, PWM_RESOLUTION);
ledcAttachPin(LED_OUTPUT_PIN, PWM_CHANNEL);
Serial.begin(115000);
}
void loop() {
int dutyCycle = analogRead(POT_PIN);
dutyCycle = map(dutyCycle, 0, 4095, 0, MAX_DUTY_CYCLE);
ledcWrite(PWM_CHANNEL, dutyCycle);
Serial.println(dutyCycle);
delay(DELAY_MS);
}
VERIFICA PRATICA EFFETTUATA: Il PERIODO è uguale a 1/500 = 0.002 sec. ==> a 2 millisecondi =>> 2 ms Cycl: 1.998 ms (Vedi foto)
L'ESPERIENZA CON LA SCHEDA MDD10 NON HA DATO L'ESITO DA ME SPERATO:
SECONDO Step: Verificare il funzionamento della scheda Cytron MDDS10A, materiale occorrente:
Scheda Cytron MDDS10A acquistata presso Futura Elettronica di Gallarate
Scheda ESP32 HELTEC LoRa V2 433 Mhz OLED a 0,96" acquistata presso Futura Elettronica di Gallarate
Potenziometro rotativo da 100 kOhm acquistata presso Futura Elettronica di Gallarate
Potenziometro lineare da 10 kOhm acquistata presso Futura Elettronica di Gallarate
2 motorini a 5 Volt c.c.
Moduli che utilizzo come TRASMETTITORE e RICEVITORE :
ESP32 HELTEC LoRa V2 433 Mhz OLED a 0,96"
Considerazioni personali sull'utilizzo del modulo WIFI LoRa 32(V2) che utilizzo per la trasmissione dati.
N.B. Caratteristiche elettroniche di ogni singolo Pin dell'ESP32:
Uscita 3.3 Volt e massima corrente 16 mA
· I Sensori alimentati dal modulo ESP32 - LoRa devono essere del tipo a 3.3 Vcc.
ESP32 ha 3 interfacce hardware seriali.
Per collegare es.: un GPS ad una seriale hardware del modulo WIFI LoRa 32(V2) devo definire una seriale personale,ecco perchè.
L'interfaccia seriale standard 0,collegata ai Pin GPIO3 (RX) e GPIO1 (TX), viene utilizzata per la comunicazione con l'IDE Arduino ed è permanentemente cablata al CP2102.
L'interfaccia seriale 1 dell'ESP 32 normale è collegata ai pin GPIO9 (RX) e GPIO10 (TX).
I pin GPIO9 (RX) e GPIO10 (TX) non sono presenti sul modulo WIFI LoRa 32(V2).
Sul modulo WIFI LoRa 32(V2) i Pin 9 e 10 vengono utilizzati per controllare la memoria flash e pertanto non sono accessibili.
L'interfaccia seriale 2 è normalmente collegata ai pin GPIO16 (RX) e GPIO17 (TX).
Il pin GPIO16 è collegato al ripristino del display OLED , se utilizzato in un programma il display rimane scuro
Si constata dalla figura del Pinout Diagram del modulo WIFI LoRa 32(V2) che:
i pin 4 - 15 - 16 sono utilizzati per l'OLED
Non bisogna utilizzare il controller SSD1306.
N.B. La libreria #include "heltec.h" gestisce il buon funzionamento e collegamenti :
· dei PIN della scheda LoRa
· dei Pin dell'OLED.
es.
//FILE:HELTEC_V2_GPS_13_FEBBRAIO_2023_FUNZIONANTE_CON_heltec_oled
//SCHEDA da impostare :Heltec WiFi Lora 32
// anche se è la scheda ver.2
// IDE arduino 1.8.12
#include "heltec.h"
#define BAND 433E6
#define SERIAL1_RX 2 // TX del GPS -> al PIN 2 dell'ESP32
#define SERIAL1_TX 17 // RX del GPS_-> al PIN 17 del'ESP32
Cambiano i comandi per gestire l'OLED rispetto ai comandi del controller SSD1306
....................
Heltec.display->clear();
Heltec.display->setTextAlignment(TEXT_ALIGN_LEFT);
Heltec.display->setFont(ArialMT_Plain_10);
.......
Heltec.display->drawString(96,48, String(temprature));
Heltec.display->drawString(0,54, "Umidità’ %: ");
Heltec.display->drawString(96,54, String(h));
Heltec.display->display();
.............
i pin da 32 a 39 sono attivi solo come INPUT (possono essere utilizzati anche come RX)
i pin 22 - 23 - 2 - 17 - 25 - 12 - 13 sono disponibili come INPUT/OUTPUT
Bene, la soluzione al mio problema è molto semplice (momentaneamente prendo a prestito i pin 2 e 17).
In seguito utilizzerò un pin arbitrario come RX dal blocco 32-39 per avere a disposizione 7 pin come OUTPUT.
..................
#define SERIAL1_RX 2 // TX del GPS -> al PIN 2 dell'ESP32
#define SERIAL1_TX 17 // RX del GPS_-> al PIN 17 del'ESP32
.........
void setup () {
..........
Serial1.begin(9600, SERIAL_8N1, SERIAL1_RX, SERIAL1_TX);
Heltec.begin(1,1,1,1, BAND);
LoRa.setTxPower(20,RF_PACONFIG_PASELECT_PABOOST);
..............................
Definisco l'interfaccia la Serial1 con 9600 baud e 8 bit senza parità(N) più 1 bit di stop sui pin GPIO 2 (RX) e GPIO 17 (TX).
Il chip ESP32 è in grado di collegare le interfacce hardware seriali (UARTS) a quasi tutti i pin IO.
L'uso di due antenne permettono di raggiungere un range di circa 10 km.(senza ostacoli):
una GROUND PLANE omnidirezionale per il trasmettitore
una YAGI direttiva per il ricevitore
permettono di raggiungere un range di circa 10 km.(senza ostacoli)
Antenna omnidirezionale ground plane 433MHz Antenna direzionale YAGI 433MHz
I COMPONENTI ELETTRONICI da utilizzare in TRASMISSIONE:
COMPONENTI ELETTRONICI da utilizzare in RICEZIONE e scheda di potenza:
ESPERIENZA ACQUISITA CON LA TRASMITTENTE FLYSKY - RICEVENTE - E MINI CINGOLATO
SFRUTTANDO L'ESPERIENZA CON LA TRASMITTENTE FLYSKY E RICEVENTE ESEGUIRO' IL TEST SOTTO ESPOSTO CON ESP LORA