SaintYGL

Лампа с беспроводным управлением на Arduino

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

SaintYGL    0

Здравствуйте!

Данная тема посвящена разработке устройства, имеющего название "Лампа с беспроводным управлением на 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

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


Ссылка на сообщение
Поделиться на других сайтах
BARS_    893
18 минут назад, SaintYGL сказал:

Лампа с беспроводным управлением на Arduino

18 минут назад, SaintYGL сказал:

устройство имеет Bluetooth-модул

Ардуйня там даром не нужна. Берем ESP8266, получаем Wi-Fi соединение. При желании подключаем к нему Bluetooth модуль, получаем Wi-Fi+Bluetooth (хотя синезубое управление нафиг никому не нужно). В итоге имеем гораздо более гибкую платформу по меньшей цене плюс на порядок меньшие габариты. А с ардуйней в качестве управления проект изначально мертворожденный.

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


Ссылка на сообщение
Поделиться на других сайтах
TranceSmile    5
#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.println(incomingInt) ; 
	} 
} 

найдите пару отличий.

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


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

Впервые на русском языке! Работаем с микроконтроллерами STM32F7(на основе STM32F7 Online Training)

Цикл материалов на основе STM32F7 Online Training от компании STMicroelectronics. Описаны функциональные блоки и инструменты разработки для семейства микроконтроллеров STM32F7, охватывающие тематику системной периферии, памяти, безопасности, аналоговой периферии, цифровой периферии, таймеров, экосистемы.

Подробнее>>

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

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

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

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

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

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

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

Загрузка...

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

    • Гость Василий
      Автор: Гость Василий
      Здравствуйте.
      Ребята, вопрос собсно в чем.
      Как заменить контроллер на уно. Вернее не заменить, а прошить в другой бутлоадер.
      Родной стоит атмега328 имею только атмега8.
      Возможна ли замена?
      Вопрос встал ибо неполучается прошить отдельно мегу8 для простого устройства. С ардуино работает. Вот я и решил заморочиться с подменой.
      Т.е. загрузить бутлоадер при помощи ардуино в мегу8, заменить в уно контроллеры, загрузить нужный мне скетч в мегу8 и впаять в плату.
      Вопрос конечно дурацкий, но все же...
      Спасибо! 
    • Автор: St.Arya
      Миникомпьютеры BeagleBone Black Rev C приобретались по спецзаказу в комплекте с электронным оборудованием, после сборки оборудования осталось несколько (сотен) новых миникомпьютеров в заводской упаковке.
      Технические характеристики:
      - Процессор AM3358, ARM Cortex-A8, 1 ГГц;
      - Графический акселератор: Power SGX530;
      - 512 МБ DDR3L памяти;
      - 4 ГБ eMMC памяти;
      - Слот для карт MicroSD;
      - Разъем microHDMI с поддержкой аудио-выхода;
      - Интерфейс Ethernet 10/100 (разъем RJ-45);
      - USB Host;
      - USB Client для питания и отладки;
      - Стабилизатор питания TPS65217C;
      - Напряжение питания 5 В.
      Комплектация:
      - отладочная плата BeagleBone Black;
      - кабель USB.
      Цена: 3500 рублей
      Отправка транспортными компаниями за счет покупателя. Если возьмете от 10 штук - отправка за наш счет.

       


    • Автор: QuestionAnswer
      Необходимо сделать на Arduino регулятор оборотов моторчика жёсткого диска. Чтобы мог вращаться как в одну, так и в обратную сторону. По видеоролику на youtube, узнал что для регулирования оборотов нужно использовать ESC (модельный регулятор оборотов). Как вращаться и регулировать обороты в одну сторону показали, но каким образом можно сделать программное переключение направления вращения?

      И ещё небольшой вопрос: Может ли ESC регулятор резко сбрасывать обороты на более низкие? Если нет, то какой двигатель/регулятор способен резко сбрасывать обороты, к примеру, в 10 раз?
    • Автор: pingyini
      Всем доброго времени суток. Решил я сделать "умную" электронную сигарету на arduino. Концепция заключается в кнопочном управлении мощностью посредством ШИМ, наличии экрана, и некоторыми защитами в виде ограничения максимального времени нажатия и уход камня в сон (режим пониженного энергопотребления) после N секунд простоя.
      Вводные: по нажатию кнопки запускается ШИМ и управляет полевиком, но в целях защиты я хочу ограничить время выполнения кода до 7 секунд(что бы при случайном зажатии кнопки в кармане не получить травматическую ампутацию конечностей)

      Проблема пришла откуда не ждали - обработка нажатой основной кнопки срабатывает как попало. Нажимая кнопку обработчик может сработать сразу и отработает как по маслу, а может и через 5 нажатий не сработать вовсе.  Проверял в живую на Arduino UNO, Pro Mini (328е Меги) и в Proteus'е. Симптомы одни и те же.  Проблема очевидно в коде но я в упор не вижу в чем может быть загвоздка. Уровень у меня "штота умею" поэтому не судите строго. 
       
      #define pwmPin 5 #define buttonStart 3 #define maxOnTime 7000 //максимальное время выполнения условия нажатой кнопки #define RED_LED 7 #define GREEN_LED 8 int power = 150; //boolean StartState; boolean StartStateFlag; //Флаг кнопки Старт unsigned long pressTime; void setup() { pinMode(pwmPin, OUTPUT); pinMode(buttonStart, INPUT); pinMode(RED_LED, OUTPUT); pinMode(GREEN_LED, OUTPUT); Serial.begin(9600); //чисто для отладки } void loop() { if (digitalRead(buttonStart) && StartStateFlag && ((millis() - pressTime) <= maxOnTime)) { // (1) если кнопка старт нажата И была отпущена И нажата менее 7 секунд выполняем: analogWrite(pwmPin, power); //запуск ШИМ Serial.println("PWM_ON"); digitalWrite(GREEN_LED, HIGH); digitalWrite(RED_LED, LOW); } else { // (2) иначе StartStateFlag = false; // кнопка небыла отпущена analogWrite(pwmPin, 0); digitalWrite(GREEN_LED, LOW); Serial.println("PWM_OFF"); pressTime = millis(); } if (!digitalRead(buttonStart)) { //(3) если кнопка не нажата analogWrite(pwmPin, 0); //остановка ШИМ Serial.println("PWM_OFF"); digitalWrite(RED_LED, HIGH); StartStateFlag = true; //была отпущена и можно входить в условие с нажатой кнопкой (1) } } И файлы: сам скетч, .elf и .hex для шПротеуса и проект Протеус.
      P. S. ШИМ в Протеусе не работает в принципе, в железе все ОК 
      BUTTON_TEST.ino
      BUTTON_TEST.ino.eightanaloginputs.hex
      BUTTON_TEST.ino.elf
      BUTTON_TEST.ino.with_bootloader.eightanaloginputs.hex
      ButtonTest.pdsprj
    • Автор: Ilgam Talipov
      Задача: Написать скетч управления 9 светодиодами аналог WS2812 (из библиотек FastLed и NeoPixel рулятся ). Режим работы - стробы, длительность вспышки 0.1 - 0,2 сек, после того как каждый светодиод моргнул 1 раз, цикл повторяется, длительность цикла 4,5 сек (время примерное, точность не важна). Помочь настроить Arduino IDE для прошивки тинек. Если у вас железа нет, не проблема - мы можем тестить ваш код на нашем железе.
      Стоимость 5 000 руб
      мой скайп ilgamt
      почта talipov@me.com
      Спасибо