Сообщество - Arduino & Pi

Arduino & Pi

1 493 поста 20 825 подписчиков

Популярные теги в сообществе:

30

Помогите с архивом из поста про подключение водосчетчиков

Здравствуйте, уважаемые кодеры на микроконтролерах, Ардуинах и прочих малых формах электронно-программируемой жизни. В общем проблема такая. Полгода назад проскакивал пост уважаемого @ansealk про подключение Ардуин к водосчетчикам.


Вот он: http://pikabu.ru/story/podklyuchaem_arduino_k_schetchikam_vo....

Мне как-то было не досуг, заниматься этой штукой, а вот сейчас, приперло. Два сан. узла, жутко не удобное распололжение счетчиков. Решил повторить опыт, а сами исходники - слить не могу. Не доступны они. http://www.ansealk.ru/files/Arduino-Counters.zip


Причем FTP уважаемого ansealk - работает. Оставил на нем для него сообщение - но - безрезультатно.


Возможно кто-то из участников сообщества сливал себе исходники этого проекта и может поделится?


К сожалению в программировании я не очень силен. Что-то поправить смогу, изменить и дополнить, но написать "с нуля" - максимум вывод "Hello, World"!.

Заранее спасибо. Не ругайте. Не судите. Поста с вопросами так и не запилили. Апать пост не нужно. Коммент для минусов внутри.


Вот Вам чудо, малопопулярное. CubieTruck. Живет на нем Debian-based Linux и полноценный web-сервер, с Апачем и нДжинксом.  


Инстересно будет, если кто-то расскажет есть ли у него такая, и что он из нее сотворил...

Плата моя. просьба тоже тег моё.

Помогите с архивом из поста про подключение водосчетчиков
Показать полностью 1
101

Выпуск 4, господа :) Arduino IDE - установка, настройка и интерфейс. Проверка соединения с платой Arduino.

Привет начинающим ардуинщикам!)


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

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

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


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


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

В этом случае необходимо установить драйвер CH340G для работы с этим чипом.


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


Интерфейс среды содержит следующие основные элементы: текстовый редактор для написания кода [1], область для вывода сообщений [2], текстовая консоль [3], панель инструментов с традиционными кнопками [4] и главное меню [5].

Разберем их всех по порядку.

Программы, создаваемые в среде разработки Arduino, иногда еще называют скетчами. Скетчи пишутся в текстовом редакторе и сохраняются в файлах с расширением .ino. Встроенный текстовый редактор имеет стандартные инструменты копирования, вставки, поиска, замены текста и т.д.


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


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


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

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

Теперь кратко пройдемся по главному меню. Вкладка Файл имеет стандартные пункты меню и здесь особо интересным для нас является пункт «Примеры», содержащий в себе различные примеры проектов для Arduino. Давайте сразу же перейдем в пункт Basics и выберем пример Blink, который представляет собой простую программу мигания стандартным светодиодом на плате Arduino. Немного позднее мы загрузим этот код в микроконтроллер.

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

«Инструменты» - в этой вкладке нас сейчас интересуют пункты выбора платы и порта подключения. При нажатии на первый, перед нами открывается список плат, поддерживаемых средой разработки, который, кстати, можно дополнять самостоятельно. Выберем в зависимости от подключаемой вами платы соответствующее наименование в этом списке. В моем случае это Arduino Uno.

Теперь снова откроем вкладку «Инструменты» и перейдем к пункту «Порт», как видите, он сейчас неактивен, потому что мы еще не подключили плату Arduino к компьютеру. Давайте сделаем это.


При подключении Arduino загорится светодиод питания платы и, если производитель тестировал плату, запустится программа мигания светодиодом. Теперь, при удачном подключении, пункт «Порт» должен стать активным и у нас появится возможность выбрать COM-порт компьютера, к которому подключена плата.

Бывают такие случаи, когда в писке появляется несколько COM-портов и понять к какому именно порту подключена Arduino достаточно сложно. Определить нужный COM-порт поможет диспетчер устройств, в котором необходимо выбрать пункт «Порты (COM и LPT)» и найти нашу Arduino, в скобках будет указан COM-порт который мы и выберем в среде разработки.

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


Ну что же, кажется все готово, чтобы произвести первую тестовую загрузку нашего примера в микроконтроллер. Перед загрузкой убедитесь, что вы выбрали правильное название платы и COM-порт, если вдруг COM-порт окажется ошибочным, то Arduino сообщит вам об этом и предложит выбрать другой.


Давайте теперь нажмем на кнопку «Загрузка» и посмотрим, что будет происходить. Строка сообщений уведомляет нас о начале компиляции, то есть переводе нашей программы на язык, понятный микроконтроллеру и затем происходит загрузка этого кода на плату Arduino.

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


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


Ну а на этом все, не бойтесь экспериментировать, всем добра и до встречи в новом выпуске! :)

Показать полностью 10
147

Попробовал сделать Arduino библиотеку. Знакомьтесь - RGB_LED.

Недавно решил попробовать свои силы в создании библиотек, да никак не мог найти повод (идей не было).

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

Поэтому ловите, если нужно! https://github.com/VinokurovSE/RGB_LED

Внутри ещё кучка примеров, но об этом чуть позже.

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

Установил белый цвет  LED1.setRGB(255, 255, 255);

И получил далеко не белый цвет. Решил не фотографировать этот позор.

Всё дело в том, что сопротивление не подходит, так как разные цвета жрут ток по разному.

Поэтому я сделал это:

Внутри деревянной коробушки ничего, кроме трёх подстроечных резисторов и термоклея.

Просто так лучше выглядит. И ещё потому что я могу.

Вот такая красота у нас получается!

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


Внутри вас ждёт 5 примеров:


- RGB_random: каждые 5 миллисекунд обновляем цвет, по достижении которого задаём новый цвет


- RGB_random_LCD: то же самое, только с выводом информации на дисплей, подключенный по i2c


- RGB_random_Serial: ну вы поняли!


- RGB_random_LCD: то же самое, только с выводом информации на дисплей, подключенный по i2c


- RGB_setRGB: попеременное включение разных цветов без плавного перехода


- RGB_transfusion: то же самое, только плавно

А вот и вывод информации на дисплей:

А ещё вы можете сделать несколько объектов, и светодиоды будут работать независимо!

Хорошей пятницы, и удачных проектов!

Показать полностью 9
248

Гусеничное шасси своими руками. Часть 1

Решил построить еще одного робота. Поглядел у китайцев готовые шасси на гусеницах и офигел от цен. Решено построить свое. В интернете не особо много, сделанных и описанных полностью готовых проектов. Поэтому выкладываю свои наработки, надеюсь хоть кому-то будет данная инфа полезной. И так начнем... Раму сделал из алюминиевого профиля. Размер 30 на 30 сантиметров. (квадратная форма, думаю повысит устойчивость)

Двигатели будут сзади. Чтобы от нагрузки ничего не смещалось было решено поставить по два подшипника на привод.

Шпильки все 8мм. Привод думаю осуществлять через муфту. Но при таком конструктиве можно поставить цепную или ременную передачу. Катки сделал из добротной фанеры. Делат так - сначала надрезал до половины коронкой по дереву, потом перьевым сверлом на 22мм. сверлил центральное отверстие, а потом дорезал коронкой сам каток.

Подшипники потом вклею в катки. Все катки одинакового диаметра 40 мм.  Подшипники наружный диаметр 22 мм. а внутренний 8 мм.

фото в сборе.

Гусеницы будут самодельными. А пока просто прикинул ремешок чтоб глянуть как будет сидеть гусеница.

Чтобы не возникало вопроса, "гусянки" будут из П-образного профиля продетого на тросик. Но это уже позже... Сильно не пинайте, т.к. все делалось на коленке. Критика по делу приветствуется и идеи тоже. Всем добра!!!

Показать полностью 10
68

Расширим горизонты? :)

Друзья! Команда Пикабу предложила нам объединить в одном месте не только любителей Arduino, но и всех, кто работает с еще одной, не менее интересной платформой для программирования - Raspberry Pi. Предложение поступило от пользователя @Kerbiter в этом посте, и, дабы не создавать отдельное сообщество со схожей тематикой, мы решили немного расширить наше.


Для тех, кто впервые слышит о Raspberry Pi, цитата из вики - "Raspberry Pi - одноплатный компьютер размером с банковскую карту, изначально разработанный как бюджетная система для обучения информатике, впоследствии получивший намного более широкое применение и популярность, чем ожидали его авторы. Разрабатывается Raspberry Pi Foundation. Всего за три года было продано более 4,5 миллионов устройств Raspberry Pi."


Для примера, Paspberry Pi 3 выглядит так:

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


Из-за ограничения на количество модераторов, условно за главного по Raspberry у нас будет @Kerbiter.


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

