Для создания систем автоматизации необходим системы Василиса с расширенными возможностями. Как её установить смотрите в разделе “Расширенные возможности”.
Работа с микрокомпьютерами.
Микрокомпьютеры семейства Aрдуино (Arduino) весьма популярны среди школьников и любителей электроники и автоматизации. Эти микрокомпьютеры соединяют в себе свойства компьютеров и контроллеров т.е. устройств, способных управлять подключаемыми к ним датчиками и исполнительными устройствами. Таких датчиков и исполнительных устройств (доступных например на Aliexpress) имеются многие тысячи. Это делает микрокомпьютеры семейства Aрдуино чрезвычайно удобными для создания умных игрушек и гаджетов. Системам на их основе посвящено множество образовательных и любительских сайтов.
Приведём два представителя этого семейства:
Arduino Mega
NodeMcu v3
А вот типичныe датчики давления, температуры и влажности BME280 и DHT11 которыe могут подключаться к микрокомпьютерам.
Программы для управления микрокомпьютерами (которые называют скетчами) создают с помощью специальной среды разработки Arduino IDE, использующей язык программирования C (произносится “си”). Эта же среда разработки позволяет загружать скетчи в микрокомпьютер, после чего он может работать автономно.
Отдавая должное замечательному проекту Ардуино, нельзя не отметить его недостатки и ограничения, а именно:
- язык C достаточно сложен, особенно для школьников и специалистов, несвязанных непосредственно с программированием;
- возможности отладки программ (скетчей) весьма ограничены и трудоёмки, пошаговая отладка отсутствует;
- подключение экрана к микрокомпьютеру и отображение на нём получаемых данных достаточно сложно и весма ограничено в возможностях;
Это создаёт естественные ограничения сложности и разумности систем, создаваемых на основе Ардуиноподобных микрокомпьютеров.
Объединение микрокомпьютеров с настольным Windows компьютером в единую систему под управлением Василисы позволяет преодолеть перечисленные ограничения и обрести новые возможности:
- в микрокомпьютеры загружаются несложные стандартный скетчи, не требующие отладки;
- алгоритмы обработки и визуализации получаемых данных, а также алгоритмы принятия решений теперь находятся в среде разработки Василиса, имеющей прекрасные возможности редактирования и отладки скриптов в шаговом режиме;
- получаемые от микрокомпьютеров данные сразу автоматически отображаются в таблице переменных;
- доступна графическая визуализация с возможностями управения микрокомпьютерами через графический интерфейс Василисы;
- единый центр управления многими микрокомпьютерами.
Объединить микрокомпьютеры и настольный компьютер в единую систему можно по беспроводной технологии WiFi, используя роутер домашней сети или ч/з USB разъёмы (возможно с использованием USB концентратора), используя последовательный протокол (serial protocol).
Система, включающая 2 микрокомпьютера NodeMcu v3 и два подключённых к ним датчика bme280 и dht11, объединенённённая по технологии WiFi реализуется с помощью скетча Vasilisa\Sketch\Vasilisa_NodeMCU_bme280.ino и скрипта Vasilisa\Scripts\Arduino_udl_bme280_dht11.txt. Система производит опрос датчиков давления, влажности и температуры и отображает эти данные в настольном компьютере.
Пример системы, включающей микрокомпьютеры NodeMcu v3 и Arduimo MEGA (с датчиком bme280 ), которые подключаются к настольному компьютеру через USB разъёмы и USB хаб
Для запуска такой системы предназначен скетч Vasilisa\Sketch\Vasilisa_COM_port.ino и скрипт Vasilisa\Scripts\Arduino_com_port_bme280_dht11.txt.
Скрипт Graphics_Controllers.txt, реализует графический интерфейс “Умный дом”.
Обратите внимание: картинка интерактивная, т.е. состояним вентилей можно управлять с помощью мышки.
А вот так просто выглядит скрипт, управляющий светодиодным светофором:
array DP[0..8]float=(16,5,4,0,2,14,12,13,15) # номера цифровых пинов D0 - D8 микрокомпьютера NodeMCU
OK_port = ARD_UDP_Set_Port(10003) # активизация UDP сервера на компьютере
Devices = ARD_UDP_Broadcast_Command('get_device_name',1000) # запрос ко всем микрокомпьютерам отозваться и сообщить своё имя и IP
device2 = Array_Row_By_Name(Devices,'NodeMCU_02') # получить IP адрес микрокомпьютера с именем 'NodeMCU_02'
if device2[2] = ''
stop
repeat
ARD_UDP_Digital_Write(device2[2],DP[0],1)
ARD_UDP_Digital_Write(device2[2],DP[1],0)
ARD_UDP_Digital_Write(device2[2],DP[2],0)
Sleep(2)
ARD_UDP_Digital_Write(device2[2],DP[0],0)
ARD_UDP_Digital_Write(device2[2],DP[1],1)
ARD_UDP_Digital_Write(device2[2],DP[2],0)
Sleep(2)
ARD_UDP_Digital_Write(device2[2],DP[0],0)
ARD_UDP_Digital_Write(device2[2],DP[1],0)
ARD_UDP_Digital_Write(device2[2],DP[2],1)
Sleep(2)
stop
Как нетрудно догадаться, функция ARD_UDP_Digital_Write посылает на указанные пины микрокомпьютера (D0, D1 или D2) команду установить напряжение 0 или стандартное напряжение (3В). Контакты светодиодов (R,Y,G) соединяются с помощью макетной платы с пинами микрокомпьютера, маркированными “D0”, “D1” и “D2”. Земля светофора (GND) проводком соединяется с землёй микрокомпьютера.
Пример, который превращает микрокомпьютер NodeMCU ESP8266 (стоимостью $3 на Алиэкспресс) в осциллограф. На аналоговый вход микрокомпьютера A0 подаётся напряжение от 9-вольтного блока питания переменного тока, ослабленное примерно до 2 вольт с помощью потенциометра 10ком. Загружаем в микрокомпьютер скетч Vasilisa_NodeMCU_bme280.ino. Запускаем программу Василиса, загружаем скрипт Arduino_Осциллогаф.txt. Наблюдаем в графической области Василисы верхнюю половину синусоиды, что-то вроде этого:
Несколько замечаний.
Если у вас нет опыта работы с Ардуино, приобретите комплект, например такой: Starter Kit на базе Arduino UNO и микрокомпьютер nodemcu v3, поскольку Arduino UNO не имеет встроенного WiFi. Не пожалейте потратить несколько дней на уроки для начинающих, которых вы найдёте в интернете великое множество. Для начала запустите скетч, который заставит мигать светодиоды.
При реализации примеров с подключением микрокомпьютеров к локальной сети не забудьте в загружаемых в микрокомпьютер скетчах вносить исправления в строках
const char* deviceName = "NodeMCU_XX";
const char* ssid = "atlant-321"; // your network SSID (name)
const char* pass = "12345678"; // your network password
а именно: вписать уникальное имя микрокомпьютера (придуменное вами) и параметры подключения по Wi-Fi к роутеру вашей домашней сети.
Для работы с микрокомпьютером NodeMCU в системе Windows нужно установить соответствующий драйвер. В интернете есть много советов, как это сделать. После установки драйвера программу Arduino IDE нужно настроить на работу с микрокомпьютером NodeMCU (меню Tools –> Board –> NodeMCU 1.0) и установить последовательный порт, который вы можете увидеть в свойствах соответствующего устройства в панели управления в разделе диспетчер устройств (обычно COM3 или COM4).
При использовании других микрокомпьютеров вместо NodeMCU или иных датчиков скетчи нужно модифицировать, а именно, подключать библиотеки, соответствующие датчикам (скачивать из интернета) и вставлять команды, аналогичные командам работы с датчиками BME280 и DHT11.
Изучите в меню Василисы раздел Справка/Функции работы с Arduino.