Arduino esp8266 мешает работе аналоговых датчиков

ОБНОВЛЕНИЕ: я попробовал датчик CNY70, и для него актуальна та же ошибка. Даже выходы CNY70 и LDR одинаковы при подключенном ESP8266. Я думаю, что ESP8266 мешает работе всех аналоговых датчиков

Я подключил датчик esp8266 и ldr к своему Seeediuno (клон Arduino от Seeedstudio), и ldr возвращает такие значения, как 70 110 105 120 и т. д. Когда я напрямую направляю свет на ldr, возвращаемые значения не меняются, значения разбросаны случайным образом между 50-130. Когда я отключаю esp8266 и переключаюсь на arduino diecimila с ardunio ide, датчик ldr работает нормально. Я думаю, esp8266 как-то мешает работе датчика ldr. Как я могу решить эту проблему?

#include "ESP8266WiFi.h"
#include "ESP8266HTTPClient.h"
[![#define SSID "myssşd"
#define PASS "mypass"
#define BID 000001

const char *host = "api.host.com";

void setup() {
  //запускаем последовательное соединение
  Serial.begin(115200);
  //настраиваем контакт 2 как вход и включаем внутренний подтягивающий резистор
  pinMode(2, INPUT);
  pinMode(13, OUTPUT);
  pinMode(A0, INPUT);

  WiFi.begin(SSID, PASS);

  while(WiFi.status() != WL_CONNECTED){
    delay(1000);
    Serial.println("Connecting...");
  }
  //Если соединение успешно, отобразить IP-адрес на последовательном мониторе
  Serial.print("Connected to ");
  Serial.println(SSID);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());  //IP-адрес, назначенный вашему ESP
}

void loop() {
  //считываем значение кнопки в переменную
  int sensorValMeal = analogRead(A0);
  Serial.println(sensorValMeal);
  delay(1000);
}

Вот так выглядят мои серийные отпечатки. Вы можете увидеть аномалию, я также добавил свои события.

Connecting...
Connecting...
Connecting...
Connecting...
Connected to Anaconda
IP address: 192.168.1.21
42 <- This is start
41
41
41
41
41
41
41
40
40
151 <- I turned my phones light to ldr
78
85
84
89
92
69
97
99
100
96
104 <- I switched of my phone's light
63
103
103
108
108
109
109
114
111
112
111
103
112
113
114
112
116
104
116
116
101
117
118
118
108
122
80
109
118
123
124
125
124
114
127
127
127
98
126
127
124
114
125
127
125
124
127
98
127
126
104
127
127
126
118
128
127
92
123
126
127
128
127
111
130

< img src="https://i.stack.imgur.com/JRFW9.jpg">

, 👍0

Обсуждение

esp8266 получает питание от контакта 3,3 В?, @Juraj

потребление тока esp8266 вызывает падение напряжения, @Juraj


2 ответа


Лучший ответ:

0

Вы не используете клон Seeduino Arduino. Вы используете (как при написании программного обеспечения, так и при программировании) ESP8266. Каждая написанная вами инструкция влияет только на ESP8266. Arduino — это не что иное, как источник питания (и, возможно, адаптер USB-Serial, если вы используете его как таковой).

Чтобы получить доступ к аналоговым контактам Arduino, вам необходимо:

  1. Разработать протокол связи между двумя платами
  2. Реализовать этот протокол связи для обеих плат
  3. Запрограммируйте обе платы с собственными уникальными скетчами, которые используют протокол для связи между ними.

Arduino соберет данные, используя свой скетч, а затем отправит результаты на ESP8266 для отправки через Интернет.

В качестве альтернативы можно установить стандартную прошивку AT на ESP8266 и использовать ее как протокол выше — тогда вам останется только реализовать ее на Arduino.

,

0

Вы читаете аналоговый вывод esp8266, а не аналоговый вывод Seeeduino.

,

у вас есть два MCU. тебе нужны два эскиза, @Juraj