Передаем данные с Arduino на компьютер и строим график по полученным данным
Управление реле с компьютера делал на Processing. Но, к сожалению, когда реши сделать боле сложные проекты, Processing мне не подошел. Решил я прейти на Visual Studio C#. И реализовал небольшой проект по получению температуры и построению графика по полученным данным.
Интерфейс приложения Windows Forms.
Возможности приложения:
• Автоматический вывод Com-портов при запуске программы.
• Закрытие используемого Com-порта при закрытии программы.
• Обновление списка портов.
• Вывод текущей температуры.
• Вывод графика изменения температуры.
• Имение диапазона времени выводимой информации на графике.
Это мое первое приложение C# Windows Forms, прошу строго не судить.
Исходные материалы можно скачать тут.
Надеюсь моя информация будет полезной.
Спасибо! Всем добра!
А можно ли так?
А возможно ли использовать данные с датчика тока, для управления электромотором до 24в? Допустим датчик показывает малое значение, мотор работает на малых оборотах, при увеличении значения мотор увеличивает обороты итд
Upd
По сути хочу использовать измерения тока, вместо потенциометра для регулировки скорости.
Активная система охлаждения своими руками Ford Focus 3
В жаркую погоду, Форды с PowerShift-ом плохо себя чувствуют в пробках, перегреваются и начинают пропускать четные скорости (2, 4, 6) и реверс, еще перестает работать Sport режим (ручное управление передачей). Своя штатная система охлаждения не справляется. Чистка радиатора и системы охлаждения не решила проблему.
Штатная система охлаждения без включения кондиционера срабатывает при температуре 100 градусов. Для оптимальной работы АКПП температура необходима не более 90 градусов. По этой причине установил терморегулятор из магазина электроники. Реле на плате слишком слабое для вентилятора, поэтому на цепь вентилятора поставил реле на 80 ампер. Все отлично работает, в пробках коробка не страдает, чувствует себя хорошо, не пинается и не дергается, я доволен)
p.s.
Система подключена параллельно, если контроллер выйдет из строя, отключится и т.п., реле автоматически переключает на штатную линию, если же реле выйдет из строя, то без проблем провода к реле снимаются и штатная линия соединяются между собой клеммами мама-папа. Специальных инструментов не требуется, даже изоленты, клеммы с изоляцией.
Апгрейд погодной станции на ESP8266 + WiFi-IoT - выводим на дисплей "домашнего" модуля данные датчиков с "уличного" модуля
Привет Пикабу!
Кому лень читать "мнОого букОв" - в самом низу поста есть его видеоверсия ;-)
В одном из предыдущих видео на своём канале я рассмотрел погодную станцию на базе модуля ESP8266 и конструктора прошивок «WiFi-IoT» полностью собранную в корпусе для размещения на улице, т. е. она не имела дисплея. Параметры датчиков с неё я мониторил на своём телефоне через сервис «Народный мониторинг». Это не всегда удобно, и хотелось иметь стационарный дисплей с погодными данными, размещённый в комнате или на кухне, коридоре. В предыдущем посте я рассмотрел такой вариант на базе дисплея TM1637, а до этого на базе дисплея LCD1602. Но здесь есть недостаток – это длинный провод датчика температуры, который идёт от станции за окно. Решений данной проблемы на самом деле несколько, например на комнатном модуле с дисплеем брать данные с «Народного мониторинга», которые туда отправил уличный модуль. Но более простым способом будет взять данные с уличного модуля и вывести на комнатный с дисплеем в локальной сети, а не через многокилометровый путь интернет сервера. В конструкторе прошивок «WiFi-IoT» для этого есть функционал «Virtual SENS» и «Датчики GET запросом», настройку которого мы сейчас и рассмотрим.
Первый этап.
В прошивке (профиле) своего «Уличного» модуля на сайте WiFi-IOT.com добавляем (ставим галочку) «Датчики GET запросом» в разделе «Системные». Нажимаем клавишу «Сохранить изменения» и «Скомпилировать».
В веб-интерфейсе "Уличного" модуля во вкладке «Firmware_update» жмём «Fast OTA !»
После успешного обновления переходим по адресу http://[ip адрес модуля]/sensors и здесь мы должны увидеть строку подобного вида (мой вариант):
hostname:ESP00903A69;bmet:-13.0;bmeh:48.8;bmep:773.62;dsw1:-14.43;bh:1260;
где нумерация начинается от hostname:ESP00903A69 - первая метрика;
bmet:-13.0 – температура с датчика BME280 – вторая метрика;
bmeh:48.8 – влажность с датчика BME280 – третья метрика;
bmep:773.62 – давление с датчика BME280 – четвертая метрика;
dsw1:-14.43 – температура с датчика DS18B20 – пятая метрика;
bh:1260 – датчик освещённости – шестая метрика;
Второй этап.
В прошивке (профиле) своего «Комнатного» модуля с дисплеем добавляем (ставим галочку) «Virtual SENS» в разделе «Сервисы». Нажав на шестерёнку, указываем нужное количество модулей и датчиков с них (у меня будет один модуль и 5 датчиков с него), а также порт, если доступ к удаленному устройству будет через интернет (не в локальной сети). Нажимаем клавишу «Сохранить изменения» и «Скомпилировать».
В веб-интерфейсе "Уличного" модуля во вкладке «Firmware_update» жмём «Fast OTA !»
Дожидаемся обновления. И на главном экране в сенсорах у нас появятся виртуальные датчики с «Уличного» модуля, но пока они будут выдавать ошибку, т.к. не настроены.
Для настройки переходим во вкладку «VSENS», здесь указываем IP-адрес «Уличного» модуля
Для удалённого доступа вне локальной сети Вам нужно будет указать статический адрес вашего маршрутизатора, на котором при необходимости переназначить и пробросить порт, который указываем здесь.Далее указываем метрики нужных нам датчиков с "Уличного" модуля. (см. Первый этап)
Нажимаем "Set" и "Main" - переходим на главный экран, где через время опроса второго модуля равного 60 секунд появятся параметры "Уличного" модуля.
Теперь Вы их можете вывести их на дисплей ТМ1637 перейдя во вкладку "7SEGM", если собирали "Домашний" модуль по моему предыдущему посту:
Или через "Конструктор строк", используя топик _VSyx_ где "у" и "х" это параметры виртуального сенсора, если вы собрали "Домашний" модуль на базе дисплея LCD1602 по моему этому посту (видео).
Для этого переходим во вкладку "Designer_lines" и указываем нужный текс и параметр виртуального сенсора. Пример:
Вот и В С Ё !!! ;-) Ниже видеоверсия этого поста:
Всем бобра! ;-)
Простая мини погодная станция на ESP8266 с дисплеем TM1637 + DS18B20 + BME280. Своими руками и без программирования!
Привет Пикабу!
Кому лень читать "мнОого букОв" - в самом низу поста есть его видеоверсия ;-)
В одном из предыдущих постов я рассмотрел простой, удобный и бесплатный способ удаленного мониторинга температуры дома или на улице на базе модуля ESP8266, датчика температуры DS18B20 конструктора прошивок WiFi-IoT и сервиса "Народный мониторинг". В следующем посте рассказал как подключить дополнительный датчик температуры, давления и влажности - BME280 и показал, как выводить данные с датчиков на дисплей LSD1602....
Сегодня соберём более компактную погодную станцию на тех же элементах, но в качестве дисплея будем использовать маленький светодиодный TM1637, на который будут поочерёдно выводиться три любых показания с датчиков. Например время, температура на улице и температура в квартире. Так же подключим станцию к "Народному мониторингу" для возможности смотреть погоду удалённо.
Для этого проекта нам понадобятся следующие комплектующие (я покупал их на AliExpress):
1) Плата NodeMCU V3 (ESP8266) - удобна тем, что подключается с помощью micro USB кабеля и ей не нужны никакие UART конвертеры - в ней он сразу встроен на основе китайского чипа CH340;
2) Дисплей TM1637;
3) Датчик температуры DS18B20 (герметичный для размещения на улице);
4) Датчик температуры, давления и влажности BME280 (будет показывать параметры в помещении). Если вам не интересно атмосферное давление, но интересна влажность в помещении, то лучше с этим справится датчик температуры и влажности SHT21, ну а если влажность тоже не интересна, а нужна только температура, то можно обойтись двумя (можно подключить до 10) датчиками DS18B20.
5) Провода Dupont для соединения датчика с платой;
6) Кабель USB - micro USB для прошивки модуля;
7) Любой подходящий по размерам корпус на ваш вкус и цвет, можно в принципе и обойтись и без него сделав "навесной монтаж";
UPD по вопросу из комментариев: Себестоимость комплектующих в районе 8-10$ (ESP8266~3.86$, TM1637~0.89$, DS18B20~1.25-1.75$, BME280~2.80$ или SHT31~3.89$)
Первый этап.
Регистрируемся на сайте wifi-iot.com, где мы создадим прошивку в несколько кликов. После регистрации входим на сайт в свой профиль, следуем по пути "ESP" - "ESP8266".
Выбираем новый профиль и вводим для него имя.
- «Сенсоры» ставим галочку «1-wire DS18B20»;
- «Сервисы» ставим галочку «narodmon.ru»;
- «Системные» ставим галочку «Время и NTP»;
- «Дисплеи» ставим галочку «TM1637»;
Этот набор имеет бесплатный функционал.
Если Вы планируете добавить датчики температуры и другие, хотите "откалибровать" (скорректировать показания) датчиков под свой эталон, обновить прошивку через интернет и использовать все возможности сайта, то приобретите в личном кабинете лицензионный ключ, который стоит 110 рублей на один модуль ESP8266.
Затем поставьте дополнительные галочки:
- в "Сенсорах" на датчике BME280 и/или SHT21/SI7021, в зависимости от того, какой будете использовать и «Коррекция датчиков" (+ галочку на DS18B20, нажав на шестеренку)
- в "Системных" на "Обновление ОТА" и «Настройки по умолчанию», где нажимаем шестерёнку и вводим «Имя» и «Пароль» своей Wi-Fi точки доступа, здесь же можете указать динамический или статический IP адрес модуля + IP шлюз. Шлюз обычно имеет адрес 192.168.1.1 или 192.168.0.1 – гуглите инструкцию к своему роутеру/маршрутизатору и смотрите в его настройках. Обратите внимание, что цифры до третьей точки IP адреса и шлюза должны быть одинаковы, и только последнюю у IP адреса вы присваиваете самостоятельно.
Либо вы можете пойти другим путём используя Captive Portal для подключения к модулю и уже в нём настроить подключение к сети Wi-Fi. Этот способ подробно описан в моём первом посте на эту тематику.
Далее, в самом низу нажимаем "Сохранить изменения", затем "Скомпилировать".
Я скачиваю одним файлом (0х00000). Запоминаем путь, куда скачали файл.
Примечание: в некоторых случаях рекомендовано создать в корне диска (С:) папку с названием английскими символами, например "ESP8266" и поместить скачанный файл туда, вместе с программатором, который скачаем следующим этапом.
Второй этап.
Подключаем через USB-кабель плату NodeMCU к компьютеру.
Правой клавишей нажимаем на значок "Компьютер" - "Управление" - "Диспетчер устройств". Там в разделе "Порты COM и LPT" (раскрываем список нажатием на треугольник слева) у вас должно появиться устройство "USB-SERIAL CH340", как на фото (если не появилось - нужно скачать и вручную установить драйвер для CH340). Запоминаем номер порта - в моём случае - (COM4).
Скачиваем с ГитХаба программатор NodeMCU Flasher по этой ссылке.
Распаковываем архив в папку, созданную на диске (С:) (см. Первый этап)
В зависимости от разрядности вашей системы (посмотреть можно нажав правой клавишей мыши "Компьютер" - "Свойства")
в папке Win32/Release (32-разрядная ОС) или Win64/Release (64-разрядная ОС) находим и запускаем файл ESP8266Flasher.exe
После запуска на вкладке "Advansed" сверяем параметры со скриншотом:
Во вкладке "Config" выбираем, нажав на шестерёнку нашу ранее сохраненную прошивку на диске (С:) и ставим крестик (если не стоит) слева.
Перед первой прошивкой рекомендуется залить в модуль blank по адресу 0х00000, особенно, если в модуле до этого использовалась какая-либо другая прошивка. Подробнее в документации на wifi-iot.com. Я прошиваю сразу, без "чистки бланком", пока проблем не было.
Во вкладке "Operation" выбираем COM Port, который мы запомнили выше в "Диспетчере устройств" и нажимаем кнопку "Flash(F)". По завершении прошивки появится галочка в зеленом кружочке в левом нижнем углу, как на скриншоте:
После прошивки и подключения питания к плате NodeMCU нажимаем однократно кнопку «RST» (ресет) на плате модуля.
Третий этап.
Подключаем датчики и дисплей согласно схеме.
Вы можете использовать другие GPIO для подключения, но тогда вам нужно зафиксировать их для себя, чтобы указать в настройках. На фото выше приведена «распиновка» на этот случай.
Четвёртый этап.
Подключаем питание к плате NodeMCU и заходим в web-интерфейс модуля, для этого вбиваем указанный в прошивке IP адрес модуля.
- Первым делом нажав «Get Pro mode». Активируйте свою лицензию, купленную на сайте wifi-iot.com
- Жмём "Set" и "Main" - переходим в главное меню;
- Переходим во вкладку "Main";
- Здесь в окошке «GMT zone» устанавливаем свой часовой пояс;
- Возвращаемся в главное меню "Main";
- Переходим во вкладку "Hardware";
- Ставим галочку "EnableDS18B20";
- Указываем GPIO к которому подключен наш датчик температуры, у меня 14;
- Ставим галочку "Enable BME280" или "SHT21" (в зависимости от того, какой датчик установлен);
- "Interval sensors read" - время опроса датчика указываем любое в секундах, я ставлю 9 секунд с учётом дальнейшей настройки дисплея;
- Жмём "Set";
- Ниже указываем I2C GPIO датчика BME280 или SHT21, у меня GPIO SDA (4) GPIO SCL (5)
- Жмём "Set" и "Main" - переходим в главное меню.
- Переходим во вкладку "1-wire". Нажимаем "Clear & Scan list".
- После того, как датчик найден, жмем "Main" - переходим в главное меню и наблюдаем показания датчиков;
- Если хотите скорректировать показания датчика температуры по своему эталону (при наличии) во вкладке "Correction". вводите правки со знаком +/ –, где 10 — это 1 градус.
Самый простой и доступный эталон температуры– это температура человеческого тела )))
- Далее переходим во вкладку настройки дисплея «7SEGM»;
- Ставим галочку «Enable TM1637»;
- Устанавливаем яркость дисплея от 0 до 7;
- Жмём "Set"
- Ниже выбираем параметры, которые будут циклично отображаться на дисплее. У меня это время, температура датчика на улице и температура датчика дома. Комфортное время цикла для меня 4-3-2 секунды.
- Жмём "Set" и "Main" - переходим в главное меню. На дисплее TM1637 у вас должны появиться указанные параметры с заданной цикличностью.
Если вы желаете удалённо через интернет мониторить параметры датчиков, то переходим во вкладку "Servers". Ставим галочку рядом с "Enable Narodmon.ru send". Указываем "Period" 5 минут (НЕ МЕНЕЕ!!!, если указать меньше - ваш модуль "забанят" на "Народном мониторинге").
Копируем ваш ID в блокнот, нажимаем "SET" и "SEND NOW". После появления надписи "Server Reply:OK" ваши показания были успешно переданы на "Народный мониторинг".
Настройки на сайте «Народный мониторинг» я описывал в своём первом посте на эту тематику: Температура за Вашим окном в кармане - это просто! Без программирования - за 30 минут. (ESP8266 + DS18B20 + WiFi-iot + NarodMON)- Жмём "Main" - переходим в главное меню.
Если это ваш пилотный проект, и Вы захотите изменить прошивку добавив какие-либо датчики или сервисы, то сможете это сделать легко, обновив прошивку через интернет. Для этого вносите изменения своей прошивки на сайте wifi-iot.com нажимаем "Сохранить изменения", затем "Скомпилировать". Далее в веб интерфейсе модуля переходим во вкладку «Firmware_update» и здесь жмём «Fast OTA !»
На этом, но настройке модуля погодной станции у меня в принципе всё, остальное это дело вашей фантазии и желания экспериментировать.... ;-)
Из особенностей, в заключении хочу добавить, что данная схемотехника позволяет питать станцию, как непосредственно от USB кабеля, подключенного к модулю, так и через кабель для подключения датчика температуры DS18B20, т.к. здесь у нас общая "земля" и "пин 5 вольт" соединён на плате на прямую с USB. В схемотехнике так же указан резистор 4,7 кОм, без него датчик температуры тоже работает, но рекомендовано его всё же поставить, т.к. его назначение – повысить управляющий сигнал для однопроводной шины, без него питание идёт по паразитной составляющей и датчик может работать некорректно или вовсе выйти из строя. По даташиту датчик температуры DS18B20 работает в диапазоне напряжений от 3 до 5.5 вольт, выбранное мной питание 5 вольт позволяет применять достаточно длинный провод до датчика на улице, не переживая за падение напряжения до критически низкой отметки...
Видеоверсия:
Всем бобра! ;-)
Делаем устройство подсчёта посетителей и автоматически управляем освещением в комнате
Управление освещением построено на принципе подсчёта количества входящих и выходящих людей в комнату. Если число людей в комнате больше нуля – включается реле, управляющее освещением.
Этот проект решает проблему большинства систем управления светом, построенных, например, на датчиках движения – нет необходимости каждые 5-10 минут махать или изображать движение перед датчиком. Система просто ждет, когда вы выйдете из комнаты и тут же гасит свет (нет необходимости ставить длительные задержки).
Подробное видео о том, как собрать такую же систему у себя дома, с объяснением работы, выбором типа реле, борьбой с помехами и другими интересностями:
Основные моменты в видео:
0:24 Основная концепция системы
1:32 О датчике препятствия E18-D80NK
2:30 Об электромагнитных реле
3:27 Твердотельное реле SSR-40DA
4:16 Моя библиотека PeopleCounter и код в Arduino
5:14 Подключение и проверка первого варианта системы
6:01 Добавление кнопки "Ручной режим" к проекту
6:49 Добавление датчика освещенности
9:30 Общая схема проекта
10:09 Сборка окончательного устройства на Digispark
10:59 Борьба с помехами
Схема проекта на Arduino (ATmega328P) c возможностью системы управлять светом в зависимости от освещенности на улице и включением режима ручного управления светом:
Схема проекта на Digispark (ATtiny85) без датчика освещенности и кнопки ручного режима (подойдет для ванной, туалета, кладовки и других помещений, где нет окон):
Да, такое мощное твердотельное реле я поставил просто потому что оно у меня лежало без дела, но, опять же, если вы покупаете реле на Aliexpress, ̶в̶с̶е̶г̶д̶а̶ часто можно столкнуться с нечестными производителями, завышающими показатели коммутируемого тока.
Например, в реле, рассчитанном на 40А, могут поставить симистор на 25, а то и на 16А, что приведет к его жуткому разогреву и выходу из строя при подаче мощной нагрузки.
Поэтому, очевидный совет - выбирайте реле в 2, а лучше в 3 раза превышающее по мощности ту, которую вы собираетесь коммутировать, и будет вам счастье 🙂 Также не забывайте про охлаждение радиатором и не покупайте по очень дешёвым предложениям – получите ровно то, насколько меньше стоит реле относительно рыночной цены.
Ещё из некоторых источников говорят, что в реле, у которых нет “спиленного уголка”, ставят симисторы получше (см. картинку ниже), поскольку они больше похожи на оригинальные, но я этот нюанс ещё пока не проверял, от одной лампочки моему реле, по ощущениям, даже холодно.
Для удобства создания системы сразу для нескольких комнат, я написал библиотеку с классом Room, поэтому в программе достаточно передать вашей комнате пины подключенных датчиков и вызвать пару функций.
Вот пример:
Здесь по порядку подключаемые пины: ИК-датчик №1, ИК-датчик №2, реле, кнопка "ручной режим", фоторезистор (аналоговый PIN без буквы А), порог фоторезистора.
В функции setup() делаем инициализацию (если нужны показания фоторезистора и пр., то вызываем метод debug) :
В функции loop() постоянно вызываем метод lightControl для опроса датчиков (можно повесить на таймер):
Дополнительно написал два метода - первый возвращает текущее количество человек в комнате, второй - включен свет или нет (пригодятся при отладке и в связке с другими датчиками в рамках одной системы домашней автоматизации):
Чтобы добавить еще несколько комнат, просто создаете новые объекты со своими именами и пинами:
Библиотека и примеры использования лежат на GitHub: здесь
Страница проекта с описанием, списком компонентов, ссылками и т.д.: здесь
В будущем планирую расширять эту систему и прикручивать дополнительные датчики с мониторингом по сети, что в итоге должно вылиться в нечто, напоминающее домашнюю автоматизацию. Буду рад рекомендациям и советам.
Всем удачных компиляций!
Поиграем в бизнесменов?
Одна вакансия, два кандидата. Сможете выбрать лучшего? И так пять раз.
Подключение PIR(датчика движения) к RaspberryPi.
В одном из своих постов я описывал как сделать умное зеркало. В комментариях поступило предложение подключить датчик движения. Опишу процесс подключения датчика,может быть кому-то будет полезна эта информация
Контакты на датчике:
В моем случае слева направо расположены контакты земли, управления и 5В. В датчиках разных производителей эти контакты могут быть расположены в другом месте или порядке.
Подключение датчика к GPIO:
GND-2 пин GPIO
OUT-11 пин GPIO
+5V-6 пин GPIO
Создание скрипта на питоне:
Теперь мы делаем скрипт python.
Создаем файл в каталоге MagicMirror с расширением .py(я назвал pir.py). Открываем этот файл любым текстовым редактором и прописываем туда следующие строки :
#!/usr/bin/env pythonПроверяем скрипт. Если датчик не улавливает движения в течение 600с(10мин), то монитор выключается. Всё работает
import sys
import time
import RPi.GPIO as io
import subprocess
io.setmode(io.BOARD)
SHUTOFF_DELAY = 600 # секунды
PIR_PIN=11
def main():
io.setup(PIR_PIN, io.IN)
turned_off = False
last_motion_time = time.time()
while True:
if io.input(PIR_PIN):
last_motion_time = time.time()
sys.stdout.flush()
if turned_off:
turned_off = False
turn_on()
else:
if not turned_off and time.time() > (last_motion_time + SHUTOFF_DELAY):
turned_off = True
turn_off()
if not turned_off and time.time() > (last_motion_time + 1):
time.sleep(.1)
def turn_on():
subprocess.call("sh /home/pi/MagicMirror/monitor_on.sh", shell=True)
def turn_off():
subprocess.call("sh /home/pi/MagicMirror/monitor_off.sh", shell=True)
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
io.cleanup()
Теперь сделаем так, чтобы скрипт запускался автоматическое при запуске системы. Для этого Переходим по этому адресу ~/.config/lxsession /, открываем LXDE-pi в текстовом редакторе и добавляем эту строку :
@sudo / usr / bin / python /home/pi/MagicMirror/pir.py
Сохраняем изменения, выходим и перезагружаем raspberry pi.
Мои посты:
Умное зеркало на Raspberry pi 4
Процесс создания умного зеркала на raspberry pi.