Wemos D1 – Mini meter shield realizzato con EasyEDA

JLCPCB – 2$ per prototipi di PCB, di qualsiasi colore. Produzione in 24 ore!
L’Azienda di prototipi PCB più popolare, con oltre 700.000 clienti in tutto il mondo!
JLCPCB – 2 $ for PCB prototypes. Free SMT Assembly (28 Nov. – 29 Dec.)  

Vediamo come realizzare un Meter shield per Wemos D1 mini, lo shield una volta collegato alla scheda Wemos D1 Mini o Wemos Pro permette di visualizzare su un piccolo display OLED la misura delle distanza in cm che separa il sensore dall’oggetto posto frontalmente al sensore.
Il sensore utilizzato è di tipo sonar ad ultrasuoni tipo HC-SR04 il quale non misura direttamente la distanza, ma fornisce il tempo impiegato da segnale sonoro per raggiungere un ostacolo e ritornare di nuovo al sensore. In base al tempo viene calcolata la distanza.
Il circuito è il PCB è stato realizzato con il programma online EasyEDAEasyEDA – Freeware per circuiti stampati

Wemos D1 - mini meter shield

Ecco i componenti necessari:

Fasi della realizzazione

Filmato illustrativo

Modulo WeMos D1 mini

Il Modulo WeMos D1 mini è basato sul microcontrollore Wi-Fi ESP8266 ESP-12F che può essere programmato utilizzando l’IDE di Arduino oppure NodeMCU. La semplicità della programmazione che può essere effettuata anche in modalità wireless e l’ampia disponibilità di shield aggiuntivi permettono di sviluppare il proprio progetto di “Internet delle cose” in tempi estremamente rapidi.
Il modulo WeMos D1 mini  è dotato di una interfaccia USB realizzata tramite il convertitore seriale-USB CH340
Dal connettore USB viene anche prelevata l’alimentazione a 5V, un regolatore interno (tipo RT9013) si occupa di generare l’alimentazione a 3,3V per il modulo ESP-12F. Per evitare confusione tutti i pin di I/O sono chiaramente etichettati.
Nota: Tutti gli I/O supportano una tensione massima di 3,3V

Specifiche tecniche

  • 11 I/O digitali, tutti i pin sono provvisti di interrupt e supportano PWM, I2C , One-Wire (D1-SCL-D2 -SDA)

  • 1 Pin analogico (tensione massima di ingresso 3.2V)

  • Connessione Micro USB

  • Compatibile con Arduino e con nodemcu

  • Dimensioni (mm): 28x24x18

Interfaccia I2C

Il collegamento tramite interfaccia I2C può essere utilizzato per connettere fino a 127 nodi tramite un bus che richiede solo due cavi dati, noti come SDA e SCL.

  • SDA => D2.

  • SCL => D1

Interfaccia SPI

Il collegamento SPI è molto più semplice di I2C. Master e slave sono collegati da tre fili di dati, solitamente chiamati MISO, (Master in, Slave out), MOSI (Master out, Slave in) e M-CLK.

  • M-CLK => D5

  • MISO => D6

  • MOSI => D7

(SPI Bus SS (CS) è D8.)

Pinout Completo

PinFunctionESP-8266 Pin
TXTXDTXD
RXRXDRXD
A0Analog input-max 3.3V inputA0
D0IOGPIO16
D1IO-SCLGPIO5
D2IO-SDAGPIO4
D3IO-10k Pull-upGPIO0
D4IO-10k Pull-up-BUILTIN_LEDGPIO2
D5IO-SCKGPIO14
D6IO-MISOGPIO12
D7IO-MOSIGPIO13
D8IO-10k Pull-down-SSGPIO15
GGroundGND
5V5V5V
3V33.3V3.3V
RSTResetRST

Foto del modulo

Modulo WeMos D1 mini - Bustina antistatica contenente il modulo

Modulo WeMos D1 mini – Bustina antistatica contenente il modulo

Modulo WeMos D1 mini – Contenuto della bustina antistatica

Modulo WeMos D1 mini - Modulo con connettori scelti per il montaggio

Modulo WeMos D1 mini – Modulo con connettori scelti per il montaggio

Modulo WeMos D1 mini - Modulo con connettori montati

Modulo WeMos D1 mini – Modulo con connettori montati

Sensore ad ultrasuoni HC-SR04

