Как прошить Arduino Pro Mini

Загрузить прошивку на этот микроконтроллер можно несколькими способами:

  • Через другую плату ардуино, у которой есть встроенный USB-UART
  • С помощью специального программатора
  • Используя USBasp-программатор

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

Прошивка ардуино про мини с помощью Arduino Uno или Nano

Для того что бы прошить одну ардуинку через другую, нам понадобятся 2 платы Arduino, соединительные провода, USB кабель и компьютер. Я покажу как прошить Arduino Pro Mini с помощью Arduino Nano, но по этой же инструкции можно использовать и другие платы Arduino, такие как Uno, Mega и тд.

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

Выбор программатора
Выбор программатора

Выбираем этот скетч и прошиваем. Теперь мы готовы подключать Arduino Pro Mini. Подключаем следующим образом:

Arduino Nano -> Arduino Pro Mini

  • +5v -> Vcc
  • GND -> GND
  • D10 -> RST
  • D11 -> D11
  • D12 -> D12
  • D13 -> D13

У меня это выглядит так:

Arduino Pro Mini через Arduino Nano
Arduino Pro Mini через Arduino Nano

Далее нам нужно выставить в меню «Инструменты» нашу прошиваемую плату и тип программатора «Arduino as ISP»:

Теперь мы можем прошить нашу Arduino Pro Mini. Откройте или напишите нужную вам прошивку. Будьте внимательны! Стандартная кнопка загрузки скетча нам не подходит. По умолчанию она заливает прошивку без использования программатора. Таким образом мы прошьем микроконтроллер, который должен выступать в качестве программатора. Чтобы этого не произошло нужно перейти в меню Скетч >> Загрузить через программатор.

Готово!

Прошивка Arduino Pro Mini с помощью специального программатора

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

Для преобразования USB-to-Serial используется микросхема CH340. Что бы она определялась компьютером правильно необходимо установить специальный драйвер. Скачать и установить драйвер CH340

Прошить ардуино с помощью программатора очень просто. Нужно подключить программатор к Arduino Pro Mini следующим образом:

Arduino <-> Программатор

  • Vcc <-> Vcc
  • GND <-> GND
  • RX1 <-> TXD
  • TX0 <-> RXD

Подключаем программатор к компьютеру и проверяем, что он не требует драйверов. Если же он определяется как «неопознанное устройство» скачайте и установите драйвер. Его легко найти, набрав в поисковике «*модель вашего программатора* драйвер». Например «CP2102 драйвер». Далее запускаем Arduino IDE. Выбираете модель вашей платы. Потом переходим в меню Инструменты -> Программатор и выбираете ваш программатор. Далее открываете нужный вам скетч и загружаете его с помощью пункта в меню Скетч -> Загрузить через программатор.

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

Вот и все. Мы успешно прошили Arduino Pro Mini с помощью программатора.

Установка и подключение библиотек Arduino

Стандартные библиотеки Arduino хранятся в папке:

«C:\Program Files (x86)\Arduino\libraries\»

Дополнительные библиотеки устанавливаются в папку:

«C:\Users\*Имя Пользователя*\Documents\Arduino\libraries»

В вашем случае эти пути могут быть другими из-за другой буквы основного жесткого диска и другого имени пользователя. Если у вас установлена 32х битная операционная система то папка «Program Files (x86)» будет называться «Program Files».

Установка библиотек Arduino

Установить библиотеки в Arduino IDE очень просто. Можно сделать это двумя способами. Через интерфейс программы или копированием скачанной библиотеки в папку «libraries». Рассмотрим подробнее оба варианта:

Установка библиотек через Arduino IDE

Первый вариант — это установка библиотек Ардуино из официального репозитория. Для этого необходимо запустить Arduino IDE, в верхнем меню выбрать «Скетч -> Подключить библиотеку -> Управлять библиотеками».

Установка библиотек ардуино
Установка библиотек ардуино

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

Установить библиотеки Arduino
Установить библиотеки Arduino

Второй вариант — это установка библиотеки из скачанной .zip папки. Через интерфейс Arduino IDE это можно сделать всего за пару кликов. В верхнем меню программ выбираем «Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку». Откроется окно файлового менеджера, где необходимо выбрать папку или .zip архив с вашей библиотекой.

Еще один способ установки библиотек Ардуино

Вы можете просто перенести папки библиотек по пути:

«C:\Program Files (x86)\Arduino\libraries\»

После того как вы добавили свои библиотеки необходимо перезапустить Arduino IDE. Теперь вы можете использовать сторонние библиотеки в своих проектах.

Подключение библиотеки Arduino

Мало установить библиотеку. Для использования ее необходимо подключить в скетч. Сделать это очень просто. Можно в начале скетча вручную написать подобную строчку:

#include <ESP8266WiFi.h>

Обратите внимание, что после этой инструкции не ставится точка с запятой. Так же можно подключить библиотеку ардуино через меню программы Arduino IDE. «Скетч -> Подключить библиотеку -> Название необходимой библиотеки». После этого в начало вашего скетча автоматически добавится нужная строчка. Теперь вы можете использовать библиотеки Arduino в своих проектах.

Аrduino для начинающих

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

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

Что такое Arduino и для чего оно нужно?

Arduino — это электронный конструктор, который позволяет любому человеку создавать разнообразные электро-механические устройства. Ардуино состоит из программной и аппаратной части. Программная часть включает в себя среду разработки (программа для написания и отладки прошивок), множество готовых и удобных библиотек, упрощенный язык программирования. Аппаратная часть включает в себя большую линейку микроконтроллеров и готовых модулей для них. Благодаря этому, работать с Arduino очень просто!

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

проекты на Arduino
проекты на Arduino

Стартовый набор Arduino

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

Базовый набор ардуино для начинающих:Купить
Большой набор для обучения и первых проектов:Купить
Набор дополнительных датчиков и модулей:Купить
Ардуино Уно самая базовая и удобная модель из линейки:Купить
Беспаечная макетная плата для удобного обучения и прототипирования:Купить
Набор проводов с удобными коннекторами:Купить
Комплект светодиодов:Купить
Комплект резисторов:Купить
Кнопки:Купить
Потенциометры:Купить

Среда разработки Arduino IDE

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

ВерсияWindowsMac OS XLinux
1.8.2

Zip

Installer

Installer

32 bits

64 bits

ARM

Язык программирования Ардуино

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

Для программирования Arduino используется упрощенная версия языка C++ с предопределенными функциями. Как и в других Cи-подобных языках программирования есть ряд правил написания кода. Вот самые базовые из них:

  • После каждой инструкции необходимо ставить знак точки с запятой (;)
  • Перед объявлением функции необходимо указать тип данных, возвращаемый функцией или void если функция не возвращает значение.
  • Так же необходимо указывать тип данных перед объявлением переменной.
  • Комментарии обозначаются: // Строчный и /* блочный */

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

Все прошивки для Arduino должны содержать минимум 2 функции. Это setup() и loop().

Функция setup

Функция setup() выполняется в самом начале и только 1 раз сразу после включения или перезагрузки вашего устройства. Обычно в этой функции декларируют режимы пинов, открывают необходимые протоколы связи, устанавливают соединения с дополнительными модулями и настраивают подключенные библиотеки. Если для вашей прошивки ничего подобного делать не нужно, то функция все равно должна быть объявлена. Вот стандартный пример функции setup():

void setup() {
	Serial.begin(9600);	// Открываем serial соединение
	pinMode(9, INPUT);	// Назначаем 9 пин входом
	pinMode(13, OUTPUT); // Назначаем 13 пин выходом
}

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

Функция loop

Функция loop() выполняется после функции setup(). Loop в переводе с английского значит «петля». Это говорит о том что функция зациклена, то есть будет выполняться снова и снова. Например микроконтроллер ATmega328, который установлен в большинстве плат Arduino, будет выполнять функцию loop около 10 000 раз в секунду (если не используются задержки и сложные вычисления). Благодаря этому у нас есть большие возможности.

Макетная плата Breadbord

Вы можете создавать простые и сложные устройства. Для удобства я советую приобрести макетную плату (Breadbord) и соединительные провода. С их помощью вам не придется паять и перепаивать провода, модули, кнопки и датчики для разных проектов и отладки. С беспаечной макетной платой разработка становится более простой, удобной и быстрой. Как работать с макетной платой я рассказывал в этом уроке. Вот список беспаечных макетных плат:

Макетная плата на 800 точек с 2 шинами питания, платой подачи питания и проводами: Купить
Большая макетная плата на 1600 точек с 4 шинами питания: Купить
Макетная плата на 800 точек с 2 шинами питания: Купить
Макетная плата на 400 точек с 2 шинами питания: Купить
Макетная плата на 170 точек: Купить
Соединительные провода 120 штук: Купить

Первый проект на Arduino

Давайте соберем первое устройство на базе Ардуино. Мы просто подключим тактовую кнопку и светодиод к ардуинке. Схема проекта выглядит так:

Управление яркостью светодиода
Управление яркостью светодиода

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

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

 // переменные с пинами подключенных устройств
int switchPin = 8;
int ledPin = 11;

// переменные для хранения состояния кнопки и светодиода
boolean lastButton = LOW;
boolean currentButton = LOW;
boolean ledOn = false;

void setup() {
	pinMode(switchPin, INPUT);
	pinMode(ledPin, OUTPUT);
}

// функция для подавления дребезга
boolean debounse(boolean last) {
	boolean current = digitalRead(switchPin);
	if(last != current) {
		delay(5);
		current = digitalRead(switchPin);
	}
	return current;
}

void loop() {
	currentButton = debounse(lastButton);
	if(lastButton == LOW && currentButton == HIGH) {
		ledOn = !ledOn;
	}
	lastButton = currentButton;
	digitalWrite(ledPin, ledOn);
}

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

ШИМ Arduino

Широтно-импульсная модуляция (ШИМ) — это процесс управления напряжением за счет скважности сигнала. То есть используя ШИМ мы можем плавно управлять нагрузкой. Например можно плавно изменять яркость светодиода, но это изменение яркости получается не за счет уменьшения напряжения, а за счет увеличения интервалов низкого сигнала. Принцип действия ШИМ показан на этой схеме:

ШИМ ардуино
ШИМ ардуино

Когда мы подаем ШИМ на светодиод, то он начинает быстро зажигаться и гаснуть. Человеческий глаз не способен увидеть это, так как частота слишком высока. Но при съемке на видео вы скорее всего увидите моменты когда светодиод не горит. Это случится при условии что частота кадров камеры не будет кратна частоте ШИМ.

В Arduino есть встроенный широтно-импульсный модулятор. Использовать ШИМ можно только на тех пинах, которые поддерживаются микроконтроллером. Например Arduino Uno и Nano имеют по 6 ШИМ выводов: это пины D3, D5, D6, D9, D10 и D11. В других платах пины могут отличаться. Вы можете найти описание интересующей вас платы в этом разделе.

Для использования ШИМ в Arduino есть функция analogWrite(). Она принимает в качестве аргументов номер пина и значение ШИМ от 0 до 255. 0 — это 0% заполнения высоким сигналом, а 255 это 100%. Давайте для примера напишем простой скетч. Сделаем так, что бы светодиод плавно загорался, ждал одну секунду и так же плавно угасал и так до бесконечности. Вот пример использования этой функции:

 // Светодиод подключен к 11 пину
int ledPin = 11;

void setup() {
	pinMode(ledPin, OUTPUT);
}

void loop() {
	for (int i = 0; i < 255; i++) {
		analogWrite(ledPin, i);
		delay(5);
	}

	delay(1000);

	for (int i = 255; i > 0; i--) {
		analogWrite(ledPin, i);
		delay(5);
	}
}

Аналоговые входы Arduino

Как мы уже знаем, цифровые пины могут быть как входом так и выходом и принимать/отдавать только 2 значения: HIGH и LOW. Аналоговые пины могут только принимать сигнал. И в отличии от цифровых входов аналоговые измеряют напряжение поступающего сигнала. В большинстве плат ардуино стоит 10 битный аналогово-цифровой преобразователь. Это значит что 0 считывается как 0 а 5 В считываются как значение 1023. То есть аналоговые входы измеряют, подаваемое на них напряжение, с точностью до 0,005 вольт. Благодаря этому мы можем подключать разнообразные датчики и резисторы (терморезисторы, фоторезисторы) и считывать аналоговый сигнал с них.

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

Подключение фоторезистора к Ардуино
Подключение фоторезистора к Ардуино

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

int sensePin = 0; // Пин к которому подключен фоторезистор
 
void setup() {
 analogReferense(DEFAULT); // Задаем опорное значение напряжения. Эта строка не обязательна.
 Serial.begin(9600); // Открываем порт на скорости 9600 бод.
}
 
void loop() {
 Serial.println(analogRead(sensePin)); // Считываем значение и выводим в порт
 delay(500); // задержка для того что бы значений было не слишком много
}

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

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

Arduino. Урок 15. SD карта.

Сегодня речь пойдет об использовании SD и micro SD карт в Arduino. Мы разберемся как можно подключить SD карты к Ардуино, как записывать и считывать информацию. Использование дополнительной памяти может быть очень полезно во многих проектах. Если вы не знаете что такое SPI, I2C и аналоговые выводы, то советую вам посмотреть прошлые уроки и разобраться с этими интерфейсами связи Ардуино.

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

В этом уроке используется:

Отличный набор для начинающих: Купить
Arduino Uno: Купить
Инфракрасный датчик расстояния: Купить
Плата расширения для считывания micro SD карт c SPI интерфейсом: Купить
Шилд для Arduino Uno: Купить
Карты micro SD: Купить
Датчики освещенности: Купить
Датчик температуры I2C: Купить

Подключение sd карт к Arduino

Модуль и шилд для считывания sd карт подключается по интерфейсу SPI. Шилд просто вставляется в Arduino Uno сверху. А плата подключается к пинам D10 -> CS, D11 -> MOSI, D12 -> MISO, D13 -> SCLK, 5V -> VIN (если на плате есть стабилизатор, если нет то 3,3V), GND -> GND. Вот наглядная схема:

Подключение sd Arduino
Подключение sd Arduino

Обратите внимание на напряжение питания платы. Если на плате есть стабилизатор питания, то можете подавать на нее 5 В. Если же стабилизатора нет, то необходимо подвести 3.3 В. В остальном все так же как мы разбирали в уроке по SPI интерфейсу. Теперь перейдем к программной части.

Запись и считывание SD карты на Arduino

Для работы с картами памяти в Arduino есть библиотека SD.h. Она по умолчанию доступна в Arduino IDE. С ней мы и будем работать. Для начала напишем простую программу, которая будет записывать обычную строку на SD карту. Теперь посмотрим на скетч:

 // Подключаем библиотеку
#include <SD.h>

// Назначаем пины
int CS_pin = 10;
int pow_pin = 8; // Если вы используете SD Shield

// 
float refresh_rate = 5000.0;

void setup() {
	// Открываем соединение с компьютером
	Serial.begin(9600);
	Serial.println("Initializing Card");
	//Назначаем пин CS_pin выходом
	pinMode(CS_pin, OUTPUT);
	
	//Если мы используем шилд то назначаем выходом пин для питания шилда
	pinMode(pow_pin, OUTPUT);  
	digitalWrite(pow_pin, HIGH);
	
	// Проверяем доступность карты
	if (!SD.begin(CS_pin)) {
			Serial.println("Card Failure");
			return;
	}
	Serial.println("Card Ready");
}

void loop() {
	// Строка которую будем записывать на карту
	String dataString = "Hello";
	
	// Открываем файл и записываем строку
	// В одно время можно открывать только один файл
	// Если файла нет то он будет создан
	File logFile = SD.open("LOG.txt", FILE_WRITE);

	if (logFile) {
		logFile.println(dataString);
		logFile.close();
		Serial.println(dataString);
	} else {
		Serial.println("LOG.txt");
		Serial.println("Couldn't open log file");
	}
	// Задержка для того что бы данных было не слишком много
	delay(refresh_rate);
}

Отлично! У меня все работает так как и было задумано. Теперь я хочу немного доработать этот скетч. Давайте закинем текстовый файл на карту памяти с каким-нибудь значением и попробуем считать это на Arduino. Например я создам текстовый файл в котором будет всего одно число. Это число я буду использовать в качестве задержки между записью нашей строки на эту же карту памяти. Немного доработаем предыдущий скетч.

 // Подключаем библиотеку
#include <SD.h>

// Назначаем пины
int CS_pin = 10;
int pow_pin = 8; // Если вы используете SD Shield

// Переменная для хранения считанных данных
float refresh_rate = 0.0;

void setup() {
	// Открываем соединение с компьютером
	Serial.begin(9600);
	Serial.println("Initializing Card");
	//Назначаем пин CS_pin выходом
	pinMode(CS_pin, OUTPUT);
	
	//Если мы используем шилд то назначаем выходом пин для питания шилда
	pinMode(pow_pin, OUTPUT);  
	digitalWrite(pow_pin, HIGH);
	
	// Проверяем доступность карты
	if (!SD.begin(CS_pin)) {
			Serial.println("Card Failure");
			return;
	}
	Serial.println("Card Ready");
	
	// Считываем данные из файла (COMMANDS.txt)
	File commandFile = SD.open("COMMANDS.txt");
	if (commandFile)
	{
		Serial.println("Reading Command File");
		
		// Эта конструкция подробно объясняется в видео
		float decade = pow(10, (commandFile.available() - 1));
		while(commandFile.available())
		{
			float temp = (commandFile.read() - '0');
			refresh_rate = temp*decade+refresh_rate;
			decade = decade/10;
		}
		Serial.print("Refresh Rate = ");
		Serial.print(refresh_rate);
		Serial.println("ms");
	}
	else
	{
		Serial.println("Could not read command file.");
		return;
	}
	
}

void loop() {
	// Строка которую будем записывать на карту
	String dataString = "Hello";
	
	// Открываем файл и записываем строку
	// В одно время можно открывать только один файл
	// Если файла нет то он будет создан
	File logFile = SD.open("LOG.txt", FILE_WRITE);

	if (logFile) {
		logFile.println(dataString);
		logFile.close();
		Serial.println(dataString);
	} else {
		Serial.println("LOG.txt");
		Serial.println("Couldn't open log file");
	}
	// Задержка для того что бы данных было не слишком много
	delay(refresh_rate);
}


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

Запись на SD карту Arduino
Запись на SD карту Arduino

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

#include <SD.h>         // Библиотека для работы с SD картой
#include <Wire.h>       // I2C библиотека

// Назначаем пины SD шилда
int CS_pin = 10;
int pow_pin = 8;

// Пины инфракрасных дальнометров
int IR1_pin = 2;
int IR2_pin = 3;

// Пин фото резистора
int light_pin = 1;

float refresh_rate = 0.0;  // Задержка обновления данных
int temp_address = 72;     // Адрес I2C датчика температуры
long id = 1;               // Переменная для счетчика строк

void setup()
{
	Wire.begin();
	Serial.begin(9600);
	Serial.println("Initializing Card");
	//CS Pin is an output
	pinMode(CS_pin, OUTPUT);
	
	//SD Card will Draw Power from Pin 8, so set it high
	pinMode(pow_pin, OUTPUT);  
	digitalWrite(pow_pin, HIGH);
	
	//Initialize Card
	if (!SD.begin(CS_pin))
	{
			Serial.println("Card Failure");
			return;
	}
	Serial.println("Card Ready");
	
	//Read the Configuration information (COMMANDS.txt)
	File commandFile = SD.open("COMMANDS.txt");
	if (commandFile)
	{
		Serial.println("Reading Command File");
		
		float decade = pow(10, (commandFile.available() - 1));
		while(commandFile.available())
		{
			float temp = (commandFile.read() - '0');
			refresh_rate = temp*decade+refresh_rate;
			decade = decade/10;
		}
		Serial.print("Refresh Rate = ");
		Serial.print(refresh_rate);
		Serial.println("ms");
		commandFile.close();
	}
	else
	{
		Serial.println("Could not read command file.");
		return;
	}
	
	//Write Log File Header
	File logFile = SD.open("LOG.csv", FILE_WRITE);
	if (logFile)
	{
		logFile.println(", , , ,"); //Just a leading blank line, incase there was previous data
		String header = "ID, Light, Temp, IR1, IR2";
		logFile.println(header);
		logFile.close();
		Serial.println(header);
	}
	else
	{
		Serial.println("Couldn't open log file");
	}
	
}

void loop()
{
	//Check Light Level
	int light_level = analogRead(light_pin);
	
	//Read Temperature
	Wire.beginTransmission(temp_address); //Start talking
	Wire.send(0); //Ask for Register zero
	Wire.endTransmission(); //Complete Transmission
	Wire.requestFrom(temp_address, 1); //Request 1 Byte
	while(Wire.available() == 0); //wait for response
	int temp_c = Wire.receive(); // Get the temp
	int temp_f = round(temp_c*9.0/5.0 +32.0);  //Convert to stupid American units
	
	//Read Distances
	int IR1_val = analogRead(IR1_pin);
	int IR2_val = analogRead(IR2_pin);
	
	//Create Data string for storing to SD card
	//We will use CSV Format  
	String dataString = String(id) + ", " + String(light_level) + ", " + String(temp_f) + ", " + String(IR1_val) + ", " + String(IR2_val); 
	
	//Open a file to write to
	//Only one file can be open at a time
	File logFile = SD.open("LOG.csv", FILE_WRITE);
	if (logFile)
	{
		logFile.println(dataString);
		logFile.close();
		Serial.println(dataString);
	}
	else
	{
		Serial.println("Couldn't open log file");
	}
	
	//Increment ID number
	id++;
	
	delay(refresh_rate);
}

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

Ардуино для начинающих. Урок 14. Прерывания.

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

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

В этом уроке используется:

Отличный набор для начинающих:Купить
Arduino Uno:Купить
Инфракрасный датчик расстояния:Купить
Инвертирующий триггер шмитта:Купить
Комплект конденсаторов 120 штук:Купить

Аппаратные прерывания

В Arduino имеется 4 вида аппаратных прерываний. Отличаются они сигналом на контакте прерывания.

  • Контакт прерывания притянут к земле. Ардуино будет выполнять обработчик прерывания пока на пине прерывания будет сигнал LOW.
  • Изменение сигнала на контакте прерывания. Ардуино будет выполнять обработчик прерывания каждый раз когда на пине прерывания будет изменяться сигнал.
  • Изменение сигнала на контакте прерывания от LOW к HIGH. Обработчик прерывания исполняется только при изменении низкого сигнала на высокий.
  • Изменение сигнала на контакте прерывания от HIGH к LOW. Обработчик прерывания исполняется только при изменении высокого сигнала на низкий.

Если прерывание ожидает нажатия кнопки, то это может стать проблемой из-за дребезга контактов. В 6 уроке мы уже говорили о дребезге контактов. Тогда мы использовали функцию delay(), но в прерываниях данная функция не доступна. Поэтому нам придется подавить дребезг контактов немного усложнив схему подключения кнопки к пину прерывания. Для этого понадобится резистор на 10 КОм, конденсатор на 10 микрофарад,
и инвертирующий триггер шмитта. Подключается все по следующей схеме:

подключение кнопки прерывания ардуино
подключение кнопки прерывания ардуино

В Arduino Uno есть два пина, поддерживающие прерывания. Это цифровые пины 2 (int 0) и 3 (int 1). Один из них мы и будем использовать в нашей схеме.

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

Использование прерываний Arduino
Использование прерываний Arduino

Схема кажется сложной и запутанной, но это не так. Мы подключаем кнопку прерывания к пину Arduino D2, используя аппаратное подавление дребезга контактов. К аналоговому пину A0 мы подключаем инфракрасный дальномер. И к пинам D9, D10 и D11 мы подключаем светодиоды через резисторы на 150 Ом. Мы выбрали именно эти контакты для светодиодов, потому что они могут выдавать ШИМ сигнал.Теперь рассмотрим скетч:

 // Назначение прерывания
int buttonInt = 0;

// Переменные с пинами светодиодов
int yellowLed = 11;
int redLed = 10;
int greenLed = 9;
int nullLed = 6;
volatile int selectedLed = greenLed;

// Инфракрасный дальномер
int distPin = 0;

void setup () {
	// Устанавливаем режимы пинов
	pinMode(redLed, OUTPUT);
	pinMode(greenLed, OUTPUT);
	pinMode(yellowLed, OUTPUT);
	pinMode(nullLed, OUTPUT);

	// Устанавливаем прерывание
	attachInterrupt(buttonInt, swap, RISING);

}

// Обработчик прерывания
void swap() {
	if(selectedLed == greenLed)
		selectedLed = redLed;
	else if(selectedLed == redLed)
		selectedLed = yellowLed;
	else if(selectedLed == yellowLed)
		selectedLed = nullLed;
	else
		selectedLed = greenLed;
}

