Wemos D1 mini multi test shield

Ultimo aggiornamento 5 novembre 2018


 

Indice

Descrizione

Se si possiede una scheda Wemos D1 mini è si vogliono sperimentare la serie di sensori contenuti nella confezione "37 in 1 Sensor Module Board Set" che è venduta da molti siti è possibile utilizzare questo Wemos D1 mini multi test shield

pcbgogo

homotix

PCBONLINE

FS PCBA

Sullo shield sono disponibili molti connettori che risultano già opportunamente collegati con le porte digitali o analogiche della scheda Wemos D1 mini . Sulla scheda è inoltre già presente uno stadio di alimentazione che permette di alimentare il tutto per esempio con una batteria 9V.
In realtà, la scheda, oltre ai sensori presenti nel kit "37 in 1 Sensor Module Board Set" permette di testare altri sensori, servo, ecc per un totale di oltre 30 tipi, la presenza di un connettore  bus I2C espande ulteriormente la tipologia di dispositivi che lo shield permette.
Se si monta sul Wemos D1 mini  il relativo OLED Shield si potranno visionare sul display da 0,66 "64 x 48 pixel i valori misurati oppure gli stati logici.
Lo schema è lo stampato sono stati realizzati con il programma free EasyEDA, il progetto può essere clonato, accessibile da questo link per la realizzazione si è utilizzato il servizio di realizzazione fornito da JLCPCB

Sensori compatibili con lo shield

Connettore Sensore/Modulo
JP1-JP2-JP3 KY-001 Temperature sensor module, KY-002 Vibration switch module, KY-003 Hall magnetic sensor module, KY-004 Key switch module, KY-005 Infrared emission sensor module, KY-006 Small passive buzzer module, KY-008 Laser sensor module,  KY-010 Optical broken module, KY-012 Active buzzer module, KY-013 Temperature sensor module, KY-015 Temperature and humidity sensor module,  KY-017 Mercury open optical module, KY-018 Photo resistor module, KY-020 Tilt switch module, KY-021 Mini magnetic reed modules, KY-022 Infrared sensor receiver module, KY-031 Knock Sensor module, KY-033 Hunt sensor module, KY-035 Class Bihor magnetic sensor, KY-039 Detect the heartbeat module
JP4 HC-SR501
JP5 KY-009 3-color full-color LED SMD modules
JP6 KY-011 2-color LED module, KY-029 Yin Yi 2-color LED module 3 mm
JP7 KY-016 3-color LED module
JP8 KY-034 Automatic flashing colorful LED module
JP9 KY-032 Obstacle avoidance sensor module
JP10 KY-019 5V relay module, Servomotore - alimentazione +5V
JP11 KY-040 Rotary encoder module
JP12 KY-024 Linear magnetic Hall sensors, KY-025 Reed module, KY-026 Flame sensor module, KY-028 Temperature sensor module, KY-036 Metal touch sensor module, KY-037 Sensitive microphone sensor module, KY-038 Microphone sound sensor module,
JP13 KY-027 Magic light cup module
JP15 Connettore I2C

Schema elettrico

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

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.

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.

(SPI Bus SS (CS) è D8.)

Pinout Completo

Pin

Function

ESP-8266 Pin

TX

TXD

TXD

RX

RXD

RXD

A0

Analog input-max 3.3V input

A0

D0

IO

GPIO16

D1

IO-SCL

GPIO5

D2

IO-SDA

GPIO4

D3

IO-10k Pull-up

GPIO0

D4

IO-10k Pull-up-BUILTIN_LED

GPIO2

D5

IO-SCK

GPIO14

D6

IO-MISO

GPIO12

D7

IO-MOSI

GPIO13

D8

IO-10k Pull-down-SS

GPIO15

G

Ground

GND

5V

5V

5V

3V3

3.3V

3.3V

RST

Reset

RST

Impostazione dell'IDE di Arduino

Installazione del driver per il chip CH340G

Come spiegato la scheda utilizza come convertitore USB-seriale il chip CH340G  invece che il più diffuso chip di FTDI o Atmega32U4, siccome Windows non supporta nativamente questo chip, il modulo non viene riconosciuto.

Per questo motivo è necessario scaricare il driver dal sito ufficiale del fornitore (sfortunatamente è in cinese).

Una volta eseguito l’unzip del pacchetto, è possibile procedere con l’aggiornamento del driver per la periferica:

 

 

Per cui si dovrà lanciare il programma SETUP.EXE

 

 

Dopo l'apertura della finestra si effettuerà l'installazione dei driver, che avverrà in automatico premendo INSTALL
A fine procedura sarà mostra la seguente finestra

 

 

