Thanks for all the great responses.
I actually figure it out. I knew that my sensors were working because I could get the same code to work when using a ESP8266. I'm currently using GPIO25 for my 5 DS18B20 temperature sensors and I'm also using a 4.7 Ohm resistor as suggested by Dallas. At first, I could not see any sensor. After some thinkering, I was able to get the mac addresses of all 5 sensors with the Atom Lite but the temperature was ALWAYS 85. Googling for 85, someone said that we have to wait 750 ms
after calling sensors.requestTemperatures();
sensors.requestTemperatures();
delay(750); // This seems critical to get the sensors to work with AtomLite
Then I can proceed to get the temperatures like so. Note that this only illustrates the spirit of what needs to be done and I haven't tested the exact code that follows.
#include <M5Atom.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// GPIO where the DS18B20 is connected to
const uint8_t oneWireBus = GPIO_NUM_25;
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(oneWireBus);
// Pass our oneWire reference to Dallas Temperature sensor
DallasTemperature sensors(&oneWire);
void setup() {
M5.begin(true, false, true); // But I need to test without this line.
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
delay(750); // This seems critical to get the sensors to work with AtomLite
const unsigned int num_DS18B20 = sensors.getDeviceCount();
for (unsigned int i=0; i<num_DS18B20; ++i) {
DeviceAddress mac;
sensors.getAddress(mac, i);
delay(10);
const float temperature = sensors.getTempCByIndex(i);
send_MQTT(mac, temperature);
}
}
delay(10000);
}
I hope that this information will be useful for someone else trying to hookup some DS18B20 to an Atom Lite.