Различия

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

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

products:laboratory_iot_c:exp66 [2024/12/05 16:47] – создано labuser30products:laboratory_iot_c:exp66 [2024/12/05 16:52] (текущий) – [Программный код эксперимента] labuser30
Строка 12: Строка 12:
  
 ==== Программный код эксперимента ==== ==== Программный код эксперимента ====
-<file python Exp66.py[enable_line_numbers="2", start_line_numbers_at="1"]> +<file arduino Exp66.ino[enable_line_numbers="2", start_line_numbers_at="1"]> 
-import time +#include <ESP8266WiFi.h> 
-from machine import I2C, Pin +#include <ESP8266WebServer.h> 
-import onewire +#include <OneWire.h> 
-import ds18x20 +#include <DallasTemperature.h>
-from micropyserver import MicroPyServer  +
-import network +
-import gc +
-_init() +
-gc.collect()+
  
-ap_id = "WIFI_TEMP" +#define AP_NAME     "WIFI_TEMP" 
-ap_pass = "12345678" +#define AP_PASSWORD "12345678" 
- +#define BUS_PIN 12   //the device is on GPIO12
-# the device is on GPIO12 +
-ow = onewire.OneWire(Pin(12))+
    
-# create the onewire object +OneWire oneWire(BUS_PIN); 
-ds = ds18x20.DS18X20(ow)+DallasTemperature sensors(&oneWire);
  
 +ESP8266WebServer server(80);
  
-ap = network.WLAN(network.AP_IF+void showMessage() { 
-ap.active(True+  sensors.requestTemperatures() 
-ap.config(essid=ap_id, password=ap_pass) +  float tempC sensors.getTempCByIndex(0); 
-time.sleep(2+  server.send(200, "text/html", String(tempC)); 
-  +} 
-while ap.isconnected() == False: + 
-    pass +void setup() { 
-  +  Serial.begin(9600); 
-print('Device IP:', ap.ifconfig()[0]) +  Serial.println(); 
-  +   
-def show_message(request, params): +  WiFi.mode(WIFI_AP); 
-    ''' request handler ''' +  WiFi.softAP(AP_NAME, AP_PASSWORD); 
-    roms = ds.scan() +  IPAddress IP WiFi.softAPIP(); 
-    ds.convert_temp() +  Serial.print("AP set IP address: "); 
-    time.sleep_ms(750+  Serial.println(IP); 
-  + 
-    for rom in roms: +  server.on("/", showMessage); 
-        temp str(ds.read_temp(rom)+  server.begin();  
-        server.send(temp+
-  + 
-server = MicroPyServer() +void loop() { 
-''' add request handler ''' +  server.handleClient();  
-server.add_route("/", show_message+}
-''' start server ''' +
-server.start()+
 </file> </file>
  
-Создаем объект интерфейса, но на этот раз настраиваем его как точку доступа +Переключаем WiFi в режим точки доступа: 
-<code python[enable_line_numbers="2", start_line_numbers_at="21"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="25"]> 
-ap = network.WLAN(network.AP_IF)+  WiFi.mode(WIFI_AP);  
 </code> </code>
  
-Настраиваем свойства точки доступа. А именно устанавливаем имя сети и пароль +Настраиваем свойства точки доступа, а именно устанавливаем имя сети и пароль: 
-<code python[enable_line_numbers="2", start_line_numbers_at="23"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="26"]> 
-ap.config(essid=ap_idpassword=ap_pass)+  WiFi.softAP(AP_NAMEAP_PASSWORD);
 </code> </code>
 +
 +Получаем IP адрес и печатаем его в последовательный порт:
 +<code arduino[enable_line_numbers="2", start_line_numbers_at="27"]>
 +  IPAddress IP = WiFi.softAPIP();
 +  Serial.print("AP set IP address: ");
 +  Serial.println(IP);
 +</code>
 +
 +
  
 Других принципиальных отличий программы от программы из предыдущего эксперимента нет. Других принципиальных отличий программы от программы из предыдущего эксперимента нет.
Строка 75: Строка 76:
 {{ :products:esp-iot:whatsapp_image_2021-04-25_at_18.30.06.jpeg?nolink |}} {{ :products:esp-iot:whatsapp_image_2021-04-25_at_18.30.06.jpeg?nolink |}}
  
-Необходимо подключиться к нашей точке доступа. Сообщение об отсутствии интернета — нормально. Ведь откуда ему взяться в нашей сети? Ведь сейчас микроконтроллер не подключен к сети, в которой есть интернет. Сейчас он сам точка доступа. Однако отсутствие интернета никак не помешает подключиться к нашему веб- серверу и посмотреть температуру как раньше, ведь интернет для этого не нужен. Обмен данными происходит внутри локальной сети, образованной микроконтроллером и клиентским устройством.+Необходимо подключиться к нашей точке доступа. Сообщение об отсутствии интернета — нормально. Ведь откуда ему взяться в нашей сети? Ведь сейчас микроконтроллер не подключен к сети, в которой есть интернет. Сейчас он сам точка доступа. Однако отсутствие интернета никак не помешает подключиться к нашему веб-серверу и посмотреть температуру как раньше, ведь интернет для этого не нужен. Обмен данными происходит внутри локальной сети, образованной микроконтроллером и клиентским устройством.
  
 После установки соединения в терминал будет выведен IP адрес, который принадлежит микроконтроллеру. В нашем случае это ''192.168.4.1''. Именно этот адрес и нужно теперь вводить в адресную строку браузера. Адрес из прошлого эксперимента уже не подойдет, ведь теперь у нас совсем другая сеть. После установки соединения в терминал будет выведен IP адрес, который принадлежит микроконтроллеру. В нашем случае это ''192.168.4.1''. Именно этот адрес и нужно теперь вводить в адресную строку браузера. Адрес из прошлого эксперимента уже не подойдет, ведь теперь у нас совсем другая сеть.
  
 {{ :products:esp-iot:whatsapp_image_2021-04-25_at_18.31.07.jpeg?nolink&400 |}} {{ :products:esp-iot:whatsapp_image_2021-04-25_at_18.31.07.jpeg?nolink&400 |}}