Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Построение IoT-термометра на Python: Полное руководство с Zerynth

Компоненты и материалы

MikroE Flip & Click×1
Arduino Due×1
Particle Photon×1
NodeMCU ESP8266 Breakout Board×1
SparkFun Photon RedBoard×1
MikroE Temp&Hum Click (HTS221)×1
MikroE WiFi Plus Click (MRF24WB0MA)×1
Espressif Wemos D1 Mini×1
Arduino Zero×1

Приложения и сервисы

Zerynth Studio — мощная IDE для встроенного программирования на Python с поддержкой IoT

О проекте

Построение IoT-термометра на Python: Полное руководство с Zerynth

Приложение Zerynth App

Zerynth App — мобильное приложение для Android и iOS, позволяющее быстро прототипировать графические интерфейсы для IoT-проектов.

С Zerynth App любой смартфон становится пультом управления и дисплеем для умных объектов и IoT-систем! Вы можете управлять подключенными устройствами, запрограммированными на Zerynth, обеспечивая двустороннюю связь между ними и мобильным устройством.

В этом руководстве мы разработаем простой, но мощный IoT-термометр, используя микроконтроллер на базе Zerynth и Zerynth App как удаленный дисплей.

Необходимые материалы

Сначала нужна плата. Можно выбрать любую 32-битную плату, поддерживаемую Zerynth. Мы выбрали Flip&Click от Mikroelektronika — он имеет много общего с Arduino, включая 32-битный AT91SAM3X8E от Microchip, ядро Arduino Due.

Для измерения температуры — Temp&Hum Click с датчиком HTS221 (температура и относительная влажность).

Для интернета — WiFi PLUS Click с модулем MRF24WB0MA (2.4 GHz, IEEE 802.11) от Microchip и контроллером MCW1001 со стеком TCP/IP.

Также понадобятся:

Сборка IoT-термометра

Flip&Click — «двусторонний кузен» Arduino. С одной стороны — Arduino, с другой — четыре разъема mikroBUS для «click boards» (миниатюрных шилдов). Просто вставьте Temp&Hum и WiFi Plus в слоты A и B соответственно.

Программирование на Python

Клонирование примера

После установки Zerynth Studio и создания аккаунта клонируйте пример «Zerynth App Oscilloscope». Посмотрите, как клонировать пример.

Построение IoT-термометра на Python: Полное руководство с Zerynth

Исходный код в main.py — здесь разрабатывается логика Python-скрипта. Начнем с оригинала и адаптируем под наш проект.

################################################################################
# IoT Thermometer
################################################################################
from wireless import wifi
# пример основан на Particle Photon
# измените следующую строку для другого WiFi-драйвера
from broadcom.bcm43362 import bcm43362 as wifi_driver
import streams
import adc

# Import the Zerynth APP library
from zerynthapp import zerynthapp

streams.serial()
sleep(1000)
print("STARTING...")

try:
    # Device UID и TOKEN создаются в панели ADM
    zapp = zerynthapp.ZerynthApp("DEVICE UID", "DEVICE TOKEN", log=True)
    
    # Подключение к WiFi (задайте свой SSID и пароль)
    wifi_driver.auto_init()
    for i in range(0,5):
        try:
            wifi.link("SSID", wifi.WIFI_WPA2, "PASSWORD")
            break
        except Exception as e:
            print("Can't link", e)
    else:
        print("Impossible to link!")
        while True: sleep(1000)
    
    # Запуск экземпляра Zerynth App
    # Создайте шаблон с файлами из папки "template", загрузите в ADM и свяжите с устройством
    zapp.run()
    
    # Чтение ADC и отправка значений в ADM
    while True:
        sleep(1000)
        x = (adc.read(A4)*100)//4096
        zapp.event({"data": x})
        if x > 95:
            # мобильное уведомление (лимит: 1 в минуту на устройство в ADM sandbox)
            zapp.notify("ALARM!", "The value is greater than 95!")
except Exception as e:
    print(e)

В этом примере графический осциллограф визуализируется в Zerynth App с данными от аналогового датчика на пине A4.

Импорт правильного WiFi-драйвера и библиотек датчиков

Пример основан на Particle Photon. Для WiFi Plus Click меняем:

from broadcom.bcm43362 import bcm43362 as wifi_driver

на

from microchip.mcw1001a import mcw1001a as wifi_driver

и

wifi_driver.auto_init()

на

wifi_driver.init(SERIAL2, D24)  # слот B

Для датчика температуры Temp&Hum Click добавляем:

# Import the HTS221 library
from stm.hts221 import hts221
temp_hum = hts221.HTS221(I2C0, D21)  # слот A

Чтение датчика:

tmp, hum = temp_hum.get_temp_humidity()  # Read tmp and hum

Настройка SSID и пароля

Отредактируйте строку под свою сеть:

wifi.link("SSID", wifi.WIFI_WPA2, "PASSWORD")

Создание и настройка подключенного устройства

Теперь создадим «connected device» и свяжем экземпляр «zerynthapp» с ним. Ниже скриншоты с шагами. Подробнее в документации.

Построение IoT-термометра на Python: Полное руководство с Zerynth

Учетные данные устройства (UID и TOKEN) можно скопировать из Zerynth Studio (панель ADM). «IP» — адрес Zerynth ADM, используется, когда сетевой драйвер не поддерживает разрешение имен.

