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

Зональный климат-контроль с помощью MediaTeks LinkIt ™ Smart 7688

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

Espressif ESP8266 ESP-01
× 1
Arduino Nano R3
× 1
Microchip Technology ATtiny85
× 1
Датчик температуры DHT22
× 1
Сервоприводы (Tower Pro MG996R)
× 1

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

IDE Arduino

Об этом проекте

Скоро зима

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

Зима снова приближается, поэтому на этот раз я установил термостат Wi-Fi, чтобы я мог включать обогреватель, пока я внизу или тепло укрывшись одеялом. Это намного удобнее, но мы по-прежнему обогреваем весь дом, хотя большую часть времени мы все в одной части дома.

Работайте умнее

Глядя на журналы наших датчиков движения, которые управляют нашим освещением, довольно очевидно, что мы проводим 4-5 часов вниз семьей после работы, а затем поднимаемся наверх в наши спальни около 21:00, где мы спим до следующего утра, чтобы уйти на работу. Выходные немного отличаются, но с понедельника по пятницу работают как часы (особенно для 10-месячного ребенка со строгим графиком сна).

Я посмотрел на системы HVAC, которые имеют многозонный мониторинг температуры и перегородки воздуховодов с беспроводным управлением, но оборудование очень дорогое, а все программное обеспечение выглядит так, как будто это было запоздалой мыслью (с небольшой поддержкой или обновлениями по мере улучшения технологий). У меня уже есть несколько датчиков температуры с поддержкой Wi-Fi в моем доме для использования контроллеров блоков переменного тока, и мне не терпится использовать в проекте несколько небольших сервоприводов. Все, что мне нужно, это сервоприводы, подключенные к Wi-Fi, которые могут открывать / закрывать вентиляционные отверстия в моей системе HVAC ... должно быть достаточно легко.

LinkIt ™ Smart 7688 от MediaTek

Новый LinkIt Smart 7688 Duo HDK от MediaTek - это микропроцессор с подключением к Wi-Fi, работающий под управлением OpenWRT со встроенным микроконтроллером, совместимым с Arduino. Он идеально подходит для этого проекта, поскольку у него есть все контакты ввода-вывода, необходимые для нескольких датчиков и серводвигателей, а также возможность Wi-Fi для связи с моими существующими датчиками температуры. Кроме того, поскольку OpenWRT уже установлен с uHTTPd, я могу запускать WebApp непосредственно на LinkIt Smart 7688 HDK для получения полностью автономного пакета.

Настройка LinkIt Smart 7688 HDK

Я впервые использую плату со встроенным Wi-Fi, поэтому я готовился к крутой кривой обучения. К счастью, настройка - это буквально 3 шага:

  • Включите Linkit Smart 7688 и подключитесь к его точке доступа Wi-Fi со своего компьютера.
  • Войдите в веб-интерфейс и введите настройки своей точки доступа Wi-Fi.
  • Добавьте плату LinkIt Smart 7688 Duo в Arduino IDE.

Вот и все! Когда вы выбираете плату «LinkIt Smart 7688 Duo» в Arduino IDE, вы можете либо отправить свой скетч через последовательный порт, как и любую другую плату, либо вы можете загрузить его через Wi-Fi (это пригодится позже). Руководство по началу работы с Linkit Smart 7688 и руководство для разработчиков также могут быть вам полезны.

Если вы хотите разрешить микроконтроллеру использовать Wi-Fi непосредственно в вашем скетче Arduino (что мы и будем делать), вы просто подключитесь по ssh к HDK и немного переверните его, чтобы включить совместимость с библиотекой Arduino Yun.

Вы можете просто скопировать / вставить строки отсюда:

WiFi-клиент и сервоконтроллер

Поскольку он имеет встроенную совместимость с библиотекой моста Yun и использует IDE Arduino, очень легко адаптировать существующий код. Используя библиотеку моста, я могу заставить HDK опросить встроенный веб-сервер для конфигурации вентиляции (наверху, внизу или во всем доме), а затем соответствующим образом настроить два сервопривода. В приведенном ниже видео это работало на Raspberry Pi 2, но я смог перенести WebApp на LinkIt Smart 7688, чтобы сделать его еще более эффективным (код включен в конце).

Мой WebApp работает на php, поэтому я просто использовал диспетчер пакетов opkg, чтобы установить его, поскольку он включен в OpenWRT на LinkIt Smart 7688:

Затем я обновил файл / etc / config / uhttpd для интерпретации php, добавив следующую строку:

и перезапустили uHTTPd

Аппаратное обеспечение

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

Программное обеспечение

