#1 2022-01-28 14:57:20

andrewsh
Учасник
Зареєстрований: 2022-01-28
Повідомлень: 10

Как работает ESP8266 + Atmega328 ?

Помогите, пожалуйста, уже несколько дней не могу разобраться(
Первая плата и такая непонятная - UNO+WiFi R3 ATmega328P+ESP8266 Board

На ней есть переключатели режимов:
Atmega<->ESP
USB<->Atmega
USB<->ESP (update sketch)
USB<->ESP8266 (work)

Сначала я её тестировал в режиме USB<->Atmega, в IDE выбрана плата Arduino Uno.
Подключил датчик CO2, всё работает, смотрю показания через порт.

Далее решил задействовать wifi, переключаю в режим USB<->ESP (update sketch), в IDE выбираю плату generic esp8266 module, загружаю скетч, который соединяется по wifi с Blynk. После загрузки скетча переключаю в режим USB<->ESP8266 (work) или Atmega<->ESP. Соединение с Blynk происходит, но данные с датчика не поступают, поступают только объявленные переменные.

Получается, что ESP не получает данные с Atmega? Как их согласовать между собой?

Неактивний

#2 2022-01-28 15:49:03

Васятко
Гість

Re: Как работает ESP8266 + Atmega328 ?

andrewsh пише:

Получается, что ESP не получает данные с Atmega? Как их согласовать между собой?

С помощью скетча. Простой заливкой скетча для меги и скетча для есп и их физическим соединением ничего не получится. Как вы передаете данные из меги в есп?

#3 2022-01-28 16:08:38

andrewsh
Учасник
Зареєстрований: 2022-01-28
Повідомлень: 10

Re: Как работает ESP8266 + Atmega328 ?

Васятко пише:

С помощью скетча. Простой заливкой скетча для меги и скетча для есп и их физическим соединением ничего не получится. Как вы передаете данные из меги в есп?

Я считал, что esp может получать данные с пинов, так как всё на одной плате, поэтому при заливки скетча на esp оставил тот же код, что был:

#define pwmPin 10
pinMode(pwmPin, INPUT);
th = pulseIn(pwmPin, HIGH, 1004000) / 1000;

вот она ->>

Остання редакція andrewsh (2022-01-28 16:10:53)

Неактивний

#4 2022-01-28 16:36:18

г0сть
Гість

Re: Как работает ESP8266 + Atmega328 ?

Для ESP пины выведены отдельно. На приведенной вами ссылке это торчащие штырьки и с пинами меги не совпадают и не связаны. Названия пинов смотрите на обратной стороне платы.

#5 2022-01-28 16:40:56

г0сть
Гість

Re: Как работает ESP8266 + Atmega328 ?

Скорее всего на этой плате с мегой ESP соединены переключателем только через uart - пины Rx/Tx

#6 2022-01-28 18:34:37

andrewsh
Учасник
Зареєстрований: 2022-01-28
Повідомлень: 10

Re: Как работает ESP8266 + Atmega328 ?

г0сть пише:

Скорее всего на этой плате с мегой ESP соединены переключателем только через uart - пины Rx/Tx

Проверил, RX и TX совпадают. Можно подключить датчик на RX и читать с esp или всё сложнее?

Неактивний

#7 2022-01-28 18:52:14

г0сть
Гість

Re: Как работает ESP8266 + Atmega328 ?

andrewsh пише:
г0сть пише:

Скорее всего на этой плате с мегой ESP соединены переключателем только через uart - пины Rx/Tx

Проверил, RX и TX совпадают. Можно подключить датчик на RX и читать с esp или всё сложнее?

Для вас - сложнее.
Для начала объясните - что за датчик и чего вы хотите добиться?

#8 2022-01-28 19:03:47

andrewsh
Учасник
Зареєстрований: 2022-01-28
Повідомлень: 10

Re: Как работает ESP8266 + Atmega328 ?

Датчик co2 (углекислого газа) MH-Z19B, у него есть выход pwm, который читается с цифрового порта и пересчитывается в показания концентрации углекислого газа:

th = pulseIn(pwmPin, HIGH, 1004000) / 1000;
tl = 1004 - th;
ppm = 5000 * (th-2)/(th+tl-4);

Данные читаю в мониторе порта через usb, чтобы он был автономным нужно или подключить экранчик или передавать по wifi.

На плате atmega датчик работает, отвечает в порт. Также отдельно ESP и wifi-подключение работает, но совместить их пока не понимаю как.

Подключить датчик на Rx уже попробовал, не читает.

Screenshot_3.jpg

Остання редакція andrewsh (2022-01-28 19:07:19)

Неактивний

#9 2022-01-28 19:10:56

г0сть
Гість

Re: Как работает ESP8266 + Atmega328 ?

Что ж это творится? Gомешались все на этих датчиках CO. smile  smile

Подключить датчик на Rx уже попробовал, не читает.

Rx чего - меги или есп?

#10 2022-01-28 21:35:49

andrewsh
Учасник
Зареєстрований: 2022-01-28
Повідомлень: 10

Re: Как работает ESP8266 + Atmega328 ?

г0сть пише:

Что ж это творится? Gомешались все на этих датчиках CO. smile  smile

У меня вентиляция дома включается по таймеру, а если людей больше или меньше чем обычно, то надо вручную продлевать или выключать таймер) Должно быть проще)

г0сть пише:

Rx чего - меги или есп?

Я так понимаю, Rx на ESP - это gpio3, которую можно задать

#define pwmPin 3

?

еще на gpio2 пробую датчик, не приходит ничего

Остання редакція andrewsh (2022-01-28 21:51:42)

Неактивний

#11 2022-01-28 22:06:06

г0сть
Гість

Re: Как работает ESP8266 + Atmega328 ?

andrewsh пише:

Я так понимаю, Rx на ESP - это gpio3, которую можно задать

#define pwmPin 3

?

Вам других пинов мало?
В общем, у вас для решения вашей задачи есть два варианта.
1 - погуглить "ардуино передача и получение данных через uart". Почитать примеры, разобраться. После этого добавить в код для меги передачу данных через uart. Соответственно в код для есп дописать прием данных через uart.
2 - переписать код для меги под есп. И если все правильно напишете и подключите вам останется только радостно наблюдать полученный результат. Потом можете взять болгарку и отпилить от платы все лишнее (шутка)  smile
Выбирайте что вам больше нравится.

з/ы в своих дальнейших ответах (если они будут конечно) мегу буду называть ардуиной так что не путайтесь и не пугайтесь

#12 2022-01-28 22:07:14

г0сть
Гість

Re: Как работает ESP8266 + Atmega328 ?

andrewsh пише:

еще на gpio2 пробую датчик, не приходит ничего

Показывайте свои коды, что и как вы пробуете, как подключаете.

#13 2022-01-28 23:33:57

andrewsh
Учасник
Зареєстрований: 2022-01-28
Повідомлень: 10

Re: Как работает ESP8266 + Atmega328 ?

г0сть пише:

1 - погуглить "ардуино передача и получение данных через uart". Почитать примеры, разобраться. После этого добавить в код для меги передачу данных через uart. Соответственно в код для есп дописать прием данных через uart.

Нужно ли задействовать ардуино, если esp сам может считать сигнал датчика?

Вот код, который у меня работает в ардуино и выводит в порт показания:

#include <SoftwareSerial.h>
#define pwmPin 10

void setup() {
  Serial.begin(9600); 
  pinMode(pwmPin, INPUT);
}

void loop() {
  th = pulseIn(pwmPin, HIGH, 1004000) / 1000;
  tl = 1004 - th;
  ppm = 5000 * (th-2)/(th+tl-4);
  Serial.println(ppm);
  delay(5000);
}

Ну а для esp код взят на Blynk, сам по себе он тоже работает и если вместо показаний датчика поставить любую переменную, то она приходит.

#define BLYNK_TEMPLATE_ID           "my_template"
#define BLYNK_DEVICE_NAME           "device_name"
#define BLYNK_AUTH_TOKEN            "my_token"

/////////// разные уже пробовал
#define pwmPin 2 

unsigned long th, tl, h, l, ppm = 0;

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "name";
char pass[] = "pass";

BlynkTimer timer;

// This function sends Arduino's up time every second to Virtual Pin (1).
void myTimerEvent()
{
  // You can send any value at any time.
  // Please don't send more that 10 values per second.

   th = pulseIn(pwmPin, HIGH, 1004000) / 1000;
   tl = 1004 - th;
   ppm = 5000 * (th-2)/(th+tl-4);

   ////// ВОТ если здесь задать ppm=100, то мы это получим, здесь всё нормально:
   Blynk.virtualWrite(V1, ppm);
}

void setup()
{
  // Debug console
  Serial.begin(115200);
  pinMode(pwmPin, INPUT);

  Blynk.begin(auth, ssid, pass);

  // Setup a function to be called every second
  timer.setInterval(1000L, myTimerEvent);
}

void loop()
{
  Blynk.run();
  timer.run(); // Initiates BlynkTimer
}

