Arduino UNO передача с HC-SR04 по TCP/IP

zudva
Offline
Зарегистрирован: 14.02.2018

Всем привет!

Имеется Arduino UNO + Ethernet Shield W5100 + Ultrasonic HC-SR04

Задача: передавать хотя бы бинарные значения с ультрозвукового датчика.

Пока получается только передавать нули с датчика. И те напрямую через COM4

В какую сторону двигаться? Спасибо!

Скетч ниже:

// TCP сервер, возвращает полученные данные
#include <SPI.h>
#include <Ethernet.h>
#include <Ultrasonic.h>

// определяем конфигурацию сети
byte mac[] = {0xAE, 0xB2, 0x26, 0xE4, 0x4A, 0x5C};  // MAC-адрес
byte ip[] = {192, 168, 1, 10};  // IP-адрес
byte myDns[] = {192, 168, 1, 1};  // адрес DNS-сервера
byte gateway[] = {192, 168, 1, 1};  // адрес сетевого шлюза
byte subnet[] = {255, 255, 255, 0};  // маска подсети

Ultrasonic ultrasonic(12, 13);
EthernetServer server(2000);  // создаем сервер, порт 2000
EthernetClient client;  // объект клиент
boolean clientAlreadyConnected= false; // признак клиент уже подключен

void setup() {
  Ethernet.begin(mac, ip, myDns, gateway, subnet);  // инициализация контроллера
  server.begin(); // включаем ожидание входящих соединений
  Serial.begin(9600);    
  // Serial.print("Server address:");
  // Serial.println(Ethernet.localIP()); // выводим IP-адрес контроллера
}

void loop() {
  client = server.available(); // ожидаем объект клиент
  if (client) {
    // есть данные от клиента
    if (clientAlreadyConnected == false) {
      // сообщение о подключении
      Serial.println("Client connected");
      delay(1000);
      client.println("Server ready"); // ответ клиенту
      clientAlreadyConnected= true;      
    }

    while(client.available() > 0) {
      char chr = client.read();  // чтение символа
      server.write(chr); // передача клиенту
      Serial.write(chr);
    }    
  }
  Serial.println(ultrasonic.distanceRead());
  delay(1000);  
}

 

mixail844
Offline
Зарегистрирован: 30.04.2012

судя по скетчу ,у вас реализован обычный пример "echo" ,это когда то что клиент отправляет,он то и получает обратно с сервера.никакой передачи данных с датчика Ultrasonic HC-SR04 в TCP/IP нет.

если в Serial Monitor от датчика одни нули,проверьте правильность соеденения датчика ултразвука и Уно а так же,что это соединение соответствует пинам в скетче Ultrasonic ultrasonic(12, 13);

Так же у вас не описан случай когда clientAlreadyConnected принимает значение false. После того как было true, если клиент отключился.

sadman41
Offline
Зарегистрирован: 19.10.2016

Первый вопрос тут должен быть таким  - с какой целью пост размещен в проектах?

В целом михаил прав - скетч не совпадает со словесным описанием. Но, самая большая проблема даже не в этом.

zudva
Offline
Зарегистрирован: 14.02.2018

Задача: принимать движение объекта и передавать данные в TouchDesigner. Данные могут быть в рамках от 0 и до предела датчика.
Изменение запускет анимацию и выключает ее. То есть работает на зпуск тригера.

zudva
Offline
Зарегистрирован: 14.02.2018

Мой первый скетч ()((
Пытался как мог. Буду рад, если вы меня направите.

Работал по этому гайду: http://mypractic.ru/urok-64-tcp-server-i-klient-na-arduino-biblioteka-uipethernet.html