Интернет вещей с RemoteXY




LCD осциллограф на Arduino

Несколько лет назад я опубликовал код и схемное решение осциллографа на базе PIC18F2550 KS0108. Однако в настоящее время я решил воссоздать данный проект, используя плату Arduino Fio.

Я использовал плату Arduino Fio, которую можно приобрести от SparkFun (доступно на Amazon.com) и небольшой SPI графический LCD-дисплей, который я приобрел за несколько долларов на сайте dx.com (код товара SKU 153821). Поскольку у меня нет паяльника, я импровизировал с кабелями типа “мама-мама”, которые также можно приобрести на сайте dx.com (код товара SKU 151650).

На сайте Dx.com данный LCD-дисплей является 5 В модулем, но на сайте производителя утверждается обратное (mini12864) (перевод с китайского с помощью Google Translate):

Размеры (Д × Ш × В): 47мм × 38мм × 6мм (без учета выводов)
Видимая часть LCD-дисплея (Д × Ш): 33.7мм × 33.5мм
Активная зона отображения LCD-дисплея (Д × Ш): 30.7мм × 23мм
Подсветка: Белая
Рабочее напряжение: 3.3В ~ 5.5В (встроенная схема усиления, без нагрузки)
ИС управления: UC1701
Формат дисплея: 128 × 64 ряда
Дисплей: Синий на белом фоне

(mini12864 даташит)

Таким образом, я заказал один графический дисплей, подождал несколько недель, пока его доставят (поскольку с сайта dx.com пересылка товара идет очень долго), получил его, установил в схему и создал простой скрипт “Hello World” для подтверждения, что дисплей и плата правильно функционируют вместе. Код программы находится в файле hello_word.ino

И схема действительно работает!

Благодаря тому, что мой предыдущий проект был написан на C, переход на Arduino занял несколько минут. Я использовал преимущества открытого кода библиотеки графического дисплея (u8glib) для управления основной работой и добавил меню последовательного порта для манипулирования различными параметрами дисплея. Главное отличие между проектом на PIC и данным проектом заключается в следующем: поскольку плата Arduino Fio - это 3.3 В устройство, оно может управлять входами в диапазоне напряжения 0-3.3 В, ограничивая область использования в качестве “осциллографа” без соответствующей защиты входов/ изменения величины напряжения. Код является полностью портативным. Это означает, что вы можете запрограммировать любой другой Arduino и очень быстро запустить устройство.

 

 

Интернет вещей с RemoteXY

Интернет вещей с каждым годом становится всё более распространен, тем не менее промышленные устройства не всегда удовлетворяют потребностям пользователей. И естественно радиолюбители создают устройства IoT исходя из своих потребностей. Управление устройствами IoT возможно либо через сервер, либо напрямую посредством беспроводного или интернет соединения. Сервисов и программ, предназначенных для создания и управления

устройствами IoT, предостаточно, есть из чего выбрать. В этой статье я расскажу о сервисе RemoteXY, предназначенном для удаленного управления устройствами ардуино и ESP8266.

Сервис RemoteXY состоит из онлайн редактора интерфейса (который генерирует "скелет" программы), программы для мобильных устройств (как для андройд, так и для айОс) и библиотеки для ArduinoIDE. Программа для мобильных устройств может управлять всеми устройствами, созданными с применением сервиса RemoteXY, и так как внешний вид интерфейса хранится в микроконтроллере, это упрощает настройку приложения для работы с устройством. Программа для андройд устройств условно-бесплатная, вы можете использовать free версию программы без ограничений в том случае, когда в интерфейсе устройства используется до 5 элементов. Если элементов более 5, то время подключения ограничено 30 секундами (за это время можно успеть произвести настройку устройства и просто оценить и протестировать созданное устройство). Полная версия программы никаких ограничений не имеет.;

Мобильное устройство (смартфон или планшет) может связываться с ардуино (так же поддерживаются платы WeMos, NodeMCU, The AirBoard и ChipKIT, но упоминать я буду всё время ардуино) посредством блютуз (через модули HC-05, -06, -10), вай-фай (через модуль esp-01) или проводного интернета (через ethernet shield или через вай-фай модем). Если ардуино подключено к модему (через вай-фай или эзернет), то оно может быть доступно как в локальной сети, так и через сеть интернет (для этого потребуется настройка модема).

Рассмотрим "blink" для сервиса RemoteXY - поморгаем светодиодом. Для этого необходимо подключить модуль связи к ардуино (в этом примере я буду использовать ардуино мега2560 и блютус модуль HC-05, соединение через Serial1). Далее переходим в он-лайн редактор интерфейса, расположенный по адресу https://remotexy.com/ru/editor/, внешний вид редактора представлен на скриншоте.

Редактор интерфейса состоит из 3 частей: панели элементов интерфейса слева, рабочего поля в центре и панели конфигурации и свойств элементов справа.

Далее необходимо настроить конфигурацию подключения, для этого необходимо в панели конфигурации щелкнуть мышью на любой пункт меню конфигурации, откроется всплывающее окно в котором необходимо выбрать: тип соединения, используемый контроллер, используемый модуль и среду программирования, а затем нажать "применить". Окно закроется и выбранные настройки отобразятся в меню конфигурации.

Далее необходимо настроить подключения модуля, в случае для блютуз модуля необходимо выбрать интерфейс (Hardware или Software Serial), порт или пины (для Software Serial) и скорость обмена. Так же можно настроить ориентацию и цвет фона экрана. Примененные мной свойства отображены на скриншоте.

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

