Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13
  1. #1
    Новичок
    Регистрация
    28.01.2014
    Сообщений
    15
    Вес репутации
    130

    По умолчанию Wi-Fi модуль HLK-RM04 http запросы

    Добрый день.

    Использую данный модуль HLK-RM04 в связке с arduino micro.

    Задача в следующем: есть термодатчик; хочется с него отправлять данные на web-server.
    Работоспособность проверена считывание данных в браузере.

    Почитав про отправку http запросов переделал скетч под формирование строки вида: "GET http://192.168.1.1/arduino.php?t="+ String(t) + "&h="+String(h);
    Теперь возник вопрос как заставить arduino+wifi модуль отправлять эту строку на сервер?
    Про http запросы, правда только с Ethernet Shield, инфа в интернете есть(пример http://howitmake.ru/blog/arduino/116.html).
    Как это повторить используя данный wifi модуль?
    Последний раз редактировалось Chip; 19.03.2017 в 03:36.

  2. #2
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Wi-Fi модуль HLK-RM04 http запросы

    Отправляете строку в порт командой serialPrint()

  3. #3
    Новичок
    Регистрация
    28.01.2014
    Сообщений
    15
    Вес репутации
    130

    По умолчанию Re: Wi-Fi модуль HLK-RM04 http запросы

    Цитата Сообщение от Chip Посмотреть сообщение
    Отправляете строку в порт командой serialPrint()
    Может вы имели в виду serial.Print().
    Если да, то таким образом можно только данные вывести в браузер(что я собственно и описал выше).
    А как заставить arduino + wifi отправлять именно http запросы?

  4. #4
    Новичок
    Регистрация
    27.02.2014
    Сообщений
    4
    Вес репутации
    0

    По умолчанию Re: Wi-Fi модуль HLK-RM04 http запросы

    Цитата Сообщение от FDV Посмотреть сообщение
    Может вы имели в виду serial.Print().
    Если да, то таким образом можно только данные вывести в браузер(что я собственно и описал выше).
    А как заставить arduino + wifi отправлять именно http запросы?
    судя по описнию, это Wi-Fi - UART модуль, т.е. он эмулирует serial-порт через Wi-Fi, поэтому совет на счет serial.Print() правильный.
    HTTP GET запрос на нем реализовать невозможно, берите нормальный Wi-Fi шилд, SPI и external interupt на micro есть, проблем не должно быть, хотя возможно в библиотеке для wi-fi шилда прийдется исправлять номера пинов.

  5. #5
    Новичок
    Регистрация
    28.01.2014
    Сообщений
    15
    Вес репутации
    130

    По умолчанию Re: Wi-Fi модуль HLK-RM04 http запросы

    Цитата Сообщение от dimap Посмотреть сообщение
    судя по описнию, это Wi-Fi - UART модуль, т.е. он эмулирует serial-порт через Wi-Fi, поэтому совет на счет serial.Print() правильный.
    HTTP GET запрос на нем реализовать невозможно, берите нормальный Wi-Fi шилд, SPI и external interupt на micro есть, проблем не должно быть, хотя возможно в библиотеке для wi-fi шилда прийдется исправлять номера пинов.
    Спасибо. А не подскажите в таком случае, как отправлять http запросы с нормального wifi шилда?

  6. #6
    Новичок
    Регистрация
    27.02.2014
    Сообщений
    4
    Вес репутации
    0

    По умолчанию Re: Wi-Fi модуль HLK-RM04 http запросы

    Цитата Сообщение от FDV Посмотреть сообщение
    Спасибо. А не подскажите в таком случае, как отправлять http запросы с нормального wifi шилда?
    если возьмете стандартный wifi shield (http://arduino.cc/en/Main/ArduinoWiFiShield), то читайте здесь http://arduino.cc/en/Tutorial/WiFiWebClient. В описании на шилд написано какие контакты задействованы для коннекта с ардуиной, сопоставьте контакты UNO и Micro вперед соединять проводками.

  7. #7
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Wi-Fi модуль HLK-RM04 http запросы

    GET и POST запросы можно посылать и с WiFi модулем, только для этого нужно написать PHP скрипт, выложить его где нибудь в интернет(есть бесплатные сервисы) и все запросы направлять через этот скрипт.
    Для Ваших целей лучше использовать WiFi роутер с прошивкой CyberWrt, Ethernet Shield стоит столько же? но возможности у него ограничены
    Последний раз редактировалось Chip; 19.03.2017 в 03:37.

  8. #8
    Новичок
    Регистрация
    27.02.2014
    Сообщений
    4
    Вес репутации
    0

    По умолчанию Re: Wi-Fi модуль HLK-RM04 http запросы

    а php то зачем ??? тем более на внешнем сайте. можно поподробнее, мож я чего недопонял...

    wifi shield (оригинальный) - это конечно дорого, под 4тр стоит.
    вполне согласен, что связка wifi-роутер + ethernet shield будет дешевле - но этот набор уже весьма габаритный получается,

    если взять ethernet-модель на чипе enc28j60, то еще дешевле.
    только для enc28j60 очень кривые библиотеки и очень сложное программирование.

  9. #9
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Wi-Fi модуль HLK-RM04 http запросы

    а php то зачем ??? тем более на внешнем сайте.
    Потому что у человека уже есть модуль.

    вполне согласен, что связка wifi-роутер + ethernet shield будет дешевле - но этот набор уже весьма габаритный получается
    ethernet shield не нужен у роутера есть ethernet, WiFi и USB. Arduino подключаетет к USB роутера, настраиваете роутер в режиме WiFi клиента и отправляйте/принимайте все что хотите. У меня именно так и работает, к роутеру подключено только питание и Arduino.
    В прошивке CyberWrt уже есть встроенный веб сервер и ser2net
    Размер роутера 5x5 см
    Последний раз редактировалось Chip; 28.02.2014 в 13:58.

  10. #10
    Новичок
    Регистрация
    28.01.2014
    Сообщений
    15
    Вес репутации
    130

    По умолчанию Re: Wi-Fi модуль HLK-RM04 http запросы

    Возможно я не совсем подробно(правильно) описал задачу:
    комплектующие arduino micro(можно и другой), wifi модуль HLK-RM04, температурный датчик.
    Вот скетч, который формирует строку http запроса и кидает ее в порт:
    Код:
    #include <dht.h>
     
    DHT sensor = DHT();
     
    void setup()
    {
        Serial1.begin(115200);
        sensor.attach(A3);
        delay(1000);
    }
     
    void loop()
    {
        sensor.update();
        int h = sensor.getHumidityInt();
        int t = sensor.getTemperatureInt();
     
        String msg = "GET http://192.168.1.1/arduino.php?t="+ String(t) + "&h="+String(h);
        Serial1.println(msg);
     
        delay(9000);
    }


    При ввода в браузер строки 192.168.1.20:3333 (адрес моего wifi модуля), строки отображаюися в браузере.

    Имеется web-server apache (адрес 192.168.1.1), с mysql и php.
    скрипт php который отлавливает get запросы и производит запись в mysql:

    PHP код:
    <?php
    //адрес хоста
    $dbhost 'localhost';
    $dbuser 'test';
    $dbpass 'password';
    $dbname 'test';
    // сохраняем IP на всякий случай
    $client_ip $_SERVER['REMOTE_ADDR'];
    // получение значения переменной температура
    $temp $_GET["t"];
    // получение значения влажность
    $hum $_GET["h"];

    //устанавливаем подключение к MySQL
    $connect mysql_connect($dbhost$dbuser$dbpass);
    // Выбираем базу данных
    mysql_select_db ($dbname$connect);

    //Отправляем данные в таблицу
    $sql "INSERT INTO sensor_data VALUES (NOW(), '$temp', '$hum', '$client_ip')";

    // закрываем соединение с базой
    mysql_close($connect);
    ?>

    Соответственно если скопировать одну из строк, которые выводятся в браузер и вставить ее в адресную строку, то скрипт корректно отрабатывает и запись добавляется в базу.

    Весь вопрос заключается в том как заставить arduino+wifi отправлять запрос в web-server, как например при использовании интернет шилда:
    Код:
    #include <DHT.h>
    #include <Ethernet.h>
    #include <SPI.h>
    
    
    byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x4C, 0xFB };
    byte ip[] = { 192, 168, 1, 30 };
    
    //IP адрес сервера который будет собирать статистику
    byte server[] = { 192, 168, 1, 20 };
    
    EthernetClient client;
    //Контакт к которому подключен датчик температуры и влажности
    #define DHTPIN A0
    
    // Вы бираем сенсор который используется у вас, у меня DHT11
    #define DHTTYPE DHT11   
    
    
    DHT dht(DHTPIN, DHTTYPE);
    
    void setup()
    {
      Ethernet.begin(mac, ip);
      dht.begin();
      // Для отладки включим отправку данных в COM порт
      Serial.begin(9600);
      
    }
    
    void loop()
    {
    int h = dht.readHumidity();
    int t = dht.readTemperature();
    int l = analogRead(A0);
    String msg = "GET /test.php?t="+ String(t) + "&h="+String(h);
    
    // Для отладки включим отправку данных в COM порт
    Serial.println(msg);
    // Если это не требуется, то можно закомментировать
    
    
    client.connect(server, 80);
    client.println(msg);
    //Ждем 2 сек. 
    delay (2000);
    
    //потом отключаемся
    client.stop();
    
    //Данные будут отправляться каждые 10 сек, выше мы уже подождали 2 сек, подождем еще 8 сек. 
     delay (8000);
      }
    ???

    Или же такое в принципе через любой модуль wifi не возможно, или мой в частности??
    Последний раз редактировалось Chip; 19.03.2017 в 03:39.

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •