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

SaintYGL
Offline
Зарегистрирован: 30.05.2018

(Заранее прошу прощения, если данная тема размещена не в том разделе форума, я тут новичок, извините пожалуйста)

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

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

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

Что касается ошибок - как минимум 2 из 3х - банальные опечатки, которые вы бы легко нашли, если б что-нибудь понимали. "Сложность" переноса проекта с МК атмега328 на ардуино тоже не стоит и выеденного яйца - конечно же, для того кто хоть чуть в теме.

В итоге - вместо студента-дипломника видим тупого и наглого халявщика, помогать которому - себя не уважать.

SaintYGL
Offline
Зарегистрирован: 30.05.2018

Понял, прошу прощения за столь неуважительную просьбу.

В своё оправдание могу лишь заявить, что в силу того, что мой факультет называется "Компьютерные системы и комплексы", я вложил все усилия в познание устройства компьютера (ПК, если на то пошло). К примеру, мой курсовый проект был по теме "Техническое обслуживание и ремонт видеокарты GTX 1070", и уж эту тему я знаю в достаточной степени. Именно поэтому я до сих пор не понимаю, почему на диплом нам нужно брать собственноручно собранные устройства, поголовно на базе Arduino UNO, описывать их производство, как будто это мы их делаем, при том, что название факультета несколько не вписывается в данную концепцию. 

Не то чтобы я хотел сказать, что ваши аргументы беспочвенны, всё так, просто я ошибся в своём суждении, что знание устройства компьютера и его периферии важнее, нежели микроконтроллеры. Можно даже сказать, что каюсь. Тем более, после того, как при мне одногруппник одну такую Arduino UNO спалил, что её даже донором сделать не получится, я как-то побаивась работать с данной платформой, не смотря на то, что этим ныне занимаются даже в средней школе.

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

+100500

чо ж ты в техникуме делал всю учёбу-то?

SaintYGL
Offline
Зарегистрирован: 30.05.2018

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

b707
Онлайн
Зарегистрирован: 26.05.2017

SaintYG. простите, а в чем вообще заключается ваша специальность - если с железом вы работать не умеете (уно спалил :) и в программировании не в зуб ногой?

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

Кому вообще нужны такие компьютерщики? Бумагу в принтер в офисе заправлять и секретарши умеют.

b707
Онлайн
Зарегистрирован: 26.05.2017

SaintYGL пишет:

ремонт и починку компьютерных комплектующих

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

SaintYGL
Offline
Зарегистрирован: 30.05.2018

Вынужден процитировать сам себя:  "при мне одногруппник одну такую Arduino UNO спалил". Сам я был только свидетелем, ибо в то время, как у нескольких человек курсовой на Arduino был собран в готовом виде ( 3 курс), у меня он был исключительно теоретический - игра "крестики-нолики", взятый из головы преподавателя, без всяких статей на паяльнике и тд. Вот код, так, на всякий случай: 


 #include <OneWire.h>
#include <UTFT.h>
OneWire
oneWire(A0);
#include <Back.h>
#include <X-O.h>
Image* back;
(Image* player)[1];
(Image* player)[2];
int grid[3][3], currplayer;
void StartSettings()
input = game->GetInput();
graphics = game-> GetGraphics();
SDL_WM_SetCaption("Tic-Tac-Toe",0);
void LoadingImage()
back = graphics->NewImage("Back.h ");
player[1] = graphics->NewImage ("(Image* player)[1]");
player[2] = graphics->NewImage ("(Image* player)[2]");
void Reset()
currplayer = 1;
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
grid[i][j] = 0;
graphics->DrawImage(back,0,0);
graphics->Flip();
int GameOver()
for(int i = 1; i < 3; i++)
if (grid[0][0] == i && grid[1][0] == i && grid[2][0] == i) ||
(grid[0][1] == i && grid[1][1] == i && grid[2][1] == i) ||
(grid[0][2] == i && grid[1][2] == i && grid[2][2] == i) ||
(grid[0][0] == i && grid[0][1] == i && grid[0][2] == i) ||
(grid[1][0] == i && grid[1][1] == i && grid[1][2] == i) ||
(grid[2][0] == i && grid[2][1] == i && grid[2][2] == i) ||
(grid[0][0] == i && grid[1][1] == i && grid[2][2] == i) ||
(grid[2][0] == i && grid[1][1] == i && grid[0][2] == i) )
return i;
int count = 0;
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
if(grid[i][j] != 0)
count++;
if(count == 9)
return 0;
return -1;
char* message;
switch(over)
case 0:
message = "Ничья! Желаете сыграть еще раз?";
break;
case 1:
message = "Крестики победили! Желаете сыграть еще раз?";
break;
case 2:
message = "Нолики победили! Желаете сыграть еще раз?";
break;

default:
return;
if(MessageBox(0,message,"Игра окончена",MB_YESNO) == IDYES)
Reset();
else
game->Exit();

С его оформлением я справился, зато потом, на 4ом курсе, я благополучно запустил данную тему, засев за всякими видеокартами, материнками, процессорами и прочими компьютерными комплектующими

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

b707 пишет:
даже не знает синтаксиса языка Си

Да, хрен с ним с синтаксисом - даже не может аккуратно перепечатать текст со скриншота! Более того, пусть перепечатано с ошибками, но когда компилятор заругался - аккуратно сверить тексты - на это тоже ума не хватает! Например, в первой строке кода в скриншоте есть точка с запятой, а приведённом коде нет, на что компилятор и ругается.

ТС, теперь к Вам:

SaintYGL пишет:

я - студент последнего курса техникума ... мой факультет называется "Компьютерные системы и комплексы"

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

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

И Вы пришли сюда в надежде, что взрослые люди, помогут оболтусу с нулевыми знаниями получить диплом и стать, хоть на бумаге,  но "прости Господи, Специалистом"? Боюсь, Вы ошиблись - ищите другой форум.

SaintYGL
Offline
Зарегистрирован: 30.05.2018

Вынужден не согласиться, ибо пока жив майнинг и видеокарты стоят 10-60К рублей, их ремонт более чем выгоден. Чего стоит канал Terabit Lab, на котором вечно что-то чинят, оживляют и тд. 

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

b707
Онлайн
Зарегистрирован: 26.05.2017

SaintYGL пишет:

Вот код, так, на всякий случай: 


 #include <OneWire.h>
#include <UTFT.h>
OneWire
oneWire(A0);
#include <Back.h>
#include <X-O.h>
Image* back;
(Image* player)[1];
(Image* player)[2];
int grid[3][3], currplayer;
void StartSettings()
input = game->GetInput();
graphics = game-> GetGraphics();
SDL_WM_SetCaption("Tic-Tac-Toe",0);
void LoadingImage()
back = graphics->NewImage("Back.h ");
player[1] = graphics->NewImage ("(Image* player)[1]");
player[2] = graphics->NewImage ("(Image* player)[2]");
void Reset()
currplayer = 1;
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
grid[i][j] = 0;
graphics->DrawImage(back,0,0);
graphics->Flip();
int GameOver()
for(int i = 1; i < 3; i++)
if (grid[0][0] == i && grid[1][0] == i && grid[2][0] == i) ||
(grid[0][1] == i && grid[1][1] == i && grid[2][1] == i) ||
(grid[0][2] == i && grid[1][2] == i && grid[2][2] == i) ||
(grid[0][0] == i && grid[0][1] == i && grid[0][2] == i) ||
(grid[1][0] == i && grid[1][1] == i && grid[1][2] == i) ||
(grid[2][0] == i && grid[2][1] == i && grid[2][2] == i) ||
(grid[0][0] == i && grid[1][1] == i && grid[2][2] == i) ||
(grid[2][0] == i && grid[1][1] == i && grid[0][2] == i) )
return i;
int count = 0;
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
if(grid[i][j] != 0)
count++;
if(count == 9)
return 0;
return -1;
char* message;
switch(over)
case 0:
message = "Ничья! Желаете сыграть еще раз?";
break;
case 1:
message = "Крестики победили! Желаете сыграть еще раз?";
break;
case 2:
message = "Нолики победили! Желаете сыграть еще раз?";
break;

default:
return;
if(MessageBox(0,message,"Игра окончена",MB_YESNO) == IDYES)
Reset();
else
game->Exit();

С его оформлением я справился

это просто праздник какой-то...

Вы этот код компилировать пробовали???? - попробуйте, удивитесь.

Справился он...

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

