Делаем умную кружку с помощью Ардуино и светодиодов

В этом проекте мы хотим сделать умную кружку, которая сможет показать температуру кофе или безалкогольных напитков. Также кружка сможет сигнализировать, когда напиток будет готов. Мы будем использовать светодиоды RGB, датчик окружающей среды и Arduino Nano для отправки сообщения или подачи сигнала.

В конце этого урока вы сможете:

  • Прочитать с помощью Arduino температуру окружающей среды от датчика DS18B20.
  • Управлять светодиодами RGB с помощью PWM.
  • Сделать умную кружку.

Комплектующие

Комплектующие и программное обеспечение, используемые в этом проекте перечислены ниже.

Все компоненты, используемые в этом проекте, могут быть приобретены в большинстве интернет-магазинов.

Аппаратные компоненты

  • Ардуино Нано × 1
  • Датчик температуры ElectroPeak DS18B20 × 1
  • Светодиодный индикатор ElectroPeak RGB 5 мм × 1
  • Аккумуляторная батарея Adafruit LiPo × 1
  • Ленточный кабель Adafruit × 1

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

Что такое DS18B20?

Цифровой термометр DS18B20 обеспечивает измерения температуры по шкале от 9 до 12 бит и имеет функцию тревоги с энергонезависимыми программируемыми пользователем верхними и нижними триггерными точками. DS18B20 обменивается данными по шине, которая по определению требует только одну линию передачи данных (и землю) для связи с центральным микропроцессором. Кроме того, DS18B20 может получать питание непосредственно из линии передачи данных (применим термин «питание паразита»), устраняя потребность во внешнем источнике питания.

Каждый DS18B20 имеет уникальный 64-разрядный серийный код, который позволяет нескольким DS18B20s функционировать на одной шине 1-Wire. Таким образом, довольно просто использовать один микропроцессор для управления несколькими DS18B20, распределенными по большой площади. Приложения, которые могут воспользоваться этой функцией, включают в себя экологический контроль HVAC, системы контроля температуры внутри зданий, а также системы мониторинга и управления технологическими процессами.

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

В качестве термопары мы будем использовать DS18B20, который закрепим на дне кружки. Датчик может посылать температуру жидкости в кружке к контроллеру в цифровых данных. Arduino Nano - выбор в качестве контроллера из-за его небольшого размера и мини-разъема USB на плате. Поэтому Nano можно запрограммировать, а аккумулятор можно будет заряжать через USB-порт. Чтобы показать температуру, мы используем 2 простых 4-контактных светодиода RGB и подключаем их для разделения блоков PWM в Arduino Nano. Теперь нам нужны только батарея, кружка и пластиковая оболочка, куда мы вставим компоненты.

Принципиальная схема

Два красных провода используются для включения/выключения. Если эти контакты находятся в соприкосновении с жидкостью, вы можете запускать плату, когда кружка заполнена. Или вы можете просто подключить их к переключателю.

Убедитесь, что ваши светодиоды могут работать без резистора. В этой схеме батарея заряжается с помощью разъема USB Arduino. DS18b20 4.7K резистор не всегда необходим.

Размер батареи зависит от светодиодов и размера кружки. Аккумулятор емкостью 500 мАч является хорошим выбором в данном случае. Вы можете использовать либо полимерные, либо ионные батареи. Используемые здесь светодиоды имеют общие катоды. Если у вас есть общие аноды, вы должны внести небольшие изменения в код. Если ваши светодиоды не могут работать без резистора, у вас есть два пути - добавление резистора или добавление большего количества светодиодов. Вы должны подключить напряжение и штырь данных DS18b20 к резистору 4,7KОм. Хотя это может и не понадобиться.

Код для Ардуино

Вы должны скопировать код ниже в Arduino IDE. Но сначала вы должны добавить библиотеки, а затем загрузить код. Загрузите библиотеки «One Wire» и «Dallas» ниже.