void loop () {
	// Получаем данные с дальномера
	int dist = analogRead(distPin);
	int brightness = map(dist, 0, 1023, 0, 255);

	// Управляем яркостью
	analogWrite(selectedLed, brightness);
}

Обратите внимание на следующие моменты: Необходимо использовать ключевое слово «volatile» перед объявлением переменной значение которой будет изменяться в обработчике прерывания. Так же я добавил переменную «nullLed» для того что бы программа на определенном шаге не меняла цвет ни одного из подключенных светодиодов. Строка «attachInterrupt(buttonInt, swap, RISING);» назначает обработчиком прерывания функцию swap. Подробнее об этой функции вы можете почитать здесь.

Функция swap просто переключает текущий светодиод на следующий. Остальной скетч должен быть вам понятен, если вы посмотрели все предыдущие уроки. Это последний обучающий урок. В следующих статьях я расскажу о подключении к Arduino популярных модулей.

Ардуино для начинающих. Урок 13. Беспроводная связь.

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

В этом уроке мы будем использовать модули XBee. Принцип работы будет не сильно отличаться от других модулей для беспроводной связи, таких как радио модули, bluetooth и WiFi.

В этом уроке используется:

Отличный набор для начинающих:Купить
Arduino Uno:Купить
Модуль беспроводной связи XBee:Купить
USB адаптер для XBee:Купить
Шилд для Arduino Uno XBee:Купить
Потенциометры с колпачками 5 шт:Купить
Серво-привод:Купить

Беспроводная связь с модулями XBee

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

Что бы прошить наши модули, необходимо подключить их к компьютеру, используя USB адаптер или специальный шилд для Arduino Uno. Так же для удобства необходимо скачать программу PuTTY и посмотреть к какому COM порту подключен ваш модуль. Подробнее этот процесс показан в видео выше, поэтому расписывать как это делать я не буду. В виде это все равно нагляднее :).

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

 // Аналоговый пин от потенциометра
int potPin = 0;

void setup() {
	// Открываем соединение
	Serial.begin(9600);
}

void loop() {
	// Получаем и обрабатываем данные
	int val map(analogRead(potPin), 0, 1023, 0, 9);

	// Отправляем данные
	Serial.println(val);

	// Небольшая задержка для стабильности
	delay(50);
}

Как видите скетч очень прост. Все что он делает это: получает значение с потенциометра, переводит в значение от 0 до 9 для простоты и отправляет по serial соединению. Следующий скетч тоже очень прост:

 // Подключаем библиотеку
#include <Servo.h>

// Аналоговый пин сервопривода
int servoPin = 9;

// Создаем объект
Servo jeremysServo;

void setup() {
	// Открываем соединение
	Serial.begin(9600);

	// Назначаем пин сервопривода
	jeremysServo.attach(servoPin);
}

void loop() {
	// ждем данные
	while(Serial.avalable() == 0);

	// получаем байт
	int data = Serial.read() - '0';

	// Переводим команду в угол поворота
	int pos = map(data, 0, 9, 0, 180);

	// на всякий случай
	pos = constrain(pos, 0, 180);
	

	// Поворачиваем серву
	jeremysServo.write(pos);

	// очищаем буфер
	Serial.flush();
}

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

Ардуино для начинающих. Урок 12. Интерфейс SPI.

В данном уроке рассмотрим SPI интерфейс. Данный способ связи схож с I2C, рассмотренном в прошлом уроке. SPI — это формат последовательной передачи данных от Ведущего устройства (master) к Ведомым (slave).

В этом уроке используется:

Отличный набор для начинающих: Купить
Arduino Uno: Купить
Цифровой 1-канальный SPI потенциометр:Купить
Цифровой 2-канальный SPI потенциометр:Купить

SPI Arduino

Принцип подключения устройств по интерфейсу SPI к Ардуино отлично иллюстрирует следующая схема:

принцип работа интерфейса SPI
принцип работа интерфейса SPI

У большинства плат ардуино за SPI интерфейс отвечают следующие пины: D10 — SS, D11 — MOSI, D12 — MISO, D13 — SCK. В отличии от I2C, этот интерфейс не требует дополнительных подтягивающих резисторов. В программной среде используется библиотека SPI.h. Подробные описания данной и других библиотек скоро появятся на этом сайте.

Ардуино для начинающих. Урок 11. Интерфейс I2C.

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

В этом уроке используется:

Отличный набор для начинающих:Купить
Arduino Uno:Купить
I2C датчик температуры, влажности и атмосферного давления:Купить

Подключение датчика температуры по шине I2C

Давайте рассмотрим схему подключения модуля Bme280 к ардуино. У этого модуля всего 4 контакта: Питание (VIN), земля (GND), линия тактирования (SCL) и линия данных (SDA). Линии I2C мы соединим с аналоговыми пинами А5 и А4 соответственно и подтянем сигнал к линии 5 В через резисторы на 10 КОм. Схема очень простая:

Подключение bme280 к ардуино
Подключение bme280 к ардуино

Теперь рассмотрим код. Мы будем получать данные с датчика, переводить градусы по Цельсию в градусы по фаренгейту и выводить все на экран компьютера:

 // Подключаем библиотеку для связи по I2C
#include <Wire.h>

// Адрес датчика температуры
int temp_address = 72;

void setup() {
	// Открываем моединение с компьютером
	Serial.begin(9600);

	// Открываем соединение по I2C
	Wire.begin();
}

void loop() {
	// Отправляем запрос
	// Начинаем общение с датчиком
	Wire.beginTransmition(temp_address);
	// Запрашиваем нулевой регистр
	Wire.send(0);
	// Выполняем передачу
	Wire.endTransmition
	// Запрашиваем 1 байт
	Wire.requestFrom(temp_address, 1);
	// Ждем ответа
	while(Wire.avalible() == 0);
	// Получаем температуру с датчика
	int c = Wire.receive();

	// Переводим температуру в фаренгейт
	int f = round(c*9.0/5.0 + 32.0);

	// Выводим данные на экран
	Serial.print(c);
	Serial.print("C, ");
	Serial.print(f);
	Serial.println("F");

	//Небольшая задержка, что бы данные обновлялись не слишком часто
	delay(500); 
}

Вам не нужно скачивать библиотеку Wire, так как она скачана по умолчанию в Arduino IDE. Адрес датчика температуры вы можете узнать на сайте производителя. Так же существуют модули с назначаемым адресом. В этом случае вам придется самостоятельно назначить адрес. Как это сделать должно быть описано на сайте производителя или в datasheet модуля.

Ардуино для начинающих. Урок 10. Serial и processing

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

В этом уроке используется:

Отличный набор для начинающих: Купить
Arduino Uno: Купить
Arduino Nano: Купить
Arduino Mega: Купить
Потенциометры с колпачками 5 шт: Купить

Serial и processing.

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

 // Возвращаем отправленное значение
void setup () {
	// Открываем порт на скорости 9600 бод
	Serial.begin(9600);
}

void loop () {
	// Ждем данные
	while (Serial.available() == 0);

	// Считываем данные
	int val = Serial.read() - '0';

	// Возвращаем данные в порт
	Serial.println(val);
}

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

Потом мы запускаем цикл, который ждет появление данных в Serial. Программа выйдет из этого цикла только когда мы отправим какие то данные. Потом считываем данные и приводим их к типу int,
вычитанием десятичного представления символа «0». И отправляем данные обратно. Данный способ подходит только для тех случаев, когда мы ожидаем получить только одну цифру. При отправке других значений программа будет возвращать не то что мы ожидаем. Можете разобраться с этим используя таблицу кодов символов ASCII:

таблица кодов ascii
таблица кодов ascii

Теперь сделаем кое что посложнее. Сейчас напишем скетч для управления, встроенным в Arduino, светодиодом с компьютера через Serial интерфейс. Этот скетч не намного сложнее предыдущего:

 // Управление светодиодом с компьютера
int ledPin = 13;
void setup () {
	// Открываем порт на скорости 9600 бод
	Serial.begin(9600);
	// Назначаем пин светодиода выходом
	pinMode(ledPin, OUTPUT);
}

void loop () {
	// Ждем данные
	while (Serial.available() == 0);

	// Считываем данные
	int val = Serial.read() - '0';

	// Выполняем дествия в зависимости от данных
	if (val == 1) {
		Serial.println("Led is On");
		digitalWrite(ledPin, HIGH);
	} else if (val == 0) {
		Serial.println("Led is Off");
		digitalWrite(ledPin, LOW);
	} else {
		Serial.println("Invalid!");
	}
	// Очищаем буфер
	Serial.flush();
}