b707 пишет:

SaintYGL пишет:

С его оформлением я справился

Справился он...

Так он же с оформлением справился. Вставил текст кода в курсовик, напечатал на принтере и сдал. Всё оформлено - "с оформлением" справился. 

b707
Онлайн
Зарегистрирован: 26.05.2017

SaintYGL пишет:

Вынужден не согласиться, ибо пока жив майнинг и видеокарты стоят 10-60К рублей, их ремонт более чем выгоден.

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

Могу сказать. что сотовые телефоны по 10-15 тыс я уже ремнтировать перестал - в ящике валяется штук пять "полутрупов". Быстрее и зачастую дешевле купить новый.

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

SaintYGL пишет:

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

теперь изучай устройство и периферию атамата Калашникова.  Как раз по мозгам. 

Хотя, нет, периферия - не вся. 

SaintYGL
Offline
Зарегистрирован: 30.05.2018

Если брать напрямую из моего курсового, то пересадка чипа с новыми BGA-шарами стоит порядка 14к рублей при стоимости видеокарты в... 36к рублей конкретно сейчас (по Москве), 46к рублей на момент написания диплома и 27к рублей в марте 17го года, когда я её покупал. Как по мне - вполне оправдано заелатить 14к, чтоб не покупать новую за 46, если это, коречно, пересадка нового чипа, а не обыкновенный реболлинг старого

b707
Онлайн
Зарегистрирован: 26.05.2017

SaintYGL пишет:
Если брать напрямую из моего курсового, то пересадка чипа с новыми BGA-шарами стоит порядка 14к рублей  (

это цена чипа, работы по перекатке или и того и другого вместе? Если за 14к можно поменять чип "под ключ", то что в видюхе стоит оставшиеся 20-30 тыс? память?

SaintYGL
Offline
Зарегистрирован: 30.05.2018

Да вы, сударь, остряк, как я погляжу. Устройство автомата Калашникова я и так знаю, вот только суть в том, что в армию, где данные познания и обретаются, мне путь закрыт, постановлением врачебной комиссии военкомата, а по сему прошу опустить остроты, я уже не мираз и не два признал, что разгильдяй.
По неизвестной мне причине никто не берёт во внимание, что для дипломной работы одного лишь кода "как-то маловато будет". А ведь помимо него ещё и вся конструкторская документация: тех. задание, анализ ТЗ, перечень элементов, элементная база, расчёт коэффициента технологичности устройства, расчёт надёжности, маршрутные карты изготовления самой Ардуино и устройства в целом, расчёт экономической части (производство, со всеми отчислениями в пенсионные фонды и амортизацией предприятия), блок-схема работы устройства, описание ремонта устройства и замены его составных компонентов в силу модульности конструкции и это я небось ещё что-то забыл

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Давай, расскажи нам про устройство дипломной работы в техникуме. 

b707
Онлайн
Зарегистрирован: 26.05.2017

у вас там кода-то полтора десятка строк. Напрягитесь и напишите сами, чего клянчить.

В конце концов - неужели мозгов не хвататет просто нагуглить готовое? без необходимости переписывать код с экрана? :)))

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Тебе просто мяхка пытаюца сказать, что это не тот форум, где тебе будут помогать.  

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

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

А ваще, ТС, судя по понтам - крутой спец. Читаю и вспоминаю детский стишок "С дуба падают листья ясеня, ..."

SaintYGL
Offline
Зарегистрирован: 30.05.2018

Всё вместе.
Заказать с Китая живой (но это не точно, что он живой, могут и обмануть) чип стоит тысяч 8. Мёртвые карты скупаются под донорство обычно тысяч за 10 в среднем, соответвенно с живым GPU стоит подороже, допустим тысяч 15, из которых чип, часть живых чипов видеопамяти (GDDR5), может быть несколько дросселей, конденсаторов, стабилизаторов напряжения и чип BIOS (да, у видеокарты тоже есть биос, свой). Итого раз на раз то и выходит, что себестоимость снятого с мёртвой платы чипа составляет около 8-10к рублей. Шары стоят рублей 400 за банку (свинцовые), на чипы разных моделей требуется разное количество шаров, но если брать конкретно GP104, то баночки хватит раз на двадцать, с учётом возможной необходимости перепайки чипов памяти. Всё это на паяльную станцию, итого за работу в среднем тысячи 4, может 5, смотря насколько удачно удалось найти донора

