Умный вентилятор с помощью micro:bit.

Умный вентилятор с помощью micro:bit.

игорь


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

Компоненты, используемые при работе:

  1. Стартовый набор Бозон.
  2. Образовательный микрокомпьютер микробит.

Введение.

Микробит — маленький микрокомпьютер британского производства, информацию о котором можно посмотреть на официальном сайте, там полно готовых проектов, которые могут заинтересовать начинающих.

В этом проекте мы используем стартовый набор Boson (Бозон) с нашим микробит для создания системы. Boson для микробит произведен компанией DFRobot. В этом наборе существует множество компонентов, которые выглядят как lego. Несмотря на сходство с lego, автор также может использовать в проекте и металлические части, которые можно будет использовать совместно с lego. Магнитая база Boson позволяет автору с легкостью производить сборку и разборку. Благодаря специальному дизайну схемы дети без шаблона схемы могут собирать ее. Для получения большей информации о наборе Boson'а для micro:bit перейдите по ссылке.

Сборка платы Boson.

Соедините Микробит с платой Boson, следуя инструкциям на изображениях. Помните, что лого должно оставаться внизу. И микробит даст сообщение об ошибке цветовым индикатором в случае ошибки зазгрузки программы.

Сборка вентилятора.

Основная база в этой статье состоит из кубиков lego, пожалуйста, следуйте инструкциям на изображениях. Вы можете спроектировать свой вентилятор, но убедитесь, что пространства достаточно для размещения компонентов Boson, которые включают в себя сенсоры и моторы.

Установка программного обеспечения.

Micro:bit официально рекомендует две среды: графический JavaScript blocks editor и MicroPython, который и будет использован в этом проекте.

MicroPython основан на Python, легком для освоения языке, и может быть использован в таких микропроцессорах, как micro:bit. Следующая ссылка является подробной документацией по MicroPython для micro:bit по функциям и APIs. Несмотря на некоторую сложность в обучении, MicroPython более мощная среда, чем графический block editor JavaScript.

В дополнение к показанной версии на сайте micro:bit, мы также можем скачать Mu Editor, который рекомендован к использованию MicroPython’ом. Этот редактор прост и создан для начинающих.

Python является кроссплатформенным языком. Он может работать под Windows, Mac OS X, Linux. Пожалуйста, установите Python соответственно вашему компьютеру.

После установки вы можете открыть Mu Editor, как показано на изображении. Кликните по flash-кнопке для загрузки программы в Микробит через USB кабель.

Сборка.

Часть 1: Контроль мотора.

Сперва добавьте мотор из пакета Boson на середину базы, которую вы вольны собрать на свой вкус и не следовать показанной на изображениях.

Подсоедините мотор Boson'а к micro:bit дополнению в виде панели P8 port с помощью кабеля Boson.

Код Части 1:

from microbit import *
mode = [700, 900, 1023]
while True:
   for speed in mode:
      print(speed)
      pin8.write_analog(speed)
      sleep(1000) 

Объяснение кода для Части 1.

Первым делом мы импортируем все функции из библиотеки MicroPython. Для представления трехмощностного режима вентилятора мы объявим переменную mode, которая является списком трех номеров. Эти номера закреплены за мощностями мотора, высокое значение цифры говорит о высокой скорости. Отметим, что максимальное значение мощности – 1023 и мощность ниже 700 может быть недостаточной для запуска вентилятора.

Программа будет повторять выполнение до достижения определенного значения. Например, while True всегда повторяется. И для speed в mode значение будет меняться каждую секунду. Это время контролируется sleep(1000), вы можете изменять его сами.

Использование функции write_analog в коде меняет мощность, если мы используем write_digital, мы можем контролировать вентилятор.

Часть 2: Включение и выключение вентилятора нажатием на кнопку.

Мы научились программировать вращение мотора с определенной силой. Но для создания более дружественного вентилятора, который будет походить на настоящий, мы можем добавить кнопку включения, поэтому следуйте инструкции на изображениях и соедините кнопку Boson с P12 на панели.

Код Части 2:

from microbit import *
fan_switch = False
while True:
   if pin12.read_digital():
      fan_switch = not fan_switch
      print('ON' if fan_switch else 'OFF')
      pin8.write_digital(int(fan_switch))
      while pin12.read_digital():
         sleep(100)  

Объяснение кода для Части 2.

В этом примере мы сосредоточимся на переключателе. Сейчас мы будем использовать функцию write_digital вместо analog_write, используемую в предыдущем примере.

Объявляем переменную fan_switch для хранения статуса вентилятора (присоединен к Р12). Каждый раз, когда пользователь будет нажимать кнопку, вентилятор будет включаться и наоборот. Подтверждая статус вентилятора на моторе, мы добьемся работы функции включения вентилятора.

Часть 3: Регулирование мощности мотора.

Сейчас мы совместим два примера и добавим регулятор мощности.

Пожалуйста, следуйте изображению ниже и добавьте регулятор Boson’а к базе. Соедините его с панелью P0 помощью сигнального провода.

Код Части 3:

from microbit import *
fan_switch = False
fan_mode = ["slow", "medium","fast"]
fan_power = [700, 900, 1023]
def fan_mode_switch(value):
   interval = int(1023/3)
   for i in range(3):
      if value >= i * interval and value < (i+1)*interval:
         break
   return fan_mode[i], fan_power[i]

previous_mode, power = fan_mode_switch(pin0.read_analog())

while True:
   if pin12.read_digital():
      fan_switch = not fan_switch
      print('Fan status: ' + ('ON' if fan_switch else 'OFF'))
      while pin12.read_digital():
         sleep(100)
   if fan_switch:
       mode, power = fan_mode_switch(pin0.read_analog())
       if mode is not previous_mode:
          previous_mode = mode
          print("Fan mode: ", mode)
          pin8.write_analog(power)
       else:
          previous_mode = 'OFF'
          pin8.write_analog(0)
       sleep(300) 

Объяснение кода для Части 3.

Эта программа может показаться более сложной, чем предыдущие. Давайте в ней разберемся.

Первое, определяем две переменные fan_power и fan_mode более точно, чем в предыдущем коде, и также определяем функцию с именем fan_mode_switch для обращения к настройкам вентилятора и его мощности соответственно введенному значению.

Для определения настроек вентилятора мы определяем интервал вводимых значений. Мы поделили его (0 – 1023) на три интервала.

В итоге стоит отметить (для начинающих), что мы меняем настройки вентилятора только когда текущие настройки отличаются от предыдущих. Поэтому мы объявляем дополнительную переменную previous_mode для хранения последних настроек вентилятора.

Часть 4: Умный вентилятор.

Для улучшения вентилятора и более понятного использования мы добавим некоторые функции. Сейчас добавим сенсор движения для micro:bit. Пожалуйста, соедините его с панелью Р1, как показано на изображении.

Что представляет собой сенсор движения? Официальное название сенсора – PIR. Пассивный инфракрасный сенсор. Мы используем его для определения кого-либо, кто находится рядом. Наша цель состоит в автоматическом включении вентилятора при присутствии у вентилятора людей.

Примечание: PIR – цифровой сенсор. Если вам нужно определить есть ли кто-нибудь в пределах рабочей дистанции сенсора, то используйте лазер для определения дистанции или ультразвуковой сенсор.

Теперь мы надеемся, что наш умный вентилятор будет включаться самостоятельно при появлении человека.

Код Части 4:

from microbit import *
fan_switch = False
fan_mode = ["slow", "medium","fast"]
fan_power = [700, 900, 1023]
def fan_mode_switch(value):
   interval = int(1023/3)
   for i in range(3):
      if value >= i * interval and value < (i+1)*interval:
         break
   return fan_mode[i], fan_power[i]

previous_mode, power = fan_mode_switch(pin0.read_analog())

while True:
   if pin12.read_digital():
      fan_switch = not fan_switch
      print('Fan status: ' + ('ON' if fan_switch else 'OFF'))
      while pin12.read_digital():
         sleep(100)
   if fan_switch:
      mode, power = fan_mode_switch(pin0.read_analog())
      if mode is not previous_mode:
         previous_mode = mode
         print("Fan mode: ", mode)
         pin8.write_analog(power)
   elif pin1.read_digital():
      fan_switch = True
      print('Fan status: ' + 'ON')
   else:
      previous_mode = 'OFF'
      pin8.write_analog(0)
   sleep(300) 

Объяснение кода для Части 4.

Сравнивая код с кодом из третьей части, мы добавим конструкции elif в if ... else ... в While для чтения статуса сенсора движения (pin1.read_digital).

Заметим, что сенсор движения может только фиксировать близость, поэтому это цифровой сигнал, который не сможет определить дистанцию до объекта. Вы можете использовать ультразвуковой сенсор для определения.

И сенсор движение не сможет определить, находится ли человек до сих пор здесь. Следующее видео демонстрирует конечную функцию собранного нами вентилятора. Мы можем использовать кнопку включения, регулировать мощность. Также он может автоматически включаться при входе в помещение.

Упражнение.

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

Пробуйте и радуйтесь свершениям!


Report Page