- 💥 Датчик влажности Ардуино своими руками
- Как сделать аналоговый датчик своими руками
- Проверка самодельного датчика на Ардуино
- Скетч для самодельного датчика воды Ардуино
- Перчатка — устройства ввода. Датчик изгиба
- Предисловие
- Подготовка
- Датчик изгиба
- Скетч и код на ПК
- Программа на ПК
- Скетч на Arduino
- Сборка устройства
- Вторая версия
- Результат
- Стоимость
- Датчик тока для Arduino
💥 Датчик влажности Ардуино своими руками
В этом проекте рассмотрим, как сделать датчик протечки воды своими руками для Ардуино. Соберем простой датчик из недорогих подручных материалов — пары гвоздей, нескольких проводов, одного резистора и клеммников для соединения проводов. Для проверки правильной работы нашего самодельного датчика будем использовать скетч для датчика протечки воды из занятия кружка по робототехнике для детей.
Данный датчик можно будет использовать при создании проектов «умного» полива грядок или комнатных цветов. Благодаря недорогим компонентам и простоте своей работы датчик воды для Ардуино можно сделать самостоятельно. Чтобы сделать датчик протечки воды своими руками потребуется: два гвоздя, несколько проводов, резистор на 220 Ом, клеммники и небольшой набор инструментов.
Как сделать аналоговый датчик своими руками
Для этого проекта нам потребуется:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- самодельный датчик воды;
- 1 светодиод и резистор на 220 Ом;
- провода «папа-папа» и «папа-мама».
Для начала необходимо отрезать три клеммника от колодки (смотри фото). Клеммники применяются для соединения проводов, они изготавливаются из негорючего материала, который легко разрезается. Внутрь клеммников встроены металлические контакты с винтовыми зажимами. Контактами мы соединим гвозди с проводами и резистором, а корпус клеммника будет служить каркасом для нашего датчика.
Фото. Схема датчика воды своими руками и подключение к Ардуино
Далее необходимо ослабить контакты, выкрутив винты. Согласно схеме на фото вставьте в крайние контакты гвозди и зачищенные концы проводов. Левый и средний контакт следует соединить резистором с номиналом 220 Ом. В правый контакт также вставляется зачищенный конец провода. Осталось лишь подготовить контакты на всех проводах, для подключения датчика воды к плате Ардуино.
Проверка самодельного датчика на Ардуино
Теперь вы знаете, как сделать датчик воды своими руками для Ардуино, осталось лишь проверить правильность работы и показания прибора. Для этого мы используем скетч из предыдущего занятия «Кружка робототехники на Ардуино» и соберем схему с автоматическим включением и выключением светодиода, подключив самодельный датчик воды к Ардуино (смотри фото сборки схемы выше).
Скетч для самодельного датчика воды Ардуино
В первой строчке скетча мы присвоили имя x для значений c входа A0. С помощью оператора int , мы указали, что значения x могут принимать только целое число. Условный оператор if позволяет нам определить действие при истинном условии. Показания датчиков могут разниться — это зависит от токопроводимости материалов. Добавьте в воду соль и наблюдайте за изменениями показания с датчика.
Источник
Перчатка — устройства ввода. Датчик изгиба
Предисловие
В данной статье рассмотрим как сделать руку-клавиатуру, а также самодельный датчик изгиба (сгибания). На одной руке, как правило, 5 пальцев — это дает сделать 32 (2^5) комбинации. Но на русский язык не потянет (33-32 символа), а вот на английский язык как раз, ещё и останется место для space/backspace/enter и т.д.
Немного идей: если подумать, то это интересный джойстик; если присоединить вторую руку, то это 1024 комбинации, а это возможно музыкальный инструмент; внедрить гироскоп/акселерометр и улучшить до мышки.
Подготовка
- Arduino — разницы особо нету какую использовать, потребуется 5 аналоговых входов, 3.3V, 5V
- Блютуз модуль — связь в одну сторону, поэтому разницы нет, у меня был hc-06
- 5 фоторезисторов (3 мм.), 5 светодиодов (3 мм.)
- Термоусадка, трубка из под капельницы, провода
- Резисторы: 1 кОм (х5)
- Питание — крона
Датчик изгиба
Прежде чем открывать IDE нужно собрать хотя бы один датчик изгиба и удостовериться в его работоспособности. Почему бы его не купить? Так как его в своем городе не нашел, а в Китае стоит 20$/штука, кроме того максимум я находил длиной в 8 сантиметров, выигрывают они только формой (тонкие).
До этого с фоторезисторами не имел дела, поэтому для начала просто посмотрел на принцип работы, подобрал сопротивление, оценил диапазон, а также выявил что из 10 купленных 1 не работал, не зря проверял.
После собраться собственно сам датчик. На рисунке изображена схема датчика, я думаю понятно что необходимо сделать.
Советую постараться найти фоторезисторы именно 3 мм., так как иначе вставить их в трубку очень проблематично. Вот что получилось:
Проводов таких тонких у меня не было, а оптоволокно завезли уже… В общем телефонный провод как раз.
Теперь можно натянуть термоусадку и убедится в работе.
Проверить работоспособность можно таким кодом:
Выводиться должно значение от 0 до 1024, у меня вышло так:
Скетч и код на ПК
Будет две программы: скетч на плату и программа на ПК. Так как готов только один датчик, а уже очень хочется узнать реально ли эмулировать клавиатуру через Arduino, то включим пк. А пока “заменим” датчики изгиба на кнопки:
Программа на ПК
Что нам надо? Получить данные с блютуз модуля, соотнести с нужным символом, задействовать клавишу в нужное окно. Код по ссылке.
- Присоединится по блютуз
- С помощью ReadCOM() считываем байт посылаемый микроконтроллером, отправляем значение в метод SendKey, так же туда отправляется хэндл текущего окна, чтобы метод знал куда записать символ
- Проверяем что к нам пришло, если это значение соответствует space, backspace, enter, то сработает нужное нажатие, если же ни один из вышеперечисленных, то возьмется из массива нужный символ
Зачем массив если можно было пустить по порядку все символы? Да, можно было, так и было на какой-то стадии, но некоторые комбинации для пальцев легче чем другие, а так же есть определенная частота использование тех или иных букв в алфавите:
Может показаться что уже за нас всё сделано, но не тут то было, сколько я не гуглил “сложность комбинаций пальцами рук” и тд, ничего годного не нашел. Пришлось самостоятельно и субъективно оценивать сложность комбинаций, для каждого советую эту таблицу заполнить самостоятельно и переписать массив. Кратко: самая легкая комбинация — самая частая буква.
Скетч на Arduino
Для начала: разницы между кодом для кнопочной версии и версии с датчиками практически нету, за исключением пару строк для считывания данных. Способов считать данные много есть, но самый хороший алгоритм мне показался такой:
- Получить один из сигналов
- Записать его в переменную sendValue
- Дождаться комбинации 00000 (разжал пальцы), либо если пришел сигнал больше sendValue, то запишем новый сигнал в sendValue
- Если комбинация 00000 и sendValue не равен 0, то отправляем данные
Как считается полученное число с датчиков? Обычным переводом с двоичной системы в десятичную, каждый последующий сигнал + 2n.
Зачем такой механизм? Мы не можем одновременно нажать на необходимые кнопки, либо, что еще сложнее, согнуть нужные пальцы в одно мгновение, поэтому нам нужно не отправлять сразу данные, а ждать “последняя ли это комбинация?”, поймём мы это с помощью изначальной комбинации( 00000 ), это будет как “стопбит”, после которого программа будет понимать, что следует направить число, если там конечно же лежит не сам “стопбит”.
Зачем нужно сравнивать sendValue и новый сигнал? После того как человек загнул, например, 01011 и начинает разгибать пальцы для исходной комбинации (00000 ), то он уже сделает другую комбинацию, так как пальцы мы разжимаем тоже не мгновенно, после того как пользователь разожмет любой из пальцев комбинация сразу станет по числовому значение меньше, чем была в “пик”, именно по-этому запоминает ”наибольшую” комбинацию.
Константы представленные на скрине (600, 350, 300, 300, 480) были подобраны практическим путем, каждый датчик в отдельности выводил, загибал палец до комфортного “изгиба” и записывал текущее значение.
Сборка устройства
Общая схема представлена на рисунке ниже. На самом деле самое сложно, как оказалось, это учитывать размеры, некоторые провода свободно висят и мешают, а другие натягиваются и иногда рвуться. Кроме того датчики вышли больше чем надо для пальцев, эдак взял с запасом ) И собственно сама перчатка, я взял строительную, что не совсем привлекательно. Также если клеить непосредственно сразу на перчатку, то при сгибание датчики будут уходить в бок, поэтому решено было посадить их на липучки и в случае чего их можно снять.
Вторая версия
После того как собрал “устройство” было решено сделать “всё по новой”, несколько улучшений:
- Убрать резисторы для светодиодов, так как 5 светодиодов Arduino с выхода 3.3 вольта отлично вывозит и без резисторов
- Убрать резисторы и пайку с трубки капельницы, так как теряется удобство сгибание пальцами, а так же эта пайка ломается и поместить туда резисторы вовсе была очень плохая идея
- Положить плату на шилд, так как и проводов много, и смотрится все не очень красиво
Схема не сильно изменилась:
Несколько фото новой версии:
Результат
Рука-клавиатура не новый проект, но сделать самому и редактировать как душе угодно намного приятнее готового, тем более мы получаем не только клавиатуру, а универсальное устройства, которое можно связать и с телефоном, и с другими устройствами (управлять, например, “механической рукой”). Также на заметку кому-нибудь такие датчики, вдруг пригодятся )
Стоимость
Резисторы 1кОм(5х) + Светодиоды(5х)
Shield Arduino Nano
Термоусадка, капельница, липучки, перчатка, клей
Источник
Датчик тока для Arduino
Из этой статьи мы узнаем, как сделать датчик тока совместимый с Arduino и большинством других широко популярных микроконтроллеров. Этот проект отличается компактной конструкцией и схемой, основанной на SMD-компонентах.
Этот датчик тока можно легко использовать для измерения до 15А и даже при пиковом токе около 20А.
Шаг первый: шунтирующий резистор
Основным компонентом в этой схеме является шунтирующий резистор. Именно с помощью этого резистора измеряется небольшое падение напряжения и затем усиливается до измеримых значений Arduino. Важно, чтобы номинал этого резистора был достаточно мал, чтобы не создавать значительного падения напряжения в цепи. Малое сопротивление в диапазоне миллиомов также гарантирует, что общая рассеиваемая мощность очень мала и, следовательно, сам резистор не нагревается. Падение напряжения довольно мало, чтобы микроконтроллер мог напрямую его измерить, поэтому и используется операционный усилитель.
Шунт, используемый в данной схеме, имеет маркировку — R005, что означает, что он имеет сопротивление 5 мОм.
Шаг третий: изготовление печатной платы
После завершения проектирования схемы и макета мастер распечатал его в таком масштабе, чтобы размер печати соответствовал фактическому размеру печатной платы. Печатать нужно в зеркальном изображении. По размерам схемы вырезал заготовку для платы.
Шаг шестой: кодирование и калибровка
Теперь нужно закодировать микроконтроллер и откалибровать значение датчика для получения точных показаний.
Мастер использовал Arduino Nano и среду Arduino IDE.
Код можно разбить на следующие шаги:
Инициализация библиотеки для OLED-дисплея (для этого он использовал библиотеку Adafruit)
Настройка аналогового вывода 0 как вход
Считывание аналоговое значение с выхода OP-Amp на аналоговом выводе 0
Умножение аналогового значения на коэффициент калибровки, чтобы получить правильное значение тока в амперах (или миллиамперах).
Отображение значения на OLED-дисплее
OP-Amp действует как неинвертирующий усилитель в данной схеме и вырабатывает напряжение, пропорциональное падению напряжения на шунте. Затем это напряжение измеряется с помощью АЦП Arduino, который выдает число от 0 до 1023 (10-битное разрешение АЦП в Arduino). Это число не равно фактическому текущему значению, поэтому нужно выполнить математические манипуляции в программном обеспечении, чтобы получить точное значение. В данном случае на помощь приходит мультиметр. Большинство мультиметров могут точно измерять ток до 10 А, поэтому его можно использовать в качестве эталона для определения калибровочного коэффициента.
Смысл заключается в том, чтобы использовать небольшую нагрузку вместе с источником питания с мильтиметром и токовым шунтом последовательно с нагрузкой.
Таким образом, здесь мультиметр может измерять фактический ток, потребляемый нагрузкой, и от нашего текущего модуля шунтирования мы можем получить соответствующее аналоговое значение через Arduino.
Источник