Подключение железа к AMS
Модератор: Alex
- shemnik69
- Сообщения: 590
- Зарегистрирован: Пн дек 24, 2012 3:01 pm
- Откуда: Саратов Saratov
- Благодарил (а): 67 раз
- Поблагодарили: 63 раза
Re: Подключение железа к AMS
Всем доброе время суток! Вот появилось немного времени, нашёл интересную библиотеку модбус. Для ecp 8266 причем tsp/ip т.е. может быть мастером сети. Кстати на гитхабе очень много интересных примеров. Конечно не каждый подходит но взять саму идею можно. Вот ссылка https://github.com/andresarmento/modbus-arduino
-
- Сообщения: 27
- Зарегистрирован: Пн май 23, 2016 10:19 pm
- Благодарил (а): 1 раз
- Поблагодарили: 0
Re: Подключение железа к AMS
вот вам модбас для эрески
- Вложения
-
- 31_SimpleModbusSla.rar
- (13.87 КБ) 172 скачивания
-
- 30_SimpleModbusMas.rar
- (16 КБ) 160 скачиваний
-
- Сообщения: 66
- Зарегистрирован: Ср апр 26, 2017 10:21 pm
- Благодарил (а): 19 раз
- Поблагодарили: 1 раз
Re: Подключение железа к AMS
всем привет парни.подскажите что надо прописать чтобы вывести температуру с датчика на OLED I2C 128*64 SSD1306 дисплей,дисплей подключил на 9 и 10 пины есп12 ,могу выводить любые надписи,картинки,шрифты,а вот как заставить выводить температуру всю голову сломал, надеюсь на вашу помощь
Код: Выделить всё
// modules
#define RTC_FEATURE
#define NTP_FEATURE
#define HTTP_FEATURE
//#define FTP_FEATURE
#define SEND_FEATURE
#define MAJORDOMO_FEATURE
//#define LAURENT_FEATURE
//#define CONTACTS_FEATURE
#define PIRS_FEATURE
#define TEMP_FEATURE
//#define LEDS_FEATURE
#define KEYS_FEATURE
#define Rain_FEATURE
// debug
#define ELECTRO_DEBUG
#define EVENTS_CONTACTS
#define EVENTS_PIRS
#define TEMP_DEBUG
#define SERIAL_PRINT
#define EVENTS_Rain
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <FS.h>
#include <Time.h>
#include "SSD1306.h"
#include <Wire.h>
#include "font.h" // Файл с шрифтом
#include "image.h" // Файл с картинкой
// Инициализируем дисплей подключенный к пинам D2 и D1
SSD1306 display(0x3c, 9, 10);
char const SELF_NAME[] = "ESP8266-47";
byte SELF_IP[] = {192, 168, 1, 47};
// Authorization
#define AUTH_OFF 0
#define AUTH_ON 1
byte authMode = AUTH_OFF;
// online encode: base64encode.org
String AUTH_HASH = "Authorization: admin ams"; // admin:ams
// time provider
#define TIME_NONE 0
#define TIME_NETWORK 1
#define TIME_RTC 2
byte timeProvider = TIME_NETWORK;
// modules
#define MODUL_DISABLE 0
#define MODUL_ENABLE 1
#define MODUL_NOT_COMPILLED 2
byte modulRtc = MODUL_NOT_COMPILLED;
byte modulNtp = MODUL_NOT_COMPILLED;
byte modulSend = MODUL_NOT_COMPILLED;
byte modulMajor = MODUL_NOT_COMPILLED;
byte modulLaurent = MODUL_NOT_COMPILLED;
byte modulPirs = MODUL_NOT_COMPILLED;
byte modulContacts = MODUL_NOT_COMPILLED;
byte modulTemp = MODUL_NOT_COMPILLED;
byte modulLeds = MODUL_NOT_COMPILLED;
byte modulKeys = MODUL_NOT_COMPILLED;
byte modulFtp = MODUL_NOT_COMPILLED;
byte modulRain = MODUL_NOT_COMPILLED;
byte modulEthernet = MODUL_NOT_COMPILLED;
byte modulSd = MODUL_NOT_COMPILLED;
byte modulServer = MODUL_NOT_COMPILLED;
byte modulPing = MODUL_NOT_COMPILLED;
byte modulUpload = MODUL_NOT_COMPILLED;
byte modulElectro = MODUL_NOT_COMPILLED;
byte modulNoo = MODUL_NOT_COMPILLED;
byte modulMr1132 = MODUL_NOT_COMPILLED;
byte modulNrf24 = MODUL_NOT_COMPILLED;
// timers
boolean cycle1s = false;
boolean cycle4s = false;
boolean cycle20s = false;
boolean cycle30s = false;
boolean cycle1m = false;
boolean cycle3m = false;
boolean cycle5m = false;
// strings
char buf[200];
// for sample Ajax
boolean LED_state[4] = {0};
#ifdef LEDS_FEATURE
// LED modes
#define LED_EMPTY 0
#define LED_PIR 1
byte modeLed = LED_EMPTY;
#endif
/* setup
------------------------------------- */
void setup() {
Serial.begin(115200);
Serial.print(F("\nAMS for "));
Serial.print(SELF_NAME);
Serial.println(" started...");
hardwareInit();
timersInit();
wifiInit();
spiffsInit();
randomInit();
eepromInit();
ntpInit();
rtcInit();
#ifdef HTTP_FEATURE
httpInit();
#endif
#ifdef FTP_FEATURE
ftpInit();
#endif
serverInit();
#ifdef MAJORDOMO_FEATURE
majordomoInit();
#endif
#ifdef LAURENT_FEATURE
laurentInit();
#endif
#ifdef TEMP_FEATURE
tempInit();
#endif
#ifdef CONTACTS_FEATURE
contactsInit();
#endif
#ifdef PIRS_FEATURE
pirsInit();
#endif
#ifdef LEDS_FEATURE
ledsInit();
#endif
#ifdef KEYS_FEATURE
keysInit();
#endif
#ifdef Rain_FEATURE
RainInit();
#endif
Serial.print(F("GLOBAL Init DONE ("));
Serial.print(millis() / 1000);
Serial.println(F("s)\n"));
Serial.println(F("AMS WORK"));
timeStamp(); printFreeMem("");
// Первоначальные настройки дисплея
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
} // setup
/* setup
------------------------------------- */
void loop() {
timersWorks();
rtcWorks();
//clockWork();
#ifdef HTTP_FEATURE
httpWork();
#endif
#ifdef FTP_FEATURE
ftpWork();
#endif
serverWorks();
#ifdef TEMP_FEATURE
if (cycle3m) {tempWorks();}
#endif
#ifdef CONTACTS_FEATURE
contactsWorks();
#endif
#ifdef PIRS_FEATURE
pirsWorks();
#endif
#ifdef KEYS_FEATURE
keysWorks();
#endif
#ifdef Rain_FEATURE
if (cycle5m) {RainWorks();}
#endif
#ifdef LAURENT_FEATURE
if (cycle5m) {
sprintf(buf, "$KE");
sendLaurentRequest();
}
#endif
if (cycle20s) {
//
}
if (cycle1m) {
timeStamp(); printFreeMem("");
}
// end loop works
cyclosInSecWork();
cyclosDelayWork();
eraseCyclos();
display.clear(); // Очищаем экран от предыдущих данных
display.setTextAlignment(TEXT_ALIGN_CENTER); // Выравниваем текст по центру
display.setFont(Chewy_24); // Подключаем созданный нами шрифт
display.drawString(64, 8, "MAJORDOMO"); // Первая строка в координаты 64 по оси X и 8 по оси Y выводим любой текст
display.drawString(64, 32, "2019"); // Вторая строка
display.display(); // Выводим все на экран
delay(750);
// see http://blog.squix.org/2015/05/esp8266-nodemcu-how-to-create-xbm.html
display.clear();
display.drawXbm(34, 14, Volk_width, Volk_height, Volk_bits); // Рисуем нашу картинку
display.display();
delay(750);
display.clear();
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.setFont(ArialMT_Plain_24); // Стандартный шрифт из библиотеки
display.drawString(64, 8, "********"); //выводим любой текст
display.drawString(64, 32,"********" + String(********) + "C"); //выводим любой текст,выводим значение
display.display();
delay(750);
} // loop
-
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
- Благодарил (а): 303 раза
- Поблагодарили: 282 раза
Re: Подключение железа к AMS
Привет! То есть экран работает и можешь вывести любой текст ? Заметь , что он выводится в кавычках. Попробуй вместо текста на это место вывести значение из функции. Какие значения у тебя есть? Если это далласы ( #define TEMP_FEATURE ),то
Вместо current_temp[0] попробуй [1] , [2] . Тогда выведутся другие градусники. Я подключал OLED дисплей на 1.3 дюйма к ESP32 и там немного другая библиотека , но смысл везде одинаковый.
И кстати , сервер при этом не грузиться ? С LCD экраном у меня всегда показывало 10 % нагрузки.
PS/ Я использовал библиотеку #include "SSD1306Wire.h" Там как то попроще было с выводом
Код: Выделить всё
display.drawString(64, 32, current_temp[0]);
И кстати , сервер при этом не грузиться ? С LCD экраном у меня всегда показывало 10 % нагрузки.
PS/ Я использовал библиотеку #include "SSD1306Wire.h" Там как то попроще было с выводом
- Рейтинг: 1.16%
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
- Сообщения: 66
- Зарегистрирован: Ср апр 26, 2017 10:21 pm
- Благодарил (а): 19 раз
- Поблагодарили: 1 раз
Re: Подключение железа к AMS
'current_temp' was not declared in this scope
может надо в самой вкдадке ртемп прописывать все для олед дисплея?
может надо в самой вкдадке ртемп прописывать все для олед дисплея?
-
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
- Благодарил (а): 303 раза
- Поблагодарили: 282 раза
Re: Подключение железа к AMS
Попробуй все что выводит температуру , перенеси в ту вкладку. Или объяви её как глобальную в самом начале перед сепапом. Я уже и забыл сам.
- Рейтинг: 1.16%
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
- Благодарил (а): 303 раза
- Поблагодарили: 282 раза
Re: Подключение железа к AMS
Дай доступ через вьювер
- Рейтинг: 1.16%
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
- shemnik69
- Сообщения: 590
- Зарегистрирован: Пн дек 24, 2012 3:01 pm
- Откуда: Саратов Saratov
- Благодарил (а): 67 раз
- Поблагодарили: 63 раза
Re: Подключение железа к AMS
Доброе время суток!
Сперва фото.
Это АМS . на все про все ушло примерно две недели вечерних посиделок...
Почему такой вид.
Перепробовал несколько вариантов и в корпусах и модули и пр. но после реальных работ с оборудованием пришел к выводу что должно быть так.
Т.е раздельные платы ввода / выходы, реле и пр.
На плате Мега 256R3, интернет Шилд W5500 (Enternet2) RGB ключи, LCD 2004. GSM SIM900, усилитель для динамиков TDA2822, DFPlayer, MAX485 (для MODBUS), RTS MAX1307. 8 реле (пока, всего по плану 16). 16 опто раз-вязаные порты ввода (с раздельным питанием), блок питания 5 в 3 А, блок без перебойного питания для заряда аккумулятора. Входа, для 3 датчиков типа DHT (22/11) и DS18b20 ( пока 8 шт)
Пока плат 3 всего их планируется 4 т.е. еще реле 8 шт. модуль SD Card, датчик давления и пр. ну и еще несколько блоков .
Пока они в проекте.
Что получилось.
1. реально работающее устройство которое как самодостаточное так и в связке с остальной "сворой" контроллеров. Ну и конечно же MD!!!
есть все платы а вот скетч в разработке.... ой и трудная зараза. Проще платы спаять.
На данный момент АМС в наладке, настраиваю MQTT посылки на сервер. Также еще не отработан механизм пере прошивки по сети.
Но все будет решено.
Сразу отмечу что схема как таковая отсутствует, все на типовых стандартных решениях ... конечно если будут вопросы то отвечу.
А в целом доволен.
Также укажу что АМС тут не полноценный а взяты основные модули
[spoiler][/spoiler]
Сперва фото.
Это АМS . на все про все ушло примерно две недели вечерних посиделок...
Почему такой вид.
Перепробовал несколько вариантов и в корпусах и модули и пр. но после реальных работ с оборудованием пришел к выводу что должно быть так.
Т.е раздельные платы ввода / выходы, реле и пр.
На плате Мега 256R3, интернет Шилд W5500 (Enternet2) RGB ключи, LCD 2004. GSM SIM900, усилитель для динамиков TDA2822, DFPlayer, MAX485 (для MODBUS), RTS MAX1307. 8 реле (пока, всего по плану 16). 16 опто раз-вязаные порты ввода (с раздельным питанием), блок питания 5 в 3 А, блок без перебойного питания для заряда аккумулятора. Входа, для 3 датчиков типа DHT (22/11) и DS18b20 ( пока 8 шт)
Пока плат 3 всего их планируется 4 т.е. еще реле 8 шт. модуль SD Card, датчик давления и пр. ну и еще несколько блоков .
Пока они в проекте.
Что получилось.
1. реально работающее устройство которое как самодостаточное так и в связке с остальной "сворой" контроллеров. Ну и конечно же MD!!!
есть все платы а вот скетч в разработке.... ой и трудная зараза. Проще платы спаять.
На данный момент АМС в наладке, настраиваю MQTT посылки на сервер. Также еще не отработан механизм пере прошивки по сети.
Но все будет решено.
Сразу отмечу что схема как таковая отсутствует, все на типовых стандартных решениях ... конечно если будут вопросы то отвечу.
А в целом доволен.
Также укажу что АМС тут не полноценный а взяты основные модули
[spoiler][/spoiler]
- Вложения
-
- main.jpg (3.37 МБ) 4225 просмотров
-
- Internet W5500 Amplifer input plate.jpg (1.69 МБ) 4227 просмотров
-
- AMS Front panel.jpg (2.82 МБ) 4229 просмотров
Последний раз редактировалось shemnik69 Сб фев 02, 2019 10:21 pm, всего редактировалось 3 раза.