Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Обновление от 6 июля 2018 г.: версия этого проекта для 3G / 2G, использующая SIM5320, доступна здесь.
Обновление: 19 мая 2015 г. Используйте библиотеку pfodParser версии 2.5 или выше. В нем устранена проблема, о которой сообщалось, что экран не успевает подключиться к сети после включения
Вступление
Чем удаленное управление pfodSMS отличается от других реализаций: -
- Это надежно - на команды всегда отвечают, а потерянные сообщения повторно запрашиваются
- Это безопасно - использует 128-битную защиту паролем
- Для этого не требуются учетные записи сторонних веб-сервисов - нужна только активная SIM-карта (без пин-кода).
- Он настраивается - вы можете использовать pfodDesigner для создания собственного пользовательского меню.
- Это просто - pfodDesigner генерирует весь код. Вам не нужно ничего кодировать.
- Это гибко - все экраны pfod доступны через SMS, такие как подменю, список множественного и одиночного выбора, ввод текста, регистрация данных и построение графиков.
См. Дизайн сообщения pfodSMS, чтобы узнать, как сделать SMS-соединение надежным. См. Раздел Безопасность запросов и ответов для подключенных к Интернету устройств pfodDevices для получения подробной информации о 128-битной безопасности. См. PfodDesigner, Android / Arduino menus made Simple для получения подробной информации о создании собственного пользовательского меню. См. PfodSpecification.pdf для получения подробной информации обо всех сообщениях и экранах pfod, которые вы можете добавить самостоятельно.
Пример проекта - SMS-контроль горячей воды
В качестве примера проекта в этом руководстве описывается, как включать и выключать водонагреватель с помощью SMS и проверять, включен он или выключен. Для его установки вам понадобится электрик.
Шаг 1. Быстрый старт - удаленное управление по SMS
Вот краткое руководство по созданию собственного SMS-контроля горячей воды.
- Приобретите детали из этого списка..
- Установите Arduino IDE версии 1.5.8, загрузите и установите библиотеку pfodParser..
- Загрузите бесплатный pfodDesigner.
- Создайте собственное меню, чтобы включать и выключать цифровой ввод с помощью ползунка меню на мобильном устройстве Android.
- Сгенерируйте код, выбрав SeeedStudio SIM900 GPRS Shield в качестве подключения. (Также есть вариант для экрана IteadStudio SIM900).
- Перенесите сгенерированный код со своего мобильного телефона в среду IDE (подробности см. В pfodAppForAndroidGettingStarted.pdf), добавьте свой секретный пароль, скомпилируйте и загрузите в Arduino Mega 2560.
- Установите SIM-карту в экран GPRS и подключите экран к Mega 2560. Убедитесь, что для последовательных каналов установлено значение «Аппаратный последовательный порт», как показано выше.
- Подключите цифровой выход к твердотельному или нормальному реле между D3 и GND (или любым контактом, который вы выбрали в pfodDesigner). См. Как добавить реле в Arduino для получения более подробной информации о реле.
- Подключите питание USB к Mega. Код библиотеки активирует для вас экран GPRS.
- Установите pfodApp на свой мобильный телефон Android и настройте SMS-соединение с SIM-телефоном Shield No. (подробности см. в pfodAppForAndroidGettingStarted.pdf). Установите пароль для подключения, если вы его добавляли.
- Подключитесь и смотрите свое собственное меню, отображаемое через SMS. Нажмите кнопку, чтобы включить или выключить реле.
- Попросите электрика установить реле в контур горячей воды и подключить источник питания USB для питания Mega и экрана.
Шаг 2: Подробнее
pfodDesigner
PfodDesigner сгенерирует весь код, необходимый для включения и выключения твердотельного или какого-либо другого реле, но SMS-соединение в библиотеке pfodParser поддерживает все экраны pfod, поэтому, как только вы начнете, вы можете добавить подменю, числовые ползунки, многотекстовые ползунки, экраны для ввода текста, регистрация данных и построение графиков через SMS. Просмотрите pfodSpecification.pdf, чтобы узнать обо всех поддерживаемых экранах и сообщениях.
Сгенерированный код здесь. У него нет подсказки и только один переключатель, чтобы сообщение было коротким. Длинные меню отправляются через несколько SMS-сообщений, доставка которых занимает больше времени. Если у вас длинное меню, код sms-соединения в библиотеке pfodParser сделает все это за вас.
Чтобы добавить пароль к вашему SMS-соединению, измените строку
parser.connect (& pfodSMS); // подключаем парсер к потоку SMS к чему-то вроде parser.connect (& pfodSMS, F ("173057F7A706AF9BBE65D51122A14CEE"));
но используйте свой собственный пароль, содержащий до 32 шестнадцатеричных цифр, 0..9 A.. F. Пароли короче 32 шестнадцатеричных цифр дополняются нулями. См. Простое устройство pfodDevice Wi-Fi / Интернет со 128-битной безопасностью (Arduino), чтобы узнать, как сгенерировать случайный пароль и вывести его в QR-код для удобного ввода на Android. Также см. PfodAppForAndroidGettingStarted.pdf
PfodDesigner также будет генерировать код для подключений Bluetooth и Wi-Fi через последовательный порт и Ethernet через SPI, все с дополнительной 128-битной безопасностью.
pfodApp
Первое, что нужно понять, это то, что SMS-это медленное и может вообще не дойти или прийти не по порядку. Поэтому, когда вы подключаетесь к pfodApp, будет некоторая задержка, прежде чем появится ответ по SMS. Если сообщение потеряно или задерживается, pfodApp автоматически повторно отправит его через 3 минуты. После 5 таких попыток pfodApp сообщит вам, что соединение потеряно. Вы можете настроить время 3 минуты на экране редактирования соединения pfodApp.
Если вы добавите пароль, то перед тем, как pfodApp получит главное меню, будет шесть SMS-сообщений (по три в каждую сторону). Эти дополнительные сообщения появляются только при первоначальном подключении, после чего дополнительные сообщения при использовании пароля не появляются. Так что начните без пароля, чтобы убедиться, что все работает, а затем добавьте пароль позже.
SMS / GPRS щит
Возможные проблемы: SIM-карты защищены пин-кодом или не авторизованы для подключения к сети. Библиотека pfod автоматически включает экран GPRS и ищет ответ «вызов готов». Если этот ответ не приходит, библиотека отключается и пытается снова, поэтому, если вы видите, что индикатор питания на экране GPRS горит в течение 20 секунд, а затем гаснет, существует проблема с подключением к сети. Вытащите симку и попробуйте в обычном телефоне. Убедитесь, что вам не предлагается ввести пин-код.
Если проблема не в этом, вам нужно будет включить отладку при запуске, как описано ниже, чтобы увидеть, что происходит.
Питание экрана Mega / GPRS
Экран потребляет до 2А в импульсном режиме и до 0,5А в непрерывном режиме. При питании от аккумулятора 12 В, ток 0,5 А превышает емкость бортового источника питания Mega. Таким образом, этот экран НЕ должен подключаться к входу 7–12 В на Mega. Альтернативой является питание Mega и Shield через USB-соединение. Я использовал USB-источник питания на 1 А. Для тестирования я использовал концентратор с питанием от Belkin (F4U020), чтобы предотвратить чрезмерное потребление тока через USB-порт моего компьютера.
Для питания от аккумулятора на 12 В я предлагаю использовать качественное автомобильное зарядное устройство USB 5 В, 1 А или выше. Качественный автомобильный источник питания USB 5 В должен быть разработан для защиты от скачков напряжения, возникающих в электрических системах автомобиля, и поэтому должен подходить для большинства систем зарядки 12 В.
Твердотельное реле
Поскольку этот примерный проект управляет водонагревателем (резистивной нагрузкой), идеально подходит твердотельное реле. Если вы хотите включить или выключить двигатели, запустить генераторы и т. Д., Поговорите со своим электриком о подходящем реле для работы. Если вам нужно реле высокой мощности, вы можете использовать небольшой привод реле на плате Arduino для включения и выключения реле питания.
Доступно множество версий твердотельного реле. Убедитесь, что вы покупаете устройство, которое может выдерживать ток и напряжение вашего нагревателя и может управляться постоянным током 5 В и несколькими миллиамперами, поступающими с выходного контакта Arduino. Используемый здесь, FOTEK SSR-40 DA, переключает до 380 В переменного тока при 40 А и управляется чем-либо более 3 В постоянного тока и потребляет менее 7 мА.
Вы должны использовать радиатор, и вы должны нанести ТОНКИЙ мазок состава для радиатора или термопасту на заднюю часть твердотельного реле, прежде чем прикреплять его к радиатору. Идея состоит в том, чтобы полностью покрыть поверхность тончайшим слоем состава для раковины для головы, чтобы заполнить микроскопические впадины на поверхности металла. При включении твердотельный переключатель падает на 1,6 В, что генерирует 16 Вт тепла при 10 А. Радиатор необходим для отвода тепла, поэтому его нужно устанавливать на открытом воздухе, а не в пластиковой коробке.
Задержки - зло
Экран GPRS доставляет SMS-сообщения через последовательное соединение в любое время, и ваш основной цикл () должен вызывать cmd = parser.parse (); часто для обработки последовательных данных до того, как 64-байтовый буфер в коде библиотеки Arduino заполнится и данные будут потеряны.
Таким образом, вы должны держать ваш основной цикл () работающим быстро. Вы никогда не должны использовать delay () и должны убедиться, что ни в одной из используемых вами библиотек нет задержек. Используя стандартную скорость передачи данных 19200 бод для SIM900 через аппаратный последовательный порт, я не счел необходимым увеличивать размер буфера в коде библиотеки Arduino. Я не использую Software Serial, только Serial и Serial1, аппаратные последовательные соединения, и почти все сообщения, которые отправляет pfodApp, очень маленькие, 10 или 12 байт. Однако вы можете увеличить размер буфера Arduino, если хотите, изменив определение в HardwareSerial.h с #define SERIAL_BUFFER_SIZE 64 на #define SERIAL_BUFFER_SIZE 128.
Однако я обнаружил, что если я включил отладочный вывод, как описано ниже, мне нужно было иметь очень быструю скорость передачи для терминального соединения, иначе задержка, вызванная отправкой отладочных сообщений на терминал, вызвала пропущенные части SMS-сообщений..
Установка
Я добавил экран с винтовыми клеммами, чтобы было к чему подключить провода твердотельного реле. Электрик еще не установил контроллер. Его нужно поместить в изолированную коробку, но с радиатором, торчащим через прорезь и подключенным к проводу питания горячей воды.
Шаг 3: предложения по дальнейшим улучшениям - предупреждения, регистрация данных и построение графиков
В приведенном выше примере проекта показано, как вода включена или выключена, и вы можете ее переключать. Но SMS-соединение обрабатывает все сообщения pfod (см. PfodSpecification.pdf)
Если вы добавите датчик температуры к своему Arduino, вы также можете отправлять данные о температуре и отправлять показания через регулярные промежутки времени. Чтобы отправить обратно считанные данные, то же самое для Bluetooth, Wi-Fi или SMS, просто добавьте код, как в примере ниже. См. Раздел «Регистрация данных и построение графиков» для получения более подробной информации и примеров регистрации данных и построения графиков.
parser.println (время); parser.print (','); parser.println (температура);
Когда библиотека pfodSMS видит новую строку из println (), она отправляет необработанные данные в виде SMS. На вашем мобильном телефоне просто оставьте pfodApp работать в фоновом режиме, и ваш мобильный телефон уведомит вас, когда будет получено SMS. Снова откройте pfodApp, чтобы вывести его на передний план, а затем откройте экран «Необработанные данные» из меню мобильного телефона, чтобы просмотреть данные. Примечание. Сообщения pfodSMS представляют собой символы UTF-8 вместе с номерами соединений и сообщений, кодируются с использованием кодировки Base64, поэтому они не выглядят как обычный текст. См. Все подробности в дизайне сообщения pfodSMS.
Вы можете использовать тот же процесс для отправки предупреждения, когда что-то меняется удаленно. т.е. parser.println (F («Наружная температура ниже 0 ℃»)); Примечание: символ ℃ UTF-8 в строке. pfodSMS передает все символы UTF-8 в pfodApp.
Шаг 4: Отладка при использовании SMS-соединения в библиотеке PfodParser
PfodDesigner генерирует код, который работает, но вы можете захотеть отладить свой собственный дополнительный код или посмотреть, что происходит, когда экран GPRS запускается или получает SMS-сообщения. Есть несколько подходов, которые вы можете использовать.
Отладка собственного кода
Если вы отлаживаете свой собственный код, вы можете просто закомментировать строку pfodSMS и подключить парсер к Serial, а затем удалить экран GPRS и запустить Mega с терминала Arduino. т.е. измените setup () на
//pfodSMS.init(&Serial, 9); // не запускать анализатор экрана GPRS.connect (& Serial); // подключаем парсер к Serial вместо потока SMS
Затем с терминала Arduino вы можете ввести {.}, Чтобы Mega вернул главное меню, а затем отправил обратно команду, которую вы хотите выполнить, например {A`1} для включения реле и {A`0} для его выключения. (Обычно pfodApp отправляет вам эти сообщения, когда вы щелкаете ползунок.) Затем добавьте дополнительный отладочный parser.println () для отслеживания того, какой дополнительный код выполняет добавленный вами код.
Мониторинг экрана GPRS
Если вы хотите увидеть, что делает экран GPRS. Как он запускается, получение SMS-сообщений и т. Д. Затем вам нужно изменить проводку экрана, подключить его к Mega Serial1 (последовательному) и освободить последовательное (USB) соединение для вывода отладки на Arduino IDE Monitor.
Чтобы подключить экран GPRS к Mega 2560 Serial1, удалите ссылки, показанные выше, и добавьте провода к контактам TX1 и RX1 Mega.
Затем измените код setup () на
void setup () {Serial1.begin (19200); // меняем Serial на Serial 1 Serial.begin (57600); // ОБРАТИТЕ ВНИМАНИЕ на высокую скорость передачи // последовательного порта USB для монитора Arduino IDE. for (int i = 3; i> 0; i--) {// ждем несколько секунд, чтобы узнать, запрограммированы ли мы delay (1000); } pinMode (cmd_A_pin, ВЫХОД); pfodSMS.setDebugStream (& серийный); // это необходимо сделать до вызова pfod_SMS.init // или любого другого метода pfod_SMS // инициализировать SMS и подключить парсер // изменить следующую строку на Serial1 pfodSMS.init (& Serial1, 9); // подключаем Seeed GPRS Shield V2 к Serial1 вместо Serial parser.setDebugStream (& Serial); // это необходимо сделать до вызова parser.connect // или любого другого метода синтаксического анализатора parser.connect (& pfodSMS); // подключаем парсер к SMS потоку}
Теперь вы можете раскомментировать некоторые настройки отладки в библиотеке pfodParser в конце файла pfodSMS_SIM900.cpp.
Например, без комментариев #define DEBUG_SETUP распечатает (в поток отладки), что происходит при включении щита GPRS и подготовке его к приему SMS-сообщений.
Отказ от комментариев #define DEBUG предоставит много информации о получаемых SMS-сообщениях.
Вот и все !