Arduino Nano 33 IoT с библиотекой Arduino MqttClient и датчиком MAX30100 не отправляет данные отправляет только значение 0
Я использую Arduino Nano 33 IoT с библиотекой ArduinoMqttClient и датчиком MAX30100 для сбора данных через I2C. Как только я вызову клиент MQTT. подключение () датчик перестает считывать данные по I2C. И начните считывать значение 0 и отправлять данные о значении 0 на сервер [raspberry pi]. пожалуйста, мне нужна помощь от всех, кто понимает функции max30100. Я с радостью принимаю вашу помощь.
////////// Вот мой код /////////
#include <WiFiNINA.h>
#include <PubSubClient.h>
#include <MAX30100_PulseOximeter.h>
void InitializePOX();
#define REPORTING_PERIOD_MS 1000
//uint8_t max30100_address = 0x57;
uint32_t poxLastReport = 0;
uint32_t prevMillis = 0;
uint32_t tsLastReport = 0;
PulseOximeter pox;
const char* ssid = "HP";
const char* password = "12345678";
const char* mqtt_server = "192.168.**.**";
WiFiClient espClient;
PubSubClient client(espClient);
unsigned long lastMsg = 0;
#define MSG_BUFFER_SIZE (50)
char msg[MSG_BUFFER_SIZE];
int value = 0;
long now = millis();
long lastMeasure = 0;
void setup_wifi() {
delay(10);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
randomSeed(micros());
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
}
void reconnect(){
}
void setup() {
Serial.begin(115200);
pox.begin();
setup_wifi();
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
// pox.setOnBeatDetectedCallback(onBeatDetected);
Serial.print("Initializing pulse oximeter..");
// Initialize sensor
if (!pox.begin()) {
Serial.println("FAILED");
for(;;);
} else {
Serial.println("SUCCESS");
}
// Configure sensor to use 7.6mA for LED drive
pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);
// Register a callback routine
// pox.setOnBeatDetectedCallback(onBeatDetected);
}
void InitializePOX()
{
Serial.print("Initializing pulse oximeter..");
// Initialize sensor
if (!pox.begin()) {
Serial.println("FAILED");
for(;;);
} else {
Serial.println("SUCCESS");
}
// Configure sensor to use 7.6mA for LED drive
//pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);
}
void loop() {
if (!client.connected()) {
reconnect();
}
if(!client.loop())
client.connect("ESP8266Client");
now = millis();
if (now - lastMeasure > 5000) {
lastMeasure = now;
pox.update();
if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
float HB = pox.getHeartRate();
Serial.print("Heart rate:");
Serial.print(HB);
Serial.println("bpm");
delay(1000);
tsLastReport = millis();
String Data="HeartBeat: "+String((float)HB)+" bpm ";
client.publish("outTopic",String(Data).c_str());
}
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
//Create a random client ID
String clientId = "ESP8266Client-";
clientId += String(random(0xffff), HEX);
if (client.connect(clientId.c_str())) {
Serial.println("connected");
client.subscribe("inTopic");
}
else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
}
}
}
}
@Robsan Mengiste, 👍0
Обсуждение0
Смотрите также:
- MQTT через serial
- Как получить список IP-адресов в локальной сети с помощью NodeMcu?
- Можно ли загрузить частный корневой сертификат в Arduino Nano33?
- Как передать данные с Arduino на Raspberry Pi?
- Как подключиться к MQTT брокеру с помощью TLS?
- Преобразование byte* в int в Arduino
- Как разрешить междоменные запросы на ESP8266 WebServer
- esp32-cam публикует изображение в mqtt
сократите вашу программу до минимального кода, который все еще демонстрирует проблему, @jsotola