A questo punto collegando il modulo, questo sarà riconosciuto e Windows configurerà correttamente la nuova porta COM

Installazione del driver della scheda

Per programmare il modulo WeMos D1 mini utilizzeremo l'IDE di Arduino, per cui se non già installato occorrerà scaricare e installare l'ultima versione dal sito ufficiale (https://www.arduino.cc/en/main/software ).

A questo punto dovremmo aggiungere le informazioni per le schede ESP8266 all'Arduino.  Per cui aperto l'IDE di Arduino, andare al menu File -> Impostazioni -> URL aggiuntive per il Gestore schede, l'indirizzo da inserire è

https://github.com/esp8266/Arduino/releases/download/2.3.0/package_esp8266com_index.json (Figura 1).

Inserimento URL aggiuntiva per gestione modulo - Figura 1

Per impostare la scheda WeMos D1 mini, andare al menu Strumenti -> Scheda -> Gestione schede (Figura 2)

Gestione schede - Figura 2

Quando apparirà la scheda Gestore schede digitare ESP8266 e quindi installare i driver cliccando su Installa (figura 3)

Installazione driver schede - Figura 3

A questo punto tornare al menù Strumenti -Gestore schede ... quindi selezionare nella sezione ESP8266 Modules il modello WeMos D1 R2 & mini, (Figura 4). In questo modo sarà possibile programmare il modulo.

Selezione scheda WeMos D1 R2 & mini - Figura 4

Il display OLED

Come riportato in descrizione, è possibile installare sul modulo Wemos D1 mini l'OLED shield che è un piccolo display monocromatico di tipo OLED da 0,66 "64 x 48 pixel.

La tipologia OLED indica che non solo il display è molto luminoso e chiaro con un elevato rapporto di contrasto ma ha un consumo energetico molto inferiore rispetto ad altri display tecnologie come l'LCD retroilluminato, è anche molto visibile sia in condizioni di oscurità totale che di luce intensa.
Per interfacciare il modulo il display utilizza un'interfaccia seriale I2C che richiede solo due pin di dati. Il circuito di reset è a bordo e significa che non è necessario un pin di reset aggiuntivo.
Sebbene il modulo sia progettato per essere utilizzato con le mini schede Wemos D1 Mini o Wemos Pro, il display OLED con il controller di visualizzazione SSD1306 può quindi essere utilizzato come modulo di visualizzazione con altre schede microcontrollore come Arduino
il kit del modulo comprende inoltre 2 header x 8 pin maschio-maschio, per il loro montaggio è richiesta la saldatura,permettono al modulo di essere facilmente inserito nel Mini header WeMos D1.

Per altre informazioni vedere l'apposita pagina.

Libreria di gestione

Per utilizzare il display OLED è necessario installare l'apposita libreria, questa può essere cercata tra le librerie installabili nell’IDE, basterà inserire nel campo "ssd1306", e si dovrà installare quella realizzata da Adafruit + mcauser, una volta caricata sarà mostrata la dicitura "INSTALLED".

Analogamente, sempre per gestire la parte grafica occorre caricare la libreria grafica "Adafruit GFX Library", in questo caso si è scelta la versione 1.2.9, una volta caricata sarà mostrata la dicitura "INSTALLED".
Per maggiori informazioni vedere il link.

Costruiamo lo Shield

Vista del PCB lato TOP

Vista del PCB lato BOTTOM

Vista 3D del PCB lato TOP

Foto del PCB realizzato da  JLCPCB

I componenti necessari

ID Sigla Descrizione   Quantità
1 JP5,JP7,JP12,JP13,JP15,JP9 Header-Female-2.54_1x4  6
2 R5 150 Ω 1/4W  1
3 R1,R3 100 Ω 1/4W   2
4 R2,R4 220 Ω 1/4W  2
5 JP11 2.54mm 1*5p Female header  1
6 JP1,JP3,JP2,JP4,JP6,JP8,JP10 Header-Female-2.54_1x3  7
7 U2 WEMOS D1  1
8 R6 4K7 Ω 1/4W  1
9 R7 2K2 Ω 1/4W  1
10 J1 DC Power Jack connector  1
11 U1 LM 2940P -5.0  1
12 D1 Diodo 1N4004  1
13 C2 Condensatore poliestere 100 nF  1
14 C1 Condensatore elettrolitico 100 uF 50V  1

 

DC Power Jack connector
Piedinatura Datasheet Foto del connettore

LM2940 1A Low Dropout Regulator

Piedinatura Datasheet Foto dell'integrato

 1N4004 - Diodo general purpose 400V - 1A

Piedinatura Datasheet Foto

Fasi di montaggio

 

Foto del montaggio

Vista generale dello shield montato

Dettaglio della zona connettori

Dettaglio modulo Wemos D1 mini e display OLED

Dettaglio zona alimentatore

Test dello shield montato

Ora possiamo passare al collaudo dello shield appena realizzato. Per fare questo utilizzeremo il modulo KY-009 RGB full color LED SMD module, che si presenta come una piccolo circuito che misura 18,5 millimetri x 15mm, su di esso è montato un LED RGB tipo 5050 SMD e un connettore a 4 pin.
Il LED può emette una ampia gamma di colori mescolando rosso, verde e blu.

La quantità di ciascun colore primario può venire regolata tramite un pilotaggio di tipo PWM, il modulo deve essere montato sul connettore JP3 come mostrato in figura.

la limitazione della corrente che scorre verso i led contenuti nel led RGB tipo 5050, viene fatto dalle resistenze già presenti sullo shield.
Se disponibile inserire il display nel connettore come mostrato in figura, il suo utilizzo non è indispensabile all'esecuzione del programma.
Ora si dovrà collegare la scheda Wemos D1 Mini al PC e compilare il programma (scaricabile da questo link) nella memoria del Wemos che lo eseguirà.

/*####################################################################
  FILE: shield_test_code_KY-009.ino
  VERSION: 1.0
  Descrizione: Programma per test modulo
  KY-009 RGB full color LED SMD modules

  Creato il 01/11/2018 da Adriano Gandolfo
  Sito web http://www.adrirobot.it
  Blog http://it.emcelettronica.com/author/adrirobot
  Pagina Facebook https://www.facebook.com/Adrirobot-318949048122955
  Istagram https://www.instagram.com/adrirobot/
  This example code is in the public domain.
  #################################################################### */

#include "SPI.h"
#include "Wire.h"
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"

#define bluepin D5  // seleziona il pin per il LED blu
#define greenpin D7 // seleziona il pin per il LED verde
#define redpin D6   // seleziona il pin per il LED rosso
int val;

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

void setup()   {
  Serial.begin(9600);
  pinMode(bluepin, OUTPUT);
  pinMode(greenpin, OUTPUT);
  pinMode(redpin, OUTPUT);

  // Impostazione modulo display con indirizzo I2C addr 0x3C
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.display();
  delay(2000);
  // 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("  SHIELD  ");
  display.println(" TEST FOR ");
  display.println("  37 IN 1 ");
  display.println("  SENSOR  ");
  display.display();
  delay(2000);
  display.clearDisplay();
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.println("   TEST   ");
  display.println("  MODULO  ");
  display.println("  KY-009  ");
  display.display();
}

void loop()
{
  display.fillRect(0, 30, 64, 15, BLACK);
  display.setCursor(0, 30);
  display.print("Led ROSSO");
  display.display();
  delay (200);
  digitalWrite(redpin, HIGH);  //Accende il led rosso
  delay (1000);
  digitalWrite(redpin, LOW);  //Spegne il led rosso

  display.fillRect(0, 30, 64, 15, BLACK);
  display.setCursor(0, 30);
  display.print("Led BLU");
  display.display();
  delay (200);
  digitalWrite(bluepin, HIGH);  //Accende led blu
  delay (1000);
  digitalWrite(bluepin, LOW);  //Spegne led blu

  display.fillRect(0, 30, 64, 15, BLACK);
  display.setCursor(0, 30);
  display.print("Led VERDE");
  display.display();
  delay (200);
  digitalWrite(greenpin, HIGH);  //Accende led verde
  delay (1000);

  display.fillRect(0, 30, 64, 15, BLACK);
  display.setCursor(0, 30);
  display.print("Led BIANCO");
  display.display();
  delay (200);

  digitalWrite(redpin, HIGH);  //Accende il led rosso
  digitalWrite(bluepin, HIGH);  //Accende il led blu
  // Essendo accesi i tre led il colore emesso è il bianco
  delay (1000);

  // Spegne tutti i tre led
  display.fillRect(0, 30, 64, 15, BLACK);
  display.setCursor(0, 30);
  display.print("SPENTO");
  display.display();
  delay (200);
  digitalWrite(redpin, LOW);
  digitalWrite(greenpin, LOW);
  digitalWrite(bluepin, LOW);
  delay (2000);
}

Breve Filmato del test

 

 

Elenco revisioni

05/11/2018

Emissione preliminare