Тут вы не найдете ничего нового, что мы бы не разбирали в этом или прошлых уроках, кроме Serial.flush(). Этот метод очищает оставшиеся символы в буфере памяти, так как мы работаем только с одним символом и остальные нам не нужны. В видео подробно рассказано зачем эта строчка.

А теперь приступим к самому интересному и сложному на сегодня. Теперь мы будем отправлять значения с Ардуино на компьютер и там их использовать. Для обработки получаемых значений на компьютере мы будем использовать Processing. Скачать его можно на официальном сайте.

Схема очень проста. Мы просто подключим потенциометр к аналоговому пину Arduino. Скетч тоже очень прост:

int potPin = 0;
void setup () {
	Serial.begin(9600);
}

void loop () {
	// Считываем и преобразовываем данные
	int val = map(analogRead(potPin), 0, 1023, 0, 255);
	
	// Отправляем данные
	Serial.println(val);

	// Задержка для стабильности работы
	delay(50);
}

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

 // Подключаем библиотеку монитора порта
import processing.serial.*;

// Инициируем порт
Serial port;

// Переменная для хранения значения яркости
float brightness = 0;

void setup () {
	// Задаем размер окна
	size(500, 500);
	// Слушаем ком порт СОМ3
	port = new Serial(this, "COM3", 9600);
	port.bufferUntil('\n');
}
void draw () {
	// Изменяем цвет фона окна
	background(0, 0, brightness);
}

// Получаем значения с ардуино
void serialEvent (Serial port) {
	brightness = float(port.redStringUntil('\n'));
}

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

Ардуино для начинающих. Урок 9. Моторы и транзисторы

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

В этом уроке используется:

Arduino Uno: Купить
Инфракрасный дальномер: Купить
Высокоточный лазерный дальномер с I2C: Купить
Набор резисторов из 100 штук на все случаи: Купить
Небольшой моторчик: Купить
Слабенький сервопривод: Купить
Мощный сервопривод: Купить
Мосфет транзистор для управления переменным током высокого напряжения: Купить
Набор npn транзисторов из 100 штук: Купить

Подключение мотора к Arduino

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

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

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

Теперь давайте подключим мотор к ардуино по следующей схеме:

Подключение мотора к ардуино
Подключение мотора к ардуино

Как всегда ничего сложного. Главное не перепутать выводы транзистора. Обратите внимание на резистор через который ардуино подключена к базе. Это резистор на 1 кОм и нужен он для того что бы обезопасить нашу ардуинку. В видео к схеме добавлены диод и конденсатор, но они не обязательны. Так же можно добавить резистор на 10 — 100 кОм между эмиттером и коллектором для стабильности работы нашей схемы. Так же не забудьте, что земля на всех уровнях напряжения должна быть объединена. И взглянем на наш код:

 // Обозначаем пин к которому у нас подключена база транзистора
int motorPin = 9;

void setup () {
	// Устанавливаем пин в качестве выхода
	pinMode (motorPin, OUTPUT);
}

void loop () {
	// Перебор значений от 0 до 255 в цикле
	for (int i = 0; i <= 255; ++i) {
		analogWrite(motorPin, i);
		// небольшая задержка что бы все происходило не слишком быстро
		delay(10);
	}

delay(500);

for (int i = 0; i >= 0; i--) {
	analogWrite(motorPin, i);
	delay(10);
}

delay(500);
}

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

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

Добавим в нашу схему инфракрасный дальномер. Просто потому, что мы можем 🙂 Будем задавать положение сервопривода в зависимости от показаний дальномера. Мы уже подключали дальномер, поэтому схему рисовать не буду.
Подключаем его к пину А0. Новый скетч стал еще проще:

 // Подключаем библиотеку для управления сервоприводом
#include <Servo.h>
Servo jeremysServo;

// Пин сервопривода
int servoPin = 9;
// Аналоговый пин инфракрасного дальномера
int distPin = 0;

void setup () {
	// передаем пин, подключенный к логическому выводу сервопривода
	jeremysServo.attach(servoPin);
}

void loop () {
	// Считываем показания инфракрасного дальномера
	int dist = analogRead(distPin);

	// Преобразуем значение в пригодное для ШИМ
	int pos = map(dist, 0, 1023, 0, 180);

	// Двигаем сервопривод
	jeremysServo.write(pos);
}

Ардуино для начинающих. Урок 8. Аналоговые входы

Сегодня мы поговорим об аналоговых входах Arduino. На разных платах ардуино имеется разное количество аналоговых входов. Так например, у Arduino Uno их 6, а у Arduino Nano их 8. Узнать сколько аналоговых входов на конкретной плате Ардуино вы можете, посмотрев описание плат в разделе «Платы».

Как мы уже знаем, цифровые пины могут быть как входом так и выходом и принимать/отдавать только 2 значения: HIGH и LOW. Аналоговые пины могут только принимать сигнал. И в отличии от цифровых входов аналоговые измеряют напряжение поступающего сигнала. В большинстве плат ардуино стоит 10 битный аналогово-цифровой преобразователь. Это значит что 0 считывается как 0 а 5 В считываются как значение 1023. То есть аналоговые входы измеряют, подаваемое на них напряжение, с точностью до 0,005 вольт. Благодаря этому мы можем подключать разнообразные датчики и резисторы (термо резисторы, фоторезисторы,).

В этом уроке используется:

Большая макетная плата на 1600 точек с 4 шинами питания:Купить
Arduino Uno: Купить
Arduino Nano: Купить
Фоторезисторы 20 штук: Купить
Инфракрасный дальномер: Купить
Высокоточный инфракрасный дальномер с I2C: Купить
Набор резисторов из 100 штук на все случаи: Купить
Соединительные провода 120 штук: Купить
Потенциометры с колпачками 5 штук: Купить

Подключение фоторезистора к Arduino

Подключение фоторезистора к Arduino
Подключение фоторезистора к Arduino

Как видите, схема очень проста. Обратите на стягивающий резистор на 10 кОм. Зачем он нужен и какой номинал лучше выбрать мы говорили на прошлом уроке. Теперь давайте напишем простой скетч, который будет выводить в COM порт значения с аналогово входа.

int sensePin = 0; // Пин к которому подключен фоторезистор

void setup() {
	analogReferense(DEFAULT); // Задаем опорное значение напряжения. Эта строка не обязательна.
	Serial.begin(9600); // Открываем порт на скорости 9600 бод.
}

void loop() {
	Serial.println(analogRead(sensePin)); // Считываем значение и выводим в порт
	delay(500); // задержка для того что бы значений было не слишком много
}

Как видите в скетче нет ничего сложного. Команда analogReferense() не обязательна. Я добавил ее просто для демонстрации.

Давайте сделаем что то более интересное. Например ночник с автоматическим включением, если яркость освещения падает ниже определенного уровня. Для этого нам необходимо добавить в нашу схему светодиод через резистор на 150 Ом. Его мы подключаем к контакту 9 на Ардуино. Теперь наша схема выглядит так:

схема ночника на ардуино
схема ночника на ардуино

Так же немного доработаем наш скетч.

int sensePin = 0; // Пин к которому подключен фоторезистор
int ledPin = 9; // Пин к которому подключен светодиод

void setup() {
	pinMode(ledPin, OUTPUT); // назначаем пин ledPin выходом
}

void loop() {
	int val = analogRead(sensePin); // Считываем значение с фоторезистора

	if(val < 800) digitalWrite(ledPin, HIGH); //включаем светодиод если значение меньше 800
	else digitalWrite(ledPin, LOW); // если нет то выключаем светодиод
}

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

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

int sensePin = 0; // Пин к которому подключен фоторезистор
int ledPin = 9; // Пин к которому подключен светодиод

void setup() {
	pinMode(ledPin, OUTPUT); // назначаем пин ledPin выходом
}

void loop() {
	int val = analogRead(sensePin); // Считываем значение с фоторезистора

	val = constrain(val, 750, 900); // эта функция обрезает все значения вне заданного диапазона
	int ledLevel = map(val, 750, 900, 255, 0); // отражаем значения с фоторезистора на значения от 255 до 0

	analogWrite(ledPin, ledLevel);
}

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

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

Ардуино для начинающих. Урок 7. Основы схемотехники

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

В этом уроке используется:

