Форум программистов, компьютерный форум, киберфорум
Arduino
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
2 / 2 / 0
Регистрация: 28.07.2021
Сообщений: 8
1

Отправка запросов от Arduino UNO на веб-сервер (и обратно)

29.07.2021, 17:07. Показов 3489. Ответов 2

Author24 — интернет-сервис помощи студентам
Доброго времени суток.

Суть такая: делаю самопальную СКУД на базе Arduino UNO. Дошёл до момента, когда надо передать данные ID карты с ардуинки на веб-сервер, чтобы тот проверил её наличие в БД, и вернул ответ ардуинке (0 - запись не найдена, 1 - найдена). Ещё переданные от ардуино данные скрипт должен сохранять в журнал (как попытку прохода).

Сейчас пытаюсь передать данные из ардуино на веб-сервер для сохранения их в журнал (посредством GET-запроса). Пока что просто пытаюсь записать константу в БД.

Для подключения платы ардуино к ЛВС использую ethernet-модуль ENC28J60 и библиотеку EtherCard. Веб-сервер пишется на php, БД - MySQL. Адресация в сети статическая.

Сама ардуино в локалке пингуется, HTML-страницы из примеров выводятся (т.е. проблем в подключении нет). Проблемы начинаются, когда пытаюсь передать GET-запрос на веб-сервер. В мониторинге порта ардуино всё что нужно выводит, но с БД ничего не происходит.

При этом, если я формирую тот же самый запрос в адресной строке браузера, то данные в журнал добавляются (т.е. сам скрипт рабочий).

Подскажите, что не так. А то уже как третий день на месте топчусь.

Ещё был бы признателен, если бы кто-то подсказал, как можно организовать отправку данных с веб-сервера на ардуино.

Так же прошу сильно не бить ногами за ардуино-код, я пока просто пример пытаюсь сделать

Arduino
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <EtherCard.h>
#define STATIC 1 
 
#if STATIC
// IP Arduino
static byte myip[] = { 192,168,0,101 };
static byte gwip[] = { 192,168,0,1 };
static byte dnsip[] = { 192,168,0,1 };
#endif
 
static byte mymac[] = { 0x34,0x30,0x69,0x2D,0x30,0x31 };
 
byte Ethernet::buffer[700];
 
const char website[] PROGMEM = "192.168.0.16"; // IP сервера
static byte websiteip[] = { 192,168,0,16 };
static uint32_t timer;
 
static void callback (byte status, word off, word len) {
  Serial.println(">>>");
  Ethernet::buffer[off+300] = 0;
  Serial.print((const char*) Ethernet::buffer + off);
  Serial.println("...");
}
 
void setup(){
  Serial.begin(9600);
  Serial.println("----------------");
  Serial.println("Инициализация...");
  if (ether.begin(sizeof Ethernet::buffer, mymac, SS) == 0)
    Serial.println("Ошибка. Не удалось подключиться к Ethernet-контроллеру.");
  ether.staticSetup(myip, gwip);
  
  ether.printIp("IP-адрес:  ", ether.myip);
  ether.printIp("Шлюз:  ", ether.gwip);
  ether.printIp("DNS-адрес: ", ether.dnsip);
}
 
// Функция отправки данных на сервер
void send_package(){
    ether.packetLoop(ether.packetReceive());
    if (millis() > timer) {
        Serial.println(F("<<PING"));
        timer = millis() + 5000;
        ether.browseUrl(PSTR("/pacs/arduino_link.php?"),"card_id=458700", website, callback);
  }
}
 
void loop(){
  send_package();
}


PHP
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
class Card_logger{
    public $link='';
        function __construct($card_id){
            $this->connect();
            $this->storeInDB($card_id);
        }
 
    function connect(){
        $this->link = mysqli_connect('localhost','root','') or die('Cannot connect to the DB');
        mysqli_select_db($this->link,'pacs') or die('Cannot select the DB');
    }
 
    function storeInDB($card_id){
        date_default_timezone_set('Etc/GMT-3');
        $date_time = date("Y-m-d H:i:s"); 
        $query = "INSERT INTO log SET card_id='$card_id', time='$date_time'";
        $result = mysqli_query($this->link,$query) or die('Errant query:  '.$query);
    }
 
}
 
if($_GET['card_id'] != ''){
    $Card_logger=new Card_logger($_GET['card_id']);
}
?>
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.07.2021, 17:07
Ответы с готовыми решениями:

Некорректная отправка СМС через SIM900 в связке с Arduino UNO R3
При включении из EEPROM считываются данные и отправляются по СМС #include &lt;EEPROM.h&gt; ...

Ошибка при загрузке кода в Arduino Uno (Китай) - Arduino
В Диспетчере устройств Arduino определяется, как USB-SERIAL CH340 (COM5). При попытке залить...

Arduino UNO. Как работать c RFID-сканнером и Arduino на одном Serial-порту?
Рас уж тут речь зашла об ардуине и многопоточности COM порта, думаю могу обратиться именно сюда за...

Arduino uno + arduino ethernet + delphi для чайников
Доброго времени суток. У меня такая задача нужно реализовать программу на Delphi которая...

2
2 / 2 / 0
Регистрация: 28.07.2021
Сообщений: 8
20.08.2021, 12:12  [ТС] 2
Если у кого-то будет похожая проблема, то всё решилось сменой библиотеки с EtherCard.h на UIPEthernet.h (аппаратная часть и подключение не менялись).
1
0 / 0 / 0
Регистрация: 15.05.2022
Сообщений: 1
15.05.2022, 09:35 3
grotwerg, добрый день подскажите пожалуйста, делаю примерно тоже самое. Но немного не понял как вы и на чем реализовали сервер. можете поподробней написать очень нужно. Спасибо
0
15.05.2022, 09:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2022, 09:35
Помогаю со студенческими работами здесь

Отправка запроса с Arduino на сервер
Доброго времени суток Есть Arduino Uno R3, Ethernet W5100 R3 SHIELD какой-нибудь сервак Нужно...

Отправка Json на сервер и обратно
Собственно сел учить Json и мне понравился вот такой способ работы с AJAX Json, работает он...

Отправка post запросов на сервер
доброго, имеется программа на пк и хочу сделать аналог для андроида, но в андроиде я не силен, в...

Отправка запросов на игровой сервер
Злравствуйте уважаемые посетители форума . Я к вам пришел вот с такой проблемой . Есть некая игра...

Отправка запросов, без большой нагрузки на сервер
Доброе утро, форумчане. Направьте, пожалуйста, на путь истинный. Есть сайт, на сайте лежит файл...

Отправка xml запросов на сервер с использованием ssl сертификатов
Здравсвуйте мне на сервер необходимо отправлять запросы в виде xml. Решил использовать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru