Подключение железа к AMS

Модератор: Alex

Аватара пользователя
shemnik69
Сообщения: 583
Зарегистрирован: Пн дек 24, 2012 3:01 pm
Откуда: Саратов Saratov
Благодарил (а): 67 раз
Поблагодарили: 61 раз

Re: Подключение железа к AMS

Сообщение shemnik69 » Пн ноя 05, 2018 8:59 am

Всем доброе время суток! Вот появилось немного времени, нашёл интересную библиотеку модбус. Для ecp 8266 причем tsp/ip т.е. может быть мастером сети. Кстати на гитхабе очень много интересных примеров. Конечно не каждый подходит но взять саму идею можно. Вот ссылка https://github.com/andresarmento/modbus-arduino
Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am
Благодарил (а): 4 раза
Поблагодарили: 42 раза

Re: Подключение железа к AMS

Сообщение ser009 » Чт ноя 08, 2018 11:50 pm

Какие приборы вы планируете подключать по rs485?
sergejb52
Сообщения: 27
Зарегистрирован: Пн май 23, 2016 10:19 pm
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Подключение железа к AMS

Сообщение sergejb52 » Вт янв 29, 2019 8:08 pm

вот вам модбас для эрески
Вложения
31_SimpleModbusSla.rar
(13.87 КБ) 39 скачиваний
30_SimpleModbusMas.rar
(16 КБ) 37 скачиваний
sarstab
Сообщения: 66
Зарегистрирован: Ср апр 26, 2017 10:21 pm
Благодарил (а): 19 раз
Поблагодарили: 1 раз

Re: Подключение железа к AMS

Сообщение sarstab » Пт фев 01, 2019 8:06 pm

всем привет парни.подскажите что надо прописать чтобы вывести температуру с датчика на OLED I2C 128*64 SSD1306 дисплей,дисплей подключил на 9 и 10 пины есп12 ,могу выводить любые надписи,картинки,шрифты,а вот как заставить выводить температуру всю голову сломал, надеюсь на вашу помощь :D

Код: Выделить всё

// 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
serghei
Сообщения: 2472
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 282 раза
Поблагодарили: 241 раз

Re: Подключение железа к AMS

Сообщение serghei » Пт фев 01, 2019 9:29 pm

Привет! То есть экран работает и можешь вывести любой текст ? Заметь , что он выводится в кавычках. Попробуй вместо текста на это место вывести значение из функции. Какие значения у тебя есть? Если это далласы ( #define TEMP_FEATURE ),то

Код: Выделить всё

display.drawString(64, 32, current_temp[0]);
Вместо current_temp[0] попробуй [1] , [2] . Тогда выведутся другие градусники. Я подключал OLED дисплей на 1.3 дюйма к ESP32 и там немного другая библиотека , но смысл везде одинаковый.

И кстати , сервер при этом не грузиться ? С LCD экраном у меня всегда показывало 10 % нагрузки.

PS/ Я использовал библиотеку #include "SSD1306Wire.h" Там как то попроще было с выводом
За это сообщение автора serghei поблагодарил:
sarstab (Пт фев 01, 2019 11:48 pm)
Рейтинг: 1.27%
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
sarstab
Сообщения: 66
Зарегистрирован: Ср апр 26, 2017 10:21 pm
Благодарил (а): 19 раз
Поблагодарили: 1 раз

Re: Подключение железа к AMS

Сообщение sarstab » Пт фев 01, 2019 10:21 pm

'current_temp' was not declared in this scope
может надо в самой вкдадке ртемп прописывать все для олед дисплея?
serghei
Сообщения: 2472
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 282 раза
Поблагодарили: 241 раз

Re: Подключение железа к AMS

Сообщение serghei » Пт фев 01, 2019 10:30 pm

Попробуй все что выводит температуру , перенеси в ту вкладку. Или объяви её как глобальную в самом начале перед сепапом. Я уже и забыл сам.
За это сообщение автора serghei поблагодарил:
sarstab (Пт фев 01, 2019 11:48 pm)
Рейтинг: 1.27%
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
sarstab
Сообщения: 66
Зарегистрирован: Ср апр 26, 2017 10:21 pm
Благодарил (а): 19 раз
Поблагодарили: 1 раз

Re: Подключение железа к AMS

Сообщение sarstab » Пт фев 01, 2019 10:37 pm

нет друг мой ничего не получается
serghei
Сообщения: 2472
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 282 раза
Поблагодарили: 241 раз

Re: Подключение железа к AMS

Сообщение serghei » Пт фев 01, 2019 10:44 pm

Дай доступ через вьювер
За это сообщение автора serghei поблагодарил:
sarstab (Пт фев 01, 2019 11:48 pm)
Рейтинг: 1.27%
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Аватара пользователя
shemnik69
Сообщения: 583
Зарегистрирован: Пн дек 24, 2012 3:01 pm
Откуда: Саратов Saratov
Благодарил (а): 67 раз
Поблагодарили: 61 раз

Re: Подключение железа к AMS

Сообщение shemnik69 » Сб фев 02, 2019 9:59 pm

Доброе время суток!
Сперва фото.
Это АМ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
main.jpg (3.37 МБ) 824 просмотра
Internet W5500 Amplifer input plate.jpg
Internet W5500 Amplifer input plate.jpg (1.69 МБ) 826 просмотров
AMS Front panel.jpg
AMS Front panel.jpg (2.82 МБ) 828 просмотров
Последний раз редактировалось shemnik69 Сб фев 02, 2019 10:21 pm, всего редактировалось 3 раза.
Ответить