Большая макетная плата на 1600 точек с 4 шинами питания:Купить
Набор резисторов из 100 штук на все случаи:Купить
Набор светодиодов из 100 штук:Купить
5 штук кнопок в удобной форме:Купить
Соединительные провода 120 штук:Купить
Потенциометры с колпачками 5 штук:Купить

Закон Ома

Закон Ома гласит следующее: V = IR. V — это напряжение (измеряется в вольтах). I — это сила тока (измеряется в амперах). R — это сопротивление (измеряется в омах). Определение вы можете почитать на википедии.

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

Теперь нам надо просто подставить эти данные в формулу и вычислить сопротивление: R = V / I = 3 В / 20 мА = 150 Ом. Вот и все. Теперь мы знаем какой резистор необходим для подключения светодиода к плате Ардуино.

Подтягивающее и стягивающее сопротивление

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

подключение кнопки к ардуино

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

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

Ардуино для начинающих. Урок 6. Дребезг контактов

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

Так что же такое дребезг контактов?

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

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

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

Как избавиться от дребезга контактов на Arduino?

Все очень просто. Мы делали это в прошлом уроке. Возьмем пример от туда. Схема и скетч будут следующие:

Управление яркостью светодиода
Управление яркостью светодиода
 // переменные с пинами подключенных устройств
int switchPin = 8;
int ledPin = 11;

// переменные для хранения состояния кнопки и светодиода
boolean lastButton = LOW;
boolean currentButton = LOW;
int ledLevel = 0;

void setup() {
	pinMode(switchPin, INPUT);
	pinMode(ledPin, OUTPUT);
}

// функция для подавления дребезга
boolean debounse(boolean last) {
	boolean current = digitalRead(switchPin);
	if(last != current) {
		delay(5);
		current = digitalRead(switchPin);
	}
	return current;
}

void loop() {
	currentButton = debounse(lastButton);
	if(lastButton == LOW && currentButton == HIGH) {
		ledLevel = ledLevel + 51;
	}
	lastButton = currentButton;

	if(ledLevel > 255) ledLevel = 0;
	analogWrite(ledPin, ledLevel);
}

Ардуино для начинающих. Урок 5. Кнопки, ШИМ, функции

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

В этом уроке используются следующие детали:

Большая макетная плата на 1600 точек с 4 шинами питания:Купить
Набор резисторов из 100 штук на все случаи:Купить
Набор светодиодов из 100 штук:Купить
5 штук кнопок в удобной форме:Купить
Соединительные провода 120 штук:Купить

Подключение кнопки к Arduino

Подключение кнопки к Arduino
Подключение кнопки к Arduino

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

 // Первый скетч. Светодиод горит при нажатой кнопке
 // переменные с пинами подключенных устройств
int switchPin = 8;
int ledPin = 13;

void setup() {
	pinMode(switchPin, INPUT);
	pinMode(ledPin, OUTPUT);
}

void loop() {
	// включаем всетодиод при нажатой кнопке
	if(digitalRead(switchPin) == HIGH) {
		digitalWrite(ledPin, HIGH);
	} else {
		digitalWrite(ledPin, LOW);
	}
}

В этом уроке, как и прошлом, в самом начале мы объявляем переменные со значениями пинов к которым у нас подключены кнопка и светодиод. Далее в функции setup() мы обозначаем какой пин используется как вход, а какой как выход. В функции loop() мы используем условный оператор if с оператором сравнения и проверяем приходит ли на пин 8 высокий сигнал. Если да то включаем светодиод, если нет то выключаем. Описание функций и операторов вы найдете в справочнике по языку программирования Arduino

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

 // второй скетч. меняет состояние при нажатии на кнопку
 // переменные с пинами подключенных устройств
int switchPin = 8;
int ledPin = 13;

// переменные для хранения состояния кнопки и светодиода
boolean lastButton = LOW;
boolean currentButton = LOW;
boolean ledOn = false;

void setup() {
	pinMode(switchPin, INPUT);
	pinMode(ledPin, OUTPUT);
}

// функция для подавления дребезга
boolean debounse(boolean last) {
	boolean current = digitalRead(switchPin);
	if(last != current) {
		delay(5);
		current = digitalRead(switchPin);
	}
	return current;
}

void loop() {
	currentButton = debounse(lastButton);
	if(lastButton == LOW && currentButton == HIGH) {
		ledOn = !ledOn;
	}
	lastButton = currentButton;
	digitalWrite(ledPin, ledOn);
}

В этом скетче мы добавили переменные для хранения состояния светодиода и кнопки. Так же мы создали новую функцию для подавления дребезга контактов debounse(). Код в цикле loop() тоже немного изменился. Теперь в условном операторе мы проверяем нажата ли кнопка и если нажата, то меняем состояние светодиода на противоположное. Потом меняем переменную с последним состоянием на текущее состояние кнопки и включаем или выключаем светодиод.

Понравилось? Давайте еще больше усложним наш проект. Теперь мы будем управлять яркостью светодиода. Для этого нам надо немного изменить схему нашего устройства. Для управления яркостью мы будем использовать ШИМ. Значит нам надо подключить светодиод к выходу, который может выдавать ШИМ. Теперь наша схема будет выглядеть вот так:

Подключение светодиода к Arduino
Подключение светодиода к Arduino

Теперь светодиод подключен к 11 пину ардуино, которой умеет делать ШИМ. И нам пришлось добавить токоограничивающий резистор на 220 Ом перед светодиодом, что бы его не спалить. Это необходимо потому, что светодиоды работают при напряжении 3.3 В, а пин ардуино отдает 5 В. Теперь посмотрим что нужно изменить в скетче:

 // переменные с пинами подключенных устройств
int switchPin = 8;
int ledPin = 11;

// переменные для хранения состояния кнопки и светодиода
boolean lastButton = LOW;
boolean currentButton = LOW;
int ledLevel = 0;

void setup() {
	pinMode(switchPin, INPUT);
	pinMode(ledPin, OUTPUT);
}

// функция для подавления дребезга
boolean debounse(boolean last) {
	boolean current = digitalRead(switchPin);
	if(last != current) {
		delay(5);
		current = digitalRead(switchPin);
	}
	return current;
}

void loop() {
	currentButton = debounse(lastButton);
	if(lastButton == LOW && currentButton == HIGH) {
		ledLevel = ledLevel + 51;
	}
	lastButton = currentButton;

	if(ledLevel > 255) ledLevel = 0;
	analogWrite(ledPin, ledLevel);
}

В этом примере мы изменили значение переменной ledPin на 11. Так же добавили переменную для хранения уровня ШИМ ledLevel. При нажатии на кнопку будем увеличивать эту переменную. Функция debounce() осталась без изменений. В цикле мы теперь используем функцию analogWrite().

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

Ардуино для начинающих. Урок 4. Макетная плата BREADBOARD

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

Купить макетные платы

Купить беспаечные макетные платы можно в магазине радиодеталей, на радиорынке или интернет магазине. Но самый выгодный вариант это конечно Алиекспрес. Там есть огромный выбор макетных плат,
а так же не высокие цены. Но нужно быть внимательным и покупать только у надежных продавцов. Ниже приведены ссылки на алиекспрес:

Макетная плата на 800 точек с 2 шинами питания, платой подачи питания и проводами:Купить
Большая макетная плата на 1600 точек с 4 шинами питания:Купить
Макетная плата на 800 точек с 2 шинами питания:Купить
Макетная плата на 400 точек с 2 шинами питания:Купить
Макетная плата на 170 точек:Купить
Соединительные провода 120 штук:Купить

Макетная плата (BreadBord)

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

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

Как пользоваться макетной платой

Очень просто! Главное запомнить как соединены отверстия макетки. Там все просто и понятно. По краям идут горизонтальные линии питания, обычно они помечены синим и красным цветами для удобства. А посередине идет множество вертикально соединенных линий по 5 точек. На изображении ниже видно распиновку макетной платы.

распиновка макетной платы
распиновка макетной платы

В следующих уроках вы увидите как удобно использовать этот инструмент.

Ардуино для начинающих. Урок 3. Первые шаги

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

В этом уроке нам понадобится:

Arduino uno отлично подходит для начинающих. В комплекте есть провод:Купить
Макетная плата с модулем питания и проводами:Купить
Набор светодиодов из 100 штук разных цветов:Купить
Набор резисторов из 100 штук разных номиналовКупить

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

Ардуино для новичков.

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