Показать полностью 1
173

Выпуск 3. Основы Arduino для начинающих. Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер ATmega328P

И снова привет всем любителям и новичкам программирования Arduino!)


Это третье видео (статья) из серии «основы Arduino для начинающих» и сегодня мы поговорим о внутренностях платы Arduino Uno и их предназначении, а так же уделим немного внимания её микроконтроллеру Atmega328.


Предыдущие выпуски вы найдете здесь: 0,1,2


Традиционно для вас доступны два варианта представления материала - видео и текст, надеюсь, оба варианта будут интересными :)

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


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

С чего начинается любая схема? Конечно же, это различные компоненты, отвечающие за ее питание. Поэтому первым в нашей функциональной схеме мы выделим именно это. Вообще, у Arduino есть три пути получить энергию для работы: это питание по шине USB, от специального разъема питания на плате или входа Vin. Давайте разберем их все по отдельности.

Подключая плату к компьютеру посредством USB-интерфейса, вы подаете питание на Arduino благодаря четырехпроводной структуре шины USB, где 2 провода отвечают за передачу команд, а два других провода за непосредственное питание устройств. Именно по этим проводам Arduino и получает рабочее напряжение величиной 5В как это видно на принципиальной схеме. Так же, это напряжение поступает на вход стабилизатора напряжения, который понижает его до +3.3В, что необходимо для питания некоторых отдельных компонентов, подключаемых к Arduino, рассчитанных на это напряжение. Кстати, в качестве защиты от большого потребления тока вашей платой, на самом входе питающей линии разработчики установили небольшой предохранитель на 500мА, который, в случае различных обстоятельств, защитит USB-порт компьютера и плату Arduino от возможного выхода из строя.


все картинки кликабельны :)

Итак, следующим на очереди идет разъем питания для подключения, например, сетевого AC/DC-адаптера, аккумулятора или батареи. В отличие от USB-порта, где предполагается стабильное наличие напряжения 5В (или около того), в случае разъема питания ситуация складывается несколько иная, поскольку он рассчитан на подключение к нему источников питания различных напряжений. Диапазон этих значений колеблется в пределах от 6 до 20В и, при прямом подключении, это совсем не годится для компонентов нашей схемы. Поэтому разработчики поставили на входе питания стабилизаторы напряжения - один на 5В, другой на 3.3В. А так же парочку конденсаторов и диод, в качестве элементов борьбы с помехами и защиты от перепутывания полярности питания. Стоит отметить, что для стабилизатора напряжения всегда нужно напряжение, несколько выше того уровня, до которого он будет его понижать, и специфика стабилизатора такова, что уменьшение напряжения питания ниже 7В приводит к уменьшению напряжения на выводе 5V, что может стать причиной нестабильной работы устройства. Использование напряжения больше 12В может приводить к перегреву стабилизатора напряжения и выходу платы из строя. Именно поэтому, рекомендуется использовать источник питания с напряжением в диапазоне от 7 до 12В.

И, наконец, вывод Vin на плате Arduino. Если посмотреть на схему питания, то можно увидеть, что, при подключенном источнике питания к разъему, с этого вывода можно будет получить это же самое напряжение, правда, чуть меньшее из-за небольшого падения на диоде.

Ну а если теперь подключить источник питания к этому выводу, то напряжение так же попадет на стабилизатор 5В и плата будет запитана. Это удобно в случае использования различных батарей или аккумуляторов без специальных разъемов питания.

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

Итак, с блоком питания разобрались, идем дальше.


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

Этот микроконтроллер представляет собой USART, что в переводе означает «Универсальный синхронно-асинхронный приемо-передатчик». Именно он осуществляет передачу данных по самому распространенному на сегодняшний день протоколу RS-232, c помощью которого связывает COM-порт вашего компьютера и программируемый микроконтроллер.

Помните, мы говорили, что USB-кабель имеет 4 провода, два из которых питающие, а два других – сигнальные? Так вот, именно по сигнальным проводам и происходит передача данных от ПК к микроконтроллеру и обратно, а свидетельствуют о приеме, либо передаче, специальные светодиоды на плате, имеющие названия Rx и Tx, где R это сокращение слова Receive, то есть прием, а T – transmit – то есть отправление. Причем выводы Rx и Tx всегда подключаются разноименно, то есть Rx принимающего устройства соединяется с Tx передающего, и наоборот. Это видно из схемы подключения двух микроконтроллеров на плате Arduino. Для тех, кто желает знать о том, как передаются данные по USB при помощи UART, я рекомендую ознакомиться с этой ссылкой.

