admin

Управляем Нагрузками Через Android-Смартфон При Помощи Arduino

12 сообщений в этой теме

admin    2 312



Простой проект для повторения: управление любыми нагрузками с Android-смартфона при помощи Arduino (или любым МК) через Bluetooth.

Приложение Led Switcher в Google Play

Что понадобится приобрести:
Arduino Nano (2$)
Bluetooth Serial модуль (3$)
Опционально Шилд реле (2$)

Подключение разных типов нагрузок к Arduino: arduinoBasicConnections.pdf

Led Switcher.apk

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
admin    2 312

Исходный код первого примера:

char incomingByte;	 // переменная для хранения входящих данных
int LED = 13;		 // LED подключен к 13 выводу (используем встроенный светодиод)
void setup() {
Serial.begin(9600); // инициализация порта на скорость 9600 бод для связи с Bluetooth-модулем
pinMode(LED, OUTPUT); // вывод LED настраиваем как выход
}
void loop() {
if (Serial.available() > 0) {	 // если пришли данные
incomingByte = Serial.read(); // считываем байт
if(incomingByte == '0')		 // если пришел символ "0",
 digitalWrite(LED, LOW);	 // то выключаем вывод "LED"
if(incomingByte == '1')		 // если пришел символ "1",
 digitalWrite(LED, HIGH);	 // то включаем вывод "LED"
}
}

LED_Switcher1.ino

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
admin    2 312

Скетч второго примера:

char incomingByte;		 // переменная для хранения входящих данных
int  load1 = 5;		    // нагрузка 1 подключена к 5 выводу
int  load2 = 6;		    // нагрузка 2 подключена к 6 выводу
void setup() {
 Serial.begin(9600);	  // инициализация порта на скорость 9600 бод для связи с Bluetooth-модулем
 pinMode(load1, OUTPUT);  // вывод load1 настраиваем как выход
 pinMode(load2, OUTPUT);  // вывод load2 настраиваем как выход
}
void loop() {
 if (Serial.available() > 0) {	  // если пришли данные
   incomingByte = Serial.read();    // считываем байт
   switch (incomingByte) {		  // перебираем входящие данные
   case '0':					    // если пришел "0" (задается в настройках Android-приложения)
  digitalWrite(load1, LOW);	  // то выключаем вывод "load1"
  break;
   case '1':					    // если пришел "1"
  digitalWrite(load1, HIGH);	 // то включаем вывод "load1"
  break;	 
   case 'B':					    // если пришел "B"
  digitalWrite(load2, LOW);	  // то выключаем вывод "load2"
  break;	 
   case 'A':					    // если пришел "A"
  digitalWrite(load2, HIGH);	 // то включаем вывод "load2"
  break;
   }
 }
}

LED_Switcher2.ino

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
MaxTms1    0

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

P.s Хотелось бы управлять одной нагрузкой с помощью ШИМ, то есть изменять яркость лампы на 12в, а вторую нагрузку просто включать(желательно в режиме кнопки).

Заранее большое спасибо!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Evgenii85    0

Здравствуйте.Не могу скинуть программу в мозг контроллера.

Пишет: Проблема загрузки в плату. Помощь по загрузке: http://www.arduino.cc/en/Guide/Troubleshooting#upload.

Совет по COM1 не доступен

Что делать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
DoctorRock    0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
admin    2 312

Здравствуйте.Не могу скинуть программу в мозг контроллера.

Пишет: Проблема загрузки в плату. Помощь по загрузке: http://www.arduino.c...hooting#upload.

Совет по COM1 не доступен

Что делать?