Если при подключении вашей ардуино в USB компьютер пишет, что устройство не опознано, это значит что вам надо установить драйвер ch340g.

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

 // Однострочный комментарий
/*
Многострочный комментарий
*/

int ledPin = 13;

// Команды в функции setup выполняются только 1 раз при включении или после перезагрузки
void setup() {
	pinMode(ledPin, OUTPUT);
}

// Инструкции в этой функции будут выполняться по кругу постоянно
void loop() {
	digitalWrite(ledPin, HIGH);
	delay(1000);
	digitalWrite(ledPin, LOW);
	delay(1000);
}

Символы «//» означают однострочный комментарий. Это значит что строка после двух слэшей выполняться не будет. Комментарии можно использовать для описания действий программы для наглядности.
Или для скрытия части кода при отладке. Для скрытия кода чаще используется многострочный комментарий начинающийся с комбинации «/*» и заканчивающийся «*/».

Строка «int ledPin = 13;» означает, что мы объявляем переменную с типом данных int, именем ledPin и значением 13. Переменные используются для того чтобы код был более понятен. Поэтому надо называть переменные понятными именами, описывающими их содержимое. Так же переменные нужны для легкого изменения кода. В нашем маленьком примере переменная ledPin используется 3 раза. Если мы подключим внешний светодиод на другой пин и захотим использовать этот скетч, то нам надо будет только поменять значение переменной в одном месте, а не искать по всей программе и менять значения. Понятный и хорошо оформленный код, с комментариями и говорящими названиями переменных легко можно использовать в других проектах. Это позволит упростить и ускорить разработку прошивок.

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

Ардуино для начинающих. Урок 2. Как устроена плата Ардуино


Эту и другие платы ардуино вы сможете найти здесь.

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

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

Или можете на главной странице почитать подробнее о том что такое ардуино.

Ардуино для начинающих. Урок 1. Введение.

Базовый набор ардуино для начинающих:Купить
Большой набор для обучения и первых проектов:Купить
Ардуино Уно самая базовая и удобная модель из линейки:Купить

В этом уроке мы начнем знакомство с платформой Arduino. Посмотрим на самого типичного представителя семейства Arduino Uno. Это вводный урок. Пока мы не будем рассматривать программную среду и подключение модулей. Мы просто ознакомимся с чем нам предстоит работать.

Драйвер PL2303 для USB-TTL

Большинство плат Arduino производятся со встроенным USB-to-Serial преобразователем. Последнее время для этих целей используют микросхему CH340. Эта микросхема сильно снижает затраты на изготовление микроконтроллеров, а на работоспособность абсолютно не влияет. А для программирования устройств в которых нет встроенной микросхемы для связи по UART интерфейсу существуют специальные программаторы USB-to-TTL. Сейчас я расскажу о драйвере для PL2303. С помощью таких программаторов можно легко прошивать Arduino Pro Mini. Об этом мы рассказывали в этой статье.

PL2303 USB UART
PL2303 USB UART

Подобные программаторы выполняют одну и ту же задачу, но могут быть реализованы на микросхемах от разных производителей. На моем сайте уже есть статья с драйверами CH340 и CP2102. В этой статье я приведу ссылки на скачивание драйвера PL2303. Что бы определить какой драйвер нужен именно вам посмотрите в описание вашего USB-TTL конвертора или посмотрите что написано на микросхеме.

Скачать драйвер PL2303

Скачать PL2303 для Windows

Скачать PL2303 для Linux

Скачать PL2303 для MAC

Установка драйвера

  1. Скачайте драйвер для вашей операционной системы по ссылкам выше.
  2. Распакуйте архив
  3. Запустите исполнительный файл SETUP.EXE
  4. В открывшемся окне нажмите кнопку Install
  5. На этом установка завершена

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

Кэшбэк для Алиэкспресс

Кэшбэк (Cash Back) дословно переводится с английского как «возврат денег». Это значит, что вам после покупок будет возвращаться определенная часть денежных средств обратно. Это хороший способ экономить на своих покупках. Плюс ко всему обычно кэшбэк суммируется с акциями и скидками. Это позволяет покупать товары с максимальной выгодой. Для того что бы начать получать кэшбэк необходимо зарегистрироваться на одном из специальных сайтов и покупать товары по партнерской ссылке, которую вы можете генерировать сами. Это очень просто.

Почему кто-то платит вам за покупки на Алиэкспресс?

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

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

Сравнение кэшбэк сервисов для Алиэкспресс

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

Сравнение будет по самым важным параметрам, таким как:

  • Процент нашей выгоды. Наверно это самый важный параметр.
  • Простота вывода денег. Многие сервисы устанавливают минимальные пороги выплат и комиссию за вывод средств.
  • Удобство использования. Наличие расширений для браузеров, мобильных приложений, открытой и понятной статистики.
  • Надежность. Как давно сервис работает, сколько у него клиентов, есть ли жалобы.

EPN CashBack

EPN CashBack работает уже больше трех лет. Месячная посещаемость сайта около 10 млн посетителей. Это говорит нам о том, что этот сервис надежный и им пользуется большое количество людей. Список магазинов — партнеров не большой. На данный момент подключено 64 магазина. Основные партнеры: AliExpress, Asos, Ozon, Banggood, GearBest, Lamoda, М.Видео, Booking, Nike, Adidas, Reebok и Билайн. Основной упор сделан именно на AliExpress. Сервис заявляет о кэшбэке до 15%. Это достигается за счет прямых договоров со многими продавцами напрямую. Процент кэшбэка с алиэкспресса составляет 5% на все товары, 2.5% на мобильные телефоны.

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

Статистика кэшбэк сервиса EPN

Letyshops

Те, кто ещё не знакомы с Letyshops порой думают, что это развод или точно какой-нибудь обман, уж слишком много рекламы этого сервиса. Могу с уверенностью опровергнуть все эти подозрения, так как отзывы в сети вызывают доверие. Месячная посещаемость составляет около 15 млн посетителей. Сайт работает около 3 лет. Значит доверять ему можно.

Мобильного приложения нет. Браузерное расширение есть. Понятная статистика есть. Реферальная программа тоже. Теперь поговорим о процентах. Здесь проценты кэшбэка ниже чем у EPN. Это и не удивительно, ведь ребята очень много тратят на рекламу своего сервиса. Кэшбэк на товары с алиэкспресса 3%, а на телефоны и того ниже, всего 1.5%. Но есть жирный плюс в виде тысячи магазинов,
в которых можно получать кэшбэк.

Ebates.com

Единственный иностранный сервис в списке и может быть не самый удобный, однако он весьма популярен в мире, где 20 млн человек посещают ещё ежемесячно и подключено к нему более 1800 магазинов. Для покупок на AliExpress он предоставляет скидку 3%. Покупки можно совершать только на их сайте. Мобильного приложения нет, браузерного расширения тоже. Интерфейс на английском языке.

Kopikot

Ещё один удобный сервис для получения кешбека. Достаточно продуманный интерфейс, который сразу же познакомит с тем как в нём всё устроено. Около 360тыс. человек заходят на него ежемесячно, что говорит об уровне доверия, что опять же сильно меньше EPN или Летишопс, но всё-таки тоже достойно.

CashBack.ru

Мобильного приложения нет. Браузерное расширение есть. Ежемесячная посещаемость около 500 тыс. человек. Процент кэшбэка достаточно высокий — 6% со всех товаров, кроме мобильных телефонов.
3% с мобильных телефонов. Но в сети я нашел множество негативных отзывов об этом сервисе. Люди пишут, что сервис часто не начисляет кэшбэк, или начисляет многократно меньше. Так что доверять этому сайту или нет решать вам, но я бы не стал им пользоваться.

Рейтинг Cash Back для AliExpress

Кэшбэк сервисПроцент кэшбэка
все товары/телефоны
Минимальная сумма выводаБраузерное расширениеМобильное приложениеРепутация
EPN CashBack5%/2.5%0.2$ЕстьЕсть5
LetyShops3%/1.5%500 рубЕстьНет4
Ebates.com3% на всё10$НетНет5
Kopikot6%/3%500 рубЕстьнет3
cashback.ru6%/3%500 рубЕстьНет2

Книги по Ардуино

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

Скачать книги по ардуино на русском языке.

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

Изучаем Arduino. Джереми Блум

Изучаем Arduino. Джереми Блум
Изучаем Arduino. Джереми Блум

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

Джереми Блум Изучаем Arduino- инструменты и методы технического волшебства (2015)