Построение IoT-термометра на Python: Полное руководство с Zerynth

Создание, загрузка и установка шаблона

Через Zerynth App можно запускать красивые адаптивные GUI на HTML, CSS и JavaScript. Никакого Android/iOS кода!

Графический интерфейс каждого устройства хостится в Zerynth ADM sandbox и состоит из HTML5, JS, CSS и изображений. Добавление ADM JS Library позволяет приложению взаимодействовать с устройством (прием и отправка сообщений).

Шаблоны добавляются через иконку «плюс».

Построение IoT-термометра на Python: Полное руководство с Zerynth

Загрузите шаблон из соответствующей папки. Файл шаблона называется index.html — можно редактировать. В данном случае оставьте как есть.

Построение IoT-термометра на Python: Полное руководство с Zerynth

Загрузка скрипта в устройство

После правок код должен выглядеть так:

################################################################################
# IoT Thermometer
################################################################################
from wireless import wifi
from microchip.mcw1001a import mcw1001a as wifi_driver
import streams
import adc
streams.serial()

# Import the Zerynth APP library
from zerynthapp import zerynthapp

# Import the HTS221 library
from stm.hts221 import hts221
temp_hum = hts221.HTS221(I2C0, D21)  # slot A

sleep(1000)
print("STARTING...")

try:
    # Device UID и TOKEN из панели ADM
    zapp = zerynthapp.ZerynthApp("DEVICE UID", "DEVICE TOKEN", ip="178.22.65.123", log=True)
    
    # Подключение к WiFi
    wifi_driver.init(SERIAL2, D24)  # slot B
    for i in range(0,5):
        try:
            wifi.link("SSID", wifi.WIFI_WPA2, "PASSWORD")
            break
        except Exception as e:
            print("Can't link", e)
    else:
        print("Impossible to link!")
        while True: sleep(1000)
    
    # Запуск Zerynth App
    zapp.run()
    
    # Чтение датчика и отправка в ADM
    while True:
        sleep(1000)
        tmp, hum = temp_hum.get_temp_humidity()
        print("Temp is:", tmp, "Humidity is:", hum)
        try:
            zapp.event({"data": tmp})
        except Exception as e:
            print(e)
        if tmp > 30:
            # Push-уведомление (лимит: 1 в минуту на устройство в ADM sandbox)
            try:
                zapp.notify("ALARM!", "High Temperature!")
            except Exception as e:
                print(e)
except Exception as e:
    print(e)

Важно: «DEVICE UID», «DEVICE TOKEN», «SSID» и «PASSWORD» замените на свои.

Теперь можно загрузить скрипт в устройство (Uplink).

Просмотр дашборда в Zerynth App

Откройте Zerynth App, войдите, выберите устройство — увидите дашборд IoT-термометра. Приложение также получает push-уведомления от устройств. В данном случае — при превышении температуры порога!

Построение IoT-термометра на Python: Полное руководство с Zerynth

Вопросы? Обсудите на форуме Zerynth.

Приятного творчества!

Код

IoT Thermometer (Python)
################################################################################
# Zerynth App Oscilloscope
################################################################################
from wireless import wifi
from microchip.mcw1001a import mcw1001a as wifi_driver
import streams
import adc
streams.serial()

# Import the Zerynth APP library
from zerynthapp import zerynthapp

# Import the HTS221 library
from stm.hts221 import hts221
temp_hum = hts221.HTS221(I2C0, D21)  # slot A

sleep(1000)
print("STARTING...")

try:
    # Device UID и TOKEN из панели ADM
    zapp = zerynthapp.ZerynthApp("DEVICE UID", "DEVICE TOKEN", ip="178.22.65.123", log=True)
    
    # Подключение к WiFi
    wifi_driver.init(SERIAL2, D24)  # slot B
    for i in range(0,5):
        try:
            wifi.link("SSID", wifi.WIFI_WPA2, "PASSWORD")
            break
        except Exception as e:
            print("Can't link", e)
    else:
        print("Impossible to link!")
        while True: sleep(1000)
    
    # Запуск Zerynth App
    zapp.run()
    
    # Чтение датчика и отправка в ADM
    while True:
        sleep(1000)
        tmp, hum = temp_hum.get_temp_humidity()
        print("Temp is:", tmp, "Humidity is:", hum)
        try:
            zapp.event({"data": tmp})
        except Exception as e:
            print(e)
        if tmp > 30:
            # Push-уведомление
            try:
                zapp.notify("ALARM!", "High Temperature!")
            except Exception as e:
                print(e)
except Exception as e:
    print(e)

Схемы

Построение IoT-термометра на Python: Полное руководство с Zerynth

Производственный процесс

  1. Термометр: от термоскопа Галилея к современным цифровым датчикам
  2. ИК-датчик температуры TMP006 с Raspberry Pi: библиотека Python и руководство по настройке
  3. Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
  4. Освоение PSoC 6 Pioneer Board с IoT Add-On Shield: руководство разработчика
  5. Как IoT революционизирует повседневную жизнь
  6. Установка Python и PyCharm на Windows: пошаговое руководство
  7. Переименование файлов и директорий в Python с os.rename() — пошаговое руководство
  8. Автоматизация входа в Facebook с Python и Selenium: пошаговое руководство
  9. Вычисление среднего значения в Python: практическое руководство
  10. Отправка email в Python через SMTP: простое и быстрое руководство