Nano Data Record Logging Shield

Hello All,
I am using the "Nano Data Record Logging Shield Module For Arduino Nano Recorder Module 3.3V With SD Card Interface Module RTC Real Time Clock" production shield. I cannot find a schematic for this PCBA. I have the posted issue, what pin, one the Nano 33 IoT, is hardwired to CS / SS? I have tried example sketches and used pin 4 and pin 10 but no joy.

Can someone provide this shield schematic or which PIN should be used for CS / SS on this shiled which is in production?

I am not sure why I cannot find this information on-line.

Help is greatly appreciated!


I must apologize for posting this issue on two different forums. It will not happen again.

Does anyone have any ideas on how to solve this issue?

I assume there are separate runs on the SD / RTC shield for CS for each IC?



Split from an older thread

It would help if you provided a link to the data logger shield you have. It's a pretty small shield so you may be able to visually follow the PCB tracks to the pins. Alternatively you can use a multimeter to detect continuity between the chip pin and the header.

It would be easy to use an ohmmeter to check which pin is connected to the CS of each IC.

It's likely the RTC uses I2C, so it won't have a CS pin as such. If you can't find a schematic, you'll have to follow the traces with your meter - from the CS pin on the SD card, through the level shifter if there is one, then to the Nano pin.

Thanks to all! I appreciate all your comments. I assumed any open source shield would have a published schematic. This would solve my issue.

Unknown to all is that I am a blind retired BSEE and tracing runs on PC boards is not possible. I had techs to do that work for me during my career.

You can find the shield on Amazon and other sites by searching "Nano Data Logger Data Shield". But, if possible, I will retrace my purchase and report back.

Thanks again for all the comments. I thought the information would be easier to discover...


Also, I believe, although I am not sure, SD.h set the Nano PINs as follows:

11 - MOSI
12 - MIISO
13 - CLK

Can I open SD.h and find which PINs are use by the Nano 33 IoT for SS / CS?



I did find a "nano logger kit" on this website. It uses a DS1307 as the Real Time Clock. That device is an I2C device so you should be able to access it over the I2C bus without any chip select as I2C doesn't use that method of selecting chips.

The "nano logger kit" has a sketch which you can get here. A quick look at the sketch and is says that it uses pin 10 for the SD card Chip Select.

Their example code uses a BMP280 I2C sensor for barometric pressure and temperature - just for something to read and log as part of their demonstration.

Thank you for the sketch.

It seems that SD examples that use the "plug-in" SD shield and schematics do not exist. At least, I am unable to find them.

My Nano 33 IoT project is frustrated by the lack of a simple schematic which I assume is available to several shield manufactures. But not to the users.

Thanks to all for your help.


There are two serial types that would be used,

the I2C bus has dedicate pins. as was mentioned,the RTC and BME280 would be connected on those lines.

the SD card would use the SPI bus so the main lines on that are also pre-defined. the only other option is the chip select line.

but the question comes down to what you have.

there is a NANO v30 data logging shield for Arduino that is an all in one board. the NANO plugs into the socket and the other bits are on the extended PCB.

Link to Amazon

NANO Shield Amazon.jpg

NANO Shield Amazon.jpg

there is a link that has some review and a sketch the guy tried.

link to public lab

the sketch has bad characters.
sprintf(TmeStrng, ā€œ%04d/%02d/%02d,%02d:%02d:%02dā€, now.year(), now.month(),

* Derived from Ed Mallon's starter logging code.
C. Fastie modified to run without sleeping anything.
added BME280 sensor, added seconds to time readout
added unixtime
#include <SdFat.h>
#include <SPI.h>
#include <Wire.h>
#include <RTClib.h> 
#include <Adafruit_BME280.h>

Adafruit_BME280 bme; // The BME280 will be an I2C device
float hgInches = 29.95; // Enter the sealevel barometric pressure here (xx.xx inches Hg)
#define SEALEVELPRESSURE_HPA (hgInches/0.02952998751) // hPa=(inches Hg)/0.02952998751
SdFat SD;
#define MOSIpin 11
#define MISOpin 12
#define DS1307_I2C_ADDRESS 0x68
char TmeStrng[] = "0000/00/00,00:00:00"; //19 ascii characters 

void setup() { 
 Serial.begin(9600); // Open serial communications and wait for port to open:
 Wire.begin(); // start the i2c interface
 RTC.begin(); // start the RTC 
 RTC.adjust(DateTime((__DATE__), (__TIME__))); //sets the RTC to the computer time when the sketch is loaded
 Serial.print("Find SD card: ");
 if (!SD.begin(10)) {
 Serial.println("Card failed");
 Serial.println(" SD card OK"); 

 File dataFile ="datalog.txt", FILE_WRITE);
 if (dataFile) { // if the file is available, write to it:
 dataFile.println("Nano Logger");
 else {
 Serial.println("file error"); // if the file isn't open, pop up an error:
 bool status; 
 status = bme.begin(0x76); // 0x76 is the I2C address of the clone sensors I have
 if (!status) {
 Serial.println("No BME280");
 while (1);
} // end of setup
void loop() {
 float BMEt = (bme.readTemperature());
 float BMEh = (bme.readHumidity());
 float BMEp = (bme.readPressure() / 100.0F);
 float BMEa = (bme.readAltitude(SEALEVELPRESSURE_HPA));
 DateTime now =; //this reads the time from the RTC
 sprintf(TmeStrng, "%04d/%02d/%02d,%02d:%02d:%02d", now.year(), now.month(),, now.hour(), now.minute(), now.second()); // [added seconds]

 Serial.print("RTC utc Time: ");
 Serial.print("RTC time: ");
 Serial.print("BME280 temp: ");
 Serial.println(" C");
 Serial.print("BME280 Humidity: ");
 Serial.println(" %");
 Serial.print("Pressure: ");
 Serial.println(" hPa");
 Serial.print("Elevation: ");
 Serial.println(" m");
 //Construct a data string to write to SD card
 String dataString = ""; //this erases the previous string
 dataString += TmeStrng;
 dataString += ","; 
 dataString += String(now.unixtime());
 dataString += ","; 
 dataString += String(BMEt);
 dataString += ","; 
 dataString += String(BMEh);
 dataString += ","; 
 dataString += String(BMEp);
 dataString += ","; 
 dataString += String(BMEa);
//write the data to the SD card 
File dataFile ="datalog.txt", FILE_WRITE); // if the file is available, write to it:
if (dataFile) {
else {
 Serial.println("file error"); // if the file isn't open, pop up an error:
 delay(3000); // write data every 3 seconds
} // END of the MAIN LOOP