Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:laboratory_iot_c:exp57 [2024/12/05 11:06] – [Программный код эксперимента] labuser30products:laboratory_iot_c:exp57 [2024/12/05 11:22] (текущий) – [Программный код эксперимента] labuser30
Строка 15: Строка 15:
 #include <ESP8266WebServer.h> #include <ESP8266WebServer.h>
  
-#define WIFI_NAME     "Freedom+#define WIFI_NAME     "WiFi_Name
-#define WIFI_PASSWORD "koval2121"+#define WIFI_PASSWORD "WiFi_Password"
  
 ESP8266WebServer server(80); ESP8266WebServer server(80);
Строка 52: Строка 52:
 </WRAP> </WRAP>
  
-Создаем объект сетевого интерфейса и активируем его +Создаем объект веб-сервера, в качестве параметра указываем порт на котором он будет принимать запросы. 
-<code python[enable_line_numbers="2", start_line_numbers_at="11"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="7"]> 
-wlan = network.WLAN(network.STA_IF) +ESP8266WebServer server(80);                                        
-wlan.active(True)+
 </code> </code>
  
-Подключаемся к сети и секунду ждем соединения +Устанавливаем режим клиента. Подключаемся к сети и печатаем точку каждые полсекунды, до тех пор, пока микроконтроллер не подключится к сети. Если соединение не устанавливается, то скорее всего допущена ошибка в имени сети или пароле от нее. 
-<code python[enable_line_numbers="2", start_line_numbers_at="13"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="19"]> 
-wlan.connect(wlan_idwlan_pass+  WiFi.mode(WIFI_STA);  
-time.sleep(1)+  WiFi.begin(WIFI_NAMEWIFI_PASSWORD); 
 +  while (WiFi.status() != WL_CONNECTED) { 
 +    Serial.print("."); 
 +    delay(500); 
 +  }
 </code> </code>
  
-Проверяем состояние подключения. Если соединение еще не установлено, то проверяем снова, до тех пор, пока соединение не будет установлено. Если соединение не устанавливается, то скорее всего допущена ошибка в имени сети или пароле от нее.  +В сети есть специальный сервер, который выдает настройки вновь подключаемым устройствам — DHCP сервер. Помимо прочих настроек, он назначает устройствам IP- адреса. После подключения нашего устройства, ему был присвоен IP-адрес. Выведем этот адрес в последовательный порт. 
-<code python[enable_line_numbers="2", start_line_numbers_at="16"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="26"]> 
-while wlan.isconnected() == False: +  Serial.print("IP address"); 
-    pass +  Serial.println(WiFi.localIP());
-</code> +
- +
-В сети есть специальный сервер, который выдает настройки вновь подключаемым устройствам — DHCP сервер. Помимо прочих настроек, он назначает устройствам IP- адреса. После подключения нашего устройства, ему был присвоен IP-адрес. Выведем этот адрес в терминал +
-<code python[enable_line_numbers="2", start_line_numbers_at="19"]> +
-print('Device IP:', wlan.ifconfig()[0])+
 </code> </code>
  
 Например, может быть получен адрес ''192.168.0.25'' или ''192.168.43.195''. Но может быть и другой. Это зависит от настроек сети и уже подключенных к ней устройств. Не очень важно какой именно адрес был назначен нашему микроконтроллеру, главное, что этот адрес нам нужно запомнить, ведь именно по нему мы будем обращаться к устройству. Например, может быть получен адрес ''192.168.0.25'' или ''192.168.43.195''. Но может быть и другой. Это зависит от настроек сети и уже подключенных к ней устройств. Не очень важно какой именно адрес был назначен нашему микроконтроллеру, главное, что этот адрес нам нужно запомнить, ведь именно по нему мы будем обращаться к устройству.
  
-Создадим веб- сервер +Настраиваем веб-сервер таким образомчто при обращении к главной странице будет вызываться функция ''show_message''
-<code python[enable_line_numbers="2"start_line_numbers_at="25"]> +
-server = MicroPyServer() +
-</code>+
  
-Настроим его таким образом, что при обращении к главной странице будет вызываться функция ''show_message'' +<code arduino[enable_line_numbers="2", start_line_numbers_at="29"]> 
-<code python[enable_line_numbers="2", start_line_numbers_at="27"]> +  server.on("/", showMessage);
-server.add_route("/", show_message)+
 </code> </code>
  
-На веб- сервере, или скажем: на сайте, может быть не одна страница, а много. Адрес страницы, к которой мы хотим обратиться мы передаем в адресе (URL) после домена сайта. Например %%http://pinlab.ru/page1%% или %%http://pinlab.ru/page2%%. Если имя страницы отсутствует, то обращение происходит к главной странице. В коде нашего сервера адрес главной страницы обозначается символом ''/''+На веб-сервере, или скажем: на сайте, может быть не одна страница, а много. Адрес страницы, к которой мы хотим обратиться мы передаем в адресе (URL) после домена сайта. Например %%http://pinlab.ru/page1%% или %%http://pinlab.ru/page2%%. Если имя страницы отсутствует, то обращение происходит к главной странице. В коде нашего сервера адрес главной страницы обозначается символом ''/''
  
-Запускаем веб- сервер +Запускаем веб-сервер: 
-<code python[enable_line_numbers="2", start_line_numbers_at="29"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="30"]> 
-server.start()+  server.begin();  
 +</code> 
 + 
 +В основном цикле программы проверяем наличие новых клиентов: 
 +<code arduino[enable_line_numbers="2", start_line_numbers_at="30"]> 
 +  server.handleClient(); 
 </code> </code>
  
Строка 102: Строка 101:
  
 Когда браузер обращается к главной странице нашего веб- сервера, веб сервер вызывает функцию ''show_message'': Когда браузер обращается к главной странице нашего веб- сервера, веб сервер вызывает функцию ''show_message'':
-<code python[enable_line_numbers="2", start_line_numbers_at="21"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="9"]> 
-def show_message(request, params): +void showMessage() { 
-    ''' request handler ''' +  server.send(200, "text/html", "HELLO WORLD!")
-    server.send("HELLO WORLD!")+}
 </code> </code>
- +В ней всего одна строка, в которой вызывается метод ''send'', отправляющий клиенту ответ. Именно этот текст мы и увидели в браузере. Первый аргумент метода ''send()'' — код HTTP сообщения, второй — тип сообщение, третий — само сообщение.
-В ней всего одна строка, в которой вызывается метод ''send'', отправляющий клиенту ответ. Именно этот текст мы и увидели в браузере. +
  
 Таким образом мы написали простейший веб-сервер, который при обращении к нему отправляет строку приветствия. Таким образом мы написали простейший веб-сервер, который при обращении к нему отправляет строку приветствия.