Программное включение модуля SIM900

rene
Offline
Зарегистрирован: 21.01.2014

Купил GPRS shield на базе SIM900, аппаратное включение модуля не предусмотрено. Почитал даташит по данному чипу, в нем сказано, чтобы включить чип необходимо подтянуть пин 1 к земле на 1 сек. (User can power on SIM900 by pulling down the PWRKEY pin for at least 1 second and release. This pin is already pulled up to 3V in the module internal, so external pull up is not necessary. Reference circuit is shown as below).

Приведена такая схема:

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

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

А чем вас не устраивает буквальное следование даташиту?

rene
Offline
Зарегистрирован: 21.01.2014

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

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

А просто пин с МК не катит?

И в setup подтянуть его к земле на 1 секунду .

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

rene пишет:

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

Дык эта...

digitalWrite(PWRKEY_pin, LOW);

rene
Offline
Зарегистрирован: 21.01.2014

digitalWrite(PWRKEY_pin, LOW);

Почему то считал что данная команда подаст на выход пина напряжение около 2 в. (логический ноль). Видимо придется переосмысливать, буду пробовать.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

rene пишет:
Почему то считал что данная команда подаст на выход пина напряжение около 2 в. (логический ноль). Видимо придется переосмысливать, буду пробовать.

Нет там 2В. Логический ноль на выходе у Atmega328 от 0В до 0,9В. 

P.S. Нет строгих логический уровней. Типа лог.0 - 0 вольт, лог.1 - 5 вольт. Есть некие допуски +/-.

https://learn.sparkfun.com/tutorials/logic-levels

Тоже самое и с модулем SIM. Он должен реагировать на подачу логического нуля в пределах допусков, а не строго на 0,0в

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

rene пишет:
digitalWrite(PWRKEY_pin, LOW); Почему то считал что данная команда подаст на выход пина напряжение около 2 в. (логический ноль).

Вы считаете, что вам нужно что-то другое, учитывая, что земля общая?

Maverik
Offline
Зарегистрирован: 12.09.2012

void powerUpOrDown()
{
  pinMode(9, OUTPUT); 
  digitalWrite(9,LOW);
  delay(1000);
  digitalWrite(9,HIGH);
  delay(2000);
  digitalWrite(9,LOW);
  delay(3000);
}

 

 

http://www.seeedstudio.com/wiki/GPRS_Shield_V1.0

неужели сложно загуглить.

rene
Offline
Зарегистрирован: 21.01.2014

Jeka_M пишет:

Тоже самое и с модулем SIM. Он должен реагировать на подачу логического нуля в пределах допусков, а не строго на 0,0в

Да, действительно так, спасибо!

rene
Offline
Зарегистрирован: 21.01.2014

Maverik пишет:

void powerUpOrDown()
{
  pinMode(9, OUTPUT); 
  digitalWrite(9,LOW);
  delay(1000);
  digitalWrite(9,HIGH);
  delay(2000);
  digitalWrite(9,LOW);
  delay(3000);
}

неужели сложно загуглить.

Смущает два момента, ваш код соответсвует нажатию кнопки питания, затем отжатие и снова нажатие, т.е. кнопка питания постоянно удерживается нажатой, соответсвенно физическая кнопка перестает работать.

Второе digitalWrite(9,HIGH);, т.е. фактически мы подаем на чип 5 в., но в даташите указано диапазон напряжений 3 - 4,8 в., не погорит ли его вход?

может лучше так?

  pinMode(9, OUTPUT);
  digitalWrite(9, LOW);
  delay(1000);
  pinMode(9, INPUT);