Простая антенна для SIM800L

Неожиданно резко выросло “качество связи” SIM800, притом что сейчас тут ночь. На вышке что-то поменяли/перестроили?.. чудеса.


То есть было 9-10 попугаев, иногда до 12, а тут 13-16-17!

А вообще машинка работает как часы, по расчету аккума хватит на… 3.8 месяца.

осень на носу, ночное тропо попёрло

Наверное. Тем более что все вернулось, как было.

на 1300, ночью, в хорошее тропо были связи мощностью 10 милливатт на расстояние 30км, эфир буквально звенел, как по телефону

Добавил часы на DS1302. Поскольку у них нет провода с будильником, по которому можно было бы элементарно пробуждать спящий Уно, то пришлось запрограммить весьма хитро-ж. логику с числом прерываний от вачдога. Запоминается время засыпания в неизменной части ОЗУ, которая не меняется при сбросах, затем при пробуждении подсчитывается время, рассчитывается время вачдога (8сек номинал), время до следующего начала часа, и число вачдоговых прерываний, чтобы проснуться ровно в час.
В результате пробуждения и выдача показаний происходит ±1 минута ровно по часам, что удобно для графика.
Вот такая у меня кустовая тамагочи. Думаю теперь оставить её на зиму? Увеличить время до 4х часов, тогда по расчету акк хватит до весны; но он конечно перемерзнет, когда будет -45°С. Я замаскировал его черным пакетом, и, поскольку Енисей сейчас не перемерзает, то по воде на остров вряд ли кто зимой попрывет в холодрыгу… (а так по льду любой дурак мог перейти зимой).
Связь кстати получше на 1 попугая стала с другим модулем.

вот не воспринимаю я код со слов )))
PS ломал я доступ к станкам хранящим код доступа в ОЗУ, хорошие были станки, вытащил батарейки (или разрядились) и всё, вызывай наладчиков

и да, заменил кабель, идущий в воду, тк его переклевала чайка или баклан. Причем в с 23 до 00 часов! ночь лунная была чтоли?.. подумал видимо что это такой блестящий червячок из воды торчит.

тогда вот:

#include <avr/wdt.h>
#include <avr/sleep.h>
#include <avr/power.h>  


 volatile Ds1302::DateTime start  __attribute__ ((section (".noinit")));
 Ds1302::DateTime stop;



void OffPwr()
{
  PumpOff //digitalWrite(A3, 0);
 //светодиоды индикации:
  digitalWrite(LedR,0); //гасить

  // все ноги к земле:
  pinMode(9,OUTPUT); digitalWrite(9, 0); //Tsensor
  digitalWrite(8, 0);
  digitalWrite(7, 0);
  digitalWrite(A1, 0);
  digitalWrite(A2, 0);
  digitalWrite(A4, 0);
  digitalWrite(A5, 0);
  digitalWrite(PinVddOff,1);  //Vdd периферии откл все
}



 
void OffAll()
{
  //расчеты числа прерываний вачдога: ---------------------
  RecStart();

  if(EE.B.PerMinut<10 || EE.B.PerMinut>24*60) EE.B.PerMinut=60; //на случай сбоя периода
  uint32_t NeedSec = EE.B.PerMinut * 60UL; 
  if(start.minute<50) NeedSec -= start.minute * 60UL + start.second; // перешли, убавляем остаток до след. часа
    else              NeedSec += 3600UL - start.minute * 60UL - start.second; // немного не дошли до часа, добавляем остаток до часа

  WDTcnt = (uint16_t) ((float)NeedSec / EE.B.Twdt);
  WdtMem=WDTcnt; //for count Twdt

#ifdef DebTime //--------------------------------
  //вывод значений перед засыпанием, для диагностики
  oled.init(); oled.clear();  oled.setScale(1); oled.home();  
  oled.print("NS="); oled.println(NeedSec); 
  oled.print("W="); oled.println(WDTcnt); 
  oled.print("Tw="); oled.println(EE.B.Twdt); 
  oled.print(start.minute); oled.print(":"); oled.println(start.second);
  delay(20000);
#endif /--------------------------------------------------

// WDTcnt=4;//!!!!!! 


  OffPwr();  // отключение всего от питания
  ADCSRA = 0;  // disable ADC
  MCUSR = 0;   // clear various  "reset " flags  
  
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);  
  sleep_enable();
 
  // turn off brown-out enable in software
  MCUCR = bit (BODS) | bit (BODSE);
  MCUCR = bit (BODS); 
  interrupts ();             // guarantees next instruction executed

  while(1) //(StateActive == false)
  {
    OffPwr();  
    asm("sleep");
  }
} //________________________________________________





ISR(WATCHDOG) 
{
  // if(digitalRead(LedR)) digitalWrite(LedR, 0); else digitalWrite(LedR, 1);   //мигать красным
  if(0==WDTcnt) return;
  WDTcnt--;
  Watchdog.enable(INTERRUPT_RESET_MODE, WDT_PRESCALER_1024);  // Режим генерации прерываний , таймаут ~8с
 }


  

void RecStart() //записать время начала сна
{
    rtc.getDateTime(&start);
}


void RecStopCalc()
{
  float Tw;
  uint32_t Start, Stop, Delta; //sec
   rtc.getDateTime(&stop);

  Start = start.hour * 3600UL + start.minute * 60UL + start.second;
  Stop  = stop.hour  * 3600UL + stop.minute  * 60UL + stop.second;
  if(Start>Stop) Stop+=24*3600;
  Delta=Stop-Start;

  Tw = (float)Delta / (float)WdtMem; // WDT time, sec
  if(Tw<10.0f && Tw>7.0f)  EE.B.Twdt = Tw; //test limits; else from EE
  if(EE.B.Twdt>10.0f || EE.B.Twdt < 7.0f) EE.B.Twdt=8.12; //if err count
  // WrEEsets();
}

Пояснительные картинки: антенна в кустах, видна заклеенная лодочным клеем в июне часть кабеля, припаянного к вибраторам ; кусты вид снаружи и плавсредство. 8сент было, руки мерзли уже.



Кроме того, антенна была опущена вниз - держалась она отлично, но… на неё видимо села птичка! на такое рассчитано не было. Поэтому я просверлил и законтрил М3 винтом с гайкой. Поэтому и связь получше, особенно если на антенне никто не сидит ахаха.

Осень наступила
Высохли цветы
Мне никто не нужен
Кроме ты!

Моя погодная тамагочи, висящая над речкой (в голых, видимо, кустах) работает отлично. 52 дня. Правда морозов пока не было серьезных, любопытно посмотреть, сколько она выдержит. Связь временами сильно улучшается, видимо сказывается то, что листва облетела. Но доплыть туда мне уже не судьба в такую холодину.
Батарейки должно хватить, до лета, если тупо-линейно считать ее разряд. Но это конечно вряд ли.

виды у вас там умиротворяющие, в цивилизацию не захочется :grinning:

Это сентябрьские фотки, сейчас там всё намного мрачнее наверное.
А так да, летом тут хорошо.

смотришь - человек это звучит гордо, а вот в горах понимаешь - ты просто пыль в этом мироздании

У вас там шикарно, может как нибудь доберусь.

65 дней, мороз до -16 моя кустовая тамагочи держит отлично. Продолжаю наблюдение!

Скажи, а для чего тебе нужны эти данные? Простое любопытство или…?

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

пора выкладывать в проекты, хорошо спит, хорошо просыпается

Летом был смысл погоду посмотреть в интересной точке; а сейчас - любопытство: выдержит зиму/нет? Чего ей дома лежать.