Проекты с использованием контроллера Arduino. Петин В.А.

Проекты с использованием контроллера Arduino
Проекты с использованием контроллера Arduino

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

Проекты с использованием контроллера Arduino. Петин В.А.

Программируем Arduino. Саймон Монк

Программируем Arduino. Саймон Монк
Программируем Arduino. Саймон Монк

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

Программируем Arduino. Саймон Монк

Arduino и Raspberry Pi в проектах Internet of Things. Виктор Петин

Arduino и Raspberry Pi в проектах Internet of Things
Arduino и Raspberry Pi в проектах Internet of Things

Рассмотрено создание простых устройств в рамках концепции Интернета вещей (IoT, Internet of Things) на базе популярной платформы Arduino и микрокомпьютера Raspberry Pi. Показана установка и настройка среды разработки приложений Arduino IDE, а также среда макетирования Frizing. Описаны технические возможности, особенности подключения и взаимодействия различных датчиков и исполнительных устройств. Показана организация доступа разрабатываемых проектов к сети Интернет, отправка и получение ими данных с использованием популярных облачных IoT сервисов: Narodmon, ThingSpeak, Xively, Weaved, Blynk, Wyliodrin и др. Уделено внимание обмену данными с помощью платы GPRS/GSM Shield. Рассмотрен проект создания собственного сервера для сбора по сети данных с различных устройств на платформе Arduino. Показано как использовать фреймворк WebIOPi для работы с Raspberry Pi. Приведены примеры использования Wi-Fi-модуля ESP8266 в проектах “Умный дом”.

Arduino и Raspberry Pi в проектах интернета вещей

Практическая энциклопедия Arduino

Практическая энциклопедия Arduino
Практическая энциклопедия Arduino

В книге обобщаются данные по основным компонентам конструкций на основе платформы Arduino, которую представляет самая массовая на сегодняшний день версия Arduino UNO или аналогичные ей многочисленные клоны. Книга представляет собой набор из 33 глав-экспериментов. В каждом эксперименте рассмотрена работа платы Arduino c определенным электронным компонентом или модулем, начиная с самых простых и заканчивая сложными, представляющими собой самостоятельные специализированные устройства. В каждой главе представлен список деталей, необходимых для практического проведения эксперимента. Для каждого эксперимента приведена визуальная схема соединения деталей в формате интегрированной среды разработки Fritzing. Она дает наглядное и точное представление — как должна выглядеть собранная схема. Далее даются теоретические сведения об используемом компоненте или модуле. Каждая глава содержит код скетча (программы) на встроенном языке Arduino с комментариями.

Практическая энциклопедия ардуино

Быстрый старт. Первые шаги по освоению Arduino

Быстрый старт Arduino
Быстрый старт Arduino

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

Быстрый старт. Первые шаги по освоению Arduino

Драйвер CP2102

Драйвер cp210x может потребоваться вам при подключении к компьютеру устройств с чипом от silabs cp2102. Этот чип отвечает за преобразование сигнала с USB вашего компьютера в UART. Такой преобразователь устанавливается на множество устройств. Например на платы NodeMCU, программаторы и некоторые платы Arduino. Без данного драйвера эти устройства при подключении к вашему компьютеру будут определяться как неопознанное устройство.

Скачать драйвер CP210x

для Windows

для Mac OSx

для Linux версий 2.6.x

для Linux версий 3.x.x

Установка драйвера

  1. Скачайте драйвер для вашей операционной системы по ссылкам выше.
  2. Распакуйте архив
  3. Запустите исполнительный файл SETUP.EXE
  4. В открывшемся окне нажмите кнопку Install
  5. На этом установка завершена

В прошлой статье я рассказывал о драйвере CH340 который более распространен.

Драйвер CH340G для Arduino

Большинство плат Arduino производятся со встроенным USB-to-Serial преобразователем. Последнее время для этих целей используют микросхему CH340. Эта микросхема сильно снижает затраты на изготовление микроконтроллеров, а на работоспособность абсолютно не влияет. Так же ее используют в программаторах для устройств в которых нет встроенной поддержки USB соединения. С помощью таких программаторов можно легко прошивать Arduino Pro Mini. Об этом мы рассказывали в этой статье.

Как прошить Arduino Pro Mini
Как прошить Arduino Pro Mini

Есть только одно «но». По умолчанию в системе windows не установлен драйвер для работы с этой микросхемой. Из-за этого устройство может работать не правильно или вообще не опознается. Что бы это исправить необходимо скачать и установить драйвер CH340G. Ссылки на драйвер и инструкция по установке есть ниже.

Скачать драйвер CH340G

Скачать CH340G для Windows

Скачать CH340G для Linux

Скачать CH340G для MAC

Установка драйвера

  1. Скачайте драйвер для вашей операционной системы по ссылкам выше.
  2. Распакуйте архив
  3. Запустите исполнительный файл SETUP.EXE
  4. В открывшемся окне нажмите кнопку Install
  5. На этом установка завершена

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

Arduino IDE

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

Cкачать Arduino IDE

ВерсияWindowsMac OS XLinux
1.6.5

Zip

Installer

Installer

32 bits

64 bits

1.8.2

Zip

Installer

Installer

32 bits

64 bits

ARM

Самый безопасный и надежный источник — это, конечно же, официальный сайт, но вы можете скачать самые популярные версии на этой странице по ссылкам выше. Самая свежая версия на момент написания статьи 1.8.2. Вы можете скачать ее, но многие рекомендуют скачивать версию 1.6.5, потому что она считается самой стабильной. Так же существует классическая версия Иде 1.0.6. Она не поддерживает работу с Arduino Yún и Arduino DUE. Так же эта линейка версий программ больше не поддерживается сообществом и обновляться не будет.

Для Windows есть возможность загрузки архива (Windows) и инсталлятора (Windows Installer). Архив можно использовать как Portable версию. А если вы устанавливаете среду разработки ардуино на свое постоянное рабочее место, то лучше выбрать Windows Installer.

Я использую последнюю версию, но у нее есть трудности при работе из другого редактора. Я долго пытался настроить функции программы в редакторе Sublime Text 3. Работать такая связка абсолютно не хотела, поэтому я просто отказался от этой идеи и оставил все как есть. Если вы хотите использовать свой любимый редактор, то лучше скачивайте версию 1.6.5.

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

Установка Arduino IDE

Если вы скачали архив, то просто распакуйте его и запустите Arduino.exe.

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

Запускаем установочный файл. Соглашаемся с условиями лицензионного соглашения (естественно после прочтения).

Установка Arduino IDE
Соглашаемся с условиями

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

Выбор компонентов Arduino ide
Выбор компонентов Arduino ide

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

Выбор пути установки программы
Выбор пути установки программы

Во время установки может появиться окно с предложением установки драйвера USB-to-serial. Соглашаемся и ждем окончания установки. На этом весь процесс завершен. Осталось настроить среду разработки и можно творить.

Настройка Arduino IDE

После установки необходимо настроить программу. Сделать это очень легко:

1. Сначала подключите вашу ардуинку к компьютеру с помощью USB кабеля.

2. Потом перейдите в «Пуск >> Панель управления >> Диспетчер устройств«. Там надо найти «Порты COM и LPT». В этом списке будет указана ваша arduino и порт к которому она подключена (COM2). Запомните это значение.

Если вашего микроконтроллера нет в списке, или он показан как неопознанное устройство, значит драйвер установлен неправильно, или у вас китайская плата с чипом CH340. Это не проблема. Просто вам нужен другой драйвер. Где его скачать и как установить я рассказал в этой статье.

Arduino Uno в диспетчере устройств
Arduino Uno в диспетчере устройств

3. Теперь запускаем Arduino IDE и сразу идем в меню «Инструменты >> Порт«. Там необходимо выбрать тот COM порт, который вы запомнили.

Выбор COM порта
Выбор COM порта

4. Далее надо выбрать плату. Для этого в меню»Инструменты >> Платы» выбираете модель вашей платы.

Выбор платы ардуино
Выбор платы ардуино

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

Использование Arduino IDE

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

Примеры в Arduino IDE
Примеры в Arduino IDE

Потом нажимаем кнопку «Загрузить» и ожидаем окончания загрузки скетча. После загрузки сразу должен начать мигать встроенный светодиод. Это значит что все работает так как надо. Теперь вы можете писать свои прошивки или использовать готовые. Описание функций языка программирования Arduino есть на странице моего сайта Программирование

Ардуино