Эта сборка состоит из трех компонентов:

  • Датчики температуры в доме периодически отправляют обновления на веб-сервер uHTTPd, работающий на LinkIt Smart 7688.
  • Веб-приложение, работающее на LinkIt Smart 7688, которое показывает текущее состояние и позволяет вручную перенастроить вентиляционные отверстия.
  • MCU на LinkIt Smart 7688, который управляет вентиляционными отверстиями, чтобы направлять теплый воздух наверх или вниз в зависимости от времени суток.

Датчики температуры - это просто ATtiny85s или Arduino Nanos, подключенные к DHT11 или DHT22 и отправляющие эту информацию о температуре / влажности на веб-сервер через ESP8266 по последовательному программному обеспечению. У меня есть полная запись об этих датчиках здесь, поскольку они были первоначально разработаны и разработаны как фаза II моего проекта кондиционирования воздуха в точке использования (эта часть не является обязательной, но она предоставит вам дополнительные показатели, которые можно использовать для настройки систему и в конечном итоге автоматизировать ее).

Сам LinkIt Smart 7688 HDK у меня на чердаке подключен напрямую к вентиляционным отверстиям. На стороне OpenWRT задание cron обновляет текстовый файл состояния вентиляции. Сторона MCU, на которой запущен скетч Arduino, периодически проверяет этот текстовый файл и соответствующим образом регулирует вентиляционные отверстия.

Чтобы проверить состояние вентиляционных отверстий и вручную изменить их конфигурацию, я создал небольшое веб-приложение, которое размещается непосредственно на LinkIt Smart 7688. С помощью dyndns и переадресации портов я могу просматривать и контролировать все это вне дома, если мне нужно.

Возможности для улучшения

По ночам уже становилось холоднее, и мне нужно было как можно скорее заставить это работать, поэтому были сделаны некоторые уступки во имя быстрого развертывания. Что касается аппаратного обеспечения, я буду печатать на 3D-принтере правильные крепления для сервоприводов, так как мои крепления для хакерских работ имеют небольшой люфт. Кроме того, маленький RC-сервопривод, который я использовал в демонстрации, имеет все пластиковые шестерни, которые, как я не ожидаю, прослужат в течение многих лет, поэтому, поскольку я не хочу в ближайшее время возвращаться на чердак, я собираюсь поменяться местами. их нужно использовать для больших сервоприводов с металлическими шестернями.

Однажды я могу добавить дополнительные сервоприводы с подключением к Wi-Fi к вентиляционным отверстиям в каждой комнате и снова подключить их к одному LinkIt Smart 7688.

В настоящее время датчики температуры только сбрасывают показания в файл csv, поэтому я могу легко отслеживать и строить графики. Было бы неплохо пораньше включить обогреватель, если в доме особенно холодно, но у моего WiFi-термостата еще нет API. Я также хотел бы подключиться к моей системе домашней автоматизации, чтобы вентиляционные отверстия автоматически регулировались в зависимости от загруженности комнаты в реальном времени, определяемой датчиками движения, а не полностью в зависимости от времени суток (особенно в выходные дни из-за нашего динамического расписания).

Код

  • LinkIt Smart Duo WiFi Vent
  • Датчик температуры Wi-Fi
  • Vent.php
  • LinkIt Smart Vent Android WebApp
