Ардуино термометр: Arduino и термометр DS18B20

Содержание

Бюджетный GSM термометр на Arduino Nano

Добрый день! Очередной обзор самодельного устройства из дешевых китайских электронных компонентов, в этот раз GSM-термометр. Как обычно, дёшево, себестоимость устройства примерно 850 ₽ или 13$. Сборка так же не составит труда для тех кто хотя бы пару раз в жизни держал паяльник 🙂 Заинтересовало? Прошу под «cut»!

Начнём с технического задания, устройство должно:
1. Отслеживать температуру системы отопления, уведомлять смс сообщением или голосовым вызовом при превышении или понижении температуры ниже заданных границ.
2. Отслеживать наличие или отсутствие сети 220В, уведомлять при отсутствии или восстановлении.
3. Работать автономно не менее 24 часов.
4. Полностью управляться через смс сообщения.

Для сборки нам понадобится:
1. Arduino Nano v3 ATmega328P — 180 ₽.
2. GSM модуль SIM800L — 240 ₽.
3. Контроллер заряда-разряда для Li-ion аккумулятора TP4065 — 30 ₽.

4. Датчик DS18B20 — 80 ₽.
5. Светодиод RGB с общим анодом — 1шт * 10 ₽.
6. Резисторы 2,2 кОм, 3,3 кОм, 4,7 кОм, 10 кОм, 20 кОм — 5 ₽.
7. Выключатель — 15 ₽.
8. Корпус для PowerBank 4×18650 — 190 ₽.
9. Аккумулятор 18650 — 190 ₽.
10. Зарядное устройство 5В 1,5А — из личных запасов.

Не обязательно, но очень желательно:
11. Полевой транзистор IRLML6402 — 5 ₽.
12. Диоды SS26 — 5 ₽.
13. GSM антенна — 80 ₽.

Могу предположить что возникнут вопросы о работе устройства в сети GSM. Почему бы не использовать GPRS/3G/4G? Во-первых GSM — надёжно, во-вторых есть места очень плохим покрытием, при котором голосовая связь и смс сообщения ещё работают но GPRS-трафик передаётся не стабильно. Поэтому выбор пал именно на этот стандарт. В плане надёжности отдаю предпочтение Arduino, хотя устройство можно было бы собрать и на ESP8266, но в последней не могу быть уверен на все 100%.

За основу GSM-термометра была взята GSM-сигнализация из этого обзора, которая после «финальной» прошивки в течение года отработала без сбоев. Из прошивки «выпилено» всё лишнее и добавлен датчик температуры DS18B20. Диапазон измерения температуры датчика от -55°C до 125°C, даташит на русском языке можно взять по ссылке.

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

Схема.

Простая схема для сборки.

Потроха.

Внешний вид.

Используемые порты Arduino Nano v3

D5 — шина данных датчика температуры DS18B20 — желтый провод.
D6 — подключен к RST входу модема, для перезагрузки в случае потери сети.
D7 — подключен к делителю напряжения от внешнего источника питания +5В. Верхнее плечо 2,2 кОм, нижнее 3,3 кОм.

Делитель напряжения


D8 — модем TX
D9 — модем RX
D10 — красный светодиод
D11 — синий светодиод
D12 — зеленый светодиод


Прошивка

Программное обеспечение XLoader для прошивки Arduino Nano/Uno берём тут или на гугл диске вместе с прошивкой. Прошивку в виде hex — файла для Arduino Nano/Uno берём тут или на гихабе. Исходник прилагается.
Инструкция по прошивке
— подключаем Arduino в USB-порт
— выбираем нужный hex-файл
— выбираем нужный тип Arduino Nano или Uno

— выбираем COM порт, который создался при подключении Arduino к USB
— скорость 57600
— нажимаем Upload


Для тех кто будет шиться из исходника

В файл SoftwareSerial.h (C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial\src\SoftwareSerial. h) необходимо внести изменения
было так:


#define _SS_MAX_RX_BUFF 64 

стало так:


#define _SS_MAX_RX_BUFF 192


Команды управления

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

Команды управления не чувствительны к регистру:
AddPhone — Добавить номер телефона. Всего может быть добавлено не более 9 номеров + 1 основной номер который автоматически сохраняется в память при первом звонке на устройство после сброса на заводские установки командами ResetPhone, FullResetили MemTest. То есть кто первый позвонил на устройство после его сброса на заводские установки тот и «главный», этот номер заносится в первую ячейку памяти и его невозможно изменить или удалить через смс.
Пример команды:

AddPhone:2+71234567891risp
AddPhone:3+71234567892s
AddPhone:4+71234567893sp
AddPhone:5+71234567894r

Синтаксис команды:

AddPhone — команда

: — разделитель
5 — записать в пятую ячейку памяти
+71234567890 — номер телефона
s — Параметр «SMS» — будет отправлено sms сообщение при срабатывании датчиков
r — Параметр «Ring» — будет совершен голосовой вызов при срабатывании датчиков
p — Параметр «Power» — будет отправлено sms сообщение при включении/отключении внешнего питания
i — Параметр «Info» — будет отправлено sms сообщение о включении или отключении оповещения при изменении температуры
При отсутствии параметров «s», «r», «p»,«i» телефон заносится в память, но никак не используется.

DeletePhone — Удалить номер телефона.
Пример команды:

DeletePhone:+71234567891

Синтаксис команды:

DeletePhone — команда
: — разделитель
+71234567891 — номер телефона

EditMainPhone — Изменить параметры «s», «r», «p», «i» основного телефона, этот номер занесён в первую ячейку памяти.


Пример команды:

EditMainPhone:spri

Синтаксис команды:

EditMainPhone — команда
: — разделитель
srpi — параметры

RingTime — Длительность тревожного голосового вызова, параметр может иметь значение от 10 до 255 секунд.
Пример команды:

RingTime:40

Синтаксис команды:

RingTime — команда
: — разделитель
40 — длительность вызова составит 40 секунд, после чего будет вызван следующий абонент.

ModemID — Принудительная установка модели используемого модема. Возможные значения: 0 — автоопределение модема, 1 — M590, 2 — SIM800l, 3 — A6_Mini.

Пример команды:

ModemID:2

Синтаксис команды:

ModemID — команда
: — разделитель
2 — ID модема.

NetCheckTime — Интервал проверки регистрации модема в сети оператора в минутах, параметр может иметь значение от 1 до 60 минут. При значении 0 проверка отключена.
Пример команды:

NetCheckTime:10

Синтаксис команды:

NetCheckTime — команда
: — разделитель
10 — каждые 10 минут будет производиться поочерёдная проверка уровня сигнала сети или проверка регистрации модема в домашней сети оператора, то есть весь цикл проверки будет занимать 20 минут. В случае отсутствия сигнала или регистрации в домашней сети модем будет перезагружен.

TempCheckTime — Интервал автоматического обновления температуры, параметр может иметь значение от 1 до 60 минут.
Пример команды:

TempCheckTime:10

Синтаксис команды:

TempCheckTime — команда
: — разделитель
10 — каждые 10 минут будет производиться снятие показаний с датчика температуры.

LowTemp — Нижний порог температуры при достижении которого будет отправлено оповещение. Параметр может иметь значение от -50 до 125 и не может превышать или равняться значению параметра HighTemp.
Пример команды:

LowTemp:25

Синтаксис команды:

LowTemp — команда
: — разделитель
25 — температура

HighTemp — Верхний порог температуры при достижении которого будет отправлено оповещение. Параметр может иметь значение от -50 до 125 и не может быть меньше или равняться значению параметра LowTemp.

Пример команды:

HighTemp:60

Синтаксис команды:

HighTemp — команда
: — разделитель
60 — температура

WatchPowerTime — Время в минутах по истечении которого будет отправлено смс сообщение об отключении внешнего источника питания. Если внешнее питание будет восстановлено до истечения установленного времени, то сообщение не будет отправлено.
Пример команды:

WatchPowerTime:5

Синтаксис команды:

WatchPowerTime — команда
: — разделитель
5 — 5 минут до отправки смс сообщения

WatchPowerOn1 — включить контроль внешнего питания, смс сообщение об отключении внешнего питания будет отправлено при условии что включено оповещение при изменении температуры (GuardOn).

WatchPowerOn2 — включить контроль внешнего питания, смс сообщение об отключении внешнего питания в любом случае будет отправлено

WatchPowerOff — выключить контроль внешнего питания

BalanceNum — Изменение номера запроса баланса и обработка длины ответа запроса. Значение по умолчанию для Beeline: #100#L22.
Пример команды:

BalanceNum:#103#L24

Синтаксис команды:

BalanceNum — команда
: — разделитель
#103# — номер запроса баланса
L24 — Длина (len) пересылаемого ответа 24 символа, обрезаем спам из запроса баланса.

Reboot — перезагрузка устройства (только Arduino)

ResetConfig — сброс настроек на заводские установки

ResetPhone — удаление из памяти всех телефонных номеров

FullReset — сброс настроек, удаление из памяти всех телефонных номеров, восстановление значения по умолчанию команды BalanceNum.

GuardOn — включить оповещение при изменении температуры
GuardOff — выключить оповещение при изменении температуры

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

TestOn — включается тестовый режим.
TestOff — выключается тестовый режим.

LedOff — выключает светодиод режима ожидания.
LedOn — включает светодиод режима ожидания.

Money — запроса баланса.

ClearSms — Удалить из памяти все sms

ListPhone — вывод в монитор порта списка сохранённых в памяти телефонов

Memtest — тест энергонезависимой памяти устройства, все настройки устройства будут сброшены, аналогично команде FullReset.

ListConfig — вывод в монитор порта текущей конфигурации устройства.


Световая индикация

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

Мигает синим — температура ниже или равна нижней границе контроля, оповещение отключено.
Мигает зелёным — температура между нижней и верхней границей, оповещение отключено.
Мигает красным — температура выше или равна верхней границе контроля, оповещение отключено.

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

Светятся все светодиоды — возможно неисправен датчик температуры, необходима проверка.

Пусконаладочные работы или как этим пользоваться?!

Основным моментом после сборки является проверка EEPROM памяти устройства, для этого необходимо выполнить из консоли команду MemTest. Для доступа к консоли можно использовать Putty или монитор порта в Arduino IDE. В настройках необходимо указать нужный COM-порт и скорость порта 9600.

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

Лог консоли — MemTest


memtest
EEPROM: 1024B
Test passed.

GSM Temperature Alarm 2018.12.03-01

Deleting eepromconfig data.
Load default eepromconfig data.

Read eepromconfig:

RingTime: 40
Test: 0
Led: 1
Guard: 1
NetCheckTime: 0
TempCheckTime: 10
LowTemp: 10
HighTemp: 70
WatchPower
 Mode: 1
 Time: 0
ModemID: Autodetect

Delete balance data. 
Load default balance data.

Balance number: #100#
Length to return: 22

Deleting phone data.
Load default phone data.

Read array phone:
№ -> Phone -> s -> r -> p -> i
1 ->  -> 0 -> 0 -> 0 -> 0
2 ->  -> 0 -> 0 -> 0 -> 0
3 ->  -> 0 -> 0 -> 0 -> 0
4 ->  -> 0 -> 0 -> 0 -> 0
5 ->  -> 0 -> 0 -> 0 -> 0
6 ->  -> 0 -> 0 -> 0 -> 0
7 ->  -> 0 -> 0 -> 0 -> 0
8 ->  -> 0 -> 0 -> 0 -> 0
9 ->  -> 0 -> 0 -> 0 -> 0
10 ->  -> 0 -> 0 -> 0 -> 0

Detected ModemID: 2
Guard ON at boot.

Temperature: 47.81

Для дальнейшей настройки необходимо зарегистрировать основной номер, с которого в дальнейшем будет производиться настройка, для этого достаточно совершить голосовой вызов на номер устройства. Номер с которого был совершен вызов будет добавлен в первую ячейку памяти устройства, так же этому номеру автоматически будут добавлены параметры «s», «r», «p», «i», которые в случае необходимости можно изменить командой EditMainPhone.

Лог консоли — регистрация основного номера


Ring from: +7905xxxxxxx
Primary phone: +7905xxxxxxx

GSM Temperature Alarm 2018.12.03-01

Read eepromconfig:

RingTime: 40
Test: 0
Led: 1
Guard: 1
NetCheckTime: 0
TempCheckTime: 10
LowTemp: 10
HighTemp: 70
WatchPower
 Mode: 1
 Time: 0
ModemID: Autodetect

Balance number: #100#
Length to return: 22

Read array phone:
№ -> Phone -> s -> r -> p -> i
1 -> 7905xxxxxxx -> 1 -> 1 -> 1 -> 1
2 ->  -> 0 -> 0 -> 0 -> 0
3 ->  -> 0 -> 0 -> 0 -> 0
4 ->  -> 0 -> 0 -> 0 -> 0
5 ->  -> 0 -> 0 -> 0 -> 0
6 ->  -> 0 -> 0 -> 0 -> 0
7 ->  -> 0 -> 0 -> 0 -> 0
8 ->  -> 0 -> 0 -> 0 -> 0
9 ->  -> 0 -> 0 -> 0 -> 0
10 ->  -> 0 -> 0 -> 0 -> 0

Detected ModemID: 2
Guard ON at boot. 

Temperature: 47.88

Далее выставляем пределы температур и интервал опроса датчика температуры, теперь эти действия так же можно выполнить с помощью смс сообщения.

Лог консоли — настройка температуры


lowtemp:25
LowTemp is: 25

hightemp:50
HighTemp is: 50

TempCheckTime:5
TempCheckTime is: 5

Temperature: 47.94

Проверяем настройки командой info из консоли и через смс сообщение.

Лог консоли — вывод команды info


info
Temperature: 47.81
Current temperature: 47.81
Low: 25
High: 50
TempCheckTime: 5 min
Guard ON at boot.

СМС сообщение — вывод команды info

Основные настройки закончены, устройство готово к работе. В случае необходимости можно добавить ещё не более девяти номеров оповещения. Так же номера можно дублировать, при этом со всех дублей при добавлении будут автоматически сняты все признаки кроме «r» — оповещение голосовым вызовом.

Оповещение.

При изменении температуры выше или ниже заданных пределов, на номера с признаком «s» — будут отправлены смс сообщения с информацией о текущей температуре. Далее устройство совершит голосовые вызовы на все номера с признаком «r» и перейдёт в режим наблюдения с соответствующей световой индикацией. Следующее оповещение будет произведено только после нормализации температуры и последующим уходом температуры за указанные пределы. В случае отключения внешнего питания устройства на все номера с признаком «p» будет отправлено соответствующее уведомление. Номера с признаком «i» будут получать информационные сообщения о включении или отключении оповещения (следить или следить и оповещать), и номера телефона с которого было произведено действие.

Голосовой вызов на устройство с номера ранее занесённого в память переключит режим работы. Если включено оповещение и поступит вызов, устройство будет в переведено в режим наблюдения без оповещения, и наоборот. Голосовой вызов на устройство во время тревожного оповещения отменит оповещение голосовыми вызовами по всем ещё не оповещённым номерам.

Аппаратные баги
Если устройство зависает при отключении питания, смотрим сюда, полное обсуждение тут.
Если устройство «не понимает» смс команды, читать тут.

Список изменений

2018.12.03-01 — первая прошивка.

2018.12.09-01 — Добавлена проверка состояния датчика температуры. Если при включении устройства с датчика считывается температура 0.00 или во время работы с датчика температуры два раза подряд считывается температура 0.00, то будет отправлено смс оповещение и совершены тревожные голосовые вызовы, так же будут светиться все три светодиода. Если с датчика будет получена температура отличная от 0.00, устройство продолжит работу в штатном режиме. Спасибо dmitriynet.

2018.12.22-01 — Изменён принцип проверки состояния датчика температуры. Если при включении или во время очередного опроса датчика устройство не может его обнаружить, то будет отправлено смс оповещение и совершены тревожные голосовые вызовы, так же будут светиться все три светодиода. Если с датчика будет получена температура, устройство продолжит работу в штатном режиме. Спасибо dmitriynet.

2019.01.07-01 — Исправлен баг из-за которого неправильно вводилось отрицательное значение температуры. Спасибо magteplo.

На этом пока всё. Спасибо за внимание! 🙂

ESP8266 Wi-Fi термометр на несколько датчиков 18b20 через blynk


Ну что же , перейдем к списку нужных элементов для сборки проект : 
Плата ЕСП8266 http://ali.pub/3481fq 
Датчики температуры ds18b20 (в нужном количестве) http://ali.pub/3481j1 
Резистор 4.7 кОм для подтяжки по питанию http://ali.pub/3481nw 
Ну и провода для сборки (опционально, я бы лучше запаял для готового устройства)

Использовать буду именно цифровой датчик температуры 18б20 в герметичном капсуле, именно этот датчик максимально защищен от воздействия внешней агрессивной среды. Поддерживает диапазон измеряемых температур от -55 градусов до +125 и имеет хорошую точность .

Визуальная схема подключения датчиков к ЕСП8266 :


На рабочем столе это выглядит так : 



И небольшой нюанс, для большей стабильности работы датчика (на проводах около метра) ds18b20 на плате esp8266 я рекомендую подключать питание к линии +5 вольт вместо 3.3 . Для этого на плате ЕСП есть пин VV на нем выведено питание поступающее с Vin и USB т.е наши 5 вольт.

Когда уже все собрано,можно переходить к программной части.
Файлы и прошивки Прошивка и библиотеки
Скачиваем архив с файлом прошивки и библиотеками (если они у вас установлены, значит добавлять не нужное , если же код не компилируется то делаем как тут Добавление библиотек в среду ардуино ИДЕ  )
Если же у вас нет платы ESP8266 в среде ардуино ИДЕ и вы раньше с ними не работали , то сначала добавляем плату по этой инструкции http://www.electronica52.in.ua/proekty-arduino/nastrojka-arduino-ide-dlya-programmirovaniya-wifi-modulya-esp8266 

Дальше на смартфоне устанавливаем приложение Blynk с плеймаркета Установить Blynk

Дальше следуем шагам на скриншотах :
1.
Создать новый проект — выбрать плату ESP8266 

Так же получаем на почтовый ящик токен созданного вами проекта и
прописываем его в коде прошивки !!!!!

2.Добавить виджеты и настройки согласно скриншотам .

3.Загрузить скетч в плату ЕСП  (с уже прописанным токеном приложения именем сети и паролем от вашего вай-фай ) и подключить питание .

4.Проект завершен ))


➤ VK — https://vk.com/denis_geek


➤ VK — https://vk.com/club_arduino
➤ VK — https://vk.com/chinagreat
➤ VK — https://vk.com/solar_pover
➤ VK — https://vk.com/my_vedroid
➤ VK — https://vk.com/3dprintsumy 
➤ Youtube  — http://www.youtube.com/c/Denisgeek 

           

          ★ Моя партнёрка с Aliexpress ★

          http://ali.pub/1j9ks1 

          ★ Получай 10.5% скидку с любой покупки на Aliexpress! ★

          http://ali.pub/1lx67o

          ★ Полезное браузерное приложение для кэшбэка  ★

          Похожие статьи

          Arduino UNO как осциллограф

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

          Скачиваем программу Processing , после чего её устанавливать не нужно — она запускается с EXE-файла.

          ESP8266 карманный вай-фай джаммер

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

          Как это работает

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

          Установка и настройка RetroPie на Orange pi \ Raspberry Pi

          Хотите поиграть в видеоигры из детства? Танчики, Контра, Чип и Дэйл, Черепашки Ниндзя… Все эти игры ждут вас! Из данного руководства вы узнаете как просто и быстро собрать и настроить ретро-консоль на базе микрокомпьютера Raspberry Pi и сборки эмуляторов RetroPie.

          Теги: ESP8266 Wi-Fi термометр, 2 датчика 18b20, через blynk, esp8266 blynk ds18b20, termometr blynk, diy, iot, blynk, denis_geek, термометр с телефона, , blynk esp8266 dallas18b20, denis geek, сделай сам, вай-фай термометр блунк, вай-фай, термотер блунк

          Цифровой термометр DS18B20 и ARDUINO UNO

          Казалось бы, что может быть интересного и нового в измерении температуры при помощи Ардуино? Написаны сотни статей, объемом десятки мегабайт, может чуть меньше, а может и чуть больше скетчей… А вот еще и моя статья. Зачем? Честно говоря, я тоже думал, что вопрос этот «разжеван вдоль и поперек», пока сам не столкнулся с измерением температуры. А тут полезло. Что-то не работает, что-то работает не так, возникает масса вопросов, на которые ответы приходится «выцарапывать» перерывая половину интернета, причем не только русскоязычного. Данная статья, в отличие от моих прошлых статей на данном ресурсе гораздо более практичная, но начнем сначала. Зачем, собственно измерять температуру чем-то новым, когда термометров продается – на любой вкус и кошелек? А дело в том, что температуру, зачастую, приходится не только измерять, но потом, на основе полученных данных что-то делать, либо просто регистрировать с целью отслеживания изменений. Соединив, при помощи Ардуино, термодатчик с релейным блоком получим простейший терморегулятор, а если данный терморегулятор сможет отслеживать температуру по нескольким точкам (зонам) и действовать по определенному алгоритму получим довольно серьезный прибор, промышленный аналог которого стоит сопоставимо со стоимостью неплохого ноутбука. Однако, целью данной статьи не является создание заумно-сложных устройств. Цель в другом — предложить новичку простое, проверенное на практике, решение для измерения температуры. Также, как и предыдущие статьи эта будет состоять из частей. В каждой из которых будет рассмотрен свой вопрос. Части будут идти по возрастанию сложности.

          Часть первая. Простейшая, но тоже полезная

          Итак, от слов к делу! Для реализации данного проекта на первом этапе нам понадобится цифровой термодатчик DS18B20, ARDUINO UNO, резистор на 4,7 кОм (мощность особого значения не имеет, от 0,125 до 2 Вт целиком подходит, но имеет значение точность, чем точнее – тем лучше), кусочек 3-жильного провода (и отдельные проводки на этапе эксперимента тоже подойдут), а еще — несколько штырьков для платы. Хотя и без них тоже можно, если аккуратно, конечно. Выбор данного датчика не случаен. Дело в том, что он может отслеживать температуру в диапазоне от -55оС до +125оС с точностью в основной части диапазона 0,5оС, что вполне хватает для управления, как бытовым отоплением, так и разнообразными морозильными и холодильными установками, а также банями, саунами, теплицами, инкубаторами, рассадниками и прочим. Напоминаю, что ARDUINO UNO можно свободно приобрести здесь: arduino-kit.com.ua/uno-r3-new.html или здесь: arduino-kit.com.ua/arduino-leonardo-original-italiya-new-rev3.html , термодатчик DS18B20 — arduino-kit.com.ua/18b20-sensor-datchik-temperatury-dlya-arduino.html , хотя лично у меня – такой:arduino-kit.com.ua/cifrovoy-datchik-temperatury-odnozhilnyy-ds18b20.html достоинство моего — малые размеры, сопоставимые с размерами кабеля. Недостатки – отсутствие платы, что в некоторых условиях отрицательно сказывается на удобстве монтажа и жизнеспособности датчика. Также – у датчика arduino-kit.com.ua/18b20-sensor-datchik-temperatury-dlya-arduino.html встроен резистор и больше никаких резисторов паять не нужно, зато исчезает возможность подключить несколько датчиков «цепочкой». Подключение датчика к Ардуино видно на Рис. 1 и указано в Таблице 1. На термодатчике определить контакты просто. Нужно взять его так, чтобы смотреть на срез с цифрами, а ножки были внизу. Крайняя левая ножка будет GND, средняя DQ, а крайняя правая VDD.  

          Таблица 1.

          Пин Ардуино Уно

          Пин DS18B20

          Примечание

          GND

          GND

          «-»

          +5V

          VDD

          +5V, также подпаивается одна ножка резистора 4,7 кОм.

          10

          DQ

          Цифровой ввод, также подпаивается вторая ножка резистора 4,7 кОм.


          Рисунок 1. Подключение одного термодатчика.

          На рисунке видно, что было использовано два резистора. Это связано с тем, что найденный мной резистор с маркировкой «4К7», на самом деле имел довольно высокую погрешность, которую и пришлось компенсировать вторым резистором. Общее сопротивление данной сборки составило 4,695 кОм, что я считаю вполне приемлемым. Также на рисунке можно видеть, что датчик не подпаян непосредственно к проводам (обрезок шлейфа), а вставлен в разъем. Сделано это было из соображений развития эксперимента. Паять данные датчики настоятельно рекомендуется. Сам скетч также получился довольно компактным:
          Файл DS18B20.ino

          Всего 14 строчек кода с комментариями. Любому новичку будет по силам разобраться. В результате работы программа выдаст нечто подобное:

           
          Рисунок 2. Результат работы с одним датчиком.

          Часть вторая. Немного усложненная.

          Усложним мы эту часть тем, что добавим еще один датчик. Предположим, что нам нужно измерять температуру на улице и в помещении. Для этого всего лишь допаиваем один датчик «в цепочку». Очень напоминает параллельное подключение. Знатоки электрики поймут, о чем я. Но отличие есть: в данном случае выводы от центрального провода должны быть как можно короче. 

           
          Рисунок 3. Плата с двумя датчиками.

          Скетч вырос всего на 3 строчки. Теперь в нем 17 строк:
          Файл DS18B20_2.ino

          Результаты работы этого скетча видно на Рисунке 4. 

           
          Рисунок 4. Работа с двумя датчиками.

          Часть третья. Заключительная.

          А теперь подключим к Ардуино светодиод, который будет загораться при достижении определенной температуры. Такой себе «пороговый сигнализатор». Для этого нужен обычный светодиод и токоограничивающий резистор. Мне под руку попался на 100 Ом, его я и использовал, подключив к 7-у контакту Ардуино. Длинную ножку светодиода (анод) подпаиваем к резистору, а короткую (катод) подключаем к контакту GND Ардуино. Должно получиться, примерно, как на рисунке 5. 

          Скетч также вырос совсем не на много:
          Файл DS18B20_2_plus_diod.ino

          Работа данной программы на компьютере отображается точно также, как показано на Рисунке 4. Естественно переменной sensors.getTempCByIndex(1) можно оперировать в очень широких пределах и управление светодиодиком лишь самый простой пример из всех возможных.

          И в заключение данной статьи еще один шаг. Сейчас я расскажу, как к одной Ардуинке подключить несколько «гирлянд» данных устройств. Дело в том, что длина «гирлянды» не может быть бесконечной, более того – она очень сильно ограничена. В идеальных условиях – 300 метров, но создание «идеальных» условий – довольно дорогостоящее удовольствие. В реальных условиях – не рекомендуется превышать 10 метров. Для обычного «комнатного» термометра этого более чем достаточно, но если речь идет о каком-либо более серьезном оборудовании – этого катастрофически мало. Тем более, что для стабильной работы необходимо, чтобы датчики располагались как можно ближе к проводникам шины – «гирляндой». Отводить, конечно, тоже можно, но точность и помехозащищенность в этом случае будут крайне низкими. Итак, подключаем мы несколько «гирлянд» именно для того, чтобы собрать информацию с большого числа точек, при этом сохранив достаточную точность и помехозащищенность. Добавляем контакты согласно таблице 2:

          Пин Ардуино Уно

          Пин DS18B20

          Примечание

          GND

          GND

          «-»

          +5V

          VDD

          +5V, также подпаивается одна ножка резисторов 4,7 кОм.

          10

          DQ

          Цифровой ввод, также подпаивается вторая ножка резистора 4,7 кОм.

          8

          DQ

          Цифровой ввод, также подпаивается вторая ножка резистора 4,7 кОм.

          Как видно из таблицы – ничего сложного нет, точно такая же шина, только на другой цифровой вод. Не стал паять на 9-й контакт только из соображений удобства и скорости пайки.
          Скетч:
          Файл DS18B20_2_plus_1.ino

          Вряд ли скетч нуждается в излишних комментариях.

          Результат работы скетча выглядит так:

           
          Рисунок 6. Работа одновременно двух линий датчиков.

          А плата с подключенными двумя линиями выглядит так: 

           
          Рисунок 7. Плата с двумя шинами.

          Из рисунка видно, что резистор 4,7кОм для повышения точности также выполнен составным.  

          Библиотеки, примененные для написания скетчей рассмотренных в статье находятся здесь: 
          OneWire.h
          DallasTemperature.h 

          Обзор подготовил Павел Сергеев

          Цифровой термометр на базе Arduino

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

          [adsense1]

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

          Выберите следующий набор проектов Arduino, которые вы хотите изучить, в Electronicshub : Проекты Arduino »

          Для всех вышеупомянутых и многих других приложений термометры часто используются для измерения температуры.

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

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

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

          Схема

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

          Необходимое оборудование

          • Arduino Uno [Купить здесь]
          • Датчик температуры LM35
          • ЖК-дисплей 16X2 [Купить здесь]

          [adsense2]

          Описание компонента

          LM35

          LM35 представляет собой прецизионный стоградусный датчик температуры. Выходное напряжение датчика прямо пропорционально температуре в градусах Цельсия. LM35 можно использовать в диапазоне от -55 0 C до +150 0 C с точностью +/- 0,75 0 C.

          При комнатной температуре точность +/- 0,25 0 С. Выходное напряжение LM35 изменяется на 10 мВ/ 0 C т.е. на каждые 1 0 C изменения температуры выходное напряжение изменяется на +/- 10 мВ. LM35 представляет собой ИС с 3 выводами, и рисунок, изображающий выводы, показан ниже.

          Аналогичным прецизионным датчиком температуры является LM34, который можно использовать для измерения температуры в градусах Фаренгейта. Его можно использовать для получения температуры непосредственно в градусах Фаренгейта.

          Схема цифрового термометра

          Датчик температуры LM35 используется в этом проекте. Выход датчика прямо пропорционален температуре, но в аналоговой форме. Следовательно, выход LM35, то есть контакт 2, подключен к аналоговому входу A0 Arduino.

          Поскольку это цифровой термометр, нам нужно преобразовать аналоговые значения в цифровые и отобразить результат на дисплее, подобном ЖК-дисплею. В этом проекте мы использовали ЖК-дисплей 16×2. Контакты 1 и 2 ЖК-дисплея подключены к земле и источнику питания соответственно.

          Для управления контрастностью дисплея контакт 3 ЖК-дисплея подключается к контакту потенциометра 10 кОм. Другие клеммы POT подключены к источнику питания и земле. Контакты 15 и 16 ЖК-дисплея используются для включения подсветки ЖК-дисплея.

          Подключаются к питанию и заземлению соответственно. Чтобы отобразить информацию на ЖК-дисплее, нам нужны 4 вывода данных ЖК-дисплея. Контакты 11–14 (D4–D7) подключены к контактам 5–2 Arduino. Контакты 4, 5 и 6 (RS, RW и E) ЖК-дисплея являются контактами управления.

          Контакт 4 (RS) ЖК-дисплея подключен к контакту 7 Arduino. Контакт 5 (RW) соединен с землей. Контакт 6 (E) подключен к контакту 6 Arduino.

          Рабочий

          В этом проекте разработан высокоточный цифровой термометр. Он состоит из простых компонентов, таких как Arduino, датчик температуры LM35 и ЖК-дисплей. Работа схемы очень проста и объясняется ниже.

          Датчик температуры, т.е. LM35, постоянно контролирует температуру в помещении и выдает аналоговое эквивалентное напряжение, прямо пропорциональное температуре.

          Эти аналоговые данные передаются Arduino через A0. В соответствии с написанным кодом Arduino преобразует это аналоговое значение напряжения в цифровые показания температуры. Это значение отображается на ЖК-дисплее.

          Скорость изменения температуры может быть запрограммирована в коде. Вывод, отображаемый на ЖК-дисплее, является точным значением комнатной температуры в градусах Цельсия.

          Код

          Примечание

          • Этот проект может использоваться для контроля температуры в помещении в диапазоне -55 0 C до +150 0 C с очень точными показаниями.
          • Используемый датчик температуры (LM35) представляет собой прецизионный стоградусный датчик температуры. Если показания температуры требуются в градусах Фаренгейта, то можно использовать либо датчик температуры Фаренгейта (LM34), либо просто изменить код для преобразования градусов Цельсия в градусы Фаренгейта.
          • Термометр может питаться от батареи 9 В, что делает его портативным устройством, которое можно легко перемещать между разными комнатами или местами.
          • Может использоваться в транспортных средствах для определения обледенения дороги.
          • На основании показаний термометра системы кондиционирования, отопления и охлаждения могут управляться как вручную, так и автоматически.

          Бесконтактный термометр на базе Arduino с регистратором температуры на SD-карте — Виды деятельности

          Обзор:

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

          Предлагаемый бесконтактный термометр может измерять температуру тела человека в области лба и записывать ее в текстовый файл на SD-карту с указанием времени и температуры. Если у человека аномальная температура тела, машина подаст звуковой сигнал.

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

          Схема:

          Описание схемы:

          Предлагаемая схема состоит из следующих компонентов и может быть собрана на печатной плате для надежной работы:

          • Датчик температуры MLX

            бесконтактный.

          • Модуль SD-карты.
          • ЖК-дисплей I2C.
          • DS3231 / DS1307 Модуль часов реального времени.
          • Ультразвуковой датчик.
          • Ардуино.
          • Зуммер 5 В постоянного тока.

          Давайте кратко рассмотрим каждый модуль, представленный в проекте.

          Бесконтактный датчик температуры MLX

          :

          MLX

          — это инфракрасный бесконтактный датчик температуры, который является сердцем этого проекта. Датчик может измерять температуру объекта от -70 до +380 градусов по Цельсию, что более чем достаточно для нашего проекта, датчик может работать при температуре окружающей среды от -40 до +125 градусов по Цельсию.

          MLX

          может работать при напряжении от 3,3 В до 6 В, если ваш датчик поставляется с коммутационной платой, как показано на рисунке выше, потому что коммутационная плата поставляется с регулятором напряжения. MLX9Датчик 0614 работает на шине I2C, что упрощает взаимодействие с Arduino, и это можно сделать, просто подключив линии SDA и SCL к Arduino.

          Эффективное измеряемое расстояние между объектом и датчиком составляет всего несколько сантиметров, чтобы этот датчик работал в реальных ситуациях, нам необходимо увеличить его диапазон путем калибровки/компенсации полученного необработанного значения температуры от датчика (в программном коде ). Мы постараемся понять это в более поздней части этого поста.

          Модуль SD-карты:

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

          Этот модуль адаптера SD-карты регулирует правильное напряжение питания и напряжение сигнала для SD-карты. Этот модуль состоит из встроенного регулятора 3,3 В и микросхемы сдвига уровня, которая отвечает за преобразование сигнала 5 В от Arduino в сигнал 3,3 В на SD-карту.

          Этот модуль взаимодействует с Arduino через протокол SPI, и нам необходимо установить четыре линии связи между Arduino и этим модулем SD-карты: MISO, MOSI, SCK и CS.

          Модуль часов реального времени:

          В предлагаемом проекте используется модуль RTC DS3231 или DS1307 (оба совместимы) для регистрации правильного времени с температурой, когда человек сканирует свое тело с помощью этой машины.

          Модуль RTC отвечает за отслеживание точного времени, он также поставляется с резервной батареей, которая поддерживает работу RTC даже при отключении основного источника питания.

          Модуль RTC работает по протоколу I2C аналогично датчику температуры и также подключается к тому же проводу шины.

          Как установить время на RTC:

          • Откройте Arduino IDE > File > Examples > DS1307RTC > SetTime > загрузите этот код, и открытый серийный монитор и время будут установлены на RTC.

          Ультразвуковой датчик:

          В проекте используется ультразвуковой датчик для измерения расстояния между MLX9Датчик 0614 и человек. Показания температуры фиксируются, когда человек находится на правильном расстоянии.

          Расстояние, на котором регистрируется измерение температуры, составляет от 12,5 см до 14 см (от датчика). Таким образом, когда кто-то приближает лоб к датчику температуры, он фиксирует показания между этими двумя фиксированными точками.

          Необходимо измерять температуру на фиксированном расстоянии, поскольку значение температуры MLX

          изменяется при изменении расстояния между датчиком и объектом.

          MLX

          должен быть установлен близко к ультразвуковому датчику, чтобы получать достоверные показания температуры, как показано на рисунке выше.

          ЖК-дисплей I2C:

          Мы используем модуль адаптера дисплея I2C, чтобы уменьшить количество проводов, соединяющих Arduino с ЖК-дисплеем, чтобы мы могли легко построить схему. Нам просто нужно подключить четыре провода: SDA, SCL, Vcc и GND, иначе мы будем подключать 16 проводов.

          С помощью отвертки Phillips отрегулируйте контрастность дисплея и подключите перемычку, чтобы включить подсветку ЖК-дисплея.

          Зуммер:

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

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

          Программный код: https://github.com/electronics-project-hub/contactless-thermometer/blob/main/contactless_thermometer.txt

          Прототип изображение:

          Калибрация:

          . После того, как вы построите схему, следующим шагом будет калибровка машины для получения правильной температуры. Это можно сделать, выполнив следующие шаги, и вам понадобится ИК-термометр в качестве эталонного термометра:

          1) Загрузите код со следующими параметрами: 

          Установите «calib_factor» на 1,00 и «alert_temp» на 37,0.

          2) Аккуратно поднесите лоб к датчику и снимите 5 показаний температуры.

          3) Теперь снимите 5 показаний температуры с помощью инфракрасного термометра.

          4) Теперь рассчитайте среднее значение температуры, считанной с контура, и среднее значение температуры, считанное с ИК-термометра.

                     (Temp1 + Temp 2+ …….Temp 5) / 5 = среднее значение

          5) Теперь разделите оба средних значения, как показано на рисунке:

          Ср. Значение ИК-термометра / Среднее значение значение температуры машины = калибровочный коэффициент

          6) Теперь введите рассчитанный калибровочный коэффициент в переменную «calib_factor» в программном коде и загрузите.

          7) Теперь снимите несколько показаний с помощью схемы, и показания на дисплее будут близки к показаниям ИК-термометра.

          8) Теперь ваша машина готова к использованию, и каждое показание температуры регистрируется в текстовом файле на SD-карте, как показано ниже:

          Примечание. Содержание и изображения в этой статье предоставлены автором. Мнения, выраженные участниками, являются их собственными, а не мнениями PCBWay. Если есть какие-либо нарушения прав на содержание или изображения, пожалуйста, свяжитесь с нашим редактором ([email protected]) для удаления.

          Автор Blogthor.

          Создание графического термометра | Журнал Nuts & Volts


          » Перейти к дополнительным материалам

          Используйте Arduino для измерения и отображения графиков изменения климата!

          Я живу на Среднем Западе США, где каждую зиму становится холодно. Те из нас, кто живет в этом регионе, сосредотачиваются — осмелюсь сказать, одержимы — температурой наружного воздуха и ближайшими прогнозами и тенденциями.

          Недавно я начал искать способы улучшить и модернизировать свою «технологию теплового мониторинга» и придумал этот простой, легкий в сборке термометр для построения графиков трендов. Этот проект оснащен большим цветным графическим дисплеем, на котором текущая температура отображается большими жирными цифрами. Более того, он также отображает тренды температуры за последние 4, 8, 16 или 24 часа.

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

          Этот проект объединяет ЦП Arduino (центральный процессор), несколько датчиков температуры/влажности и модуль часов реального времени (RTC) с большим (3,5 дюйма) цветным ЖК-дисплеем с высоким разрешением для создания забавного и полезного графического изображения. термометр.» Результатом этих усилий стало простое в сборке устройство, имеющее следующие особенности и функции:

          • Предоставляет устройство для наблюдения за погодой, которое тесно связано с местными условиями: Ваш задний двор.
          • Полностью автономная работа: никаких сложностей с Wi-Fi или Интернетом.
          • Простота и удобство сборки: используются доступные модули и детали.
          • Легко программируется и настраивается: интегрированная среда разработки (IDE) Arduino спешит на помощь!
          • Показывает внутреннюю и наружную температуру и влажность большими яркими цифрами: большой, красочный, легко читаемый дисплей.
               Пользовательский крупный шрифт обеспечивает отличное качество отображения.
          • Наглядно показывает погодные тренды: отображает изменения температуры за предыдущие 4, 8, 16 или 24 часа.
          • Включает в себя цифровые часы: показывает день, дату и время, что упрощает чтение графиков трендов с отметками времени.
          • Компактный: помещается в небольшой напечатанный на 3D-принтере корпус или монтируется в корпус собственной конструкции.
          • Гибкая базовая платформа и корпус могут использоваться для других проектов и приложений.
               Этот проект может легко превратиться в полнофункциональные графические часы день-дата-время.
               Свободный слот для SD-карты на ЖК-дисплее можно использовать для добавления новых функций (долговременная регистрация данных или ??).

          Основной дисплей

          Дисплей этого прибора показан на рис. 1 .

          РИСУНОК 1. Графический дисплей термометра.


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

          Самое интересное! Отображается графический график зависимости температуры от времени, показывающий недавние тренды температуры.

          Вертикальная ось Y может быть настроена на C° или F°, а горизонтальная ось X представляет время точно так же, как осциллограмма. Пользователь может нажать одну кнопку, чтобы выбрать периоды «обратного просмотра» в 4, 8, 16 или 24 часа.

          Как видите, часовые метки Time-of-Day обозначают горизонтальную ось.

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

          Доступность больших (3,5 дюйма) недорогих цветных ЖК-дисплеев с разрешением 480×320 стала основной движущей силой этого проекта. Эти высококачественные ЖК-дисплеи теперь легко доступны по цене от 8 до 12 долларов и делают яркие, красочные цифровые показания, а также графическое изображение с высоким разрешением очень доступными. Кроме того, эти дисплеи подключаются непосредственно к плате Arduino Uno или Mega 2560 (9).0015 Рисунок 2 ) и полностью поддерживаются программными библиотеками Arduino IDE.

          РИСУНОК 2. Недорогой ЖК-дисплей подключается непосредственно к Arduino Mega.


          Какой процессор: Uno или Mega?

          На первый взгляд, скромные требования к вводу-выводу этого проекта могут быть легко решены процессорами Arduino Uno или Mega. Тем не менее, несколько быстрых вычислений показывают, что для моей реализации цель хранения и отображения данных о температуре за 24 часа потребует около 3,2 КБ оперативной памяти.

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

          По этим причинам Uno с 2 КБ ОЗУ и 32 КБ программной памяти не соответствует нашим потребностям. Тем не менее, Mega 2560 с 8 КБ ОЗУ и 256 КБ памяти для программ прекрасно отвечает всем требованиям!

          Датчики

          Я начал эту разработку, используя некоторые «однопроводные» цифровые датчики температуры 18B20, которые были у меня под рукой. Хотя они отлично работали, я обнаружил, что I 2 Однопроводные датчики DHT21 C могут предоставлять данные о температуре и влажности всего за 3,50 доллара США за штуку.

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

          Часы и четырехкнопочная панель управления

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

          Схема

          Полная схема графического термометра показана на рис. 3 .

          РИСУНОК 3. Полная схема графического термометра Arduino.


          При питании от простой настенной розетки Arduino или зарядного устройства для сотового телефона на 5 В пользователь взаимодействует с прибором с помощью простого набора кнопок.

          Если у вас уже есть запасная плата Mega, блок питания и несколько рутинных предметов из коробки, вы потратите менее 25 долларов на добавление цветного графического ЖК-дисплея (~ 10 долларов), модуля RTC ( ~ 2 доллара США), датчики (~ 3,50 доллара США каждый) и массив кнопок (~ 2 доллара США).

          Если у вас нет доступа к 3D-принтеру или вы не хотите изготавливать корпус самостоятельно, полный набор деталей корпуса, напечатанных на 3D-принтере, можно приобрести в магазине Nuts & Volts Junk Box.

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

          Проверенные библиотеки поддержки используются для управления интерфейсом RTC, сенсорным интерфейсом DHT21, цветным графическим ЖК-дисплеем и устранением дребезга кнопок. Их необходимо загрузить и добавить в библиотеку IDE. Исходный код Arduino для графического термометра находится в загружаемом материале. Вот несколько основных моментов, которые помогут вам лучше понять детали программы.

          Прежде всего, как обычно для проектов Arduino, библиотеки устройств, несколько констант конфигурации и некоторые ключевые переменные данных инициализируются в подпрограмме Setup() .

          Затем начинается основной цикл ( Рисунок 4 ), который повторяется по следующему списку задач:

          1.  Обновление отображения времени суток один раз в минуту.
          2.  Считать датчики и обновлять дисплеи каждые две секунды.
          3.  Раз в минуту добавлять новое значение в память трендов.
          4.  Проверить нажатия кнопок оператором.
               • Переход к процедуре Set-Clock при нажатии кнопки PB1 (+).
               • Изменить период тренда, если нажать кнопку PB3 (Далее).
          5.  Обновлять и перерисовывать график тренда раз в минуту.

          РИСУНОК 4. Основной контур().


          Сохранение значений температуры в памяти трендов

          Показания температуры с плавающей запятой (°C) извлекаются из каждого датчика DHT21 каждые две секунды. Наружное показание преобразуется в 16-битное целое число со знаком в единицах «десятые доли градуса Цельсия» для включения в целочисленный массив памяти тенденций, Tданные[ ] . Tdata[ ] рассчитан на 1530 элементов и рассчитан на 25,5 часов чтения наружной температуры.

          Раз в минуту указатель индекса глобального массива GBL_TdataNewPtr увеличивается, а текущее показание температуры наружного воздуха сохраняется в Tdata[GBL_TdataNewPtr] . Таким образом, указатель GBL_TdataNewPtr проходит через все 1530 ячеек массива Tdata[ ] , заполняя его показаниями до тех пор, пока он не удержит 1530 минут (25,5 часов) данных.

          Когда достигнут конец массива, GBL_TdataNewPtr сбрасывается обратно в ноль, таким образом, циклически возвращаясь к первому местоположению массива. Для правильной работы GBL_TdataNewPtr при достижении границ конечной точки массива используется несколько простых ограничивающих диапазон тестов «если». При таком подходе видно, что каждое новое показание температуры, добавляемое в Trend-Memory , автоматически удаляет и заменяет самое старое показание в Tdata[ ] 9массив 0317.

          В качестве примечания: при запуске программы (т. е. устройство подключено к сети переменного тока или нажата кнопка сброса ЦП) каждый элемент Tdata[ ] инициализируется значением, определенным как «NoData» (const int NoData = 9999;). Это значение игнорируется при построении графиков трендов и предохраняет ошибочные, случайные значения включения питания от загрязнения графика трендов.

          Создание графика тренда

          Чтобы построить график тренда, нам нужно преобразовать сохраненные показания температуры в координаты точки XY на ЖК-дисплее. Рисунок 5 показывает, что ось X нашего графика тренда представляет Время, а ось Y представляет Температуру.

          РИСУНОК 5. Данные тренда хранятся в циклическом массиве данных.


          Чтобы построить наш график, нам нужно преобразовать ЗНАЧЕНИЯ температуры в координаты Y для отображения. Точно так же мы должны преобразовать каждый указатель INDEX массива в соответствующую координату X. Это могло бы быть сложной задачей, если бы не удобная функция Arduino map(…) . Как показано на Рисунок 6 , эта функция преобразует входное значение ( In_Value ) в выходное значение ( Out_Value ) с использованием линейной прямолинейной передаточной функции. Переданные параметры In_Low , In_Hi , Out_Low и Out_Hi определяют уравнение прямой линии с соответствующим наклоном и смещением. Затем функция принимает In_Value в «десятых долях градуса» и возвращает сопоставленное Out_Value в координатах пикселей по оси Y.

          РИСУНОК 6. Функция карты преобразует данные для построения графика.


          Масштабирование графика по оси Y

          Чтобы лучше визуализировать тренды и подчеркнуть даже небольшие изменения температуры, мы выполняем автоматическое «масштабирование по оси Y» каждый раз, когда рисуется новый график трендов. Для этого данные для построения графика быстро предварительно сканируются, чтобы найти значения MaxTemp (самое высокое) и MinTemp (самое низкое) в наборе данных графика.

          Имея эти ограничения, график оси Y можно «центрировать» относительно средней точки этих двух пределов. Затем общий «прирост» графика корректируется таким образом, чтобы 9Значения 0316 MaxTemp отображаются в самом верху графика или рядом с ним, а значения MinTemp — в самом низу графика или рядом с ним.

          Для этого ограничения MaxTemp/MinTemp используются для управления значениями map(…) In-HI/In_Low . Установив Out_Low в нижнюю координату Y графика, а Out_HI в верхнюю координату Y, функция map(…) настроена на предоставление полностью масштабированной координаты Y для каждого значения температуры, которое мы график.

          Масштабирование графика оси X

          Также необходимо правильно масштабировать и отображать ось X. Этот процесс немного сложнее, так как пользователь может выбрать период графика тренда в 4, 8, 16 или 24 часа. Нам также бросает вызов «циклический характер» массива памяти трендов Tdata[ ] . Чтобы масштабировать X, нам нужен алгоритм, который будет «выбирать вишни» и извлекать только 380 точек, которые нам нужно вывести на экран из Tdata[ ] «базы данных» из 1530 показаний.

          Это делается путем скачкообразного перехода через массив данных тренда с определенными шагами, чтобы выбрать только показания температуры, которые относятся к периоду времени, который мы показываем на нашем графике. Значение « Skip_Step_Size » вычисляется, как показано на рис. 7 .

          РИСУНОК 7. Формула масштабирования оси X.


          Чтобы проследить график, мы всегда начинаем рисовать с правой стороны экрана, начиная с GLB_TdataNewPtr — самый новый и самый последний сохраненный элемент массива. По идее, мы затем продвигаемся от правого края экрана к левому краю экрана, пиксель за пикселем, многократно вычитая значение Skip_Step_Size из GLB_TdataNewPtr .

          Таким образом, мы «отправляемся назад во времени», чтобы извлечь и отобразить сохраненные значения истории температуры по мере продвижения. Мы продолжаем делать это до тех пор, пока не отобразим все положения оси X нашего графика (около 380 точек). Если вы обратите пристальное внимание во время обновления графика, вы увидите, что график действительно рисует на экране справа налево.

          Линии между точками

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

          Задача рисования больших символов

          Подпрограммы графического рисования, такие как fillRect(…) , drawLine(…) , drawPoint(…) , print(…) и другие предоставляются графической библиотекой ЖК-дисплея и используются во всей программе для создания нашего готового дисплея. К сожалению, сам модуль ЖК-дисплея довольно прост и не включает в себя множество встроенных функций рисования линий, печати текста или других функций аппаратного ускорения графики.

          Это означает, что основной процессор (наш Mega) должен выполнять большую часть работы. Вывод красивого текста на экран требует особенно больших вычислительных ресурсов. Рисунок 8 показывает высокоуровневые шаги, необходимые для «печати» показаний температуры на ЖК-экране.

          РИСУНОК 8. Обзор «печати» текста на ЖК-дисплее.


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

          РИСУНОК 9. Детали печати текста.


          Наконец, ЦП должен записать каждый символьный шаблон «пиксели переднего плана» в память ЖК-дисплея. Поскольку для выполнения каждого из этих действий требуется много циклов процессора, медленные (по сегодняшним меркам) часы Mega с частотой 16 МГц заметно замедляют работу.

          Хотя процессы выполняются достаточно быстро для символов небольшого размера (т. е. 10-точечных шрифтов), заметно медленнее формируются большие цифры наших основных показаний температуры. Поскольку мы обновляем эти значения каждые пару секунд, трудно не заметить мигание, которое они вызывают на этих дисплеях!

          Что можно сделать, чтобы ускорить процесс?

          На рис. 9 показано, что самый простой способ вывести число на экран — это просто прочитать новое значение температуры, отформатировать его для печати, а затем бездумно «вывести» его целиком на ЖК-экран. Ваш смартфон или настольный/ноутбук так быстро выполняет эти шаги, что вы даже не успеваете оценить все происходящее.

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

          Например, если значение температуры изменяется с 39,4 до 39,8 градусов, нам действительно нужно обновить и изменить только один символ; то есть превратить 4 в 8.

          Избегая ненужной перезаписи «3», «9» и «.», мы можем эффективно обновлять отображение в три раза быстрее. По сути, если температура стабильна и не меняется, мы ничего не пишем на экран!

          Предваряя процесс записи экрана Новый символ по сравнению с Предыдущий символ ( Рисунок 10 ), мы можем избежать перезаписи неизменного текста.

          РИСУНОК 10. Улучшенная схема «Печатать строку на ЖК-дисплей».


          Этот метод доказал свою эффективность и значительно улучшил внешний вид инструмента. Это довольно просто сделать, и требуется всего несколько байтов ОЗУ, чтобы «запомнить» то, что мы вывели на экран во время предыдущего прохода основного цикла .

          Проблемы сборки и упаковки

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

          Кроме того, ЖК-модуль препятствует доступу к контактам ЦП, которые нам нужны для подключения к датчикам, модулю RTC и кнопкам. Кто бы мог подумать! Вот что сработало для меня.

          Дизайн корпуса

          Поскольку я всегда ищу проекты, оправдывающие покупку моего 3D-принтера, я всегда думал о печатном корпусе для этого проекта. С этой целью я использовал SolidWorks, чтобы смоделировать все внутренние детали и придумать конструкцию корпуса, показанную на рис. 11 . Разъемы на задней стороне корпуса идут к датчикам температуры/влажности. Примечание: Я решил оставить внутренний датчик температуры/влажности снаружи корпуса, чтобы тепло от электроники не влияло на показания в помещении.

          РИСУНОК 11. Общий вид корпуса .


          На рис. 12 показаны детали для 3D-печати, из которых состоит корпус проекта (пять уникальных элементов, всего семь штук для печати). Внутренняя рамка CPU-LCD обеспечивает средства для крепления LCD/CPU к передней панели. Вы можете распечатать детали самостоятельно или приобрести набор из Nuts & Volts Junkbox .

          РИСУНОК 12. Детали корпуса, напечатанные на 3D-принтере (вид сзади).


          Я напечатал все детали нитью PLA и добился очень хорошей точности размеров и подгонки деталей. Как напечатано, на задней панели есть вырезы для двух портов трехконтактных разъемов датчиков с дополнительной парой выбивных элементов, если вы хотите добавить больше датчиков.

          Стыковка деталей корпуса и их сборка

          Подробные этапы сборки, показывающие, как собирается весь проект, приведены в , рис. 13 .

          РИСУНОК 13. Детали корпуса и окончательной сборки.


          Как видно, плата ЦП крепится к раме ЦП с помощью 4-40 винтов ( Рисунок 13_1 ). После печати отверстия между ЦП и рамой легко нарезаются с помощью стандартного ручного метчика 4-40. Подузел рамы CPU-LCD присоединяется к резьбовым «выступам», расположенным на задней стороне передней панели.

          Вместо использования ручного метчика я обнаружил, что резьбу можно легко нарезать, осторожно вкручивая крепежный винт 4-40 x 0,25 дюйма в каждую бобышку. Просто идите медленно и держите винт прямо и верно.

          Благодаря самоклеящейся подложке На рис. 13_3 показано, что мембранный переключатель 1×4 легко крепится к передней панели. Я раскрашиваю распечатанные легенды кнопок на бумажных этикетках, чтобы создать соответствующие этикетки для кнопок. Слой прозрачной ленты, нанесенный поверх новых легенд, повысит их износостойкость.

          В качестве альтернативы мембранному переключателю можно использовать дискретные кнопочные переключатели или даже полностью отказаться от механических переключателей, купив модуль ЖК-дисплея с прикрепленным сенсорным экраном. Сенсорные ЖК-дисплеи Uno/Mega с такой же механической компоновкой можно легко найти всего на несколько долларов дороже, чем бессенсорная модель, которую я использовал.

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

          Две ножки наклоняемой подставки собираются с помощью 4-40 винтов (требуется больше резьбы!), а затем крепятся к задней панели с помощью 4-40 крепежных винтов через вентиляционные прорези в нижней части корпуса. Гайки на задней стороне вентиляционных отверстий завершают крепление ( Рисунок 13_4 ). Обратите внимание на рисунок, что угол наклона можно легко настроить после запуска проекта.

          Печатная плата интерфейса датчика (прототип печатной платы) крепится к задней панели четырьмя саморезами № 4 x 1/4 дюйма ( Рисунок 13_4 ). Хотя я включил файлы Gerber для печатной платы интерфейса разъема датчика, эта плата настолько проста, что ее можно изготовить, используя небольшой кусок материала прототипа платы размером 0,1 x 0,1 дюйма. В загружаемых материалах для этой статьи содержится полная информация о интерфейсной плате датчика, использующей любой из этих методов построения.

          Наконец, модуль RTC устанавливается на стойки, выступающие из задней панели ( Рисунок 13_4 ). Эти контакты можно оплавить паяльником, чтобы сохранить модуль RTC, или можно использовать несколько слоев двусторонней вспененной ленты, чтобы просто приклеить его к поверхности задней панели.

          После того, как вся внутренняя проводка выполнена в соответствии со схемой (см. также следующий раздел), передняя панель соединяется с задней панелью четырьмя саморезами № 4 x 1/2 дюйма для листового металла ( Рисунок 13_5 ).

          Файлы дизайна корпуса

          Как уже упоминалось, полный набор файлов STL для 3D-печати для всех частей корпуса включен в загружаемый материал. Вы также найдете собственные файлы дизайна SolidWorks (2013) и 2D-чертежи с размерами (PDF), а также файлы STP, которые позволят вам перенести проект в вашу любимую программу 3D CAD для настройки и изменения. Вы также можете приобрести недорогой напечатанный на 3D-принтере корпус из Nuts & Volts Junkbox 9.0016 .

          Проблемы и варианты проводки

          Чтобы подключить ЦП к датчикам, часам реального времени и кнопкам, нужно либо припаять провода к задней стороне Mega (фу!) или придумать другой способ сделать U- поверните соединения, которые могут перенаправлять порты ввода-вывода центрального процессора на задней стороне. Я придумал два различных метода решения этой проблемы:

          Проводка RTC: общая длина) вилки SIP. Затем я аккуратно придал штифтам U-образную форму, как показано на рисунке 9.0015 Рисунок 14 . Это позволило использовать гнездовые провода типа «мама-мама» для соединения RTC с ЦП.

          РИСУНОК 14. Выполнение соединений Mega U-turn. Примечание. ЖК-панель и рамка присутствуют на виде A, но не показаны на виде B.


          Кнопки, датчики, +5 В и провод заземления: вилка для изготовления 18-позиционного U-образного разъема. Сначала зажав головку в тисках, я затем смог согнуть короткие контакты достаточно близко друг к другу, так что я мог сделать мостик для пайки через каждую из пар контактов (9).0015 Рисунок 14B ). Примечание по сборке: не пропускайте «тиски», так как пластиковая рамка штифта легко ломается при попытке согнуть отдельные штифты.

          После того, как вы вставите один ряд штифтов в Mega, аккуратно сформируйте небольшой угол на каждом из внешних рядов штифтов, как показано на Рисунок 14A . Это позволяет подсоединять гнездовые провода с обратной стороны платы ЦП. От этого разворотного разъема мы можем получить +5В, землю и все порты ввода-вывода с нечетными номерами от D23 до D53. Поскольку мембранный переключатель 1×4 уже заканчивается гнездовым разъемом SIP с шагом 0,1 дюйма, его можно подключить прямо к U-образному разъему (контакты D37, D39)., D41, D43 и D45 из (рис. 14A ).

          Я использовал отдельные провода типа «мама-мама» для подключения к сигнальным линиям датчика температуры/влажности (мега-контакты D23 и D25), а также провода +5 В и заземления к интерфейсной плате датчика. Просто не забудьте тщательно сосчитать контакты, чтобы найти и подключить все к нужным контактам!

          Как показано на схеме ( Рис. 3 ), модуль RTC получает питание и землю от интерфейсной платы датчика, используя еще пару проводов типа «мама-мама».

          Нужно изменить назначение портов?

          В то время как пары проводов SDA и SCL, идущие к RTC, имеют заблокированные назначения контактов, которые вы не захотите менять, проводку ко всем другим устройствам можно переместить на любые открытые контакты, которые могут вам больше подойти. Это можно сделать, просто отредактировав исходный код, чтобы он соответствовал назначению контактов вашей схемы подключения.

          Усовершенствования и другие проектные идеи

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

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

          Будь то тренды температуры, время и дата, показания тока/напряжения, состояние батареи или другие переменные, подумайте о том, чтобы придать своему следующему проекту дополнительную изюминку, включив в конструкцию цветной графический ЖК-дисплей!

          Будьте осторожны и удачной графики! NV


          Ссылки

          Arduino IDE, библиотеки Arduino, полезные руководства и справочники
          https://www.arduino.cc Ed-EE-Eng/Graphics_Thermometer

          Графическая библиотека gfx
          https://github. com/adafruit/Adafruit-GFX-Library

          Документация/руководство по использованию библиотеки AdaFruit gfx
          https://learn.adafruit.com/adafruit-gfx-graphics-library

          Библиотека RTC
          https://github.com/adafruit/RTClib

          Руководство по установке и использованию вспомогательной графической библиотеки MCUfriend
          https://forum.arduino.cc/index.php?topic=366304.0

          Библиотека устранения дребезга кнопок Bounce2
          https://github.com/thomasfredericks/Bounce2

          Библиотека датчиков DHT
          https://github.com/thomasfredericks/Bounce2 github.com/adafruit/DHT-датчик-библиотека


          Список деталей

          .
          ПУНКТ КОЛ-ВО ОПИСАНИЕ ИСТОЧНИК НОМЕР/ИНФОРМАЦИЯ ДЛЯ ЗАКАЗА ПРИМЕЧАНИЯ
          1 1 МЕГА ЦП ARDUINO Arduino. cc
          + Другие
          МЕГА ЦП ARDUINO Альтернативный вариант: Найдите на eBay MEGA-совместимый
                  https://store.arduino.cc/usa/arduino-mega-2560-rev3
          2 1 БЛОК ПИТАНИЯ ПЕРЕМЕННОГО ТОКА ARDUINO Разное,
          eBay
          БЛОК ПИТАНИЯ UNO/MEGA, 9 В пост. тока, 1 А Зарядное устройство для телефона 5 В + кабель (опция)
                  Поиск на eBay: Адаптер питания Arduino Uno 9 В постоянного тока
          3 1 ЖК-ДИСПЛЕЙ 3,5 ДЮЙМА 480×320 eBay МОДУЛЬ ЭКРАНА 3,5 ДЮЙМА TFT LCD 480×320 ДЛЯ ARDUINO UNO И MEGA Рассмотрите возможность добавления «сенсорного экрана» в запрос eBay
                  Модуль TFT LCD экрана 480×320 Arduino UNO MEGA
          4 1 DS3231 МОДУЛЬ ЧРВ Разное,
          eBay
          DS3231 МОДУЛЬ ЧРВ  
                  Поиск на eBay: Модуль часов реального времени DS3231 RTC
          5 1 CR2032 БАТАРЕЯ Разное,
          eBay
          CR2032 БАТАРЕЯ Для использования с элементом 4
                  Поиск на eBay: CR2032 АККУМУЛЯТОР
          6 1 ПБ1, ПБ2, ПБ3, ПБ4.
          1×4 КНОПОЧНАЯ МАССИВ
          Разное,
          eBay
          МЕМБРАННЫЙ МОДУЛЬ КНОПОК 1×4 Не требуется, если пункт 3 имеет сенсорный экран
                  Поиск на eBay: Матричная клавиатура 1×4
          7 1 ПЛАТА ДАТЧИКА INTFC В СБОРЕ —— Состоит из элементов a-e ниже  
          1 Печатная плата — ПРОТОТИП ПЕЧАТНОЙ ПЛАТЫ Разное,
          eBay
          Универсальная плата макетной платы для прототипа DIY 2×8 см См. подробные сведения о компоновке сборки в Интернете, чтобы соответствовать 3D-отверстиям корпуса MTG
                  Поиск на eBay: Двухсторонняя печатная плата 2×8 см
          2 П1, П2. ТЕРМ БЛОК HDR 3-POS VERT 3,5 MM PCB MNT. ПРИМЕЧАНИЕ: ТРЕБУЕТСЯ ВИНТОВАЯ КЛЕММА Цифровой ключ ЧАСТЬ ПЛАТЫ: WM7752-ND @ 0,78 шт.
          СОЕДИНИТЕЛЬНАЯ ЧАСТЬ: WM7733.ND @ 1,14 долл. США шт.
           
                eBay Поиск на eBay: 3-контактная клеммная колодка с шагом 3,5 мм для печатной платы
          1 С7. 3-КОНТАКТНЫЙ ВИЛОЧНЫЙ ТЕРМ Цифровой ключ SAM1051-03-ND @ 0,25 шт. АЛЬТЕРНАТИВ: вырезаны из более длинных полос; Ссылка на eBay предназначена для 10 шт. x 40 контактов по цене 3,80 долл. США
                eBay Поиск на eBay: 40-контактная 2,54-мм однорядная полоска с прямоугольными штифтами
          1 С5. 6-PIN RT ANG MALE TERM Цифровой ключ AM1051-06-ND @ 0,46 шт. АЛЬТЕРНАТИВ: Нарезка из более длинных полос
          (см. примечания к позиции 8)
          7e 2 Р1, Р2. RES 4.7K 1/4W 1% ОСЕВАЯ Цифровой ключ 4.75KXBK-ND Некритическое значение. Может использовать значение от 4,7K до 10K, точность 5-10% OK
                  eBay Search for: Металлопленочный резистор 4,7K 0,25 Вт
          8 2 С1, С2. МОДУЛЬ ДАТЧИКА ТЕМПЕРАТУРЫ/ВЛАЖНОСТИ DHT21 Разное,
          eBay
          DHT21 AM2301 МОДУЛЬ ЦИФРОВОГО ДАТЧИКА ТЕМПЕРАТУРЫ/ВЛАЖНОСТИ ДЛЯ ARDUINO  
                  Поиск на eBay: Модуль датчика DHT21 AM2301
          9 4 ВИНТ-САМОРЕЗ № 4 x .25 IN Разное СТАЛЬ, НОМЕР 4, ВИНТ ДЛЯ ЛИСТОВОГО МЕТАЛЛА 1/4 ДЮЙМА См. McMaster PN для более подробной информации
                Макмастер

          A106 (Коробка из 100 штук по цене 1,45 доллара США)
           
          10 4 ВИНТ-САМОРЕЗ № 4 x 0,5 ВНУТР. Разное СТАЛЬ, НОМЕР 4, ВИНТ ДЛЯ ЛИСТОВОГО МЕТАЛЛА 1/5 ДЮЙМА См. McMaster PN для более подробной информации
                Макмастер

          A110 (коробка из 100 шт. по цене 42,21 долл. США)
          11 4 4-40 x 0,5 ДЮЙМОВ ВИНТ ДЛЯ ГЛУБОКОГО СОЕДИНЕНИЯ Разное СТАЛЬ, НОМЕР 4, ВИНТ ДЛЯ ЛИСТОВОГО МЕТАЛЛА 1/4 ДЮЙМА См. McMaster PN для более подробной информации
                Макмастер 92196A110 (коробка из 100 штук по цене 4,20 доллара США)
          12 4 4-40 x 0,25 ВИНТ ДЛЯ ГЛУБОКОГО СОЕДИНЕНИЯ Разное ВИНТ ИЗ НЕРЖАВЕЮЩЕЙ СТАЛИ STL HD SCRW 4-40 x 1/4 IN См. McMaster PN для более подробной информации
                Макмастер 92196A106 (коробка из 100 штук по цене 3,92 доллара США)
          13 4 ВИНТ 4-40 x 0,75 ДЮЙМА PHIL HD Разное ВИНТ ИЗ НЕРЖАВЕЮЩЕЙ СТАЛИ STL PHIL HD 4-40 x 3/4 IN См. McMaster PN для более подробной информации
                Макмастер 92196A113 (коробка из 100 штук по цене 4,97 долл. США)
          14 4 ШЕСТИГРАННАЯ ГАЙКА 4-40 Разное ШЕСТИГРАННАЯ ГАЙКА ИЗ НЕРЖАВЕЮЩЕЙ СТАЛИ STL 4-40 См. McMaster PN для более подробной информации
                Макмастер 91841A005 (Коробка из 100 штук по цене 3,02 доллара США)
          15 1 ВНУТРЕННЯЯ ПРОВОДКА Разное РАЗНЫЕ ВЫВОДЫ, СОЕДИНИТЕЛИ, ПРОВОДА Разные мелочи
          16 1 КОРПУС — ПЕРЕДНЯЯ ПАНЕЛЬ 3D ПЕЧАТЬ ПЕРЕДНЯЯ ПАНЕЛЬ, 3D ПЕЧАТЬ (PLA) ПОДРОБНУЮ ИНФОРМАЦИЮ СМ.

          Добавить комментарий

          Ваш адрес email не будет опубликован. Обязательные поля помечены *