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

KiTS
Offline
Зарегистрирован: 09.11.2016

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

MadDen_ix
MadDen_ix аватар
Offline
Зарегистрирован: 20.10.2015

Попытался допилить алгоритм работы. идея - 2 реле

1-я подает 220В на  диодный мост с которого мониторится напряжение в сети и на 2 реле.

2-я реле подает напряжение на  блок питания от которого заряжаетс акб.

если напряжение в сети больше 250 в или меньше 150В -выключаем реле 1.

раз в минуту щелкаем реле. если напряжение в диапазоне 150-250в - реле включено.

если напряжение меньше 150 или больше 240в - выключаем реле 2.

если реле 1 включилось то после задержки в минуту включаем реле 2. 

реле 1 вроде должно работать как положено, но вот реле 2 так до конца и не понял как будет работать...  

но точно не так как задумывалось

      if(currentMillis - previousMillis_ups > 23)     //every 23 mseconds
        {
          previousMillis_ups = currentMillis;
          /////////////////////////// UPS ///////////////////////////////////
          UPS_MON_read = (analogRead(UPS_MON))/3.45; //read raw data 0..1023 / 0..5v    230v=803  240v=828   ??0v=414??
          Serial.print("UPS_MON_read =" );
          Serial.println(UPS_MON_read);                     
          if (UPS_MON_read < 150)  // lower 150V AC
            {
              R1 = 0;               // R1 - main power
              R2 = 0;               // R2 - power
            }
          
          if (UPS_MON_read > 250) R1 = 0; // over 240V AC
          if (UPS_MON_read > 240) R2 = 0; // over 240V AC
          
          ///////////////////////////////////////////////
          if (R1 == 0) 
            {
              previousMillis_ups_delay_R1 = currentMillis;
              R1 = 1;
            }
          if (currentMillis - previousMillis_ups_delay_R1 >= R1_interval) digitalWrite (UPS_R1, HIGH);
            else digitalWrite (UPS_R1, LOW);
          /////////////////////////////////////////////////
          if (digitalRead(UPS_R1) == HIGH)
            {
              if (R2 == 0) 
                {
                  previousMillis_ups_delay_R2 = currentMillis;
                  R2 = 1;
                }
              if (currentMillis - previousMillis_ups_delay_R2 >= R2_interval) digitalWrite (UPS_R2, HIGH);
              else digitalWrite (UPS_R2, LOW);
            }

 

KiTS
Offline
Зарегистрирован: 09.11.2016

 А если использовать для этих целей готовый атомат как в ссылке ниже?

https://domikelectrica.ru/chto-takoe-rele-napryazheniya-pravilnyj-vybor/.

Я себе такое домой поставил Недорого вышло Порядка 300-500 рублей. Выключается в диапазоне <180 и > 250.

KiTS
Offline
Зарегистрирован: 09.11.2016
 
MadDen_ix
 

Вопрос к Вам по поводу преславутого SIM 900. 

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

MadDen_ix
MadDen_ix аватар
Offline
Зарегистрирован: 20.10.2015

По поводу подключения я же писал вроде, пост 25? 

 if(currentMillis - previousMillis_gsm > 30000)   //условие при котором будет выполнятся последующий код
      {
         
         mySerial.print("AT+CMGF=1\r");    //ат команда переводим шилд в текстовый режим для отправки смс. вообще отправка команд на шилд-  mySerial.print("АТ КОМАНДА");
         delay(100); //даем возможность шилду отработать команду
          mySerial.println("AT + CMGS = \"+7920*******\"");//и посылем следующую, здесь командой указываем шилду на какой номер слать смс
         delay(100);//даем возможность шилду отработать команду
          mySerial.print("A test message!");//печатаем в порт сам текст сообщения
         mySerial.print("kzfghg");//снова текст сообщения
         mySerial.println("x");// опять текст сообщения
         delay(100);//даем возможность шилду отработать команду
         mySerial.println((char)26);// и посылаем ему символ завершения передачи т.е. ctrl+z
         delay(100);//даем возможность шилду отработать команду
         mySerial.println();
          
      }

 вообще если есть usb-ttl переходник, подключите гсм-шилд к нему, к юсб компа,

откройте терминал и потренируйтесь в Ат-командах. (например можно использовать програмку http://alex-exe.ru/programm/terminal-sim900-dialog/)

можно попутно еще и ответы изучить от шилда.

это вообще будет идеальное решение. сначала через терминал добится работы от шилда,

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

теоретически можно даже отказатся от delay() и заставить ардуину отлавливать в SoftwareSerial ответ от шилда...

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

MadDen_ix
MadDen_ix аватар
Offline
Зарегистрирован: 20.10.2015

собственно что именно вы хотите заставить сделать сим900 в настоящий момент?

KiTS
Offline
Зарегистрирован: 09.11.2016

    В настоящий момоент планируется дистанционное управление неким прибором,через Sim900 с помощью СМС сообщений. Принимаем сообщение передаем команду ардуино Мега. Команда выполняется. Высылается отчет о работе текстом в смс. (например нараметры температура, влажность и.т.д)

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

 Кто работам с данным модулем(SIM900) или вообще GSM модулем. Какаие настройки требуются, регистрации или еще что то?

MadDen_ix
MadDen_ix аватар
Offline
Зарегистрирован: 20.10.2015

Ну ат-команды вам сократить не удастся. в моем примере использован необходимый минимум.

какая команда за что отвечает - смотрие в комментариях к коду.

по поводу отчета в виде смс - вообще проблемы не вижу, были быпеременные описаны и присвоены.

переводим шилд в режим отправки смс, а потом в програмный сериал выводим переменные так же как и в обычный,

что то типа 

mySerial.print("Temp = ");

mySerial.print(temp);

mySerial.print("Time = ");

mySerial.print(time);

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

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

 

если вам и это нужно отслеживать - была вроде  ат-команда проверяющая к какой сети подключен модуль и выбающая нфо...

передеали в сериал команду , скажем раз в 30 секунд, пришел ответ в тот же сериал , сравнили с тем что нам нужно, если совпадает - есть регистрация в сети, если нет, еще ждем... по опыту.. в худшем случае, сеть модуль находил спустя минуту.

MadDen_ix
MadDen_ix аватар
Offline
Зарегистрирован: 20.10.2015

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

з,ы.

по поводу управления почитайте тут http://wiki.amperka.ru/%D0%B1%D0%B5%D1%81%D0%BF%D1%80%D0%BE%D0%B2%D0%BE%D0%B4%D0%BD%D0%B0%D1%8F-%D1%81%D0%B2%D1%8F%D0%B7%D1%8C:gprs-shield

может поможет

з.ы.ы.

и по ат-командам http://avrproject.ru/publ/poleznaja_informacija/at_komandy_dlja_raboty_s_sim900d/4-1-0-80

отслуживать статус сети можно командой

AT+CSQ - информация о качестве сигнала.

Модуль вернет два числа +CSQ: 17,0

17 - уровень сигнала. Может быть в диапазоне 0..31 или 99. Чем больше тем лучше, но 99 значит его отсутствие. 

0 - коэффициент ошибок связи (т.н. RXQUAL). Может быть от 0 до 7, чем число меньше тем качество связи лучше

и анализировать ответ модуля... сам не пробовал..

Yu5422
Offline
Зарегистрирован: 01.04.2016

Пришел модуль A6C (тут о нем в скользь говорили) , поигрался. В принципе очень даже удобно, фактически это три устройства в одном - Serial GSM/GPRS модем + Serial камера (максимальное разрешение 640х480) и стабилизатор питания для модема (все питается от +5в). С адуиной стыкуется без проблем, управляется естественно тоже. Камера настраивается и снимает по средствам AT команд, есть даже вспышка. Снимок хранится в памяти сборки до момента запроса, по запросу отдается потоком - что хочешь то и делай. 

Вот тут есть мануалы https://raymondtunning.wordpress.com/2016/09/08/best-wireless-cam-solution-a6c/

KiTS
Offline
Зарегистрирован: 09.11.2016

  

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

Модуль такой  же как и у Вас MadDen_ix :http://www.ebay.com/itm/SIM900-850-900-1800-1900-MHz-GPRS-GSM-Development-Board-Module-Kit-For-Arduino/152282903514?_trksid=p2047675.c100005.m1851&_trkparms=aid%3D222007%26algo%3DSIC.MBE%26ao%3D2%26asc%3D38530%26meid%3D2648999822ba47d687f395f6e41e7e4c%26pid%3D100005%26rk%3D3%26rkt%3D6%26sd%3D201743020147

KiTS
Offline
Зарегистрирован: 09.11.2016
KiTS
Offline
Зарегистрирован: 09.11.2016

KiTS
Offline
Зарегистрирован: 09.11.2016

  MadDen_ix

Камера что изображена выше может выдавать изображение в JPEG  или нет? Как ее можно подключить к Ардуино Мега и к флешке?

Yaku
Offline
Зарегистрирован: 02.11.2016

MadDen_ix пишет:

у вот как то так оно пока выглядит..

,блин, ктонибудь в курсе как тут картинки под спойлер прятать?

 

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

 //         itoa(k, str, 10);
 //         strcat(str, ".jpg");
 sprintf(str,"%d.jpg",k);
 //         file = SD.open(str, O_WRITE | O_CREAT | O_TRUNC);//Open the new file
        file = SD.open(str, FILE_WRITE);//Open the new file

В таком виде пишет нормально. 

 

MadDen_ix
MadDen_ix аватар
Offline
Зарегистрирован: 20.10.2015

как минимум они отличаются тем что у одной з них есть буфер для хранения изображения. т.е. в моем понимании первая это чисто камера, вторая это камера + буфер + управляющая м/с. т.е. ко второй камере - отправил команду по и2с посредством библиотеки- в буфер считалась картинка, и потом можеш с буфера эту картинку куда либо сохранять. а а в первом случае ты получаеш сырые данные с камеры, и вот че хочеш с ними то и делай. в моем понимании как то так.

по поводу 52-го пина - да все верно. крайние левые безномерные пины на этой колодке это земля, крание правые +5В. в запарке не туда линию протянул. это действительно должен быть 52 пин. можно проверить посмотрев код - там пины верно указаны. постараюсь на выходных поправить.

по поводу омнивижн"а... каканибудь документация есть? оборотная фото?  хз. как правило продаваны высылают  тестовую библиотеку/скетч с кторой типа 100% работает... можно попросить продавца для ознакомления выслать.. мне пока еще никто не отказывал и шел на встречу если видели заинтересованность.

MadDen_ix
MadDen_ix аватар
Offline
Зарегистрирован: 20.10.2015

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

MadDen_ix пишет:

если нужна  железная часть отвечающая за мониторинг 220V то вот она

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

до кучи еще пару термодатчиков решил прикрутить и  BH1750  (датчик осещенности)... если ничего не помешает, в планах завтра все обновить...

MadDen_ix
MadDen_ix аватар
Offline
Зарегистрирован: 20.10.2015

KiTS пишет:

  

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

Модуль такой  же как и у Вас MadDen_ix :http://www.ebay.com/itm/SIM900-850-900-1800-1900-MHz-GPRS-GSM-Development-Board-Module-Kit-For-Arduino/152282903514?_trksid=p2047675.c100005.m1851&_trkparms=aid%3D222007%26algo%3DSIC.MBE%26ao%3D2%26asc%3D38530%26meid%3D2648999822ba47d687f395f6e41e7e4c%26pid%3D100005%26rk%3D3%26rkt%3D6%26sd%3D201743020147

распиновка.. распиновка... закинте вопрос продавану на тему даташита, может чего пришлет.. а вообще...

0 и 1 контакт в красной гребенке - Tx & Rx (либо  пины 8 и 7, в зависимости от положения джамперов J11 & J12)

9-й пин - программное включение -  подав высоки йровень на 2 секунды на это  пин можно включить модуль не трогая кнопку, при условии что перемычка Р13 стоит.

желтая колодка, 3 пин от сим карты 5 В, четвертый земля. (они кстати на моей плате подписаны), 5-й вроде тоже земля..

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

а остальные контакты с чипа выведены в углы платы в  2 блока - GPIO  и UART.

Собсственно смотрите - на плате эти контакты табличкой подписаны. Либо -вся разводка видна - можно открыть даташит на сим900 и посмотреть за что каждая нога отвечает.

 

З.Ы, кстати 7 и 8 пины красной гребенки на плате так же подписаны - SWserial,  6 пин - RST, гребенки j20 & j 3  подписаны.

Yaku
Offline
Зарегистрирован: 02.11.2016

А такой вопрос: что происходит при перезагрузке платы ? Счетчик для генерации имени файла сбрасывается, и файлы с камеры начинают перезаписывать существующие на карте, или просто возникает ошибка ? У меня что-то странное, как будто прямо в этот файл начинает дописывать. Вообще, как-то нестабильно работает с картой. То ли модуль SD кривой, то ли из-за проводов и макетной платы что-то не так. Постоянно теряет карту, создает пустые файлы, или портит fat. Даже при нажатии ресета через раз не инициализирует. Что еще страннее, при отключении камеры начинает работать стабильнее, по крайней мере - не теряет карту. Уже даже пересобрал схему на Uno R3, точно так же глючит ( 

MadDen_ix
MadDen_ix аватар
Offline
Зарегистрирован: 20.10.2015

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

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

м.б. где то библиотеки конфликтуют?

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

Yaku
Offline
Зарегистрирован: 02.11.2016

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

В самой процедуре снимка инициализации нет, но в сетапе инициализируется и SPI, и SD. А какую библиотеку для SD вы использовали ? Я уже три разных перепробовал.

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

MadDen_ix
MadDen_ix аватар
Offline
Зарегистрирован: 20.10.2015

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

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

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

matusevichy
Offline
Зарегистрирован: 21.12.2016

Yu5422

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

MadDen_ix
MadDen_ix аватар
Offline
Зарегистрирован: 20.10.2015

2КИТС

Вот кстати нашел, изучите.

http://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield

поможет понять что и откуда в gsm-модуле растет

Yu5422
Offline
Зарегистрирован: 01.04.2016

С ардуиной я его еще не гонял - пока нет времени заняться.  Но в принципе модуль подключается как и любой другой GSM шилд через serial (желательно через аппаратный). Основные команды стандартные (АТ ...). Стыковал и работал с SIM800L - никакие библиотеки не использовал, писал свой обработчик данных порта. Для работы с камерой есть несколько команд все в принципе хорошо описаны тут http://2150692.ru/faq/127-a6c-cam-test , единственное чего там нет это at+camcfg  -  с ее помощью можно управлять вспішкой и рядом пераметров картинки. Полное описаное модуля, включая АТ команды есть тут https://raymondtunning.wordpress.com/2016/09/08/best-wireless-cam-solution-a6c/

По подключению там вообще пез проблем, сериал да питание - больше ничего не надо в принципе. Единственное это можно кнопку питания по умолчанию перемкнуть - модуль будет включаться по подаче питания (если есть такая необходимость)

 

 

Yaku
Offline
Зарегистрирован: 02.11.2016

Вообщем, победил свою беду. Заработала наконец-то камера вместе с SD. Уже и новый ридер купил, и на макетной плате все собрал. Ни в какую SD не хотела определяться. Проблема оказалась двойственной. Первая и главная - версия библиотеки SD. Сейчас по умолчанию 1.1.0. Откатил на 1.0.9 - и сразу модуль определился. Вторая проблема с записью ерунды всякой в файлы и порчей fat. Решилось сменой карты. Использовал очень старую карту на 32 мегабайта, которая даже не могла в FAT32 форматироваться. Поставил поновее на 1 гиг и файлы стали писаться без ошибок.

Теперь новый этап - борьба с GSM. Кстати, кто какие симки и тарифы использует ? Я как не искал подходящий тариф, ничего доступного с интернетом не нашел. Склоняюсь к отсылке фото через MMS у мегафона. 7 рублей за каждую. Тарифы с бесплатным пакетом интернета похоже не заработают на этом модуле, надо перешивать IMEI (хз как), чтобы как планшет у опсоса определялся.

matusevichy
Offline
Зарегистрирован: 21.12.2016

Yu5422 пишет:

По подключению там вообще пез проблем, сериал да питание - больше ничего не надо в принципе. Единственное это можно кнопку питания по умолчанию перемкнуть - модуль будет включаться по подаче питания (если есть такая необходимость)

Да вот в том то и проблема, что должно быть все просто, а по факту не работает. Не могу достучаться до A6C ни терминалом ни с ардуины. Подключаю 5 Вольт и TX/RX - светодиод загорается, а на АТ команды никакой реакции... И не понять, может сам модуль дохлый... 

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

matusevichy пишет:

Yu5422 пишет:

По подключению там вообще пез проблем, сериал да питание - больше ничего не надо в принципе. Единственное это можно кнопку питания по умолчанию перемкнуть - модуль будет включаться по подаче питания (если есть такая необходимость)

Да вот в том то и проблема, что должно быть все просто, а по факту не работает. Не могу достучаться до A6C ни терминалом ни с ардуины. Подключаю 5 Вольт и TX/RX - светодиод загорается, а на АТ команды никакой реакции... И не понять, может сам модуль дохлый... 

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

MadDen_ix
MadDen_ix аватар
Offline
Зарегистрирован: 20.10.2015

Tx GSM -> Rx Arduino

Rx GSM -> Tx Arduino

так? про землю не забыли? только три провода (+5, Tx, Rx) маловато будет ;-)

мб попробовать на GSM  Tx и Rx местами поменять?

 

alex_r61
Offline
Зарегистрирован: 20.06.2012

И ещё блок питания. У меня тоже один не запускался и никак не реагировал пока не подключил его через БП на 5В 2А.

kontulavittu
Offline
Зарегистрирован: 06.12.2018

Интересный проект. Какого состояние на сегодняшний день ( июнь 2019 года)?

Удалось заставить SIM-модуль послать через GSM -сеть изображение на номер телефона без привлечения Интернета?

Планирую для дома сделать автономный блок на Ардуино, без Интернета, общающийся только через GSM -сеть.