LinkIt Smart Duo WiFi Vent C / C ++
В этом скетче используются клиентские библиотеки Bridge и HTTP от Arduino Yun для опроса веб-сервера и открытия / закрытия вентиляционных отверстий HVAC по мере необходимости.
 / * Адаптировано из примера сервопривода Sweep от BARRAGAN  и Yun Пример HTTP-клиента, созданный Томом Игоэ  ** Оба находятся в общественном достоянии. *** Код адаптирован для HAI (Домашняя автоматизация с интеллектом) Бадди Кротти ** Этот скетч Arduino полагается на веб-сервер, который выполняет всю тяжелую работу. Это может быть отдельное устройство, такое как Raspberry Pi, или вы можете запустить его на стороне MPU LinkIt Smart inOpenWRT. ** Веб-сервер собирает показания температуры со всего дома и определяет, куда нужно направить горячий / холодный воздух, в зависимости от времени день, внешнюю погоду (включая прогноз) и загруженность дома. ** Затем выводится «наверх», «внизу» или «весь дом» в зависимости от того, куда нужно направить воздух. * / # include  #include  #include  Servo upservo; // создаем сервообъект для управления верхним сервоприводом Сервопривод нижнего резервуара; // сервопривод воздушной заслонки нижнего этажа int uppos =0; // переменная для хранения положения сервопривода (наверху) int downpos =0; // положение сервопривода внизу const char * host ="192.168.1.80"; // Внутренний IP-адрес веб-сервера домашней автоматизации dopenangle =80; // Количество градусов, на которое сервопривод должен повернуться между открытием / закрытием на вентиляционном отверстии dcloseangle =0; int uopenangle =140; int ucloseangle =0; пустая настройка () {upservo.attach (9); // Штифт для сервопривода прикреплен к воздушной заслонке наверху downservo.attach (10); // Пин для сервопривода, прикрепленного к воздушной заслонке внизу // запускаем мост к OpenWRT pinMode (13, OUTPUT); digitalWrite (13, LOW); Bridge.begin (); digitalWrite (13, HIGH);} void allhouse () {if (downpos <=dcloseangle) {// Убедитесь, что вентиляционное отверстие еще не установлено // откройте вентиляционное отверстие внизу для (downpos =dcloseangle; downpos <=dopenangle; downpos + =1) // Переход от заданного угла закрытия к углу открытия на один шаг {downservo.write (downpos); задержка (20); // ожидает между шагами, пока сервопривод не достигнет позиции}} if (uppos <=uopenangle) {// открыть вентиляционное отверстие наверху для (uppos =ucloseangle; uppos <=uopenangle; uppos + =1) {upservo.write (uppos); задержка (20); }}} void downstairs () {if (downpos <=dopenangle) {// открыть вентиляционное отверстие внизу для (downpos =dcloseangle; downpos <=dopenangle; downpos + =1) {downservo.write (downpos); задержка (20); }} if (uppos> =ucloseangle) {// закрыть наверху вентиляционное отверстие для (uppos =uopenangle; uppos> =ucloseangle; uppos- =1) {upservo.write (uppos); задержка (20); }}} void upstairs () {if (uppos <=uopenangle) {// открыть вентиляционное отверстие наверху для (uppos =ucloseangle; uppos <=uopenangle; uppos + =1) {upservo.write (uppos); задержка (20); }} if (downpos> =dcloseangle) {// закрытие нижнего вентиляционного отверстия for (downpos =dopenangle; downpos> =dcloseangle; downpos - =1) {downservo.write (downpos); задержка (20); }}} void loop () {HttpClient client; // Создаем и делаем HTTP-запрос:String cmd ="http://"; cmd + =хост; cmd + ="/vent.txt"; client.get (cmd); // Считываем входящие байты с сервера while (client.available ()) {int c =client.read (); если (c =='2') наверху (); если (c =='1') внизу (); если (c =='0') allhouse (); } delay (60000);} 
Датчик температуры WiFi C / C ++
Подключен датчик температуры и влажности. Записывает данные на центральный сервер домашней автоматизации.
 / * * Код, адаптированный для HAI (Home Automation w / Intelligence) Бадди Кротти * * Отправляет данные через HTTP-запросы GET на ваш HAI-сервер * * Связь осуществляется через программное последовательное соединение с Интерфейс ESP8266 WiFi * уже настроен для подключения к вашей беспроводной локальной сети *, но вы можете раскомментировать настройки WiFi для сброса SSID / пароля * * / const char * host ="192.168.1.80"; // Внутренний IP-адрес веб-сервера домашней автоматизацииconst char * devID ="downstairs"; // ID устройства (одно слово, без пробелов и специальных символов) #include  SoftwareSerial ser (10, 11); // (RX, TX) // Программный серийный номер для управления модулем ESP8266 // Аппаратный серийный номер для отладки long utime =300000; // Время между обновлениями // 900000 =15 минут (для батареи / солнечной энергии) // 300000 =5 минут (для сети переменного тока) // 5000 =5 секунд (для тестирования) // Должно быть больше 10000, чтобы ESP8266 мог выйти из спящего режима (режим работы от батареи) // Датчик температуры и влажности #include  #define DHTPIN 2 // Контакт для датчика температуры / влажности # define DHTTYPE DHT22 // DHT11, DHT22 (AM2302 или DHT21 (AM2301 ) DHT dht (DHTPIN, DHTTYPE); void setup () {Serial.begin (9600); ser.begin (9600); //ser.listen (); / * // Раскомментируйте для сброса настроек WiFi delay (1000); ser.println ("AT + CWMODE =1"); ser.println ("AT + CWJAP =\" SSID \ ", \" Пароль \ ""); * / ser.println ("AT + RST"); / / Сброс ESP8266, так как arduino был сброшен delay (10); dht.begin (); // Запускаем DHT Serial.println («Даём всему шанс нагреться»); // ждем 25 секунд, пока WiFi подключится к Serial.println ( "| ------------------------- |"); Serial.print ("|"); for (int x =0; x <25; x ++) {Serial.print ("#"); delay (1000);} Serial.println ("|"); Serial.println ("Done");} float t =0; int h =0; float hi =0; void loop () {Serial.println (); // Температура и влажность float t =dht.readTemperature (true); int h =dht.readHumidity (); float hi =dht.computeHeatIndex (t, h); // Выходные значения отправляются в ThingSpeak Serial.print ("Temperature:"); Серийный принт (т); Serial.print ("* F \ t"); Serial.print («Тепловой индекс:»); Serial.print (привет); Serial.println ("* F"); Serial.print ("Влажность:"); Серийный отпечаток (ч); Serial.println ("% \ t"); Serial.print ("... подключение к"); Serial.println (хост); // Строка TCP-соединения cmd ="AT + CIPSTART =\" TCP \ ", \" "; cmd + =host; cmd + =" \ ", 80"; ser.println (cmd); задержка (1000); if (ser.find ("Ошибка")) {Serial.println ("Ошибка AT + CIPSTART"); возвращение; } else {} // подготавливаем строку GET String getStr ="GET /tempupdate.php?ID="; getStr + =devID; getStr + ="&field1 ="; // Темп getStr + =t; getStr + ="&field2 ="; // Влажность getStr + =h; getStr + ="&field3 ="; // Тепловой индекс getStr + =hi; getStr + ="\ г \ п \ г \ п"; Serial.print ("URL отправки данных:"); Serial.println (getStr); // отправляем длину данных cmd ="AT + CIPSEND ="; cmd + =String (getStr.length ()); ser.println (cmd); если (ser.find (">")) {ser.print (getStr); Serial.println («Успех!»); } else {ser.println ("AT + ЗАКРЫТЬ"); Serial.println («Ошибка подключения»); // предупреждение пользователя} Serial.print («Следующее обновление через»); Serial.print (utime / 1000); Serial.println («секунды»); delay (utime); // ждем между обновлениями} 
