4.2volt charger

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

tp4056

При собственном изготовлении плат — можно брать сами микросхемы — TP4056 (TP4056_datasheet) или LTC4054 (ltc4054_datasheet).

Выполнены они схожими способами: из настраиваемых элементов — только резистор управления (примерно 2К) — определяющий ток зарядки. Из предлагаемых возможностей — поддержка trickle charge (зарядка малым током при сильном разряде батарейки — меньше 2.9В), overcharge release voltage (защита от перезаряда).
Кроме того у TPC4056 также имеется остановка заряда по температурному датчику (сам термистор должен быть встроен в батарейку — NTC). Существенным моментом является выделение на линейном преобразователе мощности, приводящей к нагреву. При малых размерах (LTC4054 — 2.9*1.75мм) сложно отводить тепло — и требуется оставлять большие площадки в местах крепления к плате. TP4056 выполнена в SOP8 (4*5мм с шагоь 1.27) — что не только проще монтировать, но и в силу размеров лучше отводит тепло. Снизу обе имеют площадку (земля) которую лучше пропаивать через отверстие в PCB.

Лайфхак — если заменить аккумулятор конденсатором достаточной емкости (2000мФ) — то можно питать GSM модули, требующие 4.2В — например SIM800. Если не нужна миниатюрность — то проще работать с TP4056.

Рубрика: Без рубрики | Добавить комментарий

air208

Пришел еще один GSM модуль — air208, обещана полная совместимость с sim800c и питание от 5в.  Действительно — на самой плате есть регулятор на 4в, что хорошо. Но радиомодуль внутри — совсем другой. Для старта — требует после подачи питания еще и дернуть резетом (PWR) — на SIM800L первый резет делался как-то самостоятельно и внутри.

 

air208

Гугление дало такой мануал —  air208_manual . Других данных — например по AT-командам — обнаружить не удалось. На китайских форумах  поговаривают,  что внутри модуль сделан на RDA8955 так что «совместимость» будет только на уровне эмуляции каких-то команд. Из обнаруженных несоответствий — нет поддержки детекта DTMF (отвечает ОК на AT+DDET=1 но ничего не детектит), нет файловой системы и проигрывания файлов (AT+CREG)  — итого — голос или совсем ущербный или сделан по-другому.

SMS — в норме и принимает и отсылает.   GPRS (проверял только HTTP) — тоже работает, хоть и с особенностями (нет нотификации +HTTPACTION).  PING отсутствует, но DNS работает правильно (AT+CDNSGIP=»www.google.com»).

Короче — если не знать китайский на уровне intermediate — это спорная замена simcomm — уж  лучше сообразить  преобразователь питания на 4.2в и как минимум иметь нормальную документацию на родном английском и сообщество с которым можно обсудить проблему.

C  проактивными STK командами (GSM 11.11, 11.14) — все еще хуже чем у simcomm — их похоже нет совсем. Ну и конечно — совсем нет Bluetooth.

AT+gsv
AirM2M
GSM Mobile Station
AirM2M_V4868_AT_S

AT+STKMENU
ERROR

AT+BTPOWER=1
ERROR
AT+BTSTATUS?
ERROR

AT+FSLS="C:\"
ERROR

AT+CREC?
ERROR
AT+CREC=?
ERROR

Итого — для личных поделок без использования голосовых функций подходит.

Рубрика: Без рубрики | Добавить комментарий

cpc1018n

4-Lead SOP OptoMOS ® Relay

Для управления нагрузкой можно использовать различные приборы — реле, ключи на кремниевых и полярных транзисторах, а также оптореле.

Для всех приборов важным моментом является возможность полного открытия реле от 3-5 вольт, которые доступны на микроконтроллерах или одноплатных компьютерах. Искать нужно по словам TTL/CMOS compatible input.

Пример точно работающего оптореле CPC1018N. Даташит — cpc1018n

 

С помощью таких оптореле можно управлять отключением питания USB (до 600ма) — вполне подходит для модификации raspberryPI для полного отключения или полного ресета по питанию модемов при зависаниях.

rpi_2usb_with_power

 

Рубрика: Без рубрики | Добавить комментарий

В среде ардуино есть поддержка процессоров stm32 и существуют готовые совместимые платы — напр т.н. bluepill.

Распиновка такая

700px-Bluepillpinout

Для работы в среде ардуино нужно поставить плату stm32 в BoardManager и выбрать stm32f103c8t6.
Для прошивки можно использовать родной прошивальщик st-link (для его подключения на плате есть припаяные 4 штырька), например такой китайский за пару баксов —

st-link

После заливки специального бутлоадера возмжно заливать скетчи из среды ардуино прямо через USB подключение, но мне показалось более стабильным использованием st-link (хотя и с ним иногда приходилось вручную нажимать ресет на плате в момент заливки).

На борту находятся три аппаратных Serial (Serial1,Serial2,Serial3), плюс еще один доступный через USB (собственно Serial, но работает он только при заливках через st-link).

Еще деталь — после заливки бывает нужно переподключить USB чтоб заменилось подключение /dev/ttyACM0 — сам порт не ресетится.

Крепление usb в плате — хлипкое и требует пропайки. В некоторых случаях требуется доустановка сопротивления (ибо подтяжка стоит неверная, впрочем почти вся техника толерантна к таким мелочам).

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

Опубликовано автором vs | Добавить комментарий

Определение питающего напряжения

Для контроля расхода батареи нужно контролировать падение напряжения на источнике питания,
можно делать так

void setup() 
{
  Serial.begin(115200);
}

void loop() 
{
  double Value = readVcc()/100.;
  Serial.println(Value);
  delay(100);
}



int readVcc() 
{
  ADMUX = (1<<REFS0) | (1<<MUX3) | (1<<MUX2) | (1<<MUX1); 
  delay(10);
  ADCSRA |= _BV(ADSC);
  while (ADCSRA & (1<<ADSC)); 
  uint8_t low  = ADCL; 
  uint8_t high = ADCH;
  long result = (high<<8) | low;
  result = 1125300L / result /10 ; // Calculate Vcc (in mV); 1125300 = 1.1*1023*100 0
  return result; 
}
Рубрика: Без рубрики | Добавить комментарий

CSR-BC417

Речь пойдет о bluetooth девайсе построеном на CSR CSR-BC417-datasheet Выглядит модуль примерно так

HC-05

Пинауты различаются в зависимости от прошивки — для HC-05 это такой
HC-05-pinout

А для HC-06 такой
HC-06-pinout

Я сначала купил с HC-06, потом думаю что нужно покупать с HC-05. Кстати — возможна и самостоятельная перепрошивка модулей, и даже самостоятельное программирование чипа CSR.

Важными для подключения являются пять ног: RX TX GND VCC — компорт и питание, а также нога KEY — переход в режим AT-сомманд для программирования модуля. При подаче «1» на ногу KEY модуль переходит в режим AT-комманд. Пишем скетч. (берем из SoftwareSerial экзамплов) или коннектимся через USBTTL на скорости 9600. Важный момент — команды нужно вводить быстро, без переводов строк. Фактически их надо набрать в каком-то другом терминале и копировать целиком из буфера обмена. По крайней мере так получалось у меня с модулем HC-06. Обязательно, чтоб скорости в обоих терминалах были 9600, модуль чувствителен к таймингу. Начинать надо с отсылки AT — модуль должен вернуть OK (эта команда проходила на 9600 скорости модуля и любых скоростях ардуино терминала). Дальше — устанавливаем NAME и PIN.
Полный список команд можно посмотреть тут. Далее приводу лог обмена (добавил переводы строк для читабельности, которых на самом деле нет).

AT
OK
AT+VERSION
linvorV1.8
AT+NAMErobot
OKsetname
AT+PIN1234
OKsetPIN

Теперь — мы настроили устройство, самое время к нему подключиться. Для начала — ребутим его, не просто отключаем от питания, а соединяем ноги питания на 20 сек вместе!
После этого устройство становится обнаруживаемым — спариваемся с ним и получаем SSP-

bash-4.3# hcitool scan
Scanning ...
	98:D3:31:60:07:EB	robot
	BC:85:56:8A:93:C8	....
rfcomm connect /dev/rfcomm0 98:D3:31:60:07:EB	1  &
... blueman выкинет окошко - туда ввести 1234 
screen /dev/rfcomm0 9600
... все что будем тут перчатать - должно появляться на терминалке и наоборот...

Вторые сокеты при этом создать нельзя

bash-4.3# rfcomm connect /dev/rfcomm1 98:D3:31:60:07:EB 2
Can't connect RFCOMM socket: Connection refused

Пин совсем отключить нельзя, даже если секурность не требуется. Но можно настроить автоматический ввод пина,
для этого нужен bluez-simple-agent ему нужно скормить bt-addr и пин, говорят тоже можно сделать с bluetoothctl.

Питание: модуль нужно питать от 3.3В, но TX-RX толерантны к 5В, так что можно обойтись без согласователя уровней.

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

Рубрика: pinout, radio | Добавить комментарий

IR TSOP

Для InfraRed -управления в linux используется lirc, поддерживающий кучу готовых инфракрасных ресиверов. Но для самодельного serial ресивера запуск через lirc оказался слишком запутанным. С другой стороны — в ардуино есть готовый пакет IRemote. Заявлено, что библиотека работает даже с Attiny85.

Датчики TSOP имеют три вывода — два для питания и сигнальный. Датчики отличаются формфакторами и рабочими частотами (обычно от 38KHz). Примерные пинауты

tsop17xx pinout diagram

TSOP

TSOP1838-pins

Рубрика: pinout | Добавить комментарий

HC-SR04

Ультразвуковой сонар HC-SR04 дешев (около 50рублей) и прост в управлении. Два вывода — триггер-эмиттер и микрофон-детектор. Акустика трансмиттера и ресивера выглядит одинаковой. Алгоритм использования — включить trigger на 10мс, и затем измерить появление импулься на echo. Разница во времени выдаст два расстояния до препятствия (звук должен сходить до препятствия и вернуться обратно). Излучаются пачки по 8 импульсов на частоте 40кгц. Детальнее можно почитать тут.

hc-sr04

Примерный код

#define trigPin 13
#define echoPin 12
#define led 8


void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(led, OUTPUT);
}


long getSonar(int tPin,int ePin ) { // trigger, echo pins
  
  long duration, distance;
  digitalWrite(tPin, LOW);  
  delayMicroseconds(2); 
  digitalWrite(tPin, HIGH);
  delayMicroseconds(10); 
  digitalWrite(tPin, LOW);
  duration = pulseIn(ePin, HIGH);
  distance = (duration/2) / 29.1;
  return distance;
}

int state = 0;
void toggle_switch() {
  state=!state;
  digitalWrite(led,state?HIGH:LOW);
  Serial.println("trigger:"+String(state));
}

int iam_near = 0;

void loop() {
  long  distance;
  distance = getSonar(trigPin, echoPin);
  int near = (distance<15);
  //Serial.println(String(distance)+"cm");
  if (near && !iam_near) { // switch on please
    toggle_switch();
  }
  iam_near = near;
  
  delay(100);
} 

Рубрика: Без рубрики | Добавить комментарий

i2c scanner

#include <Wire.h>

void setup()
{
  Wire.begin(0,2);     // its ESP-01 config
  // Wire.begin();  // for normal Arduino 
  Serial.begin(115200);                 
  while (!Serial);                    
  Serial.println("\nI2C Scanner");    
}
void loop()
{
  byte error, address;                
  int nDevices;                       
  
  Serial.println("Scanning...");      
  nDevices = 0;                       
  for(address = 1; address < 127; address++ ) 
  {
    
    Wire.beginTransmission(address);          
    error = Wire.endTransmission();           
    if (error == 0)                           
    {                                         
      Serial.print("I2C device found at address 0x");  
      if (address<16)                                  
        Serial.print("0");                             
      Serial.print(address,HEX);                       
      Serial.println("  !");                           
      nDevices++;                                      
    }
    else if (error==4)                                 
    {
      Serial.print("Unknow error at address 0x");      
      if (address<16)                                  
        Serial.print("0");                             
      Serial.println(address,HEX);                     
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else                      
    Serial.println("done\n");                
  delay(5000);                               
}
Рубрика: sketch | Добавить комментарий

esp8266 и 32M

RobotDyn выпускает прекрасные модули — NodeMCU V3 Lua WIFI module integration of ESP8266 + extra memory 32M flash, USB-serial CH340G.

robotdyn_esp8266

Максимум выведенных ног, питание от 5V, на борту USB-Serial преобразователь ср340G, и целых 32М флешка. И все — за 180руб, ну круто же?

В ардуино прекрасно компиляется при выборе board nodeMCU 1.0.
Поставляется с NodeMCU прошивкой (LUA).

Рубрика: pinout | Добавить комментарий