Il sensore ad ultrasuoni HC-SR04 ha un campo di misura che si estende da due centimetri a quatto metri e la precisione arriva a 1 cm.Il modulo comprende il trasmettitore a ultrasuoni, il ricevitore e il circuito di controllo.
Questi sensori ad ultrasuoni non misurano direttamente la distanza, ma forniscono il tempo impiegato da un segnale sonoro per raggiungere un ostacolo e ritornare di nuovo al sensore.

Quando Arduino setta a 1 il Pin Trigger, il sensore invia 8 impulsi ad ultrasuoni. Quando questi poi sono ricevuti, il sensore setta a 1 il pin Echo, viene quindi misurato il tempo che passa tra l’attivazione del pin Trigger ed il settaggio del pin Echo.  Infine, nota la velocità del suono, converte il tempo misurato in una lunghezza e ricava quindi la distanza dell’ostacolo.

Link Utili

Caratteristiche

Tensione di alimentazione5V
Frequenza ultrasuoni40 kHz
Distanza massima di lettura400 cm
Distanza minima di lettura2 cm
Risoluzione1 cm
Angolo di misura:< 30°
Dimensioni43x20x15 millimetri

HC-SR04 - Foto del sensore LATO FRONTALE

HC-SR04 – Foto del sensore LATO FRONTALE

HC-SR04 - Foto del sensore - LATO POSTERIORE

HC-SR04 – Foto del sensore – LATO POSTERIORE

Display monocromo OLED 0,49″risoluzione 64×32

Questo display monocromo OLED commercializzato dalla ICStation con il codice 10786, presenta una diagonale di 0,49″ e una risoluzione di 64×32 singoli pixel bianchi OLED, ciascuno è acceso o spento dal chip controller, in questo caso non è richiesta alcuna retroilluminazione e questo riduce l’assorbimento di potenza necessaria.L’integrato pilota è il modello SSD1306 (datasheet) che è un single-chip CMOS driver  per display tipo OLED / PLED (Organic Light Emitting Diode, Polymer light-emitting diodes).
L’integrato comunica tramite il protocollo I2C, sono necessari solo 2 pin, linea dati / clock.Per l’utilizzo è necessario un microcontrollore con più di 512 byte di RAM in quanto il display deve essere tamponato.
È disponibile per Arduino IDE l’apposita libreria; questa permette di stampare testo, bitmap , pixel , rettangoli, cerchi e linee . Essa utilizza 512 byte di RAM in quanto ha bisogno di tamponare l’intero schermo ma è molto veloce!Per altre informazioni ed esempi di utilizzo vedere la pagina dedicata.

Caratteristiche

Dimensioni:
PCB :15 x 16 mm
Area di visualizzazione :~ 6 x 12mm
Spessore :4mm
Alimentazione3.0-5.5V
Dettagli del display:
Diagonale del monitor :0.49 "
Numero di pixel :64 ? 32
Profondità colore :Monocromatico (Bianco-Blu)
Modulo di costruzione :COG
Interfaccia:I2C (High Level 2.2V-5.5V)
Indirizzo I2C:7 bit 0x3

Librerie per gestione display OLED

Per utilizzare il display OLED è necessario installare le librerie Adafruit SSD1306, in questo caso opportunamente modificate per adattarsi alla ridotta risoluzione.
Per cui occorre scaricare la libreria di supporto presente su GitHub, oppure fare clic su questo link per scaricare il file zip.
Per il giusto funzionamento del display, occorrerà modificare o verificare che all’interno del file Adafruit_SSD1306.h della libreria, la linea che definisce la dimensione del display, l’unica linea senza commento, sia quella #define SSD1306_64_32

// #define SSD1306_128_64
// #define SSD1306_128_32
// #define SSD1306_96_16
#define SSD1306_64_32

per gestire la parte grafica del modulo occorre inoltre scaricare le librerie grafiche Adafruit-GFX-Library presenti su  GitHub, oppure fare clic su questo link per scaricare il file zip.

Progettazione dello shield

Per la progettazione del circuito del Wemos D1 – mini meter shield, si è scelto un tool EDA, Electronic Design Automation online gratuito chiamato EasyEDA, maggiori informazioni in questo articolo.

il programma non richiede alcuna installazione in quanto basato sul cloud; è stato progettato per fornire ad ingegneri elettronici, insegnanti, studenti di ingegneria e hobbisti, un facile strumento di lavoro.Il programma permette di disegnare e simulare circuiti, è facile da usare e consente altresì, il disegno di circuiti stampati, direttamente dal proprio browser. All’interno dell’Editor sono presenti un gran numero di librerie di componenti, in modo da poter facilmente e rapidamente trovare le parti desiderate.Il sito offre anche un servizio di alta qualità ma a basso costo per la realizzazione di PCB personalizzati.