Vent.php PHP
Проверить статус и вручную изменить конфигурацию вентиляции.
       
Только наверху

Весь дом

Только внизу

Вентиляционные отверстия открыты для"; if ($ status ==="0 ") напечатайте" Весь дом "; if ($ status ===" 1 ") напечатайте" Только внизу "; if ($ status ===" 2 ") напечатайте" Только наверху "; напечатайте"
"; fclose ($ myfile); if ($ _GET ["зона"] ==""); else {$ myfile =fopen ("vent.txt", "w +") или die ("Невозможно открыть файл!"); if ($ _GET ["zone"]! ="") print "

Отправка команды для открытия вентиляционных отверстий для"; if ($ _GET ["zone"] ==="0") print "Весь дом"; if ($ _GET ["зона"] ==="1") печать "Только внизу"; if ($ _GET ["зона"] ==="2") печать "Только наверху"; печать "

"; fwrite ($ myfile, $ _GET ['zone']); fclose ($ myfile);}?>
LinkIt Smart Vent Android WebApp JSON
Файл манифеста, поэтому Chrome на Android открывает контроллер вентиляции как веб-приложение.
 {"name":"LinkIt Smart Vent", "icons":[{"src":"LinkIt_icon_36.png", "sizes":"36x36", "type":"image / png", "density":0,75}, {"src":"LinkIt_icon_48.png", "sizes":"48x48", "type":"image / png", "density":1.0}, {"src":"LinkIt_icon_128.png", "sizes":"128x128", "type":"image / png", "density":1.0}, {"src":"LinkIt_icon_192 .png "," sizes ":" 192x192 "," type ":" image / png "," density ":1.0}]," start_url ":" vent.php "," display ":" standalone "," Ориентация ":" портрет "} 

Схема

ATtiny85 или Arduino Nano извлекают временные значения из DHT11 / 22 и Wi-Fi, подключенного к ESP8266.

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

  1. МОДУЛЬ ДАННЫХ:23,1-дюймовый ультра-растянутый TFT-дисплей с интеллектуальным управлением
  2. Контроль доступа с помощью QR, RFID и проверки температуры
  3. Лучший контроль качества с 3D-печатными деталями
  4. Умные закупки уравновешивают ИИ с высоким интеллектом
  5. Управление монетоприемником с помощью Arduino
  6. Пульт дистанционного управления для телевизора с питанием от батареи и футляр, напечатанный на 3D-принтере
  7. Arduino с Bluetooth для управления светодиодом!
  8. Arduino Nano:управление двумя шаговыми двигателями с помощью джойстика
  9. GÖPEL улучшает контроль качества в автомобилестроении с помощью универсальных роботов
  10. Токарный станок с ЧПУ