RS 232 в wi-fi или ehternet
- Войдите на сайт для отправки комментариев
Сб, 20/02/2016 - 09:54
Добрый день всем, уважаемые форумчане, у меня к Вам вопрос- возможно ли на базе arduino выполнить преобразователь интерфейсов RS 232 в wi-fi или ehternet (в идиале и то и то) ?
Есть у кого нибудь идеи по этому поводу.
Конечно можно.
ESP8266
Есть и на этом форуме тема.
по подробнее можно?:)
Спасибо, вопрос, без платы arduino это являеться преобразователем интерфесов?
Поподробнее:
1. Принимаете данные из RS 232 (через RS232-TTL конвертер).
2. Отправляете принятые данные в wi-fi или ehternet.
Если достаточно только WiFi, то Ардуино не понадобится, всё сделает ESP8266.
вопрос заключаеться в ледующем- нуже преобразоватье для опроса приборов учета потребления тепла (СПТ 943 там есть rs 232) я использовал вот такую хрень http://usriot.com/Product/46.html если Ваше предолжение работаспасобно в данной задече зачем платить больше)))?
ESP8266 имеет три режима - точка доступа, клиент и точка доступа + клиент, на выходе UART, сам модуль может программироваться без дополнительных контроллеров, есть поддержка модуля в среде Arduino IDE. Огромное сообщество и огромное количество материала по этому модулю. Изучайте.
Спасибо )
Стандартный пример одной из библиотек модуля:
/* WiFiTelnetToSerial - Example Transparent UART to Telnet Server for esp8266 Copyright (c) 2015 Hristo Gochkov. All rights reserved. This file is part of the ESP8266WiFi library for Arduino environment. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include <ESP8266WiFi.h> //how many clients should be able to telnet to this ESP8266 #define MAX_SRV_CLIENTS 1 const char* ssid = "**********"; const char* password = "**********"; WiFiServer server(23); WiFiClient serverClients[MAX_SRV_CLIENTS]; void setup() { Serial1.begin(115200); WiFi.begin(ssid, password); Serial1.print("\nConnecting to "); Serial1.println(ssid); uint8_t i = 0; while (WiFi.status() != WL_CONNECTED && i++ < 20) delay(500); if(i == 21){ Serial1.print("Could not connect to"); Serial1.println(ssid); while(1) delay(500); } //start UART and the server Serial.begin(115200); server.begin(); server.setNoDelay(true); Serial1.print("Ready! Use 'telnet "); Serial1.print(WiFi.localIP()); Serial1.println(" 23' to connect"); } void loop() { uint8_t i; //check if there are any new clients if (server.hasClient()){ for(i = 0; i < MAX_SRV_CLIENTS; i++){ //find free/disconnected spot if (!serverClients[i] || !serverClients[i].connected()){ if(serverClients[i]) serverClients[i].stop(); serverClients[i] = server.available(); Serial1.print("New client: "); Serial1.print(i); continue; } } //no free/disconnected spot so reject WiFiClient serverClient = server.available(); serverClient.stop(); } //check clients for data for(i = 0; i < MAX_SRV_CLIENTS; i++){ if (serverClients[i] && serverClients[i].connected()){ if(serverClients[i].available()){ //get data from the telnet client and push it to the UART while(serverClients[i].available()) Serial.write(serverClients[i].read()); } } } //check UART for data if(Serial.available()){ size_t len = Serial.available(); uint8_t sbuf[len]; Serial.readBytes(sbuf, len); //push UART data to all connected telnet clients for(i = 0; i < MAX_SRV_CLIENTS; i++){ if (serverClients[i] && serverClients[i].connected()){ serverClients[i].write(sbuf, len); delay(1); } } } }Ок буду пробовать ОГРОМНОЕ спасибо)
Нашел еще такой вот модуль.
Нашел еще такой вот модуль.
ценник значительно овыше чем ESP8266 ))) попробую использоватьESP8266 )
Готовое устройство и должно стоить дороже. ESP8266 нужно будет программировать и преобразовать уровни из UART в RS232. Для тех, у кого сложности и с первым и вторым, проще купить готовое, а если нет боязни в конструировании, естественно ESP8266.
ценник значительно овыше чем ESP8266 ))) попробую использоватьESP8266 )
Готовое устройство и должно стоить дороже. ESP8266 нужно будет программировать и преобразовать уровни из UART в RS232. Для тех, у кого сложности и с первым и вторым, проще купить готовое, а если нет боязни в конструировании, естественно ESP8266.
Стандартный пример одной из библиотек модуля:
При всём уважении к авторам этого примера - негодный пример, плохой. Вообще - это беда примеров, скачанных из интернет: они, как правило, никуда не годны, кроме как в помойку. Почему? Всё на самом деле просто: пока используется только один UART, да на небольших скоростях - всё вроде бы ок. Но как только захочется использовать парочку UART - всё, засада с такими примерами. Почему?
Потому что пока один висит на
, буфер другого UART уже успевает переполнится и в итоге - потеря данных. Решение, собственно, простое - юзать serialEvent, внутри него по-бырому сохранять данные, и уже позже с ними работать. Я уже не говорю о тех случаях, когда где-то там внутри какой-то кривой библиотеки по поводу и без юзается delay() ;)
Я чего такой злой-то? Да потому что сам через это прошёл: пока в работе был один GSM-модуль на хардварном Serial1 Меги - всё было ок. Стоило повесить на Serial2 ESP8266 - и всё, начались потери пакетов, именно по причинам, описанным выше. Переделал на полностью асинхронную работу - ттт, пока всё ок.
Поэтому примеры из этих ваших интернетов - годятся только как примеры, чтобы посмотреть - и написать правильно ;)
З.Ы. Ни на что не претендую, просто мимо проходил.
Стандартный пример одной из библиотек модуля:
При всём уважении к авторам этого примера - негодный пример, плохой. Вообще - это беда примеров, скачанных из интернет: они, как правило, никуда не годны, кроме как в помойку. Почему? Всё на самом деле просто: пока используется только один UART, да на небольших скоростях - всё вроде бы ок. Но как только захочется использовать парочку UART - всё, засада с такими примерами. Почему?
Потому что пока один висит на
, буфер другого UART уже успевает переполнится и в итоге - потеря данных. Решение, собственно, простое - юзать serialEvent, внутри него по-бырому сохранять данные, и уже позже с ними работать. Я уже не говорю о тех случаях, когда где-то там внутри какой-то кривой библиотеки по поводу и без юзается delay() ;)
Я чего такой злой-то? Да потому что сам через это прошёл: пока в работе был один GSM-модуль на хардварном Serial1 Меги - всё было ок. Стоило повесить на Serial2 ESP8266 - и всё, начались потери пакетов, именно по причинам, описанным выше. Переделал на полностью асинхронную работу - ттт, пока всё ок.
Поэтому примеры из этих ваших интернетов - годятся только как примеры, чтобы посмотреть - и написать правильно ;)
З.Ы. Ни на что не претендую, просто мимо проходил.
Что это за "ЗВЕРЬ" кто нибудь эзал это? http://usriot.com/Product/131.html
По сути нужно ,что то подобное:
Только вместо модема использовать ESP 8266