Форум программистов, компьютерный форум, киберфорум
Наши страницы
Arduino
Войти
Регистрация
Восстановить пароль
 
CoolS2
2 / 2 / 1
Регистрация: 21.07.2015
Сообщений: 14
1

Датчик температуры dallas работает от USB, но не работает от адаптера

20.01.2019, 22:39. Просмотров 316. Ответов 4
Метки нет (Все метки)

0
Всем привет,

Сталкнулся с такой проблемой. Подключаю датчик к контроллеру esp8266, и планировал по протоколу mqtt передавать значение температуры, все запрограммил, через usb порт покдлючил esp, все работает, температуру считывает. Но в дальнейшем я планировал питать esp через адаптер 5v. Подключил, но температуру показывает -127. С чем это связано?

P.S В коде так же подключаю SR-04. Он при этом работает как надо.

C
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
/**
 * Для котла
 * using the DALLAS, SR-04 and ESP8266
 * 
 * static const uint8_t D0   = 16;
 * static const uint8_t D1   = 5;
 * static const uint8_t D2   = 4;
 * static const uint8_t D3   = 0;
 * static const uint8_t D4   = 2;
 * static const uint8_t D5   = 14;
 * static const uint8_t D6   = 12;
 * static const uint8_t D7   = 13;
 * static const uint8_t D8   = 15;
 * static const uint8_t D9   = 3;
 * static const uint8_t D10  = 1;
 */
#include <OneWire.h>
#include <DallasTemperature.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>
 
const byte green_led = 14;
const byte red_led = 12;
int wait = 2000;
 
#define PIN_DS18B20 5 //D1
OneWire oneWire(PIN_DS18B20);
// Создаем объект DallasTemperature для работы с сенсорами, передавая ему ссылку на объект для работы с 1-Wire.
DallasTemperature dallasSensors(&oneWire);
 
// для hc-sr04
const int trigPin = 13;  //D8
const int echoPin = 15;  //D7
// defines variables
long duration;
int distance;
 
byte mqtt_server[] = { 192, 168, 1, 239 };   
char buffer[10];
// WiFi credentials.
const char* WIFI_SSID = "***";
const char* WIFI_PASS = "***";
 
void callback(char* topic, byte* payload, unsigned int length) {
  Serial.println("On message");
 
  char json[length + 1];
  strncpy (json, (char*)payload, length);
  json[length] = '\0';
 
  String message = String(json);
 
  Serial.print("Topic: ");
  Serial.println(topic);
  Serial.print("Message: ");
  Serial.println(message);
 
  wait = message.toInt();
} 
 
WiFiClient wifiClient;
PubSubClient client(mqtt_server, 1883, callback, wifiClient);
 
void connect() {
 
  WiFi.persistent(false);
  WiFi.mode(WIFI_OFF);
  WiFi.mode(WIFI_STA);
  WiFi.begin(WIFI_SSID, WIFI_PASS);
 
  unsigned long wifiConnectStart = millis();
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
   
    // Only try for 5 seconds.
    if(millis() - wifiConnectStart > 5000) {
      return;
    }
  }
}
 
void reconnect() {
      // Loop until we're reconnected
  while (!client.connected()) {
      Serial.println("Reconnect to MQTT");
      client.connect("ESP8266 Temperature and Distance");
      client.setCallback(callback);
      client.publish("outTopic", "test");
      client.subscribe("ESP/Temp/Wait"); // подписывааемся по топик с данными для светодиода
      delay(5000);
  }
}
 
void setup() {
  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
  pinMode(echoPin, INPUT); // Sets the echoPin as an Input
  Serial.begin(9600);
  Serial.setTimeout(2000);
 
  // Wait for serial to initialize.
  while(!Serial) { }
 
  Serial.println("Device Started");
  Serial.println("-------------------------------------");
 
  dallasSensors.begin();
  connect();
 
  pinMode(green_led, OUTPUT);
  pinMode(red_led, OUTPUT);
}
 
void report(int distance, double tempC) {
  StaticJsonBuffer<500> jsonBuffer;
  JsonObject& root = jsonBuffer.createObject();
  root["distance"] = distance;
  root["tempC"] = tempC;
  char payload[256];
  root.printTo(payload, sizeof(payload));
  char* s = payload;
  if (client.connect("ESP8266 Temperature and Distance")) {
    if(client.publish("ESP/Temp", s) == true){
      Serial.println("Reported!");
      delay(wait);
      //ESP.deepSleep(20e6); // 20e6 is 20 seconds
    }
  }
}
 