Остання редакція andrewsh (2022-01-28 23:38:13)

Неактивний

#14 2022-01-29 00:48:02

г0сть
Гість

Re: Как работает ESP8266 + Atmega328 ?

andrewsh пише:

Нужно ли задействовать ардуино, если esp сам может считать сигнал датчика?

Нет.
Для кода с есп - куда и ка вы подключили датчик?

#15 2022-01-29 05:23:27

andrewsh
Учасник
Зареєстрований: 2022-01-28
Повідомлень: 10

Re: Как работает ESP8266 + Atmega328 ?

г0сть пише:
andrewsh пише:

Нужно ли задействовать ардуино, если esp сам может считать сигнал датчика?

Нет.
Для кода с есп - куда и ка вы подключили датчик?

Удивительно, но на gpio4 начало принимать))
Теперь буду разбираться с совмещением arduino с esp и с подключением экрана.

Спасибо, ваши вопросы и подсказки помогли найти правильное направление)

Неактивний

#16 2022-01-29 05:30:09

andrewsh
Учасник
Зареєстрований: 2022-01-28
Повідомлень: 10

Re: Как работает ESP8266 + Atmega328 ?

Спальня ночью - 2 часа без вентиляции - 780 ppm
Через 30 мин. вентиляции - 581 ppm

Screenshot_9.jpg

По таймеру вентиляция включалась раз в 2 часа, примерно угадал.

Иногда начинает выдавать 5000, наверное, датчик не всегда не отвечает. Надо убрать в скетче вывод данных в этом случае...

Неактивний

#17 2022-01-29 10:49:26

г0сть
Гість

Re: Как работает ESP8266 + Atmega328 ?

andrewsh пише:

Удивительно, но на gpio4 начало принимать))

Некоторые пины у esp новичкам лучше пока не трогать. Их нужно уметь готовить smile

andrewsh пише:

Теперь буду разбираться с совмещением arduino с esp и с подключением экрана.

Экран можно и к esp прицепить

#18 2022-01-29 13:13:41

andrewsh
Учасник
Зареєстрований: 2022-01-28
Повідомлень: 10

Re: Как работает ESP8266 + Atmega328 ?

г0сть пише:

Экран можно и к esp прицепить

Я хотел бы подключить сервопривод, чтобы в зависимости от уровня со2 перекрывать вентиляцию для большой комнаты, в которую поступает основной поток свежего воздуха, чтобы больше поступало на спальни.

Еще пишут что через uart снимать показания датчика надёжнее чем через pwm.
Там 2 пина rx/tx, на ардуино работает через А0 и А1

// отправляем запрос
byte measure_cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};
swSerial.write(measure_cmd,9);
swSerial.readBytes(measure_response, 9);

// вычисляем
unsigned int responseHigh = (unsigned int) measure_response[2];
unsigned int responseLow = (unsigned int) measure_response[3];
ppm = (256*responseHigh) + responseLow;

Я так понимаю, надо, чтобы эти запросы выполнялись на ардуине и на esp передавался только вычисленный ppm?

Неактивний

#19 2022-01-29 13:31:59

г0сть
Гість

Re: Как работает ESP8266 + Atmega328 ?

https://ibb.co/nw9nLR1
Единственный минус - перед прошивкой датчик нужно отключить. Но если добавить в код обновление прошивки по ОТА, то в дальнейшем это можно не делать

#20 2022-01-29 13:34:10

г0сть
Гість

Re: Как работает ESP8266 + Atmega328 ?

Обшибся, Rx Tx поменять местами

#21 2022-01-29 14:51:02

andrewsh
Учасник
Зареєстрований: 2022-01-28
Повідомлень: 10

Re: Как работает ESP8266 + Atmega328 ?

г0сть пише:

https://ibb.co/nw9nLR1
Единственный минус - перед прошивкой датчик нужно отключить. Но если добавить в код обновление прошивки по ОТА, то в дальнейшем это можно не делать

На совмещенной плате распиновка esp такая:
Screenshot_10.jpg

Попробую, но uart от датчика начал работать только на аналоговых портах.

А rx и tx объявлять как 0 и 1?

Неактивний

#22 2022-01-29 15:28:28

г0сть
Гість

Re: Как работает ESP8266 + Atmega328 ?

andrewsh пише:

Попробую, но uart от датчика начал работать только на аналоговых портах.

А rx и tx объявлять как 0 и 1?

Потому что в коде для ардуино используется Softserial.
Для аппаратного Serial не надо ничего объявлять, просто пишете

Serial.write(measure_cmd,9);
Serial.readBytes(measure_response, 9);

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму