Парктроник на ардуино с дисплеем и led

Окончательная программа для спидометра

Загрузите приведенный код на Arduino. Проверьте работу переключателя подсветки и насколько корректно отображается скорость.

Уточните радиус вашего коле в дюймах и вставьте это значение в строку: float radius = »»’;

В этой части кода я использовал прерывания, чтобы переменная «timer» увеличивала свое значение с частотой 1 кГц.

//Спидометр для велосипеда с использованием геркона

//скорость велосипеда отображается на LCD экране

//расчеты

//радиус колеса ~ 13.5 дюймов

//расстояние = pi*2*r =~85 дюймов

//максимальная скорость 35 миль/час =~ 616 дюймов/секунду

//максимальная угловая скорость =~7.25

#define reed A0// пин, к которому подключен геркон

// переменные

float radius = 13.5;// радиус колеса (в дюймах)- измените это для своем велосипеде

int reedVal;

long timer = 0;// время одного полного оборота (в милисекундах)

float mph = 0.00;

float circumference;

boolean backlight;

int maxReedCounter = 100;// минимальное время (в милисекундах) одного оборота

int reedCounter;

void setup(){

reedCounter = maxReedCounter;

circumference = 2*3.14*radius;

pinMode(1,OUTPUT);// tx

pinMode(2,OUTPUT);// свич подсветки

pinMode(reed, INPUT);

checkBacklight();

Serial.write(12);// очищение

cli();// остановка прерываний

// устанавливаем прерывание timer1 на частоте 1 кГц

TCCR1A = 0;// устанавливаем внутренний регистр TCCR1A в 0

TCCR1B = 0;// то же самое для TCCR1B

TCNT1 = 0;

// устанавливаем инкремент для счетчика 1 кГц

OCR1A = 1999;// = (1/1000) / ((1/(16*10^6))*8) — 1

// активируем режим CTC

TCCR1B |= (1

TCCR1B |= (1

// таймер сравнивает прерывание

TIMSK1 |= (1

sei();//allow interrupts

// Конец настройки таймера

Serial.begin(9600);

}

void checkBacklight(){

backlight = digitalRead(2);

if (backlight){

Serial.write(17);// включаем подсветку

}

else{

Serial.write(18);// выключаем подсветку

}

}

ISR(TIMER1_COMPA_vect) {// Прерывание с частотой 1 кГц для измерений герконом

reedVal = digitalRead(reed);// получаем значение A0

if (reedVal){// если геркон замкнул контакт

if (reedCounter == 0){// минимальное время между импульсяами прошло

mph = (56.8*float(circumference))/float(timer);// расчет миль в час

timer = 0;// перезагрузка таймера

reedCounter = maxReedCounter;// перезагрузка reedCounter

}

else{

if (reedCounter > 0){// не позволяем reedCounter принять негативное значение

reedCounter -= 1;// декремент reedCounter

}

}

}

else{// если геркон не замкнут

if (reedCounter > 0){// не позволяем reedCounter принять негативное значение

reedCounter -= 1;// декремент reedCounter

}

}

if (timer > 2000){

mph = 0;// если не поступают импульсы от геркона, значит скорость равна 0

}

else{

timer += 1;// инкремент таймера

}

}

void displayMPH(){

Serial.write(12);// очищаем

Serial.write(«Speed =»);

Serial.write(13);// начинаем новую строку

Serial.print(mph);

Serial.write(» MPH «);

//Serial.write(«0.00 MPH «);

}

void loop(){

// отображаем mph раз в секунду

displayMPH();

delay(1000);

checkBacklight();

}

Шаг 1. Держатель

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

Кроме того, наши входные данные фиксируется, когда магнит на колесе пересекает датчик эффекта Холла на опоре.

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

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

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

Последовательность действий при сборке платформы Arduino

Чтобы загрузить системный загрузчик (boot loader) в «чистый» Atmega328 IC нам будет необходима какая-нибудь плата Arduino (подойдет любая). Последовательность действий по сборке платформы Arduino будет показана в виде следующей последовательности шагов. Также в конце статьи вы можете посмотреть видео, на котором наглядно представлены все продемонстрированные на рисунках процессы.

Шаг 1. Соберите вместе и аккуратно разложите все необходимые для сборки компоненты.

Шаг 2. Удалите “Arduino Original IC” с платы Arduino с помощью отвертки и вставьте “New Atmega328 IC” на плату Arduino.

Шаг 3. Откройте интегрированную среду разработки Arduino, выберите в ней пункт меню File -> example -> ArduinoISP.

После открытия ArduinoISP выберите Arduino UNO board из пункта меню Tools -> Board -> Arduino Uno.

Затем выберите COM PORT (последовательный порт) из пункта меню Tools -> Serial Port -> COM10.

Затем загрузите ArduinoISP Sketch (кусок программного кода).

Шаг 4. Теперь удалите New IC (ваш микроконтроллер) с платы Arduino и вставьте в нее оригинальный Arduino IC (тот, который был на ней изначально). Загрузите в нее тот же самый ArduinoISP sketch который мы загружали на шаге 3.

Шаг 5. Соберите приведенную ниже схему на макетной плате с New IC (вашим микроконтроллером Atmega328) и с оригинальным микроконтроллером на оригинальной плате Arduino.

Шаг 6. Теперь в интегрированной среде разработки Arduino выберите пункт Tool (инструменты) и выберите в нем пункт Burn Bootloader.

В это время вы увидите как светодиоды Rx и Tx на плате Arduino будут случайно мигать некоторое время. Это значит что Bootloader загружается в новый ATmega 328 IC. После этого интегрированная среда разработки Arduino (Arduino IDE) выдаст сообщение “Done burning bootloader” (то есть загрузка завершена). И теперь вы сможете использовать свой микроконтроллер Atmega328 (‘New IC’) на своей плате Arduino.

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

Вставьте ‘New IC’ (ваш микроконтроллер) в эту плату. Также вы сможете собрать всю эту систему сразу на печатной плате. Для подключения жидкокристаллического дисплея соедините вашу собранную плату Arduino с оригинальной платой Arduino, используя контакты Rx, Tx, RST and GND оригинальной платой Arduino, как показано ниже на мнемонической схеме или выше на схеме соединений. И загрузите приведенный ниже код.

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

Гаражный ультразвуковой парктроник Arduino


Гаражный парктроник на Ардуино своими руками

В следующей программе реализована функция выключения звуковой сигнализации через 10 секунд (можно изменить в программе), т.е. когда машина уже остановилась. В схеме использованы RGB светодиоды 5 В, чтобы для питания использовать обычную зарядку от телефона. Схема сборки проекта на Ардуино остается прежней, а скачать скетч и файлы с макетом корпуса в Corel Draw для парктроника можно здесь.

Скетч для гаражного парктроника на Ардуино

#include <Ultrasonic.h>            // импортируем библиотеку
Ultrasonic ultrasonic (11, 12);  // указываем пины для уз датчика

int del = 5;       // задержка между измерениями в мкс
int cm1 = 30;  // расстояние при котором включится зеленый светодиод
int cm2 = 20;  // расстояние при котором включится синий светодиод
int cm3 = 10;  // расстояние при котором включится красный светодиод
int cm4 = 5;    // расстояние при котором включится зуммер

unsigned long currentTime;  // переменная для отсчета времени
int Time = 5000;  // через сколько мкс нужно отключить зуммер
byte t = 0;  // переменная для запоминания состояния зуммера

void setup() {
   Serial.begin(9600);
   pinMode(7, OUTPUT);  // пин для подключения зуммера
   pinMode(2, OUTPUT);  // пин для зеленого светодиода
   pinMode(3, OUTPUT);  // пин для синего светодиода
   pinMode(4, OUTPUT);  // пин для красного светодиода
}

void loop() {
   // выполняем 10 измерений и складываем результат
   int distance, sum, total;
   for (byte i = 0; i <= 10; i++) {
      distance = ultrasonic.Ranging(CM);
      sum = sum + distance;
      delay(del);
   }
   total = sum / 10;  // вычисляем среднее значение
   Serial.println("Distance  - " + String(total));

   if (total >= cm1) {
      digitalWrite(4, LOW); digitalWrite(3, LOW); digitalWrite(2, LOW);
   }
   if (total < cm1 && total >= cm2) {
      digitalWrite(4,LOW); digitalWrite(3,LOW); digitalWrite(2,HIGH);
   }
   if (total < cm2 && total > cm3) {
      digitalWrite(4,LOW);  digitalWrite(3,HIGH); digitalWrite(2,LOW);
   }
   if (total <= cm3) {
       digitalWrite(4,HIGH); digitalWrite(3,LOW); digitalWrite(2,LOW);
   }
   // зуммер выключится через заданный промежуток времени
   if (total > cm4) { t = 0; noTone(7); }
   if (t == 0 && total <= cm4) { t = 1; tone(7, 100); currentTime = millis(); }
   if (t == 1 && total <= cm4 && millis() - currentTime > Time) { t = 1; noTone(7); }
}

Пояснения к коду:

  1. зуммер выключится через заданный промежуток времени, благодаря изменению переменной при включении пьезодинамика командой tone();
  2. при расстоянии больше переменная снова становится равной нулю и пьезодинамик снова включится.

Элементы платы

Микроконтроллер ATmega328P

Сердцем платформы Arduino Uno является 8-битный микроконтроллер фирмы Microchip — ATmega328P на архитектуре AVR с тактовой частотой 16 МГц.
Контроллер обладает тремя видами памяти:

  • 32 КБ Flash-памяти, из которых 0,5 КБ используются загрузчиком, который позволяет прошивать Uno с обычного компьютера через USB. Flash-память постоянна и её предназначение — хранение программ и сопутствующих статичных ресурсов.
  • 2 КБ RAM-памяти, которые предназначены для хранения временных данных, например переменных программы. По сути, это оперативная память платформы. RAM-память энергозависимая, при выключении питания все данные сотрутся.
  • 1 КБ энергонезависимой EEPROM-памяти для долговременного хранения данных, которые не стираются при выключении контроллера. По своему назначению это аналог жёсткого диска для Uno.

Микроконтроллер ATmega16U2

Микроконтроллер не содержит USB интерфейса, поэтому для прошивки и коммуникации с ПК на плате присутствует дополнительный микроконтроллер ATmega16U2 с прошивкой USB-UART преобразователя. При подключении к ПК Arduino Uno определяется как виртуальный COM-порт.

общается с ПК через по интерфейсу UART используя сигналы и , которые параллельно выведены на контакты и платы Uno. Во время прошивки и отладки программы, не используйте эти пины в своём проекте.

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

Имя светодиода Назначение
ON Индикатор питания платформы.
L Пользовательский светодиод на пине микроконтроллера. Используйте определение для работы со светодиодом. При задании значения высокого уровня светодиод включается, при низком – выключается.
RX и TX Мигают при прошивке и обмене данными между Uno и компьютером. А также при использовании пинов и .

Порт USB Type-B

Разъём USB Type-B предназначен для прошивки и питания платформы Arduino. Для подключения к ПК понадобится кабель USB (A — B).

Понижающий регулятор 5V

Понижающий линейный преобразователь NCP1117ST50T3G обеспечивает питание микроконтроллера и другой логики платы при подключении питания через или пин Vin. Диапазон входного напряжения от 7 до 12 вольт. Выходное напряжение 5 В с максимальным выходным током 1 А.

Понижающий регулятор 3V3

Понижающий линейный преобразователь LP2985-33DBVR обеспечивает напряжение на пине . Регулятор принимает входное напряжение от линии 5 вольт и выдаёт напряжение 3,3 В с максимальным выходным током 150 мА.

ICSP-разъём ATmega328P

ICSP-разъём выполняет две полезные функции:

  1. Используется для передачи сигнальных пинов интерфейса SPI при подключении Arduino Shield’ов или других плат расширения. Линии ICSP-разъёма также продублированы на цифровых пинах , , и .
  2. Предназначен для загрузки прошивки в микроконтроллер через внешний программатор. Одна из таких прошивок — Bootloader для Arduino Uno, который позволяет .

А подробности распиновки .

Шаг 2. Информация о проекте

Трекер использует GPS-модуль ATGM332, чтобы получить GPS-положение с большей точностью, чем услуги определения местоположения, предоставляемые Sigfox. Затем данные позиции отправляются как «строка» через сеть Sigfox и, наконец, доставляются по электронной почте.

Arduino MKR FOX 1200

Плата похожа на Arduino Zero, которая основана на SAM D21 и включает модуль ATA8520 Sigfox. Это плата с низким энергопотреблением, которая поставляется вместе с платой с бесплатной подпиской на один год в сеть Sigfox (до 140 сообщений в день), а также бесплатным доступом к службе геолокации Spot’it.

Дополнительная информация здесь.

GPS-модуль ATGM332

Этот недорогой маломощный GPS-модуль очень хорошо подходит для Arduino MKR FOX 1200, поскольку он работает только с 2,7 В (номинальный 3,3 В).

Первоначально должен был быть куплен модуль NEO6m2, который имеет режим ожидания, но пришлось использовать NEO6. Фактически это был модуль ATGM332. В результате у него не было режима ожидания, поэтому нужно было использовать транзистор для включения модуля GPS, когда это необходимо, и выключить его, чтобы сэкономить аккумулятор. Наша цель — иметь информацию о местоположении довольно редко, то есть 4 сообщения в час, поскольку Sigfox позволяет только 140 сообщений в день.

Мы используем библиотеку TinyGPS (https://github.com/mikalhart/TinyGPS) для декодирования кадров GPS.

Транзисторный переключатель

Нужно было включить и выключить GPS, когда это необходимо. Модули реле слишком громоздки и мощны, если нужно только переключить нагрузку 3 В и несколько миллиампер. Кроме того, для большинства модулей реле требуется 5 В. Таким образом, транзистор будет лучшим решением. Кроме того, MKR FOX 1200 обеспечивает только 7 мА на пине ввода/вывода.

Подойдет транзистор BC548 NPN. Когда нулевой сигнал подается на базу транзистора, он выключается, действуя как открытый выключатель, и ток коллектора не течет. При положительном сигнале, подаваемом на базу транзистора, он становится «включенным», действующим как замкнутый переключатель, и максимальный ток цепи протекает через устройство.

Электросхема

Прибор может работать только в автомобиле с инжекторным двигателем (в карбюраторных датчика скорости нет, а датчик зажигания есть далеко не во всех). Схема прибора показана на рисунке 1. На этом рисунке плата ARDUINO UNO показана схематично как «вид сверху».

Рис. 1. Принципиальная схема спидометра и тахометра на базе Arduino.

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

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

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

Электросхема проекта приведена ниже.

1. Один подключен к питанию 9 вольт

2. Второй переключатель — к LCD экрану для его включения/выключения

3. Магнитный выключателя (геркон), который замыкает цепь каждый раз, когда колесо совершает полный оборот.

LCD монитор Parallax, который используется в проекте, подключается к Arduino по трем пинам. Один идет к 5 В, один к земле, третий — к серийному выходу (TX) на плате Arduino на цифровом пине 1.

Резисторы на 10 кОм подключены к переключателям и подсветке монитора, чтобы избежать превышения допустимой силы тока между 5 В и землей (ни в коем случае не подключайте 5 В и землю напрямую к Arduino).

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

Таблица 1. Исходный код программы.

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

F= 1440000/Т

Под другой датчик нужно будет рассчитать другое число, которое делится на период, и подставить его в программу вместо «600000».

Затем, результаты выводятся в соответствующие строки ЖК-дисплея. Единицы измерения указаны как «km/h» и «оЬ/тіп» (если не нравится, можете изменить).

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

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

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

X = 3600000000 / N

Х= 3600000000 / 2500 = 1440000

Х= 3600000000 / 6000 = 600000

Загрузите приведенный код на Arduino. Проверьте работу переключателя подсветки и насколько корректно отображается скорость.

Уточните радиус вашего коле в дюймах и вставьте это значение в строку: float radius = »»’;

В этой части кода я использовал прерывания, чтобы переменная «timer» увеличивала свое значение с частотой 1 кГц.

//Спидометр для велосипеда с использованием геркона

//скорость велосипеда отображается на LCD экране

Шаг 5. Стоп-сигнал (опционально)

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

Если мы тормозим, велосипед замедляется. Это означает, что если мы рассчитываем ускорение и если оно оказывается отрицательным, можно включить стоп-сигналы. Это, однако, означает, что свет включится, даже если мы просто перестанем крутить педали.

Также мы не добавили транзистор в световую цепь, что абсолютно рекомендуется. Если кто-то сделает этот проект и правильно интегрирует эту часть, мы бы были более чем рады увидеть её и добавили бы картинки сюда. Ток мы получаем напрямую от цифрового контакта 2 Arduino Nano.

Бортовой компьютер на ардуино.

Привет всем.Решил собрать себе БК на авто.На форуме джили мк кросс http://www.geely-club.com/forum/topic/7283-samodelnyj-bortovoj-kompyuter/page-1 автор собрал БК с сайта http://code.google.com/p/opengauge/wiki/OBDuino.В общем он сделал без датчиков температуры и напряжения,но есть новая прошивка с датчиками. https://github.com/Magister54/opengauge/blob/master/obduino32K/obduino32K.pde .К каким пинам на ардуино подключить датчики? Прошивка автора без датчиков.

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

Для начала нужно раскомментировать нужные строки из 290, 291, 292.

Номера пинов укзаны в строках 470, 475.

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

Спасибо понял.А датчик напряжения какой ставить? строки 295-298.

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

Спасибо понял.А датчик напряжения какой ставить? строки 295-298.

Ну поищите же по коду » BatteryVoltageSensor» там даже «схема» есть. (строка 2310). А вобще такие вещи надо у авторов узнавать, из первоисточника так сказать. Не голый скетч тащить, а с описанием — для чего он нужен, с чем работает и т.д. А то дальше будет — этим не компилируется, в это не заливается, это не работает.

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

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

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

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

Как то так, да. Ножки кончились. Поэтому автор и сделал датчики опциональными на трёх оставшихся ногах:

A0 — сигнал с делителя напряжения для контроля батареи

А1 — буззер или первый датчик температуры

А2 — второй датчик температуры.

Или по последней схемке это 23, 24, 25.

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

А если LCD на i2c переделать, ещё 4 ноги освободится.

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

А если LCD на i2c переделать, ещё 4 ноги освободится.

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

Привет всем.Спасибо.А часы можно как то в скетч впихнуть,чтобы при подаче напряжения вначале отображалось время. Никто не поможет.У меня с программированием туго.

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

Помогите пожалуйста.При прошивке через Arduino 1.8.5 пишет

D:Новая папкаobduino32obduino32.ino:365:26: fatal error: LiquidCrystal.: No such file or directory compilation terminated.exit status 1 Ошибка компиляции для платы Arduino Nano.

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

Menu -> Sketch -> Include Library -> Manage Libraries -> LiquidCrystal

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

uino32:6 и Спасибо.Библиотеку обновил.Появились следующие ошибки.Автор прошивал Atmega-328 ардуино-0023. В этой старой версии скетч

проверяется без проблем.Но не могу прошить свою ардуино при выборе программатора пишет avrdude:usbdev_open(): did not find any

Arduino: выделяется желтым. static prog_char bignumchars2 PROGMEM =

Arduino: 1.8.5 (Windows Vista), Плата:»Arduino Nano, ATmega328P»

o bduino32:678: error: ‘prog_char’ does not name a type

obduino32:806: error: ‘prog_char’ does not name a type

Начало работы

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

Этапы

При организации системы «Умный дом» на базе Ардуино, стоит действовать по следующему алгоритму:

  • Инсталляция программного кода;
  • Конфигурация приложения под применяемое устройство;
  • Переадресация портов (для роутера);
  • Проведение тестов;
  • Внесение правок и так далее.

В Сети имеется весь необходимый софт на применяемое оборудование — его достаточно скачать с официального сайта и установить (ссылку смотрите выше).

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

Последовательность действий при подключении к компьютеру

Чтобы начать работать с Ардуино в Windows, сделайте следующие шаги:

  • Подготовьте необходимое оборудование — USB-кабель и Arduino.
  • Скачайте программу на странице arduino.cc/en/Main/Software.
  • Подсоедините плату с помощью USB-кабеля. Проследите, чтобы загорелся светодиод PWR.
  • Поставьте необходимый набор драйверов для работы с Ардуино. На этом этапе стоит запустить установку драйвера и дождаться завершения процесса. После жмите на кнопку «Пуск» и перейдите в панель управления. Там откройте вкладку «Система и безопасность» и выберите раздел «Система». После открытия окна выберите «Диспетчер устройств», жмите на название Ардуино и с помощью правой кнопки мышки задайте команду обновления драйвера. Найдите строчку «Browse my computer for Driver software!», кликните по ней и выберите соответствующий драйвер для вашего типа платы — ArduinoUNO.inf (находится в папке с драйверами). Это может быть UNO, Mega 2560 или другая.
  • Запустите среду разработки Ардуино, для чего дважды кликните на значок с приложением.
  • Откройте готовый пример (File — Examples — 1.Basics — Blink).
  • Выберите плату. Для этого перейдите в секцию Tools, а дальше в Board Menu.
  • Установите последовательный порт (его можно найти путем отключения и подключения кабеля).
  • Скачайте скетч в Ардуино. Кликните на «Upload» и дождитесь мигания светодиодов TX и RX на плате. В завершение система показывает, что загрузка прошла успешно. Через несколько секунд после завершения работы должен загореться светодиод 13 L (он будет мигать оранжевым). Если это так, система готова к выполнению задач.

Работа с роутером

Для полноценной работы «Умного дома» важно правильно обращаться с роутером. Здесь требуется выполнить следующие действия — открыть конфигурацию, указать адрес Arduino IP, к примеру, 192.168.10.101 и открыть 80-й порт

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

Умный дом на базе Raspberry Pi 3 своими руками, пошаговая инструкция

Разработка проекта

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

Какие проекты можно создавать на Arduino?

Ардуино позволяет создавать множество уникальных проектов. Вот лишь некоторые из них:

  • Сборка кубика Рубика (система справляется за 0,887 с);
  • Контроль влажности в подвальном помещении;
  • Создание уникальных картин;
  • Отправка сообщений;
  • Балансирующий робот на двух колесах;
  • Анализатор спектра звука;
  • Лампа оригами с емкостным сенсором;
  • Рука-робот, управляемая с помощью Ардуино;
  • Написание букв в воздухе;
  • Управление фотовспышкой и многое другое.

Как подключить проходной выключатель: одноклавишный, двухклавишный, как обычный, схемы, критерии выбора

Составление проекта для умного дома

Рассмотрим ситуацию, когда необходимо сделать автоматику для дома с одной комнатой.

Такое здание состоит из пяти основных зон — прихожей, крыльца, кухни, санузла, а также комнаты для проживания.

При составлении проекта стоит учесть следующее:

  • КРЫЛЬЦО. Включение света производится в двух случая — приближение хозяина к дому в темное время суток и открытие дверей (когда человек выходит из здания).
  • САНУЗЕЛ. В бойлере предусмотрен выключатель питания, который при достижении определенной температуры выключается. Управление бойлером производится в зависимости от наличия соответствующей автоматики. При входе в помещение должна срабатывать вытяжка, и загорается свет.
  • ПРИХОЖАЯ. Здесь требуется включение света при наступлении темноты (автоматическое), а также система обнаружения движения. Ночью включается лампочка небольшой мощности, что исключает дискомфорт для других жильцов дома.
  • КОМНАТА. Включение света производится вручную, но при необходимости и наличии датчика движения эта манипуляция может происходить автоматически.
  • КУХНЯ. Включение и отключение света на кухне осуществляется в ручном режиме. Допускается автоматическое отключение в случае продолжительного отсутствия перемещений по комнате. Если человек начинает готовить пищу, активируется вытяжка.

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

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

Стоит обратить внимание, что если в доме планируется установка умных розеток, то для управления ими лучше использовать приложения на мобильных устройствах, WIFI или через SMS сообщения. Визуальное программирование для Arduino можно осуществлять с помощью специального приложения FLProg, которое можно скачать с официального сайта https://flprog.ru/

Визуальное программирование для Arduino можно осуществлять с помощью специального приложения FLProg, которое можно скачать с официального сайта https://flprog.ru/.

Шаг 4. Источник питания

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

Но вы должны тщательно выбрать powerbank

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

Дело в том, что для экономии энергии powerbank предназначен для отключения выхода, если потребление тока не превышает определенного порогового значения.

Скорее всего это пороговое значение составляет не менее 200-300 мА. Наша схема будет иметь максимальное потребление тока не более 20 мА. Таким образом, обычный банк питания отключит выход. Это может привести вас к мысли, что в вашей цепи есть какая-то неисправность. Этот конкретный банк питания на фото выше работает с таким небольшим током.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мастер Юрий Меркулов
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Парктроник на ардуино с дисплеем и led

Окончательная программа для спидометра

Загрузите приведенный код на Arduino. Проверьте работу переключателя подсветки и насколько корректно отображается скорость.

Уточните радиус вашего коле в дюймах и вставьте это значение в строку: float radius = »»’;

В этой части кода я использовал прерывания, чтобы переменная «timer» увеличивала свое значение с частотой 1 кГц.

//Спидометр для велосипеда с использованием геркона

//скорость велосипеда отображается на LCD экране

//расчеты

//радиус колеса ~ 13.5 дюймов

//расстояние = pi*2*r =~85 дюймов

//максимальная скорость 35 миль/час =~ 616 дюймов/секунду

//максимальная угловая скорость =~7.25

#define reed A0// пин, к которому подключен геркон

// переменные

float radius = 13.5;// радиус колеса (в дюймах)- измените это для своем велосипеде

int reedVal;

long timer = 0;// время одного полного оборота (в милисекундах)

float mph = 0.00;

float circumference;

boolean backlight;

int maxReedCounter = 100;// минимальное время (в милисекундах) одного оборота

int reedCounter;

void setup(){

reedCounter = maxReedCounter;

circumference = 2*3.14*radius;

pinMode(1,OUTPUT);// tx

pinMode(2,OUTPUT);// свич подсветки

pinMode(reed, INPUT);

checkBacklight();

Serial.write(12);// очищение

cli();// остановка прерываний

// устанавливаем прерывание timer1 на частоте 1 кГц

TCCR1A = 0;// устанавливаем внутренний регистр TCCR1A в 0

TCCR1B = 0;// то же самое для TCCR1B

TCNT1 = 0;

// устанавливаем инкремент для счетчика 1 кГц

OCR1A = 1999;// = (1/1000) / ((1/(16*10^6))*8) — 1

// активируем режим CTC

TCCR1B |= (1

TCCR1B |= (1

// таймер сравнивает прерывание

TIMSK1 |= (1

sei();//allow interrupts

// Конец настройки таймера

Serial.begin(9600);

}

void checkBacklight(){

backlight = digitalRead(2);

if (backlight){

Serial.write(17);// включаем подсветку

}

else{

Serial.write(18);// выключаем подсветку

}

}

ISR(TIMER1_COMPA_vect) {// Прерывание с частотой 1 кГц для измерений герконом

reedVal = digitalRead(reed);// получаем значение A0

if (reedVal){// если геркон замкнул контакт

if (reedCounter == 0){// минимальное время между импульсяами прошло

mph = (56.8*float(circumference))/float(timer);// расчет миль в час

timer = 0;// перезагрузка таймера

reedCounter = maxReedCounter;// перезагрузка reedCounter

}

else{

if (reedCounter > 0){// не позволяем reedCounter принять негативное значение

reedCounter -= 1;// декремент reedCounter

}

}

}

else{// если геркон не замкнут

if (reedCounter > 0){// не позволяем reedCounter принять негативное значение

reedCounter -= 1;// декремент reedCounter

}

}

if (timer > 2000){

mph = 0;// если не поступают импульсы от геркона, значит скорость равна 0

}

else{

timer += 1;// инкремент таймера

}

}

void displayMPH(){

Serial.write(12);// очищаем

Serial.write(«Speed =»);

Serial.write(13);// начинаем новую строку

Serial.print(mph);

Serial.write(» MPH «);

//Serial.write(«0.00 MPH «);

}

void loop(){

// отображаем mph раз в секунду

displayMPH();

delay(1000);

checkBacklight();

}

Шаг 1. Держатель

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

Кроме того, наши входные данные фиксируется, когда магнит на колесе пересекает датчик эффекта Холла на опоре.

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

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

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

Последовательность действий при сборке платформы Arduino

Чтобы загрузить системный загрузчик (boot loader) в «чистый» Atmega328 IC нам будет необходима какая-нибудь плата Arduino (подойдет любая). Последовательность действий по сборке платформы Arduino будет показана в виде следующей последовательности шагов. Также в конце статьи вы можете посмотреть видео, на котором наглядно представлены все продемонстрированные на рисунках процессы.

Шаг 1. Соберите вместе и аккуратно разложите все необходимые для сборки компоненты.

Шаг 2. Удалите “Arduino Original IC” с платы Arduino с помощью отвертки и вставьте “New Atmega328 IC” на плату Arduino.

Шаг 3. Откройте интегрированную среду разработки Arduino, выберите в ней пункт меню File -> example -> ArduinoISP.

После открытия ArduinoISP выберите Arduino UNO board из пункта меню Tools -> Board -> Arduino Uno.

Затем выберите COM PORT (последовательный порт) из пункта меню Tools -> Serial Port -> COM10.

Затем загрузите ArduinoISP Sketch (кусок программного кода).

Шаг 4. Теперь удалите New IC (ваш микроконтроллер) с платы Arduino и вставьте в нее оригинальный Arduino IC (тот, который был на ней изначально). Загрузите в нее тот же самый ArduinoISP sketch который мы загружали на шаге 3.

Шаг 5. Соберите приведенную ниже схему на макетной плате с New IC (вашим микроконтроллером Atmega328) и с оригинальным микроконтроллером на оригинальной плате Arduino.

Шаг 6. Теперь в интегрированной среде разработки Arduino выберите пункт Tool (инструменты) и выберите в нем пункт Burn Bootloader.

В это время вы увидите как светодиоды Rx и Tx на плате Arduino будут случайно мигать некоторое время. Это значит что Bootloader загружается в новый ATmega 328 IC. После этого интегрированная среда разработки Arduino (Arduino IDE) выдаст сообщение “Done burning bootloader” (то есть загрузка завершена). И теперь вы сможете использовать свой микроконтроллер Atmega328 (‘New IC’) на своей плате Arduino.

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

Вставьте ‘New IC’ (ваш микроконтроллер) в эту плату. Также вы сможете собрать всю эту систему сразу на печатной плате. Для подключения жидкокристаллического дисплея соедините вашу собранную плату Arduino с оригинальной платой Arduino, используя контакты Rx, Tx, RST and GND оригинальной платой Arduino, как показано ниже на мнемонической схеме или выше на схеме соединений. И загрузите приведенный ниже код.

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

Гаражный ультразвуковой парктроник Arduino


Гаражный парктроник на Ардуино своими руками

В следующей программе реализована функция выключения звуковой сигнализации через 10 секунд (можно изменить в программе), т.е. когда машина уже остановилась. В схеме использованы RGB светодиоды 5 В, чтобы для питания использовать обычную зарядку от телефона. Схема сборки проекта на Ардуино остается прежней, а скачать скетч и файлы с макетом корпуса в Corel Draw для парктроника можно здесь.

Скетч для гаражного парктроника на Ардуино

#include <Ultrasonic.h>            // импортируем библиотеку
Ultrasonic ultrasonic (11, 12);  // указываем пины для уз датчика

int del = 5;       // задержка между измерениями в мкс
int cm1 = 30;  // расстояние при котором включится зеленый светодиод
int cm2 = 20;  // расстояние при котором включится синий светодиод
int cm3 = 10;  // расстояние при котором включится красный светодиод
int cm4 = 5;    // расстояние при котором включится зуммер

unsigned long currentTime;  // переменная для отсчета времени
int Time = 5000;  // через сколько мкс нужно отключить зуммер
byte t = 0;  // переменная для запоминания состояния зуммера

void setup() {
   Serial.begin(9600);
   pinMode(7, OUTPUT);  // пин для подключения зуммера
   pinMode(2, OUTPUT);  // пин для зеленого светодиода
   pinMode(3, OUTPUT);  // пин для синего светодиода
   pinMode(4, OUTPUT);  // пин для красного светодиода
}

void loop() {
   // выполняем 10 измерений и складываем результат
   int distance, sum, total;
   for (byte i = 0; i <= 10; i++) {
      distance = ultrasonic.Ranging(CM);
      sum = sum + distance;
      delay(del);
   }
   total = sum / 10;  // вычисляем среднее значение
   Serial.println("Distance  - " + String(total));

   if (total >= cm1) {
      digitalWrite(4, LOW); digitalWrite(3, LOW); digitalWrite(2, LOW);
   }
   if (total < cm1 && total >= cm2) {
      digitalWrite(4,LOW); digitalWrite(3,LOW); digitalWrite(2,HIGH);
   }
   if (total < cm2 && total > cm3) {
      digitalWrite(4,LOW);  digitalWrite(3,HIGH); digitalWrite(2,LOW);
   }
   if (total <= cm3) {
       digitalWrite(4,HIGH); digitalWrite(3,LOW); digitalWrite(2,LOW);
   }
   // зуммер выключится через заданный промежуток времени
   if (total > cm4) { t = 0; noTone(7); }
   if (t == 0 && total <= cm4) { t = 1; tone(7, 100); currentTime = millis(); }
   if (t == 1 && total <= cm4 && millis() - currentTime > Time) { t = 1; noTone(7); }
}

Пояснения к коду:

  1. зуммер выключится через заданный промежуток времени, благодаря изменению переменной при включении пьезодинамика командой tone();
  2. при расстоянии больше переменная снова становится равной нулю и пьезодинамик снова включится.

Элементы платы

Микроконтроллер ATmega328P

Сердцем платформы Arduino Uno является 8-битный микроконтроллер фирмы Microchip — ATmega328P на архитектуре AVR с тактовой частотой 16 МГц.
Контроллер обладает тремя видами памяти:

  • 32 КБ Flash-памяти, из которых 0,5 КБ используются загрузчиком, который позволяет прошивать Uno с обычного компьютера через USB. Flash-память постоянна и её предназначение — хранение программ и сопутствующих статичных ресурсов.
  • 2 КБ RAM-памяти, которые предназначены для хранения временных данных, например переменных программы. По сути, это оперативная память платформы. RAM-память энергозависимая, при выключении питания все данные сотрутся.
  • 1 КБ энергонезависимой EEPROM-памяти для долговременного хранения данных, которые не стираются при выключении контроллера. По своему назначению это аналог жёсткого диска для Uno.

Микроконтроллер ATmega16U2

Микроконтроллер не содержит USB интерфейса, поэтому для прошивки и коммуникации с ПК на плате присутствует дополнительный микроконтроллер ATmega16U2 с прошивкой USB-UART преобразователя. При подключении к ПК Arduino Uno определяется как виртуальный COM-порт.

общается с ПК через по интерфейсу UART используя сигналы и , которые параллельно выведены на контакты и платы Uno. Во время прошивки и отладки программы, не используйте эти пины в своём проекте.

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

Имя светодиода Назначение
ON Индикатор питания платформы.
L Пользовательский светодиод на пине микроконтроллера. Используйте определение для работы со светодиодом. При задании значения высокого уровня светодиод включается, при низком – выключается.
RX и TX Мигают при прошивке и обмене данными между Uno и компьютером. А также при использовании пинов и .

Порт USB Type-B

Разъём USB Type-B предназначен для прошивки и питания платформы Arduino. Для подключения к ПК понадобится кабель USB (A — B).

Понижающий регулятор 5V

Понижающий линейный преобразователь NCP1117ST50T3G обеспечивает питание микроконтроллера и другой логики платы при подключении питания через или пин Vin. Диапазон входного напряжения от 7 до 12 вольт. Выходное напряжение 5 В с максимальным выходным током 1 А.

Понижающий регулятор 3V3

Понижающий линейный преобразователь LP2985-33DBVR обеспечивает напряжение на пине . Регулятор принимает входное напряжение от линии 5 вольт и выдаёт напряжение 3,3 В с максимальным выходным током 150 мА.

ICSP-разъём ATmega328P

ICSP-разъём выполняет две полезные функции:

  1. Используется для передачи сигнальных пинов интерфейса SPI при подключении Arduino Shield’ов или других плат расширения. Линии ICSP-разъёма также продублированы на цифровых пинах , , и .
  2. Предназначен для загрузки прошивки в микроконтроллер через внешний программатор. Одна из таких прошивок — Bootloader для Arduino Uno, который позволяет .

А подробности распиновки .

Шаг 2. Информация о проекте

Трекер использует GPS-модуль ATGM332, чтобы получить GPS-положение с большей точностью, чем услуги определения местоположения, предоставляемые Sigfox. Затем данные позиции отправляются как «строка» через сеть Sigfox и, наконец, доставляются по электронной почте.

Arduino MKR FOX 1200

Плата похожа на Arduino Zero, которая основана на SAM D21 и включает модуль ATA8520 Sigfox. Это плата с низким энергопотреблением, которая поставляется вместе с платой с бесплатной подпиской на один год в сеть Sigfox (до 140 сообщений в день), а также бесплатным доступом к службе геолокации Spot’it.

Дополнительная информация здесь.

GPS-модуль ATGM332

Этот недорогой маломощный GPS-модуль очень хорошо подходит для Arduino MKR FOX 1200, поскольку он работает только с 2,7 В (номинальный 3,3 В).

Первоначально должен был быть куплен модуль NEO6m2, который имеет режим ожидания, но пришлось использовать NEO6. Фактически это был модуль ATGM332. В результате у него не было режима ожидания, поэтому нужно было использовать транзистор для включения модуля GPS, когда это необходимо, и выключить его, чтобы сэкономить аккумулятор. Наша цель — иметь информацию о местоположении довольно редко, то есть 4 сообщения в час, поскольку Sigfox позволяет только 140 сообщений в день.

Мы используем библиотеку TinyGPS (https://github.com/mikalhart/TinyGPS) для декодирования кадров GPS.

Транзисторный переключатель

Нужно было включить и выключить GPS, когда это необходимо. Модули реле слишком громоздки и мощны, если нужно только переключить нагрузку 3 В и несколько миллиампер. Кроме того, для большинства модулей реле требуется 5 В. Таким образом, транзистор будет лучшим решением. Кроме того, MKR FOX 1200 обеспечивает только 7 мА на пине ввода/вывода.

Подойдет транзистор BC548 NPN. Когда нулевой сигнал подается на базу транзистора, он выключается, действуя как открытый выключатель, и ток коллектора не течет. При положительном сигнале, подаваемом на базу транзистора, он становится «включенным», действующим как замкнутый переключатель, и максимальный ток цепи протекает через устройство.

Электросхема

Прибор может работать только в автомобиле с инжекторным двигателем (в карбюраторных датчика скорости нет, а датчик зажигания есть далеко не во всех). Схема прибора показана на рисунке 1. На этом рисунке плата ARDUINO UNO показана схематично как «вид сверху».

Рис. 1. Принципиальная схема спидометра и тахометра на базе Arduino.

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

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

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

Электросхема проекта приведена ниже.

1. Один подключен к питанию 9 вольт

2. Второй переключатель — к LCD экрану для его включения/выключения

3. Магнитный выключателя (геркон), который замыкает цепь каждый раз, когда колесо совершает полный оборот.

LCD монитор Parallax, который используется в проекте, подключается к Arduino по трем пинам. Один идет к 5 В, один к земле, третий — к серийному выходу (TX) на плате Arduino на цифровом пине 1.

Резисторы на 10 кОм подключены к переключателям и подсветке монитора, чтобы избежать превышения допустимой силы тока между 5 В и землей (ни в коем случае не подключайте 5 В и землю напрямую к Arduino).

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

Таблица 1. Исходный код программы.

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

F= 1440000/Т

Под другой датчик нужно будет рассчитать другое число, которое делится на период, и подставить его в программу вместо «600000».

Затем, результаты выводятся в соответствующие строки ЖК-дисплея. Единицы измерения указаны как «km/h» и «оЬ/тіп» (если не нравится, можете изменить).

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

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

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

X = 3600000000 / N

Х= 3600000000 / 2500 = 1440000

Х= 3600000000 / 6000 = 600000

Загрузите приведенный код на Arduino. Проверьте работу переключателя подсветки и насколько корректно отображается скорость.

Уточните радиус вашего коле в дюймах и вставьте это значение в строку: float radius = »»’;

В этой части кода я использовал прерывания, чтобы переменная «timer» увеличивала свое значение с частотой 1 кГц.

//Спидометр для велосипеда с использованием геркона

//скорость велосипеда отображается на LCD экране

Шаг 5. Стоп-сигнал (опционально)

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

Если мы тормозим, велосипед замедляется. Это означает, что если мы рассчитываем ускорение и если оно оказывается отрицательным, можно включить стоп-сигналы. Это, однако, означает, что свет включится, даже если мы просто перестанем крутить педали.

Также мы не добавили транзистор в световую цепь, что абсолютно рекомендуется. Если кто-то сделает этот проект и правильно интегрирует эту часть, мы бы были более чем рады увидеть её и добавили бы картинки сюда. Ток мы получаем напрямую от цифрового контакта 2 Arduino Nano.

Бортовой компьютер на ардуино.

Привет всем.Решил собрать себе БК на авто.На форуме джили мк кросс http://www.geely-club.com/forum/topic/7283-samodelnyj-bortovoj-kompyuter/page-1 автор собрал БК с сайта http://code.google.com/p/opengauge/wiki/OBDuino.В общем он сделал без датчиков температуры и напряжения,но есть новая прошивка с датчиками. https://github.com/Magister54/opengauge/blob/master/obduino32K/obduino32K.pde .К каким пинам на ардуино подключить датчики? Прошивка автора без датчиков.

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

Для начала нужно раскомментировать нужные строки из 290, 291, 292.

Номера пинов укзаны в строках 470, 475.

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

Спасибо понял.А датчик напряжения какой ставить? строки 295-298.

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

Спасибо понял.А датчик напряжения какой ставить? строки 295-298.

Ну поищите же по коду » BatteryVoltageSensor» там даже «схема» есть. (строка 2310). А вобще такие вещи надо у авторов узнавать, из первоисточника так сказать. Не голый скетч тащить, а с описанием — для чего он нужен, с чем работает и т.д. А то дальше будет — этим не компилируется, в это не заливается, это не работает.

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

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

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

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

Как то так, да. Ножки кончились. Поэтому автор и сделал датчики опциональными на трёх оставшихся ногах:

A0 — сигнал с делителя напряжения для контроля батареи

А1 — буззер или первый датчик температуры

А2 — второй датчик температуры.

Или по последней схемке это 23, 24, 25.

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

А если LCD на i2c переделать, ещё 4 ноги освободится.

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

А если LCD на i2c переделать, ещё 4 ноги освободится.

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

Привет всем.Спасибо.А часы можно как то в скетч впихнуть,чтобы при подаче напряжения вначале отображалось время. Никто не поможет.У меня с программированием туго.

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

Помогите пожалуйста.При прошивке через Arduino 1.8.5 пишет

D:Новая папкаobduino32obduino32.ino:365:26: fatal error: LiquidCrystal.: No such file or directory compilation terminated.exit status 1 Ошибка компиляции для платы Arduino Nano.

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

Menu -> Sketch -> Include Library -> Manage Libraries -> LiquidCrystal

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

uino32:6 и Спасибо.Библиотеку обновил.Появились следующие ошибки.Автор прошивал Atmega-328 ардуино-0023. В этой старой версии скетч

проверяется без проблем.Но не могу прошить свою ардуино при выборе программатора пишет avrdude:usbdev_open(): did not find any

Arduino: выделяется желтым. static prog_char bignumchars2 PROGMEM =

Arduino: 1.8.5 (Windows Vista), Плата:»Arduino Nano, ATmega328P»

o bduino32:678: error: ‘prog_char’ does not name a type

obduino32:806: error: ‘prog_char’ does not name a type

Начало работы

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

Этапы

При организации системы «Умный дом» на базе Ардуино, стоит действовать по следующему алгоритму:

  • Инсталляция программного кода;
  • Конфигурация приложения под применяемое устройство;
  • Переадресация портов (для роутера);
  • Проведение тестов;
  • Внесение правок и так далее.

В Сети имеется весь необходимый софт на применяемое оборудование — его достаточно скачать с официального сайта и установить (ссылку смотрите выше).

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

Последовательность действий при подключении к компьютеру

Чтобы начать работать с Ардуино в Windows, сделайте следующие шаги:

  • Подготовьте необходимое оборудование — USB-кабель и Arduino.
  • Скачайте программу на странице arduino.cc/en/Main/Software.
  • Подсоедините плату с помощью USB-кабеля. Проследите, чтобы загорелся светодиод PWR.
  • Поставьте необходимый набор драйверов для работы с Ардуино. На этом этапе стоит запустить установку драйвера и дождаться завершения процесса. После жмите на кнопку «Пуск» и перейдите в панель управления. Там откройте вкладку «Система и безопасность» и выберите раздел «Система». После открытия окна выберите «Диспетчер устройств», жмите на название Ардуино и с помощью правой кнопки мышки задайте команду обновления драйвера. Найдите строчку «Browse my computer for Driver software!», кликните по ней и выберите соответствующий драйвер для вашего типа платы — ArduinoUNO.inf (находится в папке с драйверами). Это может быть UNO, Mega 2560 или другая.
  • Запустите среду разработки Ардуино, для чего дважды кликните на значок с приложением.
  • Откройте готовый пример (File — Examples — 1.Basics — Blink).
  • Выберите плату. Для этого перейдите в секцию Tools, а дальше в Board Menu.
  • Установите последовательный порт (его можно найти путем отключения и подключения кабеля).
  • Скачайте скетч в Ардуино. Кликните на «Upload» и дождитесь мигания светодиодов TX и RX на плате. В завершение система показывает, что загрузка прошла успешно. Через несколько секунд после завершения работы должен загореться светодиод 13 L (он будет мигать оранжевым). Если это так, система готова к выполнению задач.

Работа с роутером

Для полноценной работы «Умного дома» важно правильно обращаться с роутером. Здесь требуется выполнить следующие действия — открыть конфигурацию, указать адрес Arduino IP, к примеру, 192.168.10.101 и открыть 80-й порт

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

Умный дом на базе Raspberry Pi 3 своими руками, пошаговая инструкция

Разработка проекта

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

Какие проекты можно создавать на Arduino?

Ардуино позволяет создавать множество уникальных проектов. Вот лишь некоторые из них:

  • Сборка кубика Рубика (система справляется за 0,887 с);
  • Контроль влажности в подвальном помещении;
  • Создание уникальных картин;
  • Отправка сообщений;
  • Балансирующий робот на двух колесах;
  • Анализатор спектра звука;
  • Лампа оригами с емкостным сенсором;
  • Рука-робот, управляемая с помощью Ардуино;
  • Написание букв в воздухе;
  • Управление фотовспышкой и многое другое.

Как подключить проходной выключатель: одноклавишный, двухклавишный, как обычный, схемы, критерии выбора

Составление проекта для умного дома

Рассмотрим ситуацию, когда необходимо сделать автоматику для дома с одной комнатой.

Такое здание состоит из пяти основных зон — прихожей, крыльца, кухни, санузла, а также комнаты для проживания.

При составлении проекта стоит учесть следующее:

  • КРЫЛЬЦО. Включение света производится в двух случая — приближение хозяина к дому в темное время суток и открытие дверей (когда человек выходит из здания).
  • САНУЗЕЛ. В бойлере предусмотрен выключатель питания, который при достижении определенной температуры выключается. Управление бойлером производится в зависимости от наличия соответствующей автоматики. При входе в помещение должна срабатывать вытяжка, и загорается свет.
  • ПРИХОЖАЯ. Здесь требуется включение света при наступлении темноты (автоматическое), а также система обнаружения движения. Ночью включается лампочка небольшой мощности, что исключает дискомфорт для других жильцов дома.
  • КОМНАТА. Включение света производится вручную, но при необходимости и наличии датчика движения эта манипуляция может происходить автоматически.
  • КУХНЯ. Включение и отключение света на кухне осуществляется в ручном режиме. Допускается автоматическое отключение в случае продолжительного отсутствия перемещений по комнате. Если человек начинает готовить пищу, активируется вытяжка.

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

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

Стоит обратить внимание, что если в доме планируется установка умных розеток, то для управления ими лучше использовать приложения на мобильных устройствах, WIFI или через SMS сообщения. Визуальное программирование для Arduino можно осуществлять с помощью специального приложения FLProg, которое можно скачать с официального сайта https://flprog.ru/

Визуальное программирование для Arduino можно осуществлять с помощью специального приложения FLProg, которое можно скачать с официального сайта https://flprog.ru/.

Шаг 4. Источник питания

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

Но вы должны тщательно выбрать powerbank

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

Дело в том, что для экономии энергии powerbank предназначен для отключения выхода, если потребление тока не превышает определенного порогового значения.

Скорее всего это пороговое значение составляет не менее 200-300 мА. Наша схема будет иметь максимальное потребление тока не более 20 мА. Таким образом, обычный банк питания отключит выход. Это может привести вас к мысли, что в вашей цепи есть какая-то неисправность. Этот конкретный банк питания на фото выше работает с таким небольшим током.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мастер Юрий Меркулов
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: