Изучая новые аппаратные платформы всегда очень много времени убиваешь на поиск того, что тебе действительно требуется. И, читая описания, хочется понять, а для чего это может пригодиться.
DT-06 служит для того, для чего и написано. Он берета данные с UART и передает их по Wi-Fi туда, куда вы укажите или наоборот, принимает их и отдает в UART, где вы их и обработаете.
Это IoT?
сразу скажу это не IoT. Это решение не совсем подходит для этого, но в целом вы можете вполне связать какой-то свой проект с каким-нибудь TCP клиентом, или сервером. Или организовать обмен данными между двумя устройствами(кстати, надо будет попробовать).
Настройка и подключение
Немного хаотично о проверке этого модуля и минимальной настройки я рассказа где-то здесь. Теперь все более структурировано.
Подключение к Wi-Fi
И так. Вот мы подключились к модулю как к точке доступа. И зашли на морду по IP-адресу 192.168.4.1
Дальше проходим в Module->Wi-Fi, ну или http://192.168.4.1/wifi_set.html
Получаем окно следующего вида:
Настройки Soft AP Setting я игнорирую, но можете закрыть, чтоб никто не смог подключиться к модулю, ну или поставить пароль, что тоже работает. Безопасность пока не на первом месте.
Station Setting переводим в состояние Enable. Чтобы наш модуль теперь мог присоединиться к нашей сети. SSID name - вбиваем имя сети, также можно немного подождать и он появится в SSID list. В Password - пароль. И если у вас есть DHCP, то включаем его. Если нет, то прописываем сами адрес. Перезагружаем наш модуль. И дальше стоит проверить присоединился ли он к нашей сети. Я это делал через web-интерфейс роутера.
Простой TCP-сервер
В моем воображаемом проекте данный модуль должен связываться с TCP сервером, который будет находиться где-то в облаках и что-то ему слать и что-то принимать. Так что для начала пишем простой TCP сервер. Я использовал Python так как просто чуть-чуть его понимаю.
import socket
sock = socket.socket()
sock.bind(('', 9090))
sock.listen(1)
conn, addr = sock.accept()
while True:
data = conn.recv(1024)
if not data:
break
print(data)
conn.send(data.encode('ascii'))
conn.close()
Тут мы открываем порт 9090 и слушаем его. Как только кто-то в него постучался. Мы записываем его данные с адресом, а потом смотрим, что от него пришло. и отправляем обратно эхо.
ARDUINO
Теперь поработаем с нашим клиентом. Для начала прописываем данные в DT-06. В прошлый раз я уже писал как его сделать клиентом. Туда суем адрес и порт.
Код для Ардуины.
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
SoftwareSerial mySerial(2, 3);
#define WIFI_SERIAL mySerial
const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int key;
bool trigger;
String str;
void setup() {
trigger =false;
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("-DA?");
Serial.begin(9600);
while (!Serial) {
// ждём, пока не откроется монитор последовательного порта
// для того, чтобы отследить все события в программе
}
Serial.print("Serial init OK\r\n");
// открываем Serial-соединение с Wi-Fi модулем на скорости 9600 бод
WIFI_SERIAL.begin(9600);
}
void loop() {
if (WIFI_SERIAL.available()) {
Serial.write(WIFI_SERIAL.read());
}
str = WIFI_SERIAL.readString();
// если приходят данные из компьютера - отправим их в Wi-Fi модуль
if (Serial.available()) {
WIFI_SERIAL.write(Serial.read());
}
key=analogRead(A0);
// put your main code here, to run repeatedly:
if (key==0 && trigger==false)
{
trigger=true;
WIFI_SERIAL.write("fg\r\n");
}
if (key!=0)
{
trigger=false;
}
lcd.setCursor(0, 1);
lcd.print(str);
}
Тут я прошу меня простить. Ибо не хочу чистить код с проекта. На что стоит обратить внимание <SoftwareSerial.h> - создает программный UART. SoftwareSerial mySerial(2, 3) - вот тут вешаю на пины 2 и 3. Далее есть комментарии. Все что приходит с Serial Monitor будет уходить в наш сервер, все что приходит, будет появляться на мониторе. Также можем сразу запихивать в Serial Port нашего Wi-Fi модуля.
Итоги
Весьма удобный модуль для стационарных проектов, но если потребуется перезаписать настройки... Я даже не знаю как тогда быть... За свои ценник меня весьма порадовал, хотя я и долго пытался понять как с ним установить связь.