Различия

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

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

Следующая версия
Предыдущая версия
products:laboratory_iot_c:exp64 [2024/12/06 22:54] – создано labuser30products:laboratory_iot_c:exp64 [2024/12/06 22:58] (текущий) – [Программный код эксперимента] labuser30
Строка 8: Строка 8:
  
 {{ :products:esp-iot:exp37_net2.png?nolink |}} {{ :products:esp-iot:exp37_net2.png?nolink |}}
 + 
  
 +==== Программный код эксперимента ====
 +<file arduino Exp64.ino[enable_line_numbers="2", start_line_numbers_at="1"]>
 +#include <ESP8266WiFi.h>
 +#include <ESP8266WebServer.h>
  
-<file python Exp64.py[enable_line_numbers="2", start_line_numbers_at="1"]> +#define AP_NAME     "RGB_light" 
-from micropyserver import MicroPyServer +#define AP_PASSWORD "12345678"
-import time +
-from machine import Pin, PWM +
-import network +
-import gc +
-_init() +
-gc.collect()+
  
-LedR = PWM(Pin(13, Pin.OUT)) +#define PIN_LED_R 13 
-LedG = PWM(Pin(14, Pin.OUT)) +#define PIN_LED_G 14 
-LedB = PWM(Pin(15, Pin.OUT))+#define PIN_LED_B 15
  
-ap_id = "RGB_light" +ESP8266WebServer server(80);
-ap_pass = "12345678"+
  
-ap = network.WLAN(network.AP_IF+void indexPage() { 
-ap.active(True) +  String html_color = "#4AD686"; 
-ap.config(essid=ap_id, password=ap_pass)+  if (server.hasArg("color")) html_color = server.arg("color")
  
-time.sleep(2)+  int duty_r = strtol(html_color.substring(1,3).c_str(), NULL, 16); 
 +  int duty_g = strtol(html_color.substring(3,5).c_str(), NULL, 16); 
 +  int duty_b = strtol(html_color.substring(5).c_str(), NULL, 16);
  
-while ap.isconnected() == False: +  analogWrite(PIN_LED_R, 255 - duty_r); 
-    pass+  analogWrite(PIN_LED_G, 255 - duty_g); 
 +  analogWrite(PIN_LED_B, 255 - duty_b);
  
-print('Device IP:', ap.ifconfig()[0])+  String page = "<!DOCTYPE html>"; 
 +  page += "<html>"; 
 +  page += "<head>"; 
 +  page += "</head>"; 
 +  page += "<body>"; 
 +  page += "<h3>Select color:</h3>"; 
 +  page += R"(<form action="/">)"; 
 +  page += R"(<input type="color" style="height:50px;width:50%;" value="<=VALUE=>" name="color">)"; 
 +  page += R"(<input type="submit" value="Send">)"; 
 +  page += "</form>"; 
 +  page += "</body>"; 
 +  page += "</html>";
  
 +  page.replace("<=VALUE=>", html_color);
 +  server.send(200, "text/html", page); 
 +}
  
-def index(requestparams): +void setup() { 
-    html_color = '4AD686'+  Serial.begin(9600); 
 +  Serial.println(); 
 +  pinMode(PIN_LED_ROUTPUT); 
 +  pinMode(PIN_LED_G, OUTPUT); 
 +  pinMode(PIN_LED_B, OUTPUT); 
 +  analogWriteRange(256); 
 +  analogWrite(PIN_LED_R, 255); 
 +  analogWrite(PIN_LED_G, 255); 
 +  analogWrite(PIN_LED_B, 255);
  
-    if ('color' in params): +  WiFi.mode(WIFI_AP); 
-        html_color params['color'][3:9] +  WiFi.softAP(AP_NAME, AP_PASSWORD); 
-        print(html_color)+  IPAddress IP WiFi.softAPIP(); 
 +  Serial.print("AP set IP address: "); 
 +  Serial.println(IP);
  
-        r = html_color[0:2] +  server.on("/", indexPage); 
-        g = html_color[2:4] +  server.begin();  
-        b = html_color[4:6]+
 +void loop() { 
 +  server.handleClient();  
 +
 +</file>
  
-        r = int(r, 16) +Переключаем WiFi в режим точки доступа: 
-        int(g, 16) +<code arduino[enable_line_numbers="2", start_line_numbers_at="53"]> 
-        b = int(b, 16) +  WiFi.mode(WIFI_AP);   
- +</code>
-        r = int(r * 1023 / 255) +
-        g = int(g * 1023 / 255) +
-        b = int(b * 1023 / 255) +
- +
-        LedR.duty(1023-r) +
-        LedG.duty(1023-g) +
-        LedB.duty(1023-b) +
-        +
-        +
-    html_file = open("color.html"+
-    html = html_file.read() +
-    html = html.replace('<=VALUE=>''#' + html_color) +
-    html_file.close() +
-    server.send(html, content_type="Content-Type: text/html") +
-   +
- +
-LedR.duty(0) +
-LedG.duty(0) +
-LedB.duty(0) +
- +
- +
-server = MicroPyServer() +
-server.add_route("/", index) +
-server.start() +
-</file>+
  
-Создаем объект интерфейса, но на этот раз настраиваем его как точку доступа +Настраиваем свойства точки доступа, а именно устанавливаем имя сети и пароль: 
-<code python[enable_line_numbers="2", start_line_numbers_at="16"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="54"]> 
-ap = network.WLAN(network.AP_IF)+  WiFi.softAP(AP_NAME, AP_PASSWORD);
 </code> </code>
  
-Настраиваем свойства точки доступа. А именно устанавливаем имя сети и пароль +Получаем IP адрес и печатаем его в последовательный порт: 
-<code python[enable_line_numbers="2", start_line_numbers_at="18"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="55"]> 
-ap.config(essid=ap_id, password=ap_pass)+  IPAddress IP = WiFi.softAPIP()
 +  Serial.print("AP set IP address: "); 
 +  Serial.println(IP);
 </code> </code>