È possibile accedere allo schema attraverso questo link

Dettaglio schema di collegamento con scheda Wemos D1 Mini

Dettaglio schema di collegamento con display OLED

Sensore Sonar, dettaglio schema di collegamento con

Test preliminare del progetto

Prima di realizzare il circuito stampato il progetto è stato testato su breadboard, per cui i vari componenti sono stati montati come in figura

Wemos D1 - mini meter shield

Come saprete, i pin digitali della scheda Wemos D1 Mini non sono adatti a ricevere segnali con una tensione superiore a 3,3V, dato che il sensore ad ultrasuoni HC-SR04  funziona a 5V anche i suoi segnali in uscita saranno a questo valore massimo.

Nel nostro circuito si è scelto di utilizzare i seguenti valori standard. come valore di R1=2,2 kΩ per R2 un valore di 4,7 kΩ, da cui applicando le formula si avrà che la tensione in uscita sarà di circa 3,4 V, la piccola differenza è ancora tollerabile.

Studio del PCB con il programma EasyEDA

Anteprima del PCB lato TOP SIDE

Wemos D1 - mini meter shield

Anteprima del PCB lato BOTTOM SIDE

Wemos D1 - mini meter shield

Dopo aver completo la progettazione del  PCB, è possibile fare clic sull’icona PCB order, in questa pagina è possibile scaricare file Gerber del vostro PCB e inviarli a qualsiasi produttore, oppure ancora più facile (e meno costoso) ordinarlo direttamente al servizio offerto dal sito JLCPCB
Qui è possibile selezionare il numero di PCB che volete ordinare, personalizzando eventualmente il vostro ordine, come eventualmente variare il colore del PCB. Dopo aver selezionato tutte le opzioni, si farà clic su “Salva nel carrello” e si completerà l’ordine, in questo modo si riceveranno i PCB pochi giorni dopo, nel caso si utilizzi il corriere.


Per altre informazioni su come realizzare un PCB vedere la seguente pagina

Wemos D1 - mini meter shield

Ecco i PCB pronti per il montaggio

Montaggio dello shield

Vediamo sotto le varie fasi del montaggio dello shield che è limitato alle pin strip e alle due resistenze del partitore

Wemos D1 - mini meter shield

Test dello shield montato

Per il test del Wemos D1 meter shield, occorrerà ora collegare la scheda appena realizzata al PC e scaricare il programma (scaricabile da questo link) sul WEMOS D1 mini ed eseguirlo.
Se si desidera, è possibile clonare lo schema Wemos D1 meter shield  del PCB, questo è possibile da questo link.

Wemos D1 - mini meter shield

Wemos D1 - mini meter shield

Wemos D1 - mini meter shieldWemos D1 - mini meter shield


sketch “Wemos D1 mini meter shield.ino”

Sketch testato con versione IDE 1.8.5

#include <SPI.h>;
#include <Wire.h>;
#include <Adafruit_GFX.h>;
#include <Adafruit_SSD1306.h>;

#define OLED_RESET 0  // GPIO0
Adafruit_SSD1306 display(OLED_RESET);

//Definizione pin a cui è collegato il sonar
#define echoPin D8 // Echo Pin
#define trigPin D3 // Trigger Pin
long duration, distance; // Duration used to calculate distance

void setup()
{
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);

  // Impostazione modulo display con indirizzo I2C addr 0x3C
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  // Cancellazione schermo e buffer
  display.clearDisplay();

  // Messaggio iniziale
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.println(" ADRIROBOT");
  display.setTextColor(BLACK, WHITE); // Inverte il colore del testo
  display.println("   SONAR  ");
  display.println("   METER  ");
  display.display();
  delay(2000);
  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.print("Value");
  display.display();
}

void loop()
{
  /* The following trigPin/echoPin cycle is used to determine the
    distance of the nearest object by bouncing soundwaves off of it. */
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  //Calculate the distance (in cm) based on the speed of sound.
  distance = duration / 58.2;
  Serial.println(distance);
  display.fillRect(0, 18, 64, 15, BLACK);
  display.setCursor(0, 18);
  display.print(distance); display.println(" cm");
  display.display();
  //Delay 50ms before next reading.
  delay(50);
}

 

Lascia un commento

Your email address will not be published.