Эксперимент 58. Управление светодиодом по WiFi

В прошлом эксперименте мы создали простейший веб- сервер. В нем была всего одна страница- главная. При обращении к ней мы видели в браузере приветствие. Можно расширять функционал сервера, добавив дополнительные страницы и другие функции. Но на микроконтроллере никогда не получится сделать полноценный веб- сервер, на котором можно было бы запустить какой-то сайт, ведь объем памяти и вычислительная мощность микроконтроллера очень ограничены.

На микроконтроллерах создают веб серверы для других целей. Их создают в качестве интерфейса для настройки или управления устройством. Например, твой Wi-Fi роутер имеет веб- интерфейс для настройки. А можно сделать электрический чайник с веб- интерфейсом. Представь, что ты заходишь на «сайт» своего чайника и смотришь какая температура воды в нем сейчас. Видишь, что вода холодная и нажимаешь прямо на этом сайте кнопку, которая включает чайник. Это и есть интернет вещей, когда вещи подключаются к сети. В скором будущем такие чайники, и другие самые разные усройства, будут иметь выход в сеть.

Сейчас мы сделаем веб- интерфейс для управления светодиодом. Мы доработаем веб- сервер из прошлого эксперимента. Добавим ему пару страниц. При заходе на старницу on светодиод будет включаться, а если зайти на страницу off — выключаться.

Схема эксперимента

Подключим светодиод к 13 пину Рисунок 1. Монтажная схема эксперимента

Программный код эксперимента

Exp58.py
  1. from micropyserver import MicroPyServer
  2. import time
  3. from machine import Pin
  4. import network
  5. import gc
  6. _init()
  7. gc.collect()
  8.  
  9. Led = Pin(13, Pin.OUT)
  10.  
  11. wlan_id = "Wi-Fi_Name"
  12. wlan_pass = "Wi-Fi_Password"
  13.  
  14. wlan = network.WLAN(network.STA_IF)
  15. wlan.active(True)
  16. wlan.connect(wlan_id, wlan_pass)
  17. time.sleep(1)
  18.  
  19. while wlan.isconnected() == False:
  20. pass
  21.  
  22. print('Device IP:', wlan.ifconfig()[0])
  23.  
  24.  
  25. def show_message(request, params):
  26. ''' request handler '''
  27. print(request)
  28. server.send("HELLO WORLD!")
  29.  
  30. def do_on(request, params):
  31. ''' on request handler '''
  32. Led.on()
  33. server.send("ON")
  34.  
  35. def do_off(request, params):
  36. ''' off request handler '''
  37. Led.off()
  38. server.send("OFF")
  39.  
  40.  
  41. server = MicroPyServer()
  42. ''' add request handler '''
  43. server.add_route("/", show_message)
  44. server.add_route("/on", do_on)
  45. server.add_route("/off", do_off)
  46. ''' start server '''
  47. server.start()

Первым делом в коде программы нужно заменить Wi-Fi_Name на имя нужной ести, а Wi-Fi_Password на пароль от нее.

По сравнению с кодом прошлого эксперимента мы добавили 2 страницы

  1. server.add_route("/on", do_on)
  2. server.add_route("/off", do_off)

При обращении клиента к странице on вызывается функция do_on

  1. def do_on(request, params):
  2. ''' on request handler '''
  3. Led.on()
  4. server.send("ON")

В этой функции включается светодиод и в браузер отправляется слово ON.

При обращении клиента к странице off вызывается функция do_off

  1. def do_off(request, params):
  2. ''' off request handler '''
  3. Led.off()
  4. server.send("OFF")

В этой функции светодиод выключается и в браузер отправляется слово OFF.