Добрый день. Делаю первые шаги с Ардуиной. Не могу разобраться с GPRS Shield. Arduino UNO+GPRS Shield+СИМка Скетч: #include <GPRS_Shield_Arduino.h> #include <SoftwareSerial.h> GPRS gprs(9600); void setup() { gprs.powerUpDown(); while (!gprs.init()) delay(1000); gprs.sendSMS("+79165389376", "Hello SMS from Amperka!"); } void loop() { } Библиотеки установил. При компиляции выдается следующее: C:\Users\Агафнонов Павел\Documents\Arduino\libraries\GPRSShield\GPRS_Shield_Arduino.cpp: In constructor 'GPRS::GPRS(uint32_t)': C:\Users\Агафнонов Павел\Documents\Arduino\libraries\GPRSShield\GPRS_Shield_Arduino.cpp:41: error: 'SERIAL_PORT_HARDWARE' was not declared in this scope Не могу понять, что за ошибка и что я делаю не так.
Может быть гранаты не той системы, в смысле версия IDE? SERIAL_PORT_HARDWARE объявляется в собственной библиотеке ARDUINO IDE и принимает значение Serial для Uno и Serial1 для Leonardo. Ну и что-то похожее для других плат. В версии 1.6.5 должно присутствовать. В более ранних и альтернативной линейке 1.7.х - не знаю. Собственно говоря, проблему можно решить, вставив в самое начало файла, для которого выдается сообщение об ошибке, а именно GPRS_Shield_Arduino.cpp (не забыв перед этим на всякий случай сделать его копию), строку для Uno, Nano, Mini, Iskra Mini: #define SERIAL_PORT_HARDWARE Serial для Leonardo, Iskra Neo, Micro: #define SERIAL_PORT_HARDWARE Serial1
Собственно говоря, проблему можно решить, вставив в самое начало файла, для которого выдается сообщение об ошибке, а именно GPRS_Shield_Arduino.cpp (не забыв перед этим на всякий случай сделать его копию), строку для Uno, Nano, Mini, Iskra Mini: #define SERIAL_PORT_HARDWARE Serial Спасибо, помогло, заработало! IDE версии 1.0.5-r2 Я правильно понимаю, что в соответствии с "На платах Arduino, прошивка которых проходит через пины 0 и 1 (Arduinio Uno, Arduino Mega 2560 и Arduino ADK), прошивку микроконтроллера необходимо производить со снятыми джамперами TX и RX." Действовать нужно так: снимаем джамперы на GPRS Shield - прошиваем контроллер - ставим джамперы и нажимаем кнопку сброса на контроллере?
Да. только надо учитывать, что шилд, подключенный к 0,1 уны и прочих подобных ардуин будет мешать не только прошивке, но и обмену с ПК по Serial. Так что, если не принять меры по переносу последовательного порта шилда на другие пины (включая объявление SoftwareSerial порта и объявление экземпляра класса gprs с соответствующим параметром), отладку или управление по последовательному порту придется делать по другим каналам.
Спасибо за развернутый ответ! Однако, подключение УНЫ к 0 и 1 контакту не мешает обмену с ПК по Serial порту. Я открываю порт и вижу сообщения.
Оно не всегда будет мешать. Просто есть вероятность наложения принимаемых от шилда данных и управляющих команд, если такие передаются по последовательному порту. Также отладочная выдача поступает на вход шилда, что в некоторых режимах (например, наличие установленного соединения передачи данных во GPRS) может быть нежелательно.