Nano 33 ble (non-sense) external i2c scan isn't working

I've found the aug 2020 and the oct 2019 posts.

And for me the scan program from oct 19 only
sees internal i2c addresses, 0x1E & 0x6B, I know
about the IMU, not sure what the other one is.

This scan and and the original and the aug 2020
scan do not see my i2c device, which is a TSY01
temp sensor at 0x77 external, which works fine
on a nano.
Using arduino ide 1.8.16
I've found nothing else searching around.

I'd like to get the i2c scan working first.
Thanks for any suggestions, perhaps the
library needs an adjustment for the
nano 33 BLE - not sense version

@stone7, your topic has been moved to a more suitable location on the forum. Introductory Tutorials is for tutorials that e.g. you write, not for questions. Feel free to write a tutorial once you have solved your problem :wink:

I have no experience with the newer Nanos so can't really help. Some points

  • Double / triple check the wiring, post a schematic and your code.
  • The original Nano was a 5V device, how did you connect a 3.3V sensor to it? Level shifters? If so, did you remove them from the design?

I can confirm the external I2C on the Arduino Nano 33 BLE is working.

Can you please confirm the points sterretje asked you. Additionally:

  • please provide links to the posts you mentioned
  • let us know whether you have an oscilloscope or logic analyzer available

(I couldn't find the referenced posts, but I used them )

This program returns - No I2C devices found.
running on nano 33 BLE -not the sense version
running on a nano 328, returns 0x77 -a TSY01 temp sensor

The program further below returns(was returning)
(I cannot get this to find anything now.)
I2C device found at address 0x1E !
I2C device found at address 0x6B !
--> presumably these are the internal i2c devices
and it doesn't see the i2c device plugged into
A4 and A5, common ground, 3.3v
and again it works fine on the nano 328p

So, anyway, I've moved on. I wanted a sensor
to display something while I worked on the peripheral
program. I have switched to a TMP36, using A0,
using the Battery Monitor peripheral example.
And that's fine.

Thanks Klaus

I'll get back to i2c, and btw I couldn't get the dht11
to work either, on the nano 33 ble,

Thanks, good day, I've moved on.

// --------------------------------------
// i2c_scanner
// from::Arduino Playground - I2cScanner
// comments removed
// ---------------------------------------

#include <Wire.h>

void setup()
{
Wire.begin();

Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nI2C Scanner");
}

void loop()
{
byte error, address;
int nDevices;

Serial.println("Scanning...");

nDevices = 0;
for(address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();

if (error == 0)
{
  Serial.print("I2C device found at address 0x");
  if (address<16) 
    Serial.print("0");
  Serial.print(address,HEX);
  Serial.println("  !");

  nDevices++;
}
else if (error==4) 
{
  Serial.print("Unknown error at address 0x");
  if (address<16) 
    Serial.print("0");
  Serial.println(address,HEX);
}    

}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");

delay(5000); // wait 5 seconds for next scan
}

=======================================
I can no longer get this to scan the nano 33 ble internal i2c

#include "Wire.h"

void setup()
{
Wire.begin();

Serial.begin(9600);
while (!Serial);
}

void loop()
{
byte error, address;
int nDevices;

Serial.println("Scanning...");

nDevices = 0;
for(address = 1; address < 127; address++ )
{

Wire.beginTransmission(address);
error = Wire.endTransmission();

if (error == 0)
{
  Serial.print("I2C device found at address 0x");
  if (address<16) 
    Serial.print("0");
  Serial.print(address,HEX);
  Serial.println("  !");

  nDevices++;
}

}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");

delay(5000); // wait 5 seconds for next scan
}

@KlausK Here is the link to one of the posts on the internal i2c scan. I believe its the October 2019 reference and I can't find the other one.
https://forum.arduino.cc/t/advice-i2c-communication-with-internal-sensors-ble-ble-sense/613815

The standard i2c scan programs do not find the internal devices, and it appears that the special scans with an alternate wire bus do not find the external devices.

I did a few test with an Arduino Nano 33 BLE and a BLE Sense with some external I2C devices connected to SDA/A4 and SCL/A5. With Wire in the sketches above (reply #4) I can see all the external devices connected and with Wire1 I can see all the internal devices.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.