b707
Онлайн
Зарегистрирован: 26.05.2017

ЕвгенийП пишет:

А ваще, ТС, судя по понтам - крутой спец. Читаю и вспоминаю детский стишок "С дуба падают листья ясеня, ..."

да ладно вам :) Круто же - "майнинг" :)

Читал, что майнинг на видюхах давно не окупает даже электричества на питание серверов... А смотри-ка, однако же есть люди. что покупают видюхи за 50к и потом их ремонтируют :)

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

SaintYGL пишет:

как и положено студенту факультета "Компьютерные системы и комплексы". 

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

Что положено  студенту факультета "Компьютерные системы и комплексы" написано в образовательном стандарте и спецификации специальности 09.02.01.

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

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

ЕвгенийП пишет:

"С дуба падают листья ясеня, ..."

Продолжение роскомнадзор запрещает?

b707
Онлайн
Зарегистрирован: 26.05.2017

SaintYGL пишет:
Заказать с Китая живой (но это не точно, что он живой, могут и обмануть) чип стоит тысяч 8.

Мёртвые карты скупаются под донорство обычно тысяч за 10 в среднем

Шары стоят рублей 400 за банку

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

Итого в среднем ремонт выходит 8 + 10 + 0.4 + 5  = примерно 24. И это в зависимости от того, "как повезет" с остальными комплектующими.

А новая -36. ... соотношение примерно как телефонами. Там тоже ремонт стоит примерно 8 при цене нового 12. При таком раскладе только очень жадный заказчик будет вкладываться в ремонт, ИМХО.

Что и требовалось доказать...

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

Ворота пишет:
роскомнадзор запрещает?
Запрещать здесь может только Клапауций. А продолжение и так все знают, чего его писать?

SaintYGL
Offline
Зарегистрирован: 30.05.2018

Не правильно вы, уважаемый, считаете, надо колбасой вниз. А точнее, я имел ввиду, что есть два пути:
1) Купить мёртвую карту, которую, например, неправильно вставил в райзер мамкин майнер, после чего она не завелась. И взять запариться, выпаяв оттуда чип самостоятельно. При диагностике мультиметром можно определить, живой чип или нет, так что тут чип при покупке 100% живой. Или другой способ:
2) заказать с Китая уже выпаяный. Как я писал ранее, могут и с носом оставить
Если считать не вместе эти варианты (зачем?), а врозь, то тогда всё встаёт на свои места - стоимость ремонта составляет 14 тыс. рублей.
Что же касается "профитности" майнинга, то те, кто успели собрать фермы на старте и при этом не сожгли видеокарты чувствуют себя лишь частично ущемлённо, ибо ранее приток финансов от майнинга составлял порядка 10-20 стоимостей оплаты счёта за электроэнергию, тогда как сейчас составляет дай бог 4-5, в случае с некоторыми криптовалютами может быть даже 8, но это редкость. Зато ремонт видеокарт крайне выгоден в силу того, что бывшие майнеры, которым повезло значительно меньше, повально избавляются от "отработанных видеокарт", зачастую куда дешевле, чем я писал ранее, главное - мониторить всякие авито. А рассказывают о том, что майнинг теперь убыточен лишь для того, чтобы майнеров стало меньше, ибо из-за них и пожары случаются, и нагрузка на энергосеть растёт, и геймерам, которым нужна одна, а не 8 видеокарт, покоя нет. Каждый суслик ведь, как известно, агроном, посему так много "погарельцев"

b707
Онлайн
Зарегистрирован: 26.05.2017

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

да нет, это у вас плохо с математикой. Замена чипа "под ключ" стоит 14 ? - хорошо. Но ведь нужна еще и плата, на которой чип менять, верно? Она стоит минимум десятку. Вот и выходит те же 24 без всяких сложных расчетов. А продать вы плату после ремонта за 36 никогда не сможете...

Так что ваши расчеты выгодности ремонта очень оптимистичны.

Но если вы в себе уверены - ничто не мешает вам устроится в ларек "ремонт видеокарт" на Горбушке, коли вы с москвы. И диплом для этого не нужен :)

 

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

За 3 года в техникуме, все полимеры просрал.