Ардуино Про Мини: распиновка, характеристики
Arduino Pro Mini по размерам сравнима с флэшкой. Рассмотрим схему платы Arduino Pro Mini ATmega328/168, распиновку, характеристики и способы прошивки.
Плата Arduino Pro Mini по размерам сравнима с флэшкой, но при этом имеет 14 полноценных портов ввода – вывода, 6 и которых – это аналоговые PWM порты. Платформа построена на базе микроконтроллера ATmega168 с частотой 8 МГц или 16 МГц (ATmega328). Рассмотрим подробнее схему платы Ардуино Про Мини, распиновку портов, характеристики и способы программирования (прошивки) данной модели.
Arduino Pro Mini: распиновка платы
Характеристики Arduino Pro Mini 5V не отличаются от платы Arduino Nano. Основное различие состоит в отсутствии микросхемы для прошивки Pro Mini по USB-UART.
Связь с ПК производится по кабелю FTDI или с помощью дополнительной платы Sparkfun.
Благодаря этому размеры платы более компактные, что позволяет использовать платформу в готовых мини-проектах, где важны небольшие габариты комплектующих.
Распиновка Arduino Pro Mini ATmega328 / ATmega168
Нумерация портов и их назначение полностью дублируют плату Arduino UNO r3. Из 14 портов ввода – вывода, 6 портов могут работать в режиме ШИМ с разрешением 8 бит.
Последовательная шина UART находится на портах 0 (RX) и 1 (TX), связь по протоколу I2C на Pro Mini Arduino с LCD дисплеем осуществляется на аналоговых портах с дополнительными функциями в работе: порт A4 (SDA) и порт A5 (SCL).
Характеристики Arduino Pro Mini
- Микроконтроллер: ATmega168 или ATmega328
- Тактовая частота: 8 МГц и 16 МГц
- Входное напряжение питания: 3,3-12 В или 5-12 В
- Напряжение логических уровней: 3,3 или 5 В
- Портов ввода-вывода общего назначения: 20
- Максимальный ток с пина ввода-вывода: 40 мА
- Портов с поддержкой ШИМ: 6
- Портов, подключённых к АЦП: 8
- Разрядность АЦП: 10 бит
- Flash-память: 16 кб
- SRAM-память: 1 кб
- EEPROM-память: 512 байт
- Габариты платы: 33×18 мм
Arduino Pro Mini: схема платы
Принципиальная электрическая схема Arduino Pro Mini
Arduino Pro Mini: питание платы, порты
Платы Arduino Pro выпускаются с двумя вариантами питания – 3,3 Вольта для микроконтроллера с частотой 8 МГц и 5 Вольт для микроконтроллера с частотой 16 МГц. Обе версии подключаются к источнику питания через кабель FTDI или плату Sparkfun. Стабилизированное напряжение 3,3 В или 5 В (в зависимости от модели) можно подать на порт VCC, не регулируемый источник подключается к порту RAW.
Схема портов на плате Arduino Pro Mini ATmega168 / ATmega328
Pro Mini : питание от внешнего источника
5V – на пин подается 5 В от внутреннего стабилизатора 3.3V – на пин подается 3,3 В, можно использовать для подключения устройств GND – пин для вывода земли VIN – пин для подключения внешнего источника питания
IREF – пин для информирования о рабочем напряжении платы
Arduino Pro Mini: прошивка, программирование
Микропроцессор Arduino Pro Mini разработан со встроенным загрузчиком, т.е. запись скетчей в плату производится без использования программаторов.
Это значительно облегчает работу с платой, особенно новичкам. Прошивка Arduino Pro Mini ATmega328 производится в среде Arduino IDE 1.8, которую можно скачать на сайте разработчика www.arduino.cc.
Дополнительные драйвера для Pro Mini Arduino не требуются.
Подключение Pro Mini для прошивки через USB
Pro Mini поддерживает три типа памяти:
Flash–память объемом 16 кБ, используется для хранения прошивки. Когда в контроллер записывается программа, она сохраняется именно во Flash–память. Чтобы очистить Flash–память следует загрузить пустой скетч (программу).
SRAM — это оперативная память объемом 1 кБ на Arduino Pro Mini. Здесь хранятся переменные, создаваемые в скетче. SRAM — это энергозависимая память, при отключении внешнего источника питания — данные удалятся.
EEPROM — это энергонезависимая память в 512 байт. Сюда можно сохранять данные, которые при отключении от источника питания не удалятся. Минус данной памяти в ограничении циклов перезаписи — не более 100 тысяч раз.
(3 votes, average: 5,00
Источник: http://xn--18-6kcdusowgbt1a4b.xn--p1ai/arduino-pro-mini/
Погода в доме: беспроводной метеодатчик из Arduino Pro Mini
В прошлом рассказе про то, что можно сделать из Arduino, мне предложили делать погоду и бросать ее в сеть. Не сказать, чтобы это мне это было сильно нужно, но сама идея осталась в голове и это обстоятельство представляло хотя и смутное, но постоянное беспокойство.
Так что я решил попробовать, и закрыть этот вопрос раз и навсегда. Тем более, что тот самый рассказ стал призовым, и позволил мне купить практические все необходимое, чтобы решить задачу. В некотором смысле это спасибо MySKU и всем, кому понравились игрушки из Arduino.
ЖЕЛЕЗКИ
Arduino Pro Mini
Плата совершенно крошечная. Я даже не ожидал, что настолько. Но при этом на ней — взрослый чип ATmega328, так что по производительности она не уступает той же Uno. Это версия 5В, питается или от 5В стабилизированного по любому пину VCC или же от 5 — 12В по пину RAW (если верить Arduino.cc). По-моему, очень удобно.
Комплект передатчик-приемник ASK/OOK 433 МГц
Это уже проверенные (не в этом магазине, а вообще) простейшие приемники и передатчики с амплитудной модуляцией. У них нет никаких средств коррекции ошибок и контроля передачи, зато они крайне дешевы и без проблем работают с нужными мне устройствами (розетками, выключателями и с самими собой).
Живые фото можно посмотреть в предыдущем тексте про Arduino.
Преобразователь Serial — USB
Очень простой, недорогой и универсальный — есть питание 5В и 3.3В на выбор. Нужен, чтобы загружать код в Arduino Pro Mini, так как у платы нет своего USB. Шлейф, который вы видите на фото, входит в комплект. И хотя ничего необычного в нем нет — обычные четыре провода, все равно приятно.
Датчик влажности и температуры DHT21
Заказывал часы для жены, но DX ошибся с заказом, ошибку признал и вернул стоимость на счет в магазине. Так что вместо часов жене получился датчик температуры мне любимому.
Этот датчик выбран за разумную цену (вообще, а не в DX), широкий диапазон измерений и точность до десятых.
Кроме того, в отзывах на DX писали, что он полностью совместим с DHT22, для которого есть готовые библиотеки для Arduino.
Пара слов о продавце на eBay
С одной стороны, в магазине приятные цены, все выслали достаточно быстро, и почти все пришло в рабочем состоянии. Исключение — один приемник, который не включился. Возможно, он настроен на другую частоту и поэтому я не увидел сигнала на выходе.
С этим буду разбираться позже, но пока факт остается фактом — в текущем состоянии один приемник оказался бесполезен. Другой минус состоит в том, что бесплатная доставка — без номера для отслеживания. А так как я эти номера все же люблю, то заплатил за него, как и было предложено в письме-подтверждении заказа.
При этом продавец предлагает оплатить трек-номер на отдельный эккаунт PayPal. Итог: сначала мне больше недели номер вообще не давали. Потом, когда я пообещал диспут, выдали с интервалом в день сразу два трек-номера. Один был явно левым, поскольку дата приема посылки по нему была раньше даты заказа.
Другой казался нормальным ровно до импорта в России. Как только появился индекс места назначения стало понятно, что это посылка не моя, а какого-то счастливчика из Обнинска. Ну а потом уже пришла моя посылка — без каких-либо трек-номеров.
Поэтому поводу я еще немного поскандалил с продавцом, и в конечном итоге плату за трек-номер мне вернули. Впечатления двойственные: с одной стороны, в магазине очень приятные цены. С другой — получается какая-то лотерея.
ФИЗИЧЕСКИЙ УРОВЕНЬ
За громким заголовком суровая правда: дома на боевом дежурстве живет небольшая коробочка с Arduino Uno, подключенная к сети через Ethernet-шилд. В этой коробочке также есть копия упомянутого выше ASK/OOK приемника для получения сигналов с домашних датчиков (протечки, открытия дверей и т.п.). Это определило некое подобие клиент-серверной модели для подключения метеодатчика. То есть, метеодатчик на базе Arduino Pro Mini отправляет данные температуры и влажности коробке, а она, в свою очередь, отправляет их в интернет. Отвечаю на очевидные вопросы ) Q: Почему примитивные приемники, а не, скажем, рекомендованные ранее чудесные nRF24L01, которым не страшны помехи, которые легко объединяются в сеть и вообще идеальны для такого применения? A: Во-первых, кажется, я просто боюсь, что потрачу слишком много времени на усвоение методики работы с nRF24L01. Во-вторых, у меня (то есть, у Arduino Uno в коробке) заканчивается все — пины, память. А нужно подключить еще несколько устройств: пищалку, датчик движения. Между тем, в коробке уже есть все, что нужно для получения метеоданных — и приемник, и библиотека RC-Switch, которая вполне подходит не только для управления розетками, но для передачи нескольких символов. Почему бы не воспользоваться уже имеющимися ресурсами? Q: Почему тогда не Virtual Wire? A: Ответ, в общем, выше — еще одна библиотека, еще меньше памяти. С практической точки зрения такой радиоканал можно назвать слабым местом системы. Но, если задуматься, вся моя система — сплошное слабое место, так сказать, by design. Q: почему бы не подключить Arduino Pro Mini к сети напрямую? A: Дело в том, что для минимального количества проводов я планирую поставить датчик на окно, а рядом нет ни сетевых, ни электрических розеток. Это раз. И два: Wi-Fi-шилд для Arduino или комбинация из электрической розетки с Ethernet и обычного Ethernet-шилда Arduino стоят совершенно неразумных для решения этой задачи денег. Q: Почему не меряем атмосферное давление? A: Потому что датчик сразу не заказал, и в итоге он еще не приехал. А попробовать очень хотелось. Q: У тебя же есть метеостанция с беспроводным датчиком. Почему не используешь его, а городишь огород на пустом месте? A: Честно говоря, огород для меня проще, чем писать код для обработки сигнала. Потом, может быть, попробую. А сейчас так гораздо быстрее.
ЛОГИЧЕСКИЙ УРОВЕНЬ
Для логической основы радиоканала я решил воспользоваться возможностями библиотеки RC-Switch. Она предназначена для управления беспроводными розетками, но методика управления позволяет использовать ее и для передачи данных. Медленно, не очень надежно, но — позволяет. Суть в том, что команда розетки — всего лишь цифровой код.
При этом RC-Switch совершенно безразлично, какой именно код передавать. Главное — не больше 24 бит, то есть не больше 16777216.
В итоге мой протокол передачи метеоданных выглядит следующим образом: Первые три цифры — идентификатор датчика Четвертая цифра — тип данных (1 — влажность, 0 — температура) Пятая цифра — знак температуры (1 — отрицательная, 0 — положительная) Остальные цифры — величина Например, чтобы передать температуру 23.
5С нужно отправить через RC-Switch код 16100235. Плюсы примитивного «кодирования»: достаточно всего одного действия арифметики, чтобы выделить передаваемую величину. Минусы — один «пакет» для одного значения.
ПРАКТИЧЕСКАЯ РЕАЛИЗАЦИЯ
Arduino Pro Mini поставляется в комплекте с контактными планками. При желании их можно напаять на плату. А при необходимости сделать максимально компактную конструкцию провода можно паять прямо к контактным площадкам платы. Я выбрал первый вариант — мне так проще, да и плату, если что, легче использовать повторно. После беглого ознакомления с датчиком температуры и влажности DHT21 выяснилось, что напрямую подключать его к Arduino не очень правильно. Оказывается, правильная схема включает «подтягивающий» резистор 4.7 кОм между плюсом и линией данных. Мне повезло — нужный резистор выкусил из ненужного беспроводного звонка. Для питания прототипа я воспользовался ненужной «аварийной» зарядкой для мобильного телефона. Это такой цилиндрик: с одной стороны вставляем батарейку AA 1.5В, а с другой получаем 5.9В (без нагрузки). Для страховки я подключил выход зарядки к входу RAW Arduino Pro Mini, чтобы все компоненты (плата и датчик) получали стабилизированные 5В. По крайней мере, из описания платы можно заключить, что RAW принимает от 5В до 12В, при этом на контактах VCC — стабилизированные 5В. Дальше все просто. Подключаем передатчик, датчик и пишем простой код. В моем случае для кода потребовались три библиотеки: RC-Switch (передача данных), SimpleTimer (отсчет интервалов для передачи) и DHT22 (получение данных с датчика температуры и влажности). А вот и прототип:Схема работы: раз в пять минут опрашиваем датчик и попеременно отправляем температуру и влажность. За одну сессию можно передать только один параметр, поэтому «большая сестра» получает их по очереди, а потом скопом отправляет в Open Weather Map. В результате данные в интернете обновляются раз в десять минут. Почему такой интервал? Потому что, во-первых, каждая сессия — это занятый радиоканал (а у меня есть и другие радиодатчики, требующие внимания) и отнятое процессорное время. Так что это попытка минимизировать издержки. Во-вторых, я не такой уж и погодный маньяк, чтобы обновлять погоду каждую секунду. И третье. Интервал в пять минут, по-моему, более-менее рационален с точки зрения энергетики, так как я планирую питать метеодатчик от батареек. Для записи кода в плату соединяем Arduino Pro Mini с компьютером через преобразователь Serial — USB и не забываем «перекрестить» линии TX/RX, то есть: RX подключаем к TX, и наоборот — TX к RX. Для питания берем пин 5В, потому что эта версия Arduino — 5В.Секрет: если заливка программы не удается (ошибка типа avrdude: stk500_getsync(): not in sync: resp=0x00), помогает такая процедура: 1) Нажимаем кнопку загрузки программы в среде разработки Arduino 2) Ждем пока загорится красный светодиод на преобразователе Serial — USB 3) Нажимаем кнопку сброса на Arduino Pro Mini Если не получилось — ждем, пока погаснет красный светодиод на преобразователе и повторяем процедуру. Со стороны «большой сестры» нужно только добавить несколько фрагментов кода для получения метеоданных из радиоканала и отправки их в интернет. Для примера — готовый код по ссылке в конце текста, который подходит для использования с Arduino Uno как в монопольном режиме, так и в составе вашего кода (если, разумеется, разобрать исходник на нужные части). Если будете использовать — не забудьте подставить свои IP/MAC, ключ авторизации OpenWeatherMap и координаты метеодатчика. А вот так метеодатчик выглядит почти в финальной (ну или вообще финальной, если нет ничего более постоянного, чем временное) версии:
НА ДЕРЕВНЮ, ДЕДУШКЕ
Итак, метеоданные получили, передали и приняли. Ок. И что делать с этим счастьем? Мне советовали отправлять его в Openweathermap.org, поскольку дело хорошее и вообще. Я проникся и немного изучил вопрос, хотя такое ощущение, что Openweathermap это совершенно не нужно. Так что получилось, скорее, не благодаря, а вопреки.
Спасибо нашему чуваку, который сделал интернет-метеостанцию и рассказал о ней, Wiki за описание базовой аутентификации HTTP и чудесному сервису hurl.it, который имитирует HTTP-запросы и показывает их тело, что важно для кода. Ах да, еще большое спасибо онлайновым сервисам кодирования Base64.
Иными словами, документация на Openweathemap upload API говорит, что нужна аутентификация HTTP Basic и описывает имена и форматы полей данных, но не дает практических примеров, что нужно таким безмозглым, как я. Как все получилось. Сначала я зарегистрировался на Openweathermap.org.
Потом выяснил, что для HTTP Basic нужна строка авторизации, состоящая из имени и пароля, разделенных двоеточием и кодированных Base64. Так что взял логин и пароль, пошел в онлайновый кодер и на выходе получил нужную строчку.
Например, для имени test и пароля test она выглядит так: dGVzdDp0ZXN0Как результат, строка авторизации Openweathermap выглядит так: Authorization: Basic dGVzdDp0ZXN0 Берем ее и составляем тестовый запрос в Openweathermap и смотрим тело запроса:Обратите внимание, что если все правильно, то «тест» отправляет данные в Openweathermap.
Я эту проблему решил просто: подставлял актуальную информацию о погоде из своего региона. Полученный таким образом текст запроса можно запросто использовать в коде Arduino: строчки печатаются в HTTP-клиент. Плюсы: в целом все довольно просто. Минусы: у Openweathermap отсутствуют адекватные (с моей точки зрения, разумеется) методы визуализации данных. Доступны только запросы к БД с выдачей результатов для визуализации «на стороне».
КАК ЭТО РАБОТАЕТ
Все просто. Метеодатчик получает температуру и влажность от DHT21, и отправляет их Arduino Uno, подключенной к интернету. Оттуда данные уходят на Openweathermap (чего добру пропадать?), где их можно посмотреть в онлайне и где они, вероятно, используются для прогноза погоды.
Желающим понаблюдать за местной (Россия, Москва, СВАО, Лианозово) погодой: мой метеодатчик на Openweathermap.org.
А ТЕПЕРЬ О ПРОБЛЕМАХ
Так как руки у меня растут все-таки не совсем из правильного места, то я закономерно наступил на несколько художественным образом разложенных грабель. Во-первых, несмотря на то, что авторы библиотеки DHT22 заверяли, что они решили проблему с отрицательными температурами, мне это не помогло.
При минусе библиотека начала выдавать совершенно нереальные показания, что в обсуждениях обосновывали ошибкой переполнения. Т.е. вместо -4.5С мне показывали 32763,5. Я не стал переписывать библиотеку (см. выше про руки), а просто стал вычитать полученное значение из 32768 (максимальное значение для заданного типа переменной).
Во-вторых, практически сразу после первого включения метеодатчика выяснилась печальная особенность: на кухонном столе (около 2.5 метров до приемника) он еще работал, а вот на балконе (около 4 метров) — нет. После изучения кода и прочего стало понятно, что проблема, все-таки и не в нем, и не в батарейках. Подозрение пало на антенны, которые я сделал из простых кусочков провода.
Чтение этих ваших интернетов догадки подтвердило: диапазон 433 МГц — довольно коварная в плане распространения волн штука. Поэтому антенну лучше делать хотя бы минимально похожей на антенну, а не изгибать проводочки под причудливыми углами, лишь бы в корпус поместилось. В итоге я заменил все проводки на штыри из одножильного медного провода (просто купил пару метров (с запасом, да) 2х1.
5 электрического кабеля, и распотрошил его на жилы. Длина штырей как и раньше — около 17.3 см, т.е. четверть волны. Все ориентированы вертикально. Результат — теперь не только метеодатчик работает на балконе, но и другие беспроводные датчики в квартире работают гораздо более уверенно. Третья очевидная проблема — совершенно зверское потребление энергии.
Двух батареек 14500 по 1000 мАч хватает где-то на пару суток. Т.е., по грубым прикидкам метеодатчик кушает около 20 мА. Говорят, что одна из наиболее прожорливых частей — встроенный стабилизатор напряжения, но от него я избавиться как раз и не могу, потому что пока не вижу, как в батарейный отсек на две АА можно разместить автономный источник 5В. Поэтому рассматриваю две альтернативы.
Первая — эксперименты со «спящим» режимом. Вторая — бросить эти девичьи мечты об автономности и запитать уже от электрической сети. Ну а пока наслаждаюсь тем, что датчик вообще работает 🙂
ССЫЛКИ
Библиотека RC-Switch
Библиотека DHT22
Библиотека SimpleTimer
Сервис для тест HTTP-запросов hurl.it
Сервис кодирования Base64
Код метеодатчика
Код принимающей стороны
Источник: https://mysku.me/blog/ebay/16290.html
Автоматический контроллер температуры и влажности для домашних питомцев на базе Arduino
Джек и Хосе, пара прекрасных хомячков, жили со мной более 100 дней и ночей. Их мягкая и белая шерсть давала мне покой и тепло, особенно во время программирования зимними вечерами.
Но на прошлой неделе произошла трагедия. Холодный воздух пришел из Сибири, и в Шэньчжэне сильно снизилась температура и влажность. Такая погода продлилась 10 дней. Температура держалась на уровне 10 градусов, и я сильно замерзал каждый день. Однако случилось страшное: Джек и Хосе, они покинули меня навсегда…
Это был печальный полдень. После их похорон, по пути домой, у меня появилась новая идея: я должен сделать домик с теплым полом и системой кондиционирования воздуха для моих будущих новых друзей.
Шаг 1: Подготовка модулей
Как специалист по разработке программного обеспечения я не очень хорошо разбираюсь в аппаратных средствах. Поэтому я решил применить наиболее удобную для использования платформу – Arduino.
После поисков в сети Интернет я выбрал следующие модули:
В основном датчик температуры и влажности передает данные о том, как холодно вокруг, в контроллер Crowduino. Если контроллер Crowduino “считает”, что очень холодно, тогда он подключает тепловую пластину, чтобы согреть хомяка или модуль ultrasonic nebulizer для начала кондиционирования воздуха.
Шаг 2: Измерение температуры и влажности
Базовое подключение всех модулей (Crowduino, датчика температуры, релейного модуля и т.д.) показано на рисунке выше.
Сначала, подсоедините датчик температуры и влажности AM2302 к плате контроллера Crowduino. Используя проволочную перемычку, подсоедините выводы питания датчика AM2302 к выводам Vcc и GND контроллера Crowduino, далее подсоедините вывод “SIG” датчика AM2302 к A1 Crowduino.
Примите во внимание, что необходимо установить нагрузочный резистор 4,7 кОм между выводом “SIG” датчика AM230 и Vcc. В действительности вы можете найти множество других модулей температуры и влажности, в которые встроен нагрузочный резистор. В этом случае вам не нужно добавлять нагрузочный резистор самостоятельно, что упрощает дальнейшую сборку.
Шаг 3: Подсоедините реле к контроллеру Crowduino, для контроля модуля ultrasonic nebulizer и тепловых пластин.
Подсоедините выводы “IIN1”и “IN2” 2-канального релейного модуля к выводам A4 и A5 контроллера Crowduino (или к шилду с винтовыми клеммами), далее подключите питание к релейному модулю с помощью проволочных перемычек. Таким способом Crowduino может отдельно контролировать 2 реле для включения/выключения питания модуля ultrasonic nebulizer и тепловых пластин.
И, наконец, подсоедините модуль ultrasonic nebulizer и тепловые пластины к реле.
Для модуля ultrasonic nebulizer, я отрезал его положительный проводник и подсоединил один его конец к выводу “COM” реле1 (вывод в середине). Далее второй конец я подсоединил к выводу ”NO” реле1.
Для тепловых пластин будет легче припаять их выводы к DC гнезду. Подключите реле2 аналогичным способом, как для модуля ultrasonic nebulizer.
После подключения основные аппаратные средства для нового домика хомяков готовы.
Для контроля текущей температуры и влажности я добавил к своей системе LCD шилд с кнопками. Подсоедините шилд с кнопками к шилду с винтовыми клеммами. Фактически данный шилд является опциональным, поскольку не всем требуется визуальное отображение текущих значений температуры и влажности.
Шаг 4: Загрузка программ в Crowduino
Загрузите нижеуказанную программу и откройте ее на вашем Arduino IDE.
В данной программе я установил пороговое значение температуры величиной 9 градусов, а пороговое значение влажности в значение 45.
То есть, когда температура, измеренная датчиком, ниже 9 градусов, контроллер crowduino будет контролировать релейный модуль для подачи питания на тепловые пластины, чтобы обогревать хомяков; когда относительная влажность упадет ниже 45% включится модуль ultrasonic nebulizer для увеличения влажности воздуха.
Естественно, если необходимо изменить пороговое значение температуры или влажности, просто измените параметры “temLowTrigger” и “humLowTrigger” температуры и влажности для включения тепловой пластины и модуля ultrasonic nebulizer.
Шаг 5: Тестирование и установка
Когда система работает, текущие значения температуры и влажности можно контролировать с помощью LCD шилда с кнопками.
Поместите тепловую пластину на дно домика хомяка. Также добавьте немного древесной муки, поскольку она позволяет сохранять тепло в домике и служит как одеяло.
Тепловая пластина будет активирована, когда температура упадет ниже 9 градусов и останется включенной вплоть до температуры 40 градусов. Поместите модуль ultrasonic nebulizer в воду на глубину около 0,3 метра.
Модуль активируется, когда относительная влажность упадет ниже 45%.
После тестирования, система работает превосходно. Тепловая пластина начнет нагрев, если температура низкая, при этом модуль ultrasonic nebulizer также начнет работать. При этом будет мигать светодиодный индикатор.
Я думаю, благодаря этой системе мой будущий хомяк будет просто счастлив!
Оригинал статьи
Прикрепленные файлы:
- Temperture_and_hunmidity_control.zip (1 Кб)
- Library.zip (20 Кб)
Источник: http://cxem.net/arduino/arduino121.php
Датчик уровня влажности почвы и автоматический полив на Arduino
Хотели бы вы, чтобы ваши растения сообщали о том, что их надо полить? Или просто держали вас в курсе уровня влажности почвы?
В этой статье мы рассмотрим проект автоматизированного полива с использованием датчика уровня влажности почвы:
Обзор датчика уровня влажности почвы
Подобные датчики подключаются достаточно просто. Два из трех коннекторов – это питание (VCC) и земля (GND). При использовании датчик желательно периодически отключать от источника питания, чтобы избежать возможного окисления. Третий выход – сигнал (sig), с которого мы и будем снимать показания.
Два контакта датчика работают по принципу переменного резистора – чем больше влаги в почве, тем лучше контакты проводят электричество, падает сопротивление, сигнал на контакте SIG растет.
Аналоговые значения могут отличаться в зависимости от напряжения питания и разрешающей способности ваших аналоговых пинов микроконтроллера.
Для подключения датчика можно использовать несколько вариантов. Коннектор, приведенный на рисунке ниже:
Второй вариант более гибкий:
Ну и конечно можно напрямую запаять контакты на датчик.
Если вы планируете использовать датчик за пределами квартиры, стоит дополнительно задуматься о защите контактов от грязи и прямого попадания солнечных лучей. Возможно, стоит подумать о корпусе или нанесении защитного покрытия непосредственно на контакты датчика уровня влажности и проводники (смотрите на рисунок ниже).
Датчик уровня влажности почвы с нанесенным защитным покрытием на контактах и изолированными проводниками для подключения:
Проблема недолговечности датчика уровня влажности почвы
Один из недостатков датчиков подобного типа – недолговечность их чувствительных элементов. К примеру, компания Sparkfun решает эту проблему, используя дополнительное покрытие (Electroless Nickel Immersion Gold).
Второй вариант продления срока действия сенсора – подавать на него питание непосредственно при снятии показаний. При использовании Arduino, все ограничивается подачей сигнала HIGH на пин, к которому подключен датчик.
Если вы хотите запитать датчик большим напряжением чем предоставляет Arduino, всегда можно использовать дополнительный транзистор.
Контроль уровня влажности почвы – пример проекта
В приведенном ниже проекте использованы датчик уровня влажности, аналог платы Arduino – RedBoard и LCD дисплей, на котором выводятся данные про уровень влажности почвы.
В приведенном ниже проекте использованы датчик уровня влажности, аналог платы Arduino – RedBoard и LCD дисплей, на котором выводятся данные про уровень влажности почвы.
Датчик уровня влажности почвы компании SparkFun:
Красный проводник (VCC) подключается к 5 В на Arduino, черный – к земле (GND), зеленый – сигнал – к аналоговому пину 0 (A0). Если вы используете другой аналоговый пин на Arduino, не забудьте внести соответствующие изменения в скетч для микроконтроллера, представленный ниже.
LCD дисплей подключен к 5 В, земле и цифровому пину 2 (также можно изменить и внести изменения в код) для обмена данными с микроконтроллером по серийному протоколу связи.
Стоит отметить, что если вы хотите продлить срок службы вашего сенсора, можно подключить его питание к цифровому пину и питать его только при считывании данных, а после – отключать.
Если запитывать датчик постоянно, его чувствительные элементы вскоре начнут ржаветь. Чем больше влажность почвы, тем быстрее будет проходить коррозия. Еще один вариант – нанести гипс на датчик.
В результате влага будет поступать, но коррозия значительно замедляется.
Программа для Arduino
Скетч достаточно простой. Для передачи данных на LCD дисплей вам необходимо подключить библиотеку Software Serial library. Если у вас в ее нет, скачать можно здесь: Arduino GitHub
Дополнительные пояснения приведены в комментариях к коду:
// Пример использования датчика уровня влажности почвы с LCD дисплеем.
// В скетче считываются данные с датчика и отображается уровень влажности почвы
// Для работы с дисплеем используется библиотека softwareserial library
#include<\p>
// Подключите пин для обмена данными с использованием LCD дисплея по серийному протоколу RX к цифровому пину 2 Arduino
SoftwareSerial mySerial(3,2); // pin 2 = TX, pin 3 = RX (не используется)
// Тут мы настраиваем некоторые константы.
// Настройка констант зависит от условий внешней среды, в которой используется датчик
int thresholdUp = 400;
int thresholdDown = 250;
// Настраиваем пин A0 на Arduino для работы с датчиком:
int sensorPin = A0;
void setup(){
mySerial.begin(9600); // устанавливаем скорость обмена данными на 9600 baud
delay(500); // ждем пока дисплей прогрузится
}
void loop(){
// Здесь мы объявляем строку, в которой хранятся данные для отображения
// на жидкокристаллическом дисплее. Значения будут изменяться
// в зависимости от уровня влажности почвы
String DisplayWords;
// В переменной sensorValue хранится аналоговое значение датчика с пина А0
int sensorValue;
sensorValue = analogRead(sensorPin);
// перемещение курсора к началу первой строки LCD дисплея:
mySerial.write(254);
mySerial.write(128);
// очистка дисплея:
mySerial.write(” “);
mySerial.write(” “);
// перемещение курсора к началу первой строки LCD дисплея:
mySerial.write(254);
mySerial.write(128);
// запись необходимой информации на дисплей:
mySerial.write(“Water Level: “);
mySerial.print(sensorValue); //Использование.print вместо .write для значений
// Теперь мы проведем проверку уровня влажности по сравнению с заданными нами предварительно числовыми константами.
// Если значение меньше thresholdDown, отображаем слова:
// “Dry, Water it!”
if (sensorValue
В программе использованы различные минимальное и максимальное значения. В результате среднее значение может характеризовать влажность в зависимости от того, почва увлажняется или сушится. Если вы не хотите использовать это среднее значение, максимальное и минимальное значения можно принимать одинаковыми.
Однако эксперименты показывают, что предложенный подход позволяет более точно характеризовать процессы, которые происходят в почве. Определенного точного среднего значения в реальных условиях не существует. Так что с выборкой диапазона можно поиграться.
Если вас интересуют процессы, которые происходят в почве при взаимодействии с водой, почитайте тут, например: Wiki. Процессы достаточно сложные и интересные.
В любом случае, переменные вам надо настроить под собственные условия: тип почвы, необходимый уровень увлажнения. Так что тестируйте, экспериментируйте пока не определитесь с подходящими значениями.
Автоматический полив
После организации считывания данных с датчика уровня влажности и их отображения, проект можно развить дальше, организовав систему автоматического полива.
Датчик уровня влажности в составе автоматической системы полива на основании Arduino:
Для автоматизации полива нам понадобятся дополнительные детали: возможно, шкивы, зубчатые шестерни, двигатель, муфта, транзисторы, резисторы. Список зависит от вашего проекта. Ну все, что может попасться под руку в быту. Более детально один из примеров показан ниже:
Это один из множества вариантов установки двигателя для системы автоматического полива. Колесо можно установить непосредственно в воде. В таком случае при его быстром вращении, вода будет подаваться к растению. В общем, можете проявить фантазию.
Схема подключения двигателя постоянного тока (статья с более подробным примером подключения двигателя к Arduino) на примере копии Arduino от SparkFun приведена ниже:
Ниже приведен скетч для Arduino (по сути он такой же как и приведенный выше с небольшим дополнением для управления двигателем):
// В скетче считываются данные с датчика и отображается уровень влажности почвы
// если почва сухая, начинает работать двигатель
// Для работы с дисплеем используется библиотека softwareserial library
#include<\p>
// Подключите пин для обмена данными с использованием LCD дисплея по серийному протоколу RX к цифровому пину 2 Arduino
SoftwareSerial mySerial(3,2); // pin 2 = TX, pin 3 = RX (unused)
// Управляем двигателем с помощью пина 9.
// Этот пин должен обязательно поддерживать ШИМ-модуляцию.
const int motorPin = 9;
// Тут мы настраиваем некоторые константы.
// Настройка констант зависит от условий внешней среды, в которой используется датчик
int thresholdUp = 400;
int thresholdDown = 250;
// Настраиваем пин A0 на Arduino для работы с датчиком:
int sensorPin = A0;
void setup(){
pinMode(motorPin, OUTPUT); // устанавливаем пин, к которому подключен двигатель в качестве выхода
mySerial.begin(9600); // устанавливаем скорость обмена данными на 9600 baud
delay(500); // ждем пока дисплей прогрузится
}
void loop(){
// Здесь мы объявляем строку, в которой хранятся данные для отображения
// на жидкокристаллическом дисплее. Значения будут изменяться
// в зависимости от уровня влажности почвы
String DisplayWords;
// В переменной sensorValue хранится аналоговое значение датчика с пина А0
int sensorValue;
sensorValue = analogRead(sensorPin);
// перемещение курсора к началу первой строки LCD дисплея: mySerial.write(254);
mySerial.write(128);
// очистка дисплея:
mySerial.write(” “);
mySerial.write(” “);
// перемещение курсора к началу первой строки LCD дисплея: mySerial.write(254);
mySerial.write(128);
// запись необходимой информации на дисплей:
mySerial.write(“Water Level: “);
mySerial.print(sensorValue); //Использование.print вместо .write для значений
// Теперь мы проведем проверку уровня влажности по сравнению с заданными нами предварительно числовыми константами.
// Если значение меньше thresholdDown, отображаем слова:
// “Dry, Water it!”
if (sensorValue
Удачи вам в реализации автоматического полива ваших растений!
Источник: http://arduino-diy.com/arduino-datchik-urovnya-vlazhnosti-pochvy-i-avtomaticheskiy-poliv
Знакомство с Arduino Pro mini на примере китайского аналога
Arduino Pro mini – компактная версия платформы Arduino, предназначенная для построения всевозможных проектов, имеющих не большие размеры. Платформа на 100% совместима с другими платформами Arduino, например такой как Arduino UNO, но намного компактнее её.
В данной статье я сделаю обзор на китайский аналог Arduino Pro mini, расскажу чем она отличается от оригинала, чем данная плата отличается от других плат платформы Arduino, а так же расскажу как подключить её к компьютеру для заливки в неё скетч.
В завершении убедимся в работоспособности платы, на примере скетча «blink».
Вот этот аналог Arduino Pro mini я купил на Aliexpress за $1.30, в то время как оригинальная плата на сайте производителя стоит €13. Разница в цене — это первое главное отличие китайского аналога от оригинала.
Плата пришла в антистатическом пакете. В комплекте так же находились контактные площадки.
Для сравнения, верхняя плата – оригинальная Arduino Pro mini, ниже, мой китайский аналог. По количеству и расположению контактов, плата идентична оригиналу, кроме контактов А4, А5, А6 и А7. На оригинальной плате эти контакты расположены в центре, на аналоге они находятся слева.
Для того что бы иметь визуальное представление о размерах платы, приведу её рядом со своим китайским аналогом Arduino UNO. Pro mini удалось уменьшить в размерах за счёт удаления USB разъёма, схемы согласования платы с USB портом, также был удалён разъём питания. Китайский аналог на 100% совместим со всеми модулями, драйверами, датчиками, которые работают с оригинальной версией.
Оригинальная современная плата Arduino Pro mini построена на базе микроконтроллера ATmega328, на том же самом что и Arduino UNO. Более ранние модели этой платы строились на микроконтроллере ATmega168.
Китайские же аналоги Arduino Pro mini на данный момент строятся как на ATmega328, так и на ATmega168. В этом второе отличие оригинала от аналога. Плата на ATmega168 будет стоить дешевле, чем на ATmega328. Главное же отличие этих контроллеров в том, что ATmega328 содержит на борту в два раза больше памяти, чем ATmega168.
Отличия микроконтроллеров | ATmega168 | ATmega328 |
Flash Memory | 16 Kбайт | 32 Kбайт |
SRAM | 1 Кбайт | 2 Кбайт |
EEPROM | 512 байт | 1024 байт |
Но это не значит, что на ATmega168 не получится построить проект, который разрабатывался на плате с ATmega328, ведь 16 Кбайт будет вполне достаточно для многих скетчей.
Всё же, если вам необходим двойной объём памяти, изучайте описание платы перед покупкой. При покупке своего китайского аналога, я выбрал плату за $1.30 с ATmega168, вместо платы с ATmega328 за $1.93.
Как видно, здесь тоже можем сэкономить на покупке.
Оригинальная плата Pro mini производится с двумя вариантами питания: на 5 и 3,3 вольта. У версии, работающей от 3,3 вольта, микроконтроллер работает на частоте 8 МГц, у 5-ти вольтовой версии – на частоте 16 МГц.
Китайские аналоги так же производятся в 2-х вариантах. Моя плата работает от 5 вольт.
Визуально частоту работы контроллера можно определить по установленному на плате кварцу, если он в большом корпусе, на нём отчётливо можно увидеть частоту, на которой он работает: 8 или 16 МГц.
Фрагменты плат с кварцами, работающими на разной частоте.
Про питание Arduino Pro mini.
Для питания платы предназначены выводы GND, VCC и RAW.
GND – это минус питания (земля).
VCC – используется для подачи питания 3,3 или 5 вольт, в зависимости от версии платы. На этот разъём подаётся строго то напряжение, на которое рассчитана плата.
Напряжение с этого контакта идёт напрямую на микроконтроллер, если оно будет выше необходимого, последний может выйти со строя.
Если питать плату собираетесь большим напряжением, тогда «+» питания следует подключать к разъёму RAW. На этот разъём можно подавать до 12 в, не зависимо, на какое напряжения рассчитана плата.
Напряжение с этого контакта подаётся на стабилизатор напряжения, который преобразует его до необходимого значения, а уже затем подаётся на контролер.
Если так получилось что вы купили плату и не знаете на какое напряжение она рассчитана, подайте на разъём RAW 5 вольт и измерьте напряжение на разъёме VCC. Если плата рассчитана на 3,3 вольта, то соответствующее напряжение будет и на VCC, если будет на VCC 5 вольт, значит плата 5-ти вольтовая.
Цифровые и аналоговые выходы Pro mini соответствуют количеству выходов как и у платы UNO: 14 цифровых и 6 аналоговых. Контакты А4 (SDA) и А5 (SCL) используются для подключения различных устройств по шине I2C.
Про прошивку Arduino Pro mini.
Став одной из самых маленьких плат платформы Arduino, плата Pro mini обрела недостаток — нельзя прошить плату без сторонней помощи. Расскажу про все возможные способы заливки скетчей в Pro mini.
Прошивка Arduino Pro mini с помощью платы Arduino UNO.
Это не самый простой способ, поскольку не у каждого имеется плата UNO и покупать её специально для прошивки плат Pro mini не целесообразно.
Но поскольку у меня имеется китайский аналог UNO, я начну с этого способа. Для реализации этого способа, должен быть установлен драйвер на плату UNO и определён номер COM – порта, к которому эта плата подключена.
Как это сделать, описано в статье про китайский аналог Arduino UNO.
Соединяем платы как на картинке. Выводы GND, TX и RX соединяем с аналогичными. Вывод «VCC» на плате Pro mini соединяем с выводом «5V» или «3V3» на плате UNO.
Если у вас 5 вольтовая версия Pro mini, то соединяете с выводом «5V», как в моём варианте. Если версия 3-х вольтовая, подключаете к «3V3» на плате UNO. Вывод RESET на плате UNO подключаем к выводу DTR на плате Pro mini.
На оригинальной плате вывод DTR обозначен как GRN, в общем это одно и то же.
Контакты UNO | Контакты Pro mini |
GND | GND |
TX | TX |
RX | RX |
5V (если 5 вольтовая версия Pro mini) | VCC |
3V3 (если 3,3 вольтовая версия Pro mini) | |
RESET | DTR (GRN) |
Когда всё подключено, запускаем Arduino IDE.
Выбираем плату в которую нужно зашить скетч: «Инструменты» – «Плата:» и выбираем свою плату, в данном случае это «Arduino Pro or Pro Mini».
Поскольку платы Pro Mini могут использовать различные микроконтроллеры (ATmega168 или ATmega328 ), а так же различное напряжение питания (3,3v или 5v), выбираем свою конфигурацию: «Инструменты» – «Процессор:» в данном примере выбираю «ATmega168 (5V, 16 MHz)».
Выбираем порт, к которому подключена плата UNO: «Инструменты» – «Порт:» в моём случае это «COM7».
Попробуем залить первый скетч и убедится в работоспособности платы. Выбираем скетч «Blink», смысл которого – мигать встроенным в плату светодиодом: «Файл» – «Образцы» – «01.Basics» – «Blink».
С помощью кнопок «Проверить» и «Вгрузить» проверяется скетч на ошибки и загружается в плату. Если нет ошибок, синий светодиод начнём мигать на плате Pro Mini.
Можно поиграться значениями в скетче и изменить время горения светодиода и время погашенного светодиода, вновь залить скетч и увидеть, что светодиод будет мигать по-другому.
Прошивка Arduino Pro mini с помощью переходника USB to TTL.
Об одном из таких переходников на чипе PL2303 я как то уже рассказывал, теперь пришло время его испытать на практике. Существует две версии этого переходника, один без контакта GRN (DTR), как у меня, второй с данным контактом. Те что с контактом, стоят как минимум в два раза дороже тех, что без контакта.
Переходник USB to TTL на чипе PL2303
Если будете использовать переходник без контакта GRN (DTR), подключаете его к Pro mini как на картинке.
Pro mini | USB to TTL PL2303 |
GND | GND |
VCC | +5V (для 5 вольтовой Pro mini) |
3V3 (3,3 вольтовой версии Pro mini) | |
RX | TX |
TX | RX |
Если у вас будет 3-х вольтовый вариант Pro mini, то контакт VCC платы, нужно соединить с контактом 3V3 USB переходника.
Когда всё подключено, запускаем Arduino IDE. Выбираем версию платы, процессор и порт, выбираем скетч «Blink», всё так же, как в приведённом выше примере с UNO.
Для заливки скетча необходимо:
1. Нажать на кнопку «Вгрузить».
2. Начнётся процесс компиляции скетча, о чём можно понять по надписи «Компиляция скетча…».
3.
Как только данная надпись сменится на «Вгружаем…».
4. Кратковременно нажимаем на плате Pro mini кнопку RESET.
5.
Скетч зальётся в плату, об успешном окончании можно будем наблюдать за надписью «Взрузили» и по мигающему светодиоду на плате.
Если у вас в руках окажется переходника USB to TTL, с контактом DTR (он же GRN, RESET) соедините его с соответствующим контактом RESET на плате Pro mini. В таком случае, при заливки скетча, кнопку RESET нажимать не придётся, плата сама сделает сброс.
Переходник USB to TTL на чипе CH340G
Данный переходник так же как и на PL2303 позволяет прошивать плату Arduino. Схема подключения следующая:
Pro mini | USB to TTL CH340G |
GND | GND |
VCC | 5V (джампером замкнуть контакты “3V3” и “VCC”, если Arduino питается от 5 вольт) |
3V3 (джампером замкнуть контакты “5V” и “VCC”, если Arduino питается от 3,3 вольт) | |
RX | TXD |
TX | RXD |
Существуют так же другие USB переходники для прошивки Arduino Pro mini, например на микросхеме FT232, но ввиду того что этот переходник стоит дороже, я его не беру во внимание.
Прошивка Arduino Pro mini с помощью программатора на CH341A.
Программатор на микросхеме CH341A может работать в режиме UART, а значит им можно прошить Arduino Pro mini.
Программатор может быть представлен в разном визуальном оформлении, основное отличие это цена и наличие дополнительных контактов. Среди этих контактов например, дополнительно может быть разведён контакт на +5В. На том который купил я не было этого контакта, пришлось подпаиваться на плате, что бы получить это напряжение. Детальный обзор этого программатора можно прочитать здесь.
Что бы использовать данный программатор как UART переходник, нужно разомкнуть контакты P/S.
Для подключения к Pro mini понадобятся контакты на программаторе: Tx, Rx, GND и +5В.
Ещё одна особенность этого программатора в том, что на его борту имеется контакт DTR, соединив который с платой Pro mini, отпадёт необходимость нажимать кнопку Reset, при заливки скетча.
Для задействования этого контакта, нужно использовать контакт MOSI, в режиме UART он работает как DTR.
В моём варианте программатора, контакт +5В не был выведен, пришлось это напряжения взять с ножки стабилизатора. В конечном варианте подключение следующее:
Pro mini | CH341A |
Tx | Rx |
Rx | Tx |
DTR | MOSI |
GND | GND |
VCC | +5В |
Скачать драйвер: Яndex-диск MEGA Облако mail@ru
После установки драйвера, в “Диспетчере устройств” появится виртуальный COM-порт. Заливка скетчей происходит так же, как и через переходники PL2303 / CH340G, с той лишь разницей, что не нужно нажимать кнопку Reset.
Следует отметить, данный программатор можно подключать только к 5 вольтовым платам Arduino, поскольку он использует уровни 5 вольт! Это же касается и других устройств, для которых нужен UART переходник.
Прошивка Arduino Pro mini через COM – порт.
Напрямую прошить плату через COM – порт не получится, поскольку у COM – порта и Pro mini разные логические уровни. Для их согласования нужно применить переходник на микросхеме MAX232. Сама микросхема не дорогая, но не знаю, стоит ли заморачиваться для прошивки Pro mini сборкой такого переходника, если по цене выйдет не дешевле, чем купить USB переходник на PL2303.
В любом случае представляю схему.
Что бы убедится в работоспособности этого метода, пришлось самому собрать эту схему на макетной плате. Плата в процессе…
Источник: http://radiolis.pp.ua/arduino/22-znakomstvo-s-arduino-pro-mini-na-primere-kitajskogo-analoga
Мы купили Arduino Pro Mini, что делать дальше? — DRIVE2
Когда меня спрашивают: “Хочу научится программировать микроконтроллеры, с чего начать, что купить?”, то с моей точки зрения ответ однозначен: “Покупаем Arduino Pro Mini и пробуем, если все получается — переходим к более сложным вещам”.
Что такое Ардуино
Несмотря на название раздела не буду рассказывать, что такое Ардуино и откуда оно взялось, так как привел в свое время неплохую статью об этом — www.drive2.ru/b/2520138/ .
Просто вспомним, что под понятием Ардуино обычно понимают совокупность трех вещей: платы или платформы Arduino (в данном случае Arduino Pro Mini), среды разработки Arduino IDE и языка программирования C++ с набором специальных библиотек.
Любую из этих трех вещей мы можем подменить на аналог, но об этом мы поговорим позже. А пока просто скачаем Arduino IDE с официального сайта — www.arduino.cc/en/Main/Software и установим его на компьютер.
Что же мы купили?
Если мы все купили правильно, то перед собой мы увидим две платки
Верхняя плата — это собственно и есть Arduino Pro Mini, нижняя — USB-UART / USB-TTL конвертер
Последний может выглядеть не так, как на фото, а иметь вид готового кабеля.
(Лично я советовал бы выбрать первый вариант, но это как говорится на вкус и цвет …)
Теперь о плате/платформе Arduino Pro Mini: Конструктивно она представляет собой плату с распаянным на ней микроконтролером, кнопкой RESET, микросхемой питания и прочей, не существенной для нас на данном этапе, периферией.
Существует две версии Pro Mini: одна работает от 3.
3В при частоте 8 МГц, другая — от 5В при 16 МГц. В основе платы лежит микроконтроллер Atmega 168 или Atmega 328 — отличие между ними заключается в объеме внутрисистемно программируемой Flash памяти — 16 или 32 кБайта. Это так называемая “память программ”, т.е.
память в которую будет записана программа и содержимое ее не будет изменятся в процессе работы. Напомню, что Atmega построен по так называемой Гарвардской архитектуре (www.drive2.ru/b/2506495/) в которой “память программ” и “память данных” реализованы отдельно, для большего быстродействия и надежности.
“Память данных” делится на 2 части: оперативную SRAM, которая что у 168, что у 328 составляет 1 Кб, и постоянную EEPROM (Electrically Erasable Programmable Read-Only Memory) объемом 512 байт, данные из которой не “теряются” при отключении питания.
В зависимости от исполнения на плате может быть 30, 32 или 34 вывода (PIN). На картинке ниже показана”максимальный” 34 пиновый вариант
Посмотрели? Страшно? Давайте разберемся что где.
GND — это у нас выводы куда подключается “земляные” провода, т.е. приходит/выводится “-” питания
VCC — плюсовые выводы для питания платы напряжением 5В (иногда 3,3В). Таке этот вывод моно использовать для подачу “наружу” опорного напряжение для цифровых входов.
RAW — вывод используется, если у нас нет стабилизированного напряжения 5В, но есть постоянное в диапазоне от 7 до 12В. Иногда указывают максимальное значение 30В — т.е. то напряжение которое микросхема питания может выдержать непродолжительное время не перегреваясь.
Помним, что в автомобиле диапазон напряжений от 12 до 15,5В, поэтому подключать RAW к “+” авто напрямую нельзя и нужно собрать схему по питанию следующего вида:
В принципе, заменив микросхему 7812 на 7805, можно питать Pro Mini и через вывод VCC
TXD и RXD — выводы UART/USART — www.drive2.ru/b/2602560/
RST — он же RESET — в мануале написано насчет него написано следующее “низкий уровень сигнала на выводе перезагружает микроконтроллер.
Обычно применяется для подключения кнопки перезагрузки на плате расширения, закрывающей доступ к кнопке на самой плате Arduino”. На деле это означает что когда этот вывод подключается к земле, происходит перезапуск (сброс) Arduino Pro Mini.
Выводы обозначенные на плате цифрами с 2 до 13 — цифровые выводы (Обязательно читаем — www.drive2.ru/b/2528993/), могут настраиваться как вход или выход. Выводы работают при напряжении 3,3 В. Каждый вывод имеет нагрузочный резистор (стандартно отключен) 20-50 кОм и может пропускать до 40 мА.
Они могут выводить значения только высокого (3,3В или 5В в зависимости от версии) или низкого (0В) уровня. Некоторое из них обозначенные на схеме выше как PWM могут выводить ШИМ сигнал (www.drive2.ru/b/2558797/) с разрешением 8 бит (от 0 до 255)
Выводы А0-А7 — аналоговые входы с 10 битным АЦП (www.
drive2.ru/b/2558839/). В зависимости от исполнения платы их может быть от 4 до 8. Эти выводы могут также работать как цифровые.
DTR (Data Terminal Ready) — Готовность приемника данных.
Некоторые из описанных выводов могут выполнять намного больше функций, что видно из схемы, но об этом мы поговорим позже, по мере того как будем использовать эти функции.
Подключаемся
Схема подключения достаточно простая и ошибиться достаточно сложно
Единственное что посоветую использовать не идущие в комплекте провода, а купить разъем питания на 6 контактов с шагом контактов 2,54мм. Он называется NS25 — 2,54 мм и такой же на 5 контактов для подключения к USB-UART / USB-TTL конвертеру.
После подключения у меня получилось так
Можно выпаять гребенку на конвертере и припаяться проводами непосредственно к плате — это позволит отказаться от одного из разьемных соединений и защитить конвертер, одев на него термоусадку.
Как видно используется только по 4 провода — это связано с тем, что у меня на обоих конвертерах нет вывода DTR
Что такое DTR и что делать если его нет?
Данный вывод предназначен для того, чтобы USB-serial контроллер Arduino перезагружал МК каждый раз, когда терминальная программа (в т.ч. Serial monitor, встроенный в ПО Arduino IDE) устанавливает соединение. Реализовано это следующим образом: у USB-serial контроллера вывод DTR (Data Terminal Ready) связан с выводом RESET.
Если программа, работающая с виртуальным последовательным портом, использует DTR, то при установке соединения МК перезагружается.Само по себе это обеспечивает беспроблемную загрузку скетча из Arduino IDE — МК перезагружается перед загрузкой кода. В этом смысле автоматическая перезагрузка облегчает жизнь. Кроме того, перезагрузка при подключении терминала тоже может оказаться удобной, т.к.
довольно много скетчей выводят какую-то полезную информацию через последовательный порт, при этом скетч выполняется сразу после загрузки в МК, когда терминал еще не подключен (т.к. недавно порт был занят), так что увидеть вывод скетча в первые секунды его работы было бы нельзя. Перезагрузка в момент подключения терминала позволяет получить весь вывод, начиная с момента загрузки МК.
В случае, если этот вывод отсутствует, то у нас есть 3 варианта1) Купить другой конвертер 🙂
2) Распаять вывод самому. (Как это сделать написано здесь — new-tech.in.ua/tips/109-usb-uart-converter)
3) Отправлять на перезагрузку вручную при помощи кнопки RESET расположенной на плате — об этом ниже.
Подключаем плату к компьютеру
Я не буду рассказывать как устанавливать драйвера конвертера и Arduino IDE — все достаточно стандартно.
Если все сделали правильно, то при подключении конвертера в системе появится виртуальный СОМ — порт. Это легко увидеть:
На правой картинке появляется дополнительный порт СОМ10 (у вас номер может быть другим) — его нужно выбрать, клацнув по нему мышкой.Далее проверяем правильность указания платы, программатора — все должно быть как на картинке выше.
Указываем микроконтроллер 168 или 328, 5В или 3,3В
Почувствуем себя программистами
Попробуем залить простейшую программу. Для этого воспользуемся библиотекой примеров и тем, что у нас на самой плате на 13 выводе припаян светодиод. Скорее всего программа мигания этим светодиодом будет загружена в качестве тестовой, но мы все равно загрузим свою :). Находится этот пример тут:
Листинг программы:
//Процедура инициализацииvoid setup() {// инициализируем вывод 13 на вывод.pinMode(13, OUTPUT);
}
// Основное тело программыvoid loop() {digitalWrite(13, HIGH); // включаем светодиод (Подаем сигнал высокого уровня на вывод 13)delay(500); // ждем 500 милисекунд (в стандартном примере 1000, что означает одну секунду)digitalWrite(13, LOW); // выключаем светодиод (Подаем сигнал низкого уровня на вывод 13)delay(500); // ждем 500 милисекунд после чего идем опять в начало основной программы}
Данная программа будет выполняться по кругу пока включен микроконтроллер.
“Заливаем” программу
Тут все просто — нажимаем на кнопочку “вгрузить”
Если вывод DTR не подключен, то нажимаем на плате кнопку RESET и не отпускаем пока внизу окна Arduino IDE не появится надпись “вгружаем” — этот момент важно не пропустить, иначе микроконтроллер не будет своевременно перезагружен и заливка программы не состоится. Если DTR подключен, то просто ждем
Если все мы сделали правильно, то вскоре мы увидим надпись “вгрузили” и светодиод начнет мигать с периодом 0,5с.
Послесловие
Я не рассказывал как припаивать “гребенку” к плате — если вы не умеете это делать, то сначала научитесь паять.
Как подключать всевозможную периферию можно подглядеть здесь — www.drive2.ru/c/1735998/
И вообще очень рекомендую к прочтению книгу Улли Соммер “Программирование микроконтроллерных плат Arduino/Freeduino” (она есть в интернете и ее несложно найти).
Источник: https://www.drive2.ru/b/2642464/