Per testare la serie di sensori contenuti nella confezione “37 in 1 Sensor Module Board Set” che è venduta da molti siti è possibile utilizzare questo shield compatibile con la scheda Arduino UNO R3 originale e relativi cloni.
Il PCB è stato progettato con il programma online EasyEDA, mentre stata realizzata tramite il servizio offerto dal sito JLCPCB.
Sito online per creazioni schemi e PCB | Sito produzione PCB |
Indice
Descrizione
Sullo shield per testare i sensori Arduino sono disponibili molti connettori che risultano già opportunamente collegati con le porte digitali o analogiche di Arduino.
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 50 tipi, la presenza di un connettore bus I2C espande ulteriormente la tipologia di dispositivi che lo shield permette.
Sulla scheda è anche presente un connettore per il collegamento di un piccolo display OLED da 0.95″risoluzione 96×64 pixel, 65536 Colori, su di esso potranno essere mostrati dei messaggio o i valori misurati dai sensori
Lo schema dello shield per testare i sensori Arduino è lo stampato sono stati realizzati con il programma free EasyEDA, il progetto, schema dello Shield e PCB, può essere trovato a questo link per la realizzazione si è utilizzato il servizio di realizzazione fornito da JLCPCB.
Schema elettrico
Elenco dei componenti necessari
n° | Sigla | Denominazione | Quantità |
---|---|---|---|
1 | R1,R3 | 100 Ω 1/4W 5% | 2 |
2 | R2,R4 | 220 Ω 1/4W 5% | 2 |
3 | R5 | 150 Ω 1/4W 5% | 1 |
4 | JP1, JP3, JP2, JP4, JP6, JP8 | Header-Female-2.54_1x3 | 6 |
5 | JP5, JP7, JP12, JP13, JP15, JP9, JP16, JP14 | Header-Female-2.54_1x4 | 8 |
6 | JP10,JP11 | Header-Female-2.54_1x5 | 2 |
7 | DISP1 | Header-Female-2.54_1x4 | 1 |
8 | Header-Male-2.54_1x8 | 2 | |
9 | Header-Male-2.54_1x6 | 1 | |
10 | Header-Male-2.54_1x10 | 1 |
Sensori compatibili con lo shield
Connettore | Sensore/Modulo |
---|---|
JP1 (D2) JP2 (D4) JP3 (D3) | 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-010 Optical broken module, KY-012 Active buzzer module, KY-015 Temperature and humidity sensor module, KY-017 Mercury open optical module, KY-019 5V relay 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 | Capacitive touch sensor, HC-SR501 (PIR sensor) |
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 3mm |
JP7 | KY-016 3-color LED module |
JP8 | KY-034 Automatic flashing colorful LED module |
JP9 | KY-032 Obstacle avoidance sensor module |
JP10 | KY-023 XY-axis joystick module |
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 |
JP14 | Sensori MQ-2, MQ-3, MQ-4 MQ-5, MQ-6, MQ-7, MQ-8, MQ-9, MQ-135 |
JP15 | Connettore I2C, KY-018 Photo resistor module, KY-013 Temperature sensor module |
JP16 | Sonar HC-SR04 |
DISP1 | display OLED utilizzato ha una diagonale di 0.95", una risoluzione di 96x64 pixel, 65536 Colori |
Sensori e moduli già testati con i Multi test shield
Test dei sensori
KY-003 Hall magnetic sensor
KY-009 RGB full color LED SMD
KY-010 Optical broken module
KY-011 2 color LED
KY-012 Active buzzer
KY-013 Temperature sensor
KY-015 Temperature and humidity
KY-029 Yin Yi 2-color LED 3mm
KY-032 Obstacle avoidance sensor
KY-034 Automatic flashing colorful
Sensore infrarosso passivo PIR HC-SR501
Il display OLED
Il display OLED utilizzato ha una diagonale di 0.95″, una risoluzione di 96×64 pixel, 65536 Colori ed è basato sul driver SSD1331 è dotato di interfaccia di comando SPI e può essere alimentato con una tensione compresa tra i 3.3V – 5V.
Per altre informazioni vedere l’articolo: Display OLED 0,95″ 96×64 SSD1331 SPI
PIN | Sigla | Descrizione |
---|---|---|
1 | GND | Power ground |
2 | VCC | 2.8-5.5V power supply |
3 | SCL (SCLK) | Serial Clock (emesso dal master) |
4 | SDA (MOSI) | Serial Data Output, Master Output Slave Input (uscita dal master) |
5 | RES | Reset |
6 | DC | Data / command |
7 | CS | Chip Select, Slave Select, emesso dal master per scegliere con quale dispositivo slave vuole comunicare |
Per utilizzare il display OLED è necessario installare alcune librerie. Per questo riferirsi a quanto riportato nell’articolo Display OLED 0,95″ 96×64 SSD1331 SPI.
PCB lato TOP
PCB lato BOTTOM
Vista 3D del PCB lato TOP
Foto del PCB realizzato da JLCPCB
Foto dei componenti necessari
Componenti necessari, PCB, connettori e resistenze
Fasi di montaggio
Si inizia con la saldatura delle resistenze
Proseguiamo poi alle pin strip femmine: 3, 4, 5 pin
Quindi si passa poi alle pin strip maschio per il collegamento con la scheda Arduno: 6, 8, 10 pin
Il montaggio e concluso non resta che da installare il display sullo shield e questo sulla scheda Arduino
Il montaggio è definitivamente concluso
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 Arduino UNO al PC e compilare il programma (scaricabile da questo link) nella memoria dell’Arduino che lo eseguirà
Sketch utilizzato per il test
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
// Definizione dei pin di collegamento #define sclk 13 #define mosi 11 #define cs 10 #define rst 9 #define dc 8 //Il modulo va montato su JP5 #define greenpin 7 // G - seleziona il pin per il LED verde #define redpin 6 // R - seleziona il pin per il LED rosso #define bluepin 5 // B - seleziona il pin per il LED blu // Definizione dei colori #define BLACK 0x0000 #define BLUE 0x001F #define RED 0xF800 #define GREEN 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #include <Adafruit_GFX.h> #include <Adafruit_SSD1331.h> #include <SPI.h> Adafruit_SSD1331 display = Adafruit_SSD1331(cs, dc, rst); void setup() { Serial.begin(9600); display.begin(); pinMode(bluepin, OUTPUT); pinMode(greenpin, OUTPUT); pinMode(redpin, OUTPUT); // Messaggio iniziale display.fillScreen(BLACK); display.setTextSize(1); display.setTextColor(BLUE); display.setRotation(2); //Ruota display display.setCursor(0, 0); display.println(" ADRIROBOT"); display.setTextColor(GREEN); display.println(" SHIELD "); display.println(" TEST FOR "); display.println(" 37 IN 1 "); display.println(" SENSOR "); delay(2000); display.fillScreen(BLACK); display.setTextColor(YELLOW); display.setCursor(0, 0); display.println(" TEST "); display.println(" MODULO "); display.println(" KY-009 "); } void loop() { display.setTextColor(MAGENTA); display.fillRect(0, 30, 64, 15, BLACK); display.setCursor(0, 30); display.print("Led ROSSO"); 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"); 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"); 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"); 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"); delay (200); digitalWrite(redpin, LOW); digitalWrite(greenpin, LOW); digitalWrite(bluepin, LOW); delay (2000); } |
Modifiche
Sostituzione pin D12 con pin D17
Effettuando i collaudi ho notato che collegando un modulo, come il sensore sonar HC-SR04 su connettore JP16 che ha un pin collegato alla porta D12: non funzionava.
La ricerca del motivo ha evidenziato che anche se non utilizzato direttamente dal Modulo display , questo pin risulta riservato dalla libreria SPI che lo gestisce,per la funzione è MISO (Master In SlaveOut) per cui non può utilizzato per altre funzioni.
Per cui, non avendo altri pin digitali liberi, non volendo utilizzare i pin D0 e D1 utilizzati per la programmazione, ho pensato di utilizzare uno dei pin analogici in particolare A3, che è in realtà D17.
Per cui avendo già il PCB, ho tagliato la pista sul lato TOP nei pressi di D12 e ho fatto un collegamento colante tra il pin A3 con il pin centrale di JP4, in questo modo i connettori JP4, JP12 e JP16 risultano collegati a D17 invece di D12.
Nel caso realizzaste il PCB prelevando lo schema dal sito EasyEDA questo risulta già corretto e la modifica non è da effettuarsi