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. Огромное сообщество и огромное количество материала по этому модулю. Изучайте.
Спасибо )
Стандартный пример одной из библиотек модуля:
01
/*
02
WiFiTelnetToSerial - Example Transparent UART to Telnet Server for esp8266
03
04
Copyright (c) 2015 Hristo Gochkov. All rights reserved.
05
This file is part of the ESP8266WiFi library for Arduino environment.
06
07
This library is free software; you can redistribute it and/or
08
modify it under the terms of the GNU Lesser General Public
09
License as published by the Free Software Foundation; either
10
version 2.1 of the License, or (at your option) any later version.
11
12
This library is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
Lesser General Public License for more details.
16
17
You should have received a copy of the GNU Lesser General Public
18
License along with this library; if not, write to the Free Software
19
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20
*/
21
#include <ESP8266WiFi.h>
22
23
//how many clients should be able to telnet to this ESP8266
24
#define MAX_SRV_CLIENTS 1
25
const
char
* ssid =
"**********"
;
26
const
char
* password =
"**********"
;
27
28
WiFiServer server(23);
29
WiFiClient serverClients[MAX_SRV_CLIENTS];
30
31
void
setup
() {
32
Serial1.begin(115200);
33
WiFi.begin(ssid, password);
34
Serial1.print(
"\nConnecting to "
); Serial1.println(ssid);
35
uint8_t i = 0;
36
while
(WiFi.status() != WL_CONNECTED && i++ < 20) delay(500);
37
if
(i == 21){
38
Serial1.print(
"Could not connect to"
); Serial1.println(ssid);
39
while
(1) delay(500);
40
}
41
//start UART and the server
42
Serial
.begin(115200);
43
server.begin();
44
server.setNoDelay(
true
);
45
46
Serial1.print(
"Ready! Use 'telnet "
);
47
Serial1.print(WiFi.localIP());
48
Serial1.println(
" 23' to connect"
);
49
}
50
51
void
loop
() {
52
uint8_t i;
53
//check if there are any new clients
54
if
(server.hasClient()){
55
for
(i = 0; i < MAX_SRV_CLIENTS; i++){
56
//find free/disconnected spot
57
if
(!serverClients[i] || !serverClients[i].connected()){
58
if
(serverClients[i]) serverClients[i].stop();
59
serverClients[i] = server.available();
60
Serial1.print(
"New client: "
); Serial1.print(i);
61
continue
;
62
}
63
}
64
//no free/disconnected spot so reject
65
WiFiClient serverClient = server.available();
66
serverClient.stop();
67
}
68
//check clients for data
69
for
(i = 0; i < MAX_SRV_CLIENTS; i++){
70
if
(serverClients[i] && serverClients[i].connected()){
71
if
(serverClients[i].available()){
72
//get data from the telnet client and push it to the UART
73
while
(serverClients[i].available())
Serial
.write(serverClients[i].read());
74
}
75
}
76
}
77
//check UART for data
78
if
(
Serial
.available()){
79
size_t len =
Serial
.available();
80
uint8_t sbuf[len];
81
Serial
.readBytes(sbuf, len);
82
//push UART data to all connected telnet clients
83
for
(i = 0; i < MAX_SRV_CLIENTS; i++){
84
if
(serverClients[i] && serverClients[i].connected()){
85
serverClients[i].write(sbuf, len);
86
delay(1);
87
}
88
}
89
}
90
}
Ок буду пробовать ОГРОМНОЕ спасибо)
Нашел еще такой вот модуль.
Нашел еще такой вот модуль.
ценник значительно овыше чем ESP8266 ))) попробую использоватьESP8266 )
Готовое устройство и должно стоить дороже. ESP8266 нужно будет программировать и преобразовать уровни из UART в RS232. Для тех, у кого сложности и с первым и вторым, проще купить готовое, а если нет боязни в конструировании, естественно ESP8266.
ценник значительно овыше чем ESP8266 ))) попробую использоватьESP8266 )
Готовое устройство и должно стоить дороже. ESP8266 нужно будет программировать и преобразовать уровни из UART в RS232. Для тех, у кого сложности и с первым и вторым, проще купить готовое, а если нет боязни в конструировании, естественно ESP8266.
Стандартный пример одной из библиотек модуля:
При всём уважении к авторам этого примера - негодный пример, плохой. Вообще - это беда примеров, скачанных из интернет: они, как правило, никуда не годны, кроме как в помойку. Почему? Всё на самом деле просто: пока используется только один UART, да на небольших скоростях - всё вроде бы ок. Но как только захочется использовать парочку UART - всё, засада с такими примерами. Почему?
Потому что пока один висит на
1
while
(serverClients[i].available())
2
Serial
.write(serverClients[i].read());
, буфер другого UART уже успевает переполнится и в итоге - потеря данных. Решение, собственно, простое - юзать serialEvent, внутри него по-бырому сохранять данные, и уже позже с ними работать. Я уже не говорю о тех случаях, когда где-то там внутри какой-то кривой библиотеки по поводу и без юзается delay() ;)
Я чего такой злой-то? Да потому что сам через это прошёл: пока в работе был один GSM-модуль на хардварном Serial1 Меги - всё было ок. Стоило повесить на Serial2 ESP8266 - и всё, начались потери пакетов, именно по причинам, описанным выше. Переделал на полностью асинхронную работу - ттт, пока всё ок.
Поэтому примеры из этих ваших интернетов - годятся только как примеры, чтобы посмотреть - и написать правильно ;)
З.Ы. Ни на что не претендую, просто мимо проходил.
Стандартный пример одной из библиотек модуля:
При всём уважении к авторам этого примера - негодный пример, плохой. Вообще - это беда примеров, скачанных из интернет: они, как правило, никуда не годны, кроме как в помойку. Почему? Всё на самом деле просто: пока используется только один UART, да на небольших скоростях - всё вроде бы ок. Но как только захочется использовать парочку UART - всё, засада с такими примерами. Почему?
Потому что пока один висит на
1
while
(serverClients[i].available())
2
Serial
.write(serverClients[i].read());
, буфер другого UART уже успевает переполнится и в итоге - потеря данных. Решение, собственно, простое - юзать serialEvent, внутри него по-бырому сохранять данные, и уже позже с ними работать. Я уже не говорю о тех случаях, когда где-то там внутри какой-то кривой библиотеки по поводу и без юзается delay() ;)
Я чего такой злой-то? Да потому что сам через это прошёл: пока в работе был один GSM-модуль на хардварном Serial1 Меги - всё было ок. Стоило повесить на Serial2 ESP8266 - и всё, начались потери пакетов, именно по причинам, описанным выше. Переделал на полностью асинхронную работу - ттт, пока всё ок.
Поэтому примеры из этих ваших интернетов - годятся только как примеры, чтобы посмотреть - и написать правильно ;)
З.Ы. Ни на что не претендую, просто мимо проходил.
Что это за "ЗВЕРЬ" кто нибудь эзал это? http://usriot.com/Product/131.html
По сути нужно ,что то подобное:
Только вместо модема использовать ESP 8266