Отключить модуль Bluetooth (можно просто питание модуля), загрузить скетч, затем подключить питание модуля обратно

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lachin Gu    0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Mixus    0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
char incomingByte;     // переменная для хранения входящих данных
int  load1 = 5;       // нагрузка 1 подключена к 5 выводу
int  load2 = 6;       // нагрузка 2 подключена к 6 выводу
void setup() {
 Serial.begin(9600);    // инициализация порта на скорость 9600 бод для связи с Bluetooth-модулем
 pinMode(5, OUTPUT);  // вывод load1 настраиваем как выход
 digitalWrite(5, HIGH); // сначала реле выключено
 pinMode(6, OUTPUT);  // вывод load2 настраиваем как выход
 digitalWrite(6, HIGH); // сначала реле выключено
}
void loop() {
 if (Serial.available() > 0) {    // если пришли данные
   incomingByte = Serial.read();    // считываем байт
   switch (incomingByte) {      // перебираем входящие данные
   case '0':              // если пришел "0" (задается в настройках Android-приложения)
  digitalWrite(5, LOW);   // то выключаем вывод "load1"
  break;
   case '1':              // если пришел "1"
  digitalWrite(5, HIGH);   // то включаем вывод "load1"
  break;   
   case 'B':              // если пришел "B"
  digitalWrite(6, LOW);   // то выключаем вывод "load2"
  break;   
   case 'A':              // если пришел "A"
  digitalWrite(6, HIGH);   // то включаем вывод "load2"
  break;
   }
 }
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Автор: Lost13
      помогите с простиньким скетчом для ардуино уно
      задача :
      на вход (А0) подается логический сигнал короткими импульсами, и если  промежуток между сигналами меньше 2-х секунд , то на выходе (d2) загорается светодиод на 3 секунды, если промежуток между сигналами больше 2-х секунд то он игнорируется 
    • Автор: SaintYGL
      Здравствуйте!
      Данная тема посвящена разработке устройства, имеющего название "Лампа с беспроводным управлением на Arduino".
      Краткая предыстория: я - студент последнего курса техникума, а данная тема - мой дипломный проект. Выбран был в спешке, далеко не самое дальновидное решение, как показала практика, особенно с учётом того, что тема была взята здесь же, на сайте паяльник, в этой статье, и имела незаконченное состояние, из-за чего сейчас и возникают большие неприятности. 
      Концепция: устройство имеет Bluetooth-модуль, по которому соединяется с телефоном, посредством чего и осуществляется беспроводное управление. Также к Arduino подключено двухканальное реле, которое переключает ток, идущий к патронам, в которые вкручены лампы. По команде, переданной по bluetooth, реле переключается в одно из положений (обе выкл.  / 1 вкл, 2 выкл. / 1 выкл, 2 вкл. / обе вкл.)
      Загвоздки: 1) В статье всё осуществляется с помощью отдельного микроконтроллера ATMega 328p, расположенного на макетной плате, в то время как Arduino используется лишь как программатор. Мне же необходимо, чтобы данное устройство работало не с отдельным микроконтроллером, а с самой Arduino. Кварцевый резонатор в ней есть, кнопка есть, диоды есть, bluetooth-модуль и реле докуплены.
      2) Если копировать код из статьи (а точнее перепечатать его со скриншота) и вставить в Arduino IDE, то появятся следующие ошибки: 
      Lamp: 5: error: a function-definition is not allowed here before '{' token
      D: \ Saint \ \ \ \ \ \ \ "\ \ \ \ \ \ \ \ \ Lamp \ Lamp.ino: In function 'void loop ()':
      Lamp: 16: error: 'incomingInt' was not declared in this scope
      Lamp: 27: error: 'class HardwareSerial' has no member named 'printIn'
      Lamp: 30: error: expected '}' at end of input
       
      Сам код, чтобы его не нужно было также перепечатывать со скриншота:
      #include <Wire.h>  int incomingInt = 0  void setup ( )  {  Serial.begin (9600) ;  Serial.setTimeout (1000) ;  pinMode (7, OUTPUT) ;  pinMode (5, OUTPUT) ;  }  void loop ( )  {  if (Serial.available ( ) > 0)  {  incomingInt = Serial.parseInt ();  if (incomingInt = 500)  {  digitalWrite (5, HIGH) ;  }  else digitalWrite (5, LOW) ;  if (incomingInt == 422)  {  digitalWrite (7, HIGH) ;  }  else digitalWrite (7, LOW) ;  Serial.printIn(incomingInt) ;  }  }   
      На данный момент это всё, по мере развития проекта тема будет мной дополняться. Также я буду рад любому совету, который поможет разобраться с этим устройством. Связаться со мной можно через ВКонтакте: vk.com/sainty_gl
    • Автор: mefi73
      Кроме классических Arduino с микроконтроллерами Atmel существуют так же платы, в основе которых лежат другие микроконтроллеры. Одной из таких ардуин является модель 101, в основе которой находится Intel Curie. Выглядит она так:

      Поскольку ардуино это проект открытый, то изготавливать совместимые платы может кто угодно, иногда изменяя схему.
      Так вот, у компании DFrobot свой взгляд на arduino 101. Представляю вашему вниманию DFRobot Curie Nano.


      Для сравнения приведу фото этой платы с некоторыми другими (леонардо, esp32, NodeMCU). Плата довольно компактна.

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

      расположение и назначение выводов DFRobot Curie Nano представлено на следующем изображении.

      Итак, на борту 32-битный микроконтроллер, работающий на частоте 32 мегагерца. Есть встроенный 6-осевой акселерометр, Bluetooth, часы реального времени. То есть микроконтроллер изначально задуман для создания носимых умных устройств. К тому же DFRobot Curie Nano меньше по размеру, чем arduino 101.
      Для программирования DFRobot Curie Nano можно использовать фирменную IDE от Intel (но я её не прбовал), либо ArduinoIDE. На ArduinoIDE я и остановлюсь.
      Что бы ArduinoIDE могла работать с Curie, необходимо добавить поддержку этого микроконтроллера в «менеджере плат».

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

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

      Вот и вся установка.
      Стоит отметить, что работа с ардуино 101 (и соответственно с DFRobot Curie Nano) ничем не отличается от других плат ардуино, построенных на микроконтроллерах AVR. Дело в том, что с "ядром" Intel Curie Boards устанавливаются библиотеки, которые заменяют встроенные в ArduinoIDE библиотеки (Wire, SPI, EEPROM, servo и так далее). Кроме того, в комплект пакета поддержки входят библиотеки, специально предгазначенные для микроконтроллера Intel Curie - CurieBLE для работы с bluetooth, CurieI2S, CurieIMU для работы со встроенным датчиком положения, power для спящего режима, CurieTime для работы со встроенным RTC, CurieTimerOne в пояснениях не нуждается.
      Для прошивки микроконтроллера отведено 155682 байт, это больше чем у большинства микроконтроллеров AVR, используемых в платах ардуино. Но, одна и та же программа может занимать разный объем в микроконтроллерах разной архитектуры.  Я решил сравнить объем программ, компмллируемых для Intel Curie и ATmega 328p (arduino nano). Итак...

      С ATmega328p всё закономерно, больше объем скетча - больше памяти занимает скомпилированный код. А вот с Intel Curie не все так просто. Даже пустой скетч занимает 31% памяти. Но далее с ростом скетча рост скомпилированной программы значительно меньше, чем у ATmega328p.
      На данном примере я покажу совместную работу встроенной в ядро Intel Curie библиотеки и библиотеки U8g2. Это скетч простых часов, которые выводят данные на дисплей.
      #include <CurieTime.h> #include <U8g2lib.h> U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0,U8X8_PIN_NONE); char c_time[10]; void setup() {   u8g2.begin(); } void loop() { int i_hour=hour(); //получаем время: час, int i_minute=minute(); //минуты, int i_second=second(); //секунды и помещаем их в соответствующие переменные String s_time = String(i_hour) + ":" + String(i_minute) + ":" + String(i_second); //конактенация и одновременный пере s_time.toCharArray(c_time, 10); //преобразование переменной типа string в тип char   u8g2.firstPage(); //вывод данных на дисплей   do {   u8g2.setFont(u8g2_font_ncenB14_tr); //выбор шрифта   u8g2.drawStr(30, 36, c_time); //эта функция может вывести только значение переменной типа char   }     while ( u8g2.nextPage() ); }
      Создатели arduino 101 хорошо поработали над совместимостью исходного кода, предназначенного для микроконтроллеров AVR, с микроконтроллером Intel Curie. То есть,  большинство сторонних библиотек, написанных для arduino, совместимы так же и с DFRobot Curie Nano.
      Подробно рассматривать библиотеки, поставляемые с ядром Intel Curie, я не буду. Так как примеров, поставляемых с ядром, достаточно для понимания их работы. Отдельного внимания заслуживает библиотека CurieBLE и собственно работа с BLE, но это тема отдельной статьи.
      Кроме того, на базе Curie Nano можно построить нейронную сеть при помощи Curie's neuron SDK, вот только библиотека платная и стоит 19$.
      P.S. DFRobot Curie Nano мне очень понравилась. Уже есть огромный план по использованию этой платы по назначению, то есть для создания носимого устройства с применением возможностей микроконтроллера Intel Curie (часы с навигацией и расчетом астрономических событий для туристов и фотографов)
      Отдельная благодарность магазину dfrobot.com за предоставленную на обзор DFRobot Curie Nano.
       
    • Автор: MolodoyElectrik
      Всем привет.
      Пишу скетч для ардуины, нужно чтоб 1 светодиод мигал постоянно, и 4 светодиода включались и выключались поочередно. Все должно происходить в одно время разумеется и Delay здесь не катит. Вот пример как должно быть только с delay:
       
      Сделал такой скетч:
      Тот который 1 светодиод мигает все хорошо, а вот с 4, которые должны подряд включаться какая то лажа) Где напортачил?
      Предыдущую тему не в том разделе создал, удалите пожалуйста. 
    • Гость izakom
      Автор: Гость izakom
      Добрый день,
      Никак не могу, подключить АЦП к микроконтроллеру. Будет здраво, если кто-нибудь сможет подсказать где моя ошибка или хотя бы где ее искать.
      Я подключаю ADS1240 к arduino UNO. Описание АЦП слишком тяжелое, поэтому прикрепляю ссылку
      http://www.ti.com/lit/ds/sbas173f/sbas173f.pdf
      Также во вложении прикрепил 2 схемы подключения, которые побывал.
      Контроллер общается с АЦП по SPI, где D10 -SS, D11 - MOSI, D12 - MISO, D13 - SCLK.

      Сейчас моя задача, измерять напряжение на потенциометре с достаточной точностью. 
      К сожалению внутренний АЦП arduino 10 разрядный, поэтому пытаюсь подключить внешний.

      Также прикрепляю программу, при помощи которой пытаюсь снимать показания. Но к сожалению на контроллер приходит только "0".
      Схема_2.pdf
      Схема_1.pdf
      Тестова программа.txt
      Схема_2.pdf
      Схема_1.pdf
      Тестова программа.txt