Если вы впервые запускаете плату Arduino, не волнуйтесь. Просто выполните следующие действия:

  • Перейдите на сайт www.arduino.cc/en/Main/Software и загрузите программное обеспечение вашей ОС. Установите программное обеспечение IDE в соответствии с инструкциями. Вы также можете скачать ПО с нашего сайта здесь.
  • Запустите среду разработки Arduino, очистите текстовый редактор и скопируйте следующий код в текстовый редактор.
  • Перейдите к эскизу и включите библиотеки (скачайте библиотеки выше). Теперь нажмите добавить ZIP-библиотеку и добавьте библиотеки.
  • Выберите плату в "tools and boards", выберите Arduino Nano.
  • Подключите Arduino к компьютеру и установите COM-порт в "tools and port".
  • Нажмите кнопку «Загрузить» (стрелка).
/********************************************************************/
// Первым делом, подключаем библиотеки
#include "OneWire.h" 
#include "DallasTemperature.h"
/********************************************************************/
// Провод данных соединяется с пином 2 от Arduino 
#define ONE_WIRE_BUS 2 
/********************************************************************/
// Настройка oneWire для связи с любым устройством OneWire
// (не только Maxim/Dallas температурный IC) 
OneWire oneWire(ONE_WIRE_BUS); 
/********************************************************************/
// Передаем oneWire на Далласскую температуру. 
DallasTemperature sensors(&oneWire);
/********************************************************************/ 
float temp;
void setup(void) 
{ 
// Запуск серийного порта 
Serial.begin(9600); 
Serial.println("Dallas Temperature IC Control Library Demo"); 
// Запуск библиотеки 
sensors.begin(); 
} 
void loop(void) 
{ 
// вызов sensors.requestTemperatures() для получения глобальной температуры
// запрос на все устройства на шине 
/********************************************************************/
Serial.print(" Requesting temperatures..."); 
sensors.requestTemperatures(); // Send the command to get temperature readings 
Serial.println("DONE"); 
/********************************************************************/
Serial.print("Temperature is: ");
Serial.print(sensors.getTempCByIndex(0));temp= sensors.getTempCByIndex(0); Serial.print("  "); Serial.println(temp);// Why "byIndex"?
  // У вас может быть более одного DS18B20 на одной шине.  
  // 0 относится к первой ИС на проводе
if (analogRead(A0)>100)
{   if (temp>50)
  temp=100;
  if (temp<30) temp=0; temp=(12.5)*(temp-30); Serial.println(temp); if (temp>255)
  temp=255;
  if (temp<0)
  temp=0;
analogWrite(6,temp);
analogWrite(9,temp);
analogWrite(3,255-temp);
analogWrite(11,255-temp);}
else
{analogWrite(6,0);
analogWrite(9,0);
analogWrite(3,0);
analogWrite(11,0);}
  delay(100); 
}

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

if (temp>50)
  temp=100;
  if (temp<30)
  temp=0;
  temp=(12.5)*(temp-30);

Собираем все комплектующие

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

В данном случае было сделано 3 отверстия для этого проекта. Один для термометра и два для винтов (электродов)  для контакта с жидкостью внутри кружки. Вы можете сделать этот проект, не делая дырок в кружке.

Отметьте термометр на дне кружки и соедините 2 провода электродов с выключателем. После крепления термометра и электродов и их герметизации, пришло время сделать раму для дна кружки.

Используйте клей для герметизации стекла, которое не будет забирать тепло или холод. Чтобы сделать оболочку для нижней части кружки. вы должны сначала измерить внешний диаметр кружки. Затем создайте круг с точно таким же размером дна кружки и два кольца с наружным диаметром 3 мм (и, конечно, с диаметром дна кружки).

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

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

Итоговый результат

После всех этих процессов у нас должно получиться что-то вроде этого - смотрите видео ниже.

На этом наша умная кружка на Ардуино готова. Что дальше?

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

Ардуино+