Ну вот, наконец, мы и подошли с вами к главному компоненту платы Arduino – микроконтроллеру Atmega328P, который, собственно, и является основным вычислительным центром этой платформы. Давайте разберемся, из каких основных частей он состоит.


В обобщенном виде, любой микроконтроллер можно разбить на три составляющие части:

1. Вычислительный блок, иначе именуемый как арифметико-логическое устройство или процессор. Также, наверняка многие из вас слышали или видели такую аббревиатуру как CPU (Central Processing Unit) что в переводе на русский значит "центральное процессорное устройство". Именно этот блок является самой главной частью системы и предназначен он для выполнения различных операций с числами. А вот уже последовательность этих операций называется программой. Каждая операция кодируется в виде числа и записывается в память микроконтроллера, но об этом, в другой раз..


2. Собственно, второй основной частью микроконтроллера и является модуль памяти. Это специализированное электронное устройство, которое представляет собой набор ячеек, в каждой из которых может храниться одно число. Именно здесь хранится написанная вами программа и другие команды микроконтроллера. Память делится на оперативную - ОЗУ (оперативное запоминающее устройство) и постоянную – ПЗУ (постоянное запоминающее устройство. Принципиальная разница между этими видами памяти в том, что в случае с оперативной памятью, при выключении питания микроконтроллера, записанные значения не сохраняются и существуют только до тех пор, пока это питание присутствует. Например, такая память используется для хранения каких-либо промежуточных результатов вычислений. А вот данные, хранимые в постоянной памяти, наоборот, никак не зависят от наличия питания и могут быть использованы микроконтроллером сразу же после включения. В такую память, например, записывается вся разработанная вами программа, и она никуда не пропадет при повторной подаче напряжения на микроконтроллер.


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

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

Именно с этими портами нам и предстоит работать в дальнейшем, ведь суть любой микропроцессорной системы сводится к управлению чем-то извне, а иначе, зачем нам микроконтроллеры? :)

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

Не пугайтесь таких сложных названий, на самом деле, все просто – для работы любого микроконтроллера нужен некий генератор импульсов, благодаря которому он сможет осуществлять свою деятельность по последовательному выполнению команд. Например, мы написали с вами программу мигания светодиодом 10 раз в секунду. Но как микроконтроллер узнает, не имея никакого представления о длительности одной секунды, когда ему пора включить светодиод, а когда пора выключить? Именно благодаря кварцевому резонатору, который, в зависимости от его номинала, генерирует определенное число импульсов за одну секунду, это число имеет единицы измерения – герцы и называется частотой. Например, частота, равная 5Гц означает 5 импульсов в секунду, 10Гц - десять импульсов и так далее.


На плате Arduino Uno для двух микроконтроллеров установлены, соответственно, два кварцевых резонатора с частотой 16МГц, что означает работу резонатора с частотой 16 миллионов(!) импульсов в секунду - только представьте, какая это огромная скорость! Именно эти импульсы и считает наш микроконтроллер, а впоследствии, по их количеству, делает вывод о том, сколько времени прошло с запуска какой-либо процедуры. За весь этот счет отвечают различные счетчики и таймеры, о которых мы обязательно поговорим в следующих выпусках, но пока вам достаточно знать, отчего зависит скорость работы микроконтроллера и как он ориентируется во времени.

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

Итак, мы познакомились с вами с основными составляющими платы Arduino и совсем немного поговорили о микроконтроллере ATmega. Хочу заметить, что изучению структуры и принципам работы микроконтроллеров можно посвятить большой отдельный курс, поэтому я не стал углубляться в эту тему и рассчитываю на вашу дальнейшую любознательность и стремление изучить и понять как можно большее в этой интересной сфере. В качестве дальнейшего учебного пособия по изучению микроконтроллеров AVR, не сочтите за рекламу, я советую вам книгу Белова А.В., в которой, на мой взгляд, достаточно доступным языком описаны все нюансы работы с микроконтроллерами.


Ну а на этом обзорный пост платы Arduino подходит к концу и в следующем выпуске мы познакомимся со средой программирования Arduino IDE – то есть её установкой, настройкой и пользовательским интерфейсом. Надеюсь, что данный материал был полезным и интересным для вас, спасибо за внимание и до встречи в новом выпуске! :)

Показать полностью 17
Отличная работа, все прочитано!