Набор свойств индивидуален для каждого типа элементов. Для любого элемента можно задать его цвет и привязку к странице (в этом проекте страницы не рассматриваются), для всех элементов управления и индикации можно задать имя переменной. Для элементов "кнопка" и "выключатель" можно сделать привязку в выводам, в этом случае редактор интерфейса сам сгенерирует дополнительный код для управления выводами с кнопки или выключателя. Первая добавленная кнопка (или выключатель) привязывается к выводу 13 автоматически, остальные добавляемые кнопки и выключатели автоматически не привязываются. Жмем на "Получить исходный код", открывается страница с автоматически сгенерированным кодом. Копируем код в ArduinoIDE. Внимание: для дальнейшей работы необходимо установить библиотеку RemoteXY, которая расположена по адресу https://remotexy.com/download/RemoteXY.zip

Рассмотрим сгенерированный код, все пояснения в комментариях

?

  /* -- New project --   This source code of graphical user interface has been generated automatically by RemoteXY editor. To compile this code using RemoteXY library 2.2.5 or later version download by link https://remotexy.com/en/library/ To connect using RemoteXY mobile app by link https://remotexy.com/en/download/ - for ANDROID 3.7.1 or later version; - for iOS 1.0.7 or later version;   This source code is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. */   ////////////////////////////////////////////// // RemoteXY include library // //////////////////////////////////////////////   // определение режима соединения и подключение библиотеки RemoteXY. В данном случае используется Hardware Serial #define REMOTEXY_MODE__HARDSERIAL   #include <RemoteXY.h> //подключаем библиотеку сервиса RemoteXY   // настройки соединения, порт и скорость соединения. Я использую порт Serial1, что бы исключить проблемы при загрузке программы в ардуино и не отключать блютуз модуль каждый раз при загрузке. #define REMOTEXY_SERIAL Serial1 #define REMOTEXY_SERIAL_SPEED 9600     // конфигурация интерфейса. Начиная с этой строки ничего не менять. #pragma pack(push, 1) uint8_t RemoteXY_CONF[] = //в этом массиве хранятся все настройки интерфейса, положение, размер, цвет и названия переменных всех элементов. { 1,0,12,0,6,5,0,1,0,79 ,8,12,12,2,88,0 };   // структура определяет все переменные вашего интерфейса управления struct {   // input variable uint8_t button_1; // =1 если кнопка нажата, иначе =0. Это та самая кнопка которую мы добавили на рабочее поле.   // other variable uint8_t connect_flag; // =1 if wire connected, else =0. Этот "флаг" очень полезная переменная, её тоже можно использовать.   } RemoteXY; #pragma pack(pop) //эта строка завершает настройку интерфейса. Еще раз напомню, между #pragma pack(push, 1) и #pragma pack(pop) ничего не менять.   ///////////////////////////////////////////// // END RemoteXY include // /////////////////////////////////////////////   #define PIN_BUTTON_1 13 //поскольку мы привязали кнопку к выводу 13, то он-лайн редактор сам добавляет константу PIN_BUTTON_1 и в функции setup() настраивает её как выход.     void setup() { RemoteXY_Init (); //запускаем обмен данными между смартфоном и ардуино. pinMode (PIN_BUTTON_1, OUTPUT); // TODO you setup code }   void loop() { RemoteXY_Handler (); //этот обработчик запускает обмен данными между ардуино и смартфоном в каждом цикле loop(), именно после его вызова данные от элементов управления передаются в ардуино, а данные элементов индикации - в смартфон.   digitalWrite(PIN_BUTTON_1, (RemoteXY.button_1==0)?LOW:HIGH); //этот код так же сгенерирован потому, что стоит привязка к 13 выводу. Светодиод на плате загорится когда будет нажата кнопка.   // ну а дальше размещаем остальной код программы, по необходимости. // используйте структуру RemoteXY для передачи данных }

Теперь можно загрузить этот код в ардуино и перейти к программе RemoteXY на смартфоне.

Поскольку в данном проекте используется блютуз, то сперва надо провести сопряжение блютуз модуля со смартфоном. Пояснять этот пункт я не буду. Далее переходим в программу RemoteXY и нажимаем на "+" в правом верхнем углу,

далее выбираем Bluetooth для модулей HC-05, -06 и Bluetooth BLE для модуля HC-10,

выбираем необходимый модуль из списка.

При удачном соединении в программе сразу же открывается интерфейс устройства. Теперь можно потыкать на кнопку и понаблюдать как загорается светодиод на 13 выводе.

Подведем итоги

Данная статья ни в коем случае не претендует на исчерпывающее руководство по сервису RemoteXY и не несет рекламный характер (я обычный пользователь и никакого профита с этого не имею). Цель статьи - познакомить любителей ардуино с этим сервисом, и на простом примере показать как это работает.

Конечно для полного счастья необходимо рассмотреть преимущества и (что главнее) недостатки представленного сервиса.

Преимущества:

  • Самый главный плюс - реализация удаленного доступа к ардуино
  • Используется одна программа для всех управляемых устройств, что экономит память мобильного устройства
  • Настройки интерфейса хранятся непосредственно в контроллере, поэтому нет необходимости в настройке каждого мобильного устройства под конкретный контроллер
  • Позволяет, как продублировать элементы управления и индикации, так и перенести их частично или полностью на мобильное устройство
  • При переносе элементов управления и индикации на мобильное устройство освобождаются выводы контроллера
  • Позволяет строить довольно сложные интерфейсы управления, обладает широким набором элементов управления, индикации и оформления
  • Является условно-бесплатной системой, даже при построении сложных интерфейсов

Основной недостаток - бесплатная условность программы. Как я уже писал, в бесплатной версии программы можно использовать до 5 элементов интерфейса. Полная версия программы не имеет никаких ограничений, стоит 379 рублей для ОС Android и 7.99$ для iOS. Второй недостаток - при построении интерфейса необходимо подключение к интернету.

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-05-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: