# подключение к wifi сети
import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("Wokwi-GUEST", "")
while not wlan.isconnected():
pass
print("IP Address:", wlan.ifconfig()[0])
print("Subnet Mask:", wlan.ifconfig()[1])
print("Gateway:", wlan.ifconfig()[2])
print("DNS Server:", wlan.ifconfig()[3])
# установка и импорт необходимых библиотек
import machine
from utime import sleep
import upip
upip.install("micropython-urequests")
upip.install('micropython-ssd1306')
import urequests
import ssd1306
# диод
diode = machine.Pin(15, machine.Pin.OUT)
# функция отправки запроса, обработки ответа и управления диодом
def led_on_off_with_response():
response = urequests.get("https://yesno.wtf/api")
if response.status_code == 200:
data = response.json()
answer = data['answer']
print(answer)
if answer == 'no':
diode.off()
elif answer == 'yes':
diode.on()
response.close()
else:
print('ERROR: yesno.wtf')
# дисплей
i2c = machine.SoftI2C(scl=machine.Pin(22), sda=machine.Pin(21))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
# зуммер
buzzer = machine.Pin(18, machine.Pin.OUT)
def weather():
# логин и пароль от API погоды: cfa23974@nezid.com
response = urequests.get("http://api.weatherapi.com/v1/current.json?key=c34f7f5c7d4549e3a0092325232610&q=Tyumen&aqi=yes")
if response.status_code == 200:
data = response.json()
location = data['location']['name']
temp_c = data['current']['temp_c']
condition = data['current']['condition']['text']
wind_mph = data['current']['wind_mph']
humidity = data['current']['humidity']
cloud = data['current']['cloud']
co = data['current']['air_quality']['co']
so2 = data['current']['air_quality']['so2']
print("Current weather in {0}:\nTEMP={1}C, CONDITION={2}\nWIND={3}mph, HUMIDITY={4}%, CLOUD={5}%\nAIR QUALITY: CO={6}, SO2={7}".format(location, temp_c, condition, wind_mph, humidity, cloud, co, so2))
# вычисляем координату x, чтобы вывести локацию по центру
display_width = oled.width
text_width = len(location) * 8
x = (display_width - text_width) // 2
# очистить дисплей
oled.fill(0)
oled.show()
# печатаем информацию о погоде на дисплее
oled.text(location, x, 0)
oled.text("TEMP:{}C".format(temp_c), 0, 20)
oled.text("WIND:{}mph".format(wind_mph), 0, 30)
oled.text("HUMIDITY:{}%".format(humidity), 0, 40)
oled.text("CLOUD:{}%".format(cloud), 0, 50)
oled.show()
# работа зуммера исходя из данных so
so_buzzer(co)
def so_buzzer(co):
if co > 200 and co < 400:
buzzer.on()
sleep(1)
buzzer.off()
buzzer.on()
sleep(1)
buzzer.off()
buzzer.on()
sleep(1)
buzzer.off()
elif co > 400 and co < 600:
buzzer.on()
sleep(2)
buzzer.off()
buzzer.on()
sleep(2)
buzzer.off()
elif co > 600:
buzzer.on()
sleep(5)
buzzer.off()
while True:
oled.fill(0)
oled.show()
oled.text("UPDATING INFO...", 0, 30)
oled.show()
# Получить рандомный да/нет и вкл/выкл лампочку (задание 1)
led_on_off_with_response()
weather()
sleep(10)
esp:VIN
esp:GND.2
esp:D13
esp:D12
esp:D14
esp:D27
esp:D26
esp:D25
esp:D33
esp:D32
esp:D35
esp:D34
esp:VN
esp:VP
esp:EN
esp:3V3
esp:GND.1
esp:D15
esp:D2
esp:D4
esp:RX2
esp:TX2
esp:D5
esp:D18
esp:D19
esp:D21
esp:RX0
esp:TX0
esp:D22
esp:D23
led1:A
led1:C
r1:1
r1:2
oled1:GND
oled1:VCC
oled1:SCL
oled1:SDA
bz1:1
bz1:2
servo1:GND
servo1:V+
servo1:PWM