void loop() {
 
  // Есть пропал сигнал с mqtt
  if (!client.connected()) {
    reconnect();
    digitalWrite(red_led, LOW);
  }else{
    digitalWrite(red_led, HIGH);
  }
 
  bool toReconnect = false;
 
  if (WiFi.status() != WL_CONNECTED) {
    Serial.println("Disconnected from WiFi");
    digitalWrite(green_led, LOW);
    toReconnect = true;
  }else{
    digitalWrite(green_led, HIGH);
  }
 
  if (toReconnect) {
    connect();
  }
 
  // Clears the trigPin
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    
    // Sets the trigPin on HIGH state for 10 micro seconds
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    
    // Reads the echoPin, returns the sound wave travel time in microseconds
    duration = pulseIn(echoPin, HIGH);
    
    // Calculating the distance
    distance = duration*0.034/2;
  
 
   
  dallasSensors.requestTemperatures(); 
  delay(500);
  
  Serial.println(dallasSensors.getTempCByIndex(0));
  Serial.println(distance);
    
  report(distance, dallasSensors.getTempCByIndex(0));
  client.loop();
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2019, 22:39
Ответы с готовыми решениями:

Не работает датчик температуры LM335 с Stm32f4
Здравствуйте. Возникла проблема с подключением датчика температуры LM335z к отладочной плате...

BearRaw 2448CU Pro II USB сканер (работает от питания USB) (но не работает)
В общем попросили установить драйвера сканера BearRaw 2448CU Pro II на ноутбук ASUS с Windows 10...

[Решено] И еще раз датчик: Dallas DS1820 - STM32F407VG
Продолжаю мучить свой дискавери злополучным термодатчиком. Проблема в том, что я отправляю ему...

СМ Bosch wtb86211 oe/ 01, Определить датчик влажности и датчик температуры
Добрый день. СМ пытался сделать какой то мастер и исчез вместе с датчиком влажности и датчиком...

STM32L1xx и USB (VCP): все работает, но ничего не работает.
Запускаю пример для USB VCP (причем, даже собранный под камень L151, хотя у меня Dyscovery с L152 ...

4
Avazart
Эксперт С++
7803 / 5702 / 561
Регистрация: 10.12.2010
Сообщений: 26,001
Записей в блоге: 17
21.01.2019, 00:23 2
Цитата Сообщение от CoolS2 Посмотреть сообщение
Подключил, но температуру показывает -127.
Неправильно подключил. Лучше проверь на 5 вольтовой ардуине для начала.


C++
1
2
3
4
Serial.println(dallasSensors.getTempCByIndex(0));
  Serial.println(distance);
    
  report(distance, dallasSensors.getTempCByIndex(0));
Не знаю как оно там внутри DallasTemperature устроено, но лучше метод .getTempCByIndex() не вызывать дважды, лучше сохранять значение в отдельной переменной-константе.
0
CoolS2
2 / 2 / 1
Регистрация: 21.07.2015
Сообщений: 14
21.01.2019, 19:34  [ТС] 3
Во вложении скрин как подключал.

Поменял код как советовали, но это не помогло.

C
1
2
float temp = dallasSensors.getTempCByIndex(0);
report(distance, temp);
0
Миниатюры
Датчик температуры dallas работает от USB, но не работает от адаптера  
Avazart
Эксперт С++
7803 / 5702 / 561
Регистрация: 10.12.2010
Сообщений: 26,001
Записей в блоге: 17
21.01.2019, 19:48 4
Наверное номинал резистора не тот.

На рисунке какой резистор? 220 Ом ? А нужен 4,7 кОм.
0
CoolS2
2 / 2 / 1
Регистрация: 21.07.2015
Сообщений: 14
21.01.2019, 21:35  [ТС] 5
Ну вроде как 4,7, от usb то работает.

Замерил через мультиметр:

Адаптер 5в.

Дата - пульсирует от 1 - 2.5в

На плюс - 3.3в



USB:

Дата - пульсирует от 1.7 - 3.2в

На плюс - 3.3в

Добавлено через 41 минуту
Ребят, спасибо за помощь! Проблема была в адаптере!
0
21.01.2019, 21:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2019, 21:35

Переводить команды USB WIFI Адаптера через компьютер по USB-USB для устройства
name: как передавать сигнал от требующего установку драйверов USB WIFI Адаптера через компьютер по...

USB 2.0 определяется как USB 3.0, не работает USB-свисток, геймпад не подключается
Не работает беспроводной геймпад speedlink torid sl-6576. Подключаю блютуз свисток к пк, запускаю...

Не корректно работает ярлык сетевого адаптера
При нажатии правой клавишей мыши на линк(на рабочем столе) сетевого адаптера во всплывающем меню...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru