Благодаря платформе Toit разработчики могут обращаться с ESP32 как с обычным компьютером, устанавливая приложения так же просто, как на компьютер или телефон. Используя язык высокого уровня Toit, легко реализовать функции и приложения, при этом платформа Toit гарантирует, что устройство будет продолжать работать, несмотря ни на что. В этом проекте мы используем платформу Toit в рамках подключения датчика BME280 к ESP32 и считывания данных с этого датчика. Данные будут публиковаться в журнале консоли Toit.

Бесплатная учетная запись может быть создана на toit.io. Первые 100 МБ данных, которые поступают от ESP32 на платформу, предоставляются бесплатно (нажмите «Try for free» на веб-странице). Когда вы зарегистрируетесь, в консоли Toit создается организация, и вы получите электронное письмо для установки пароля. Затем вы можете войти в консоль и увидеть свои устройства после того, как вы зарегистрируете их.
После запроса устройства оно должно появиться в списке устройств в течение нескольких секунд. Нажмите на устройство, чтобы узнать о нем подробнее.

Далее приведена схема подключения датчика BME280 к ESP32. Поскольку мы используем I2C для этой настройки, мы подключаем провода следующим образом: SDA – GPIO21, SCL – GPIO22. Наконец, нам, конечно, нужно подключить 3,3 В и GND.


Чтобы развернуть приложение, нам понадобится как код Toit, так и файл расписания YAML. Код Toit относительно прост и не требует пояснений. Для начала нам понадобятся библиотеки для доступа к GPIO, I2C и сенсору. В основной функции мы устанавливаем шину I2C с адресом 0x77 и устанавливаем GPIO 21 и 22 как SDA и SCL соответственно. Мы также создаем объект датчика, который содержит методы для чтения данных с датчика. Команда print выводит данные в журнале в консоли Toit с форматированием.
// Filename: bme280.toit
import gpio
import serial.protocols.i2c as i2c
import drivers.bme280
main:
bus := i2c.Bus
--sda=gpio.Pin.out 21
--scl=gpio.Pin.out 22
device := bus.device 0x77
bme := drivers.Bme280 device
bme.on
print "Temperature: $(%.1f bme.read_temperature) C"
print "Humidity: $(%.1f bme.read_humidity) %"
print "Pressure: $(%.1f bme.read_pressure / 100) hPa"
bme.off
Также нам понадобится файл YAML. Файл YAML заботится о планировании кода Toit, то есть о том, когда код должен быть выполнен. Мы даем ему имя «Measure THP», указываем на файл Toit bme280.toit и, наконец, даем системе команду запускать код при установке приложения, а затем каждые пять секунд.
// Filename: bme280.yaml
name: "Measure THP"
entrypoint: bme280.toit
triggers:
on_install: true
on_interval: 5s
Код Toit для вывода отформатированной отметки времени в журнале выглядит следующим образом:
// Filename: time.toit
main:
time := Time.now.local
print "Current Time: $(%02d time.h):$(%02d time.m):$(%02d time.s) - $(%02d time.day)/$(%02d time.month)"
В файле YAML мы выбираем запускать этот код Toit после установки приложения, а затем каждые пять секунд.
// Filename: time.yaml
name: "Timestamp"
entrypoint: time.toit
triggers:
on_install: true
on_interval: 5s
Убедитесь, что вы вошли в свою организацию в консоли Toit, введя следующую команду:
$ toit auth loginВы сможете увидеть свое устройство, если введете следующую команду:
$ toit lsСохранив файлы Toit и YAML, указанные выше, мы можем развернуть эти приложения на ESP32 с помощью следующих команд, учитывая, что вы назвали ESP32 «Toit1» в консоли Toit, а имена файлов YAML - «bme280.yaml» и «time.yaml».
$ toit device -d Toit1 deploy bme280.yaml
successfully deployed the job Measure THP on Toit1
$ toit device -d Toit1 deploy time.yaml
successfully deployed the job Timestamp on Toit1
Перейдите в консоль Toit и выберите свое устройство. Два установленных приложения теперь должны быть перечислены на вкладке APPS. Обратите внимание на кнопки «Uninstall» справа. Их можно использовать для удаления соответствующего приложения.

Если мы переключимся на вкладку LOGS, мы должны увидеть данные о температуре, влажности и барометрическом давлении, которые публикуются в журнале.

Теперь вы можете попробовать изменить код и повторно развернуть приложение. Обратите внимание, что вам не нужно удалять приложение перед повторным развертыванием.
© digitrode.ru