OK

Při poskytování služeb nám pomáhají soubory cookie. Používáním našich služeb vyjadřujete souhlas s naším používáním souborů cookie. Více informací

Úvodní stránka » IoT - Internet of Things » Konstrukce reálného čidla SIGFOX s WISOL Arduino I.

Konstrukce reálného čidla SIGFOX s WISOL Arduino I.

Na základě četných dotazů čtenářů budu tento článek věnovat konstrukci reálného čidla na bázi modulku SIGFOX WISOL Arduino, který je produktem našeho projektu Arduinotech.cz a který byl popsán v minulém článku. Co vlastně po reálné konstrukci požadujeme? Čidlo musí splnit následující požadavky, abychom jej mohli prohlásit za low power IoT zařízení:

  • Nežrat! Lidově řečeno - tedy musíme jej škrtit na co nejnižší spotřebě
  • Spát! Tím snadněji dosáhneme výše uvedeného bodu - dle možností HW musíme čidlo probudit jen na nejnutnější dobu a tou je zjištění sledovaného stavu a sdělení této skutečnosti dále - tedy komunikace
  • Úsporně komunikovat! Tento bod je zajištěn samotnou modulací, kterou používá Sigfox - energeticky jsme na zlomku toho, co bychom potřebovali třeba u GSM

Příprava HW

Bohužel, Arduino jako takové je konstruováno na poněkud archaickém čipu ATmega328p, nicméně mou snahou bylo zpřístupnit low power IoT velké skupině bastlířů, kteří prostě s Arduinem kamrádi, vyrostli na něm a neumí si bez něj představit svůj projekt. Pokud si Arduino patřičně upravíme (na dodávaných modulcích je již úprava provedena), pak low power režim bude celkem překvapením. Zde si dovolím jednu poznámku - různí pisálkové glorifikující zahraniční produkty v kombinaci Sigfox - Arduino si jaksi neuvědomují, že tak, jak jsou koncipovány, tedy klasické Arduino UNO a k tomu patřičný shield se Sigfox transceiverem v podstatě niky nemůže být základem konstrukce reálného čidla, protože prostě Arduino UNO je z pohledu low power ohromný žrout. Navíc je zde problém s taktováním - přetaktovaný procesor se prostě u -5°C zastaví. Takže Vy z Vás, kteří chcete smysluplně využít zakoupený HW, přemýšlejte o trochu více, než o reklamních výkřicích rádoby odborníku na low power IoT. 

Máme tedy HW postavený na Arduino Pro Mini - je na něm velmi málo zbytečností, ale přece jen se nějaké najdou a těch se musíme zbavit:

  • LEDka indikující přítomnost napájení - tohle je největší problém z pohledu low power, netřeba rozebírat věci kolem něčeho, co trvale svítí, nezbývá, než ji odstranit
  • LEDka na pinu 13 - úmyslně jsem na tento pin přivedl signál budící transceiver, ve sketchi jej pak v low power překonfiguruji na vstup, teče tam velmi malý proud, pokud ledku necháme připojenou, takže odstranit
  • Stabilizátor 5V/3.3V - pracujeme v doméně 3.3V, tento stabilizátor je zbytečný a jeho odstaraněním ušetříme ve spánku cenných 65uA!

Obrázek níže ukazuje ony problematické partie, které jsou předmětem výše uvedených úprav. V oblasti 1 je stabilizátor a ledka napájení, v oblasti 2 pak ledka portu 13.

Reálné testy, které jsem na takto upraveném HW provedl - tedy i s osazeným WISOL transceiverem mi ukázaly nádherných 4,6uA spotřebu ve spánku. Tohle se již velmi blíží čidlům, s "profi" konstrukcí na jiných čipech a dosažená spotřeba se dá s klidným svědomím označit za low power.

Časování a knihovna LowPower

Jak jsem již párkrát zmínil, ATmega328p je archaický čip, který neobsahuje spoustu věcí, z pohledu low power je asi největší nedostatek absence RTC hodin, které by dovedly v hlubokém spánku pracovat s velmi nízkou spotřebou a po nastaveném čase procesor probudit. Nevadí, poradíme si i bez nich, nebudeme hrát na nějakou extra přesnost v časování a zaplatíme menší daď ve formě mírně zvýšené prměrné spotřeby. Naštěstí nemusíme zabíhat do úrovně registrů ATmega328p a vysvětlovat si, jak je co třeba nastavit, abychom donutili Arduino spát a nežrat - tedy splnit 2 ze 3 nutných podmínek, uvedených v úvodu článku. Odpovědí je velmi povedená knihovna LowPower, kterou si stáhněte zde. Je k dispozici několik examplů, nás bude zajímat tento:

#include "LowPower.h"

void setup()
{
// No setup is required for this library
}

void loop()
{
              // Enter power down state for 8 s with ADC and BOD module disabled
              LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

              // Do something here
              // Example: Read sensor, data logging, data transmission.
}

Pro periodické buzení je využíván restart watchdogu v intervalu 8s a prakticky to znamená, že se během 1 dne čidlo probudí 10 800 krát. Ano, to je hodně, nicméně podívejme se na to trochu z jiného úhlu. Po probuzení pouze inkrementujeme čítač a mrkneme, zda je čas vstávat a něco dělat, pak už se jde zase rychle spát. Takže v konečném důsledku jsme vzhůru jen odhadem 20us. To po přepočtu odpovídá času 2,16s, kdy budeme každý den vzhůru jen kvůli zajištění periodické činnosti čidla, což na spotřebu mít bude, ale jen velmi zanedbatelný. Průměrná spotřeba ve spánku se nám bude pohybovat pod 15uA a to je již velmi použitelné.

Testovací sketch

#include <LowPower.h>
#include <NeoSWSerial.h>

#define PERIODE 10
NeoSWSerial WISOL(4,5);
char c;
unsigned int timer = 0x00;
unsigned int periodeCounter = 0x00;
unsigned int uplinkCounter = 0x00;
String response;

void printStars()
{
	Serial.println F("**********************************");
}
void checkResponse()
{
	response = "";
	while(WISOL.available()==0);
	while(WISOL.available()>0)
	{
		delay(5);
		c = WISOL.read();
		response = response + c;
	}
	response = response.substring(0,(response.length()-2));
}
void checkTRX()
{
	response = "";
	c=0x00;
	while(WISOL.available()>0)
	{
		WISOL.read();
		delay(5);
	}
	while(response.substring(0,2) !="OK")
	{
		WISOL.println("AT");
		delay(5);
		response = "";
		while(WISOL.available()>0)
		{
			delay(5);
			c = WISOL.read();
			response = response + c;
		}
		//Serial.println("WISOL response:");
		//Serial.print(response);
	}
}
void getID()
{
	printStars();
	WISOL.println("AT$I=10");
	delay(5);
	response = "";
	while(WISOL.available()>0)
	{
		delay(5);
		c = WISOL.read();
		response = response + c;
	}
	Serial.print("ID:" + response);
	WISOL.println("AT$I=11");
	delay(5);
	response = "";
	while(WISOL.available()>0)
	{
		delay(5);
		c = WISOL.read();
		response = response + c;
	}
	Serial.print("PAC:" + response);
	printStars();
}
void getVersion()
{
	WISOL.println("AT$I=0");
	delay(5);
	response = "";
	while(WISOL.available()>0)
	{
		delay(5);
		c = WISOL.read();
		response = response + c;
	}
	Serial.print("TRX version:" + response);
}
void send(String payload)
{
	Serial.println("Sending payload ...");
	WISOL.print("AT$SF=");
	WISOL.println(payload);
	delay(1000);
	//poškej na OK
	checkResponse();
	if (response == "OK") Serial.println("Payload sent!");
	else Serial.println("Sending Error!");
	return;
}
bool parseCommand(String resp)
{
	if (resp == "sendTest")
	{
		Serial.println("Test message sending...");
		send("ABBA1234");
		return 1;
	}
	if (resp.substring(0,5) == "send:")
	{
		resp = resp.substring(5,resp.length());
		Serial.println("Payload:" + resp);
		send(resp);
		return 1;
	}
	Serial.println F("Unknown command");
	return 0;
}
void transceiverWakeUp()
{
	digitalWrite(13,HIGH);
	delay(100);
	digitalWrite(13,LOW);
	checkTRX();
	Serial.println("TRX ready!");
}

void setup()
{
  Serial.begin(9600);
  WISOL.begin(9600);
  pinMode(13,OUTPUT);
  pinMode(6,OUTPUT);
  printStars();
  Serial.println F("********SIGFOX WISOL Frame********");
  digitalWrite(13,HIGH);
  delay(100);
  digitalWrite(13,LOW);
  checkTRX();
  Serial.println("WISOL detected!");
  getVersion();
  getID();
  response = "";
  timer = (PERIODE * 60)/8;	
  //prvotní odeslání payloadu po zapnutí
  periodeCounter = timer + 1;
}

void loop()
{
	Serial.println F("*********Periodic mode************");
	delay(100);
	while(periodeCounter < timer)
	{
		LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF); 
		periodeCounter++;
	}
	periodeCounter = 0x00;
	pinMode(5,OUTPUT);
	pinMode(13,OUTPUT);
	//probuď transceiver
	transceiverWakeUp();
	send("0101");
	uplinkCounter++;
	Serial.println("Uplink counter:" + String(uplinkCounter));
	//uspi transceiver;
	WISOL.println("AT$P=2");
	delay(10);
	pinMode(5,INPUT);
	pinMode(13,INPUT);
	Serial.println("Sleeping...");
}

Tento sketch vychází ze sketche z minulého článku, kde se nám podařilo zakomunikovat s transceiverem WISOL, nyní jsem tedy doplnil v hlavní smyčce výše popsanou "startegii" pro low power a nechávám čidlo chrlit do éteru každých 10 minut - to je konstanta PERIODE v definici nahoře. Ve smyčce while pak hlídám dosažení času a sketch zde v podstatě brzdím, pokud je čas menší, než nastavená perioda. Jakmile je času dosaženo, provedou se činnosti dále. Probudí se transceiver a dojde k odeslání dat do Sigfox backendu. V tomto příkladu se jedná o pevná data 0101. Pokud vše funguje jak má, na výpisu z terinálu uvidíte toto:

**********************************
********SIGFOX WISOL Frame********
WISOL detected!
TRX version:AX-Sigfox 1.1.0-ETSI
**********************************
ID:001A0BD2
PAC:E2E0219E172E0C4F
**********************************
*********Periodic mode************
TRX ready!
Sending payload ...
Payload sent!
Uplink counter:1
Sleeping...
*********Periodic mode************

... a po 10 minutách se děj opakuje:

TRX ready!
Sending payload ...
Payload sent!
Uplink counter:2
Sleeping...
*********Periodic mode************

Vemte pak do ruky měřák, přepněte jej na mA, vložte do větve napájení a připojte modulek. Uvidíte toto:

  • Modulek je probuzený někde kolem 9 až 11mA (vliv spotřeby Arduina + neuspaného transceiveru)
  • Zahájí prvotní vysílání - uvidíte 3 po sobě jdoucí proudové špičky kolem 50mA zhruba v sekundovém intervalu
  • Modulek přejde do režimu spánku - uvidíte spotřebu někde kolem 4,6uA
  • Modulek se probírá co 8s od restartu watchdogu - "ručička" (uvozovky proto, protože na digitální měřáku již něco podobného žel není a bargraf je pomalý) se teoreticky nachýlí někam k 4mA, ale prakticky to uvidíte jako zákmit někde k 10uA.

Díky úpravám HW a použité metodice jsme se dopracovali k základu reálného čidla, které na jednu lithiovou baterii 3.6V/2600mAh vydrží v provozu mnoho let - platí pro nějakou rozumnou periodu vysílání - cca 24 zpráv denně.

V následujícím článku si pak ukážeme, jak poslat něco smysluplného, třeba data z DS18B20. Využijeme přesně výše uvedený sketch, jen jej doplníme o měření a z dat DS18B20 vyrobíme data pro backend.

PF
petr.foltyn@arduinotech.cz

Přidat komentář

Zvýrazněné položky jsou povinné.

Přehled komentářů

  1. avcnuncb (Best Payday Loan, 15.10.2018 20:31:09) Odpovědět

    poor credit loans <a href="https://creditloansguaranteedapproval.com/">bad credit loans guaranteed approval</a> bad credit loans <a href=https://creditloansguaranteedapproval.com/>credit loans guaranteed approval</a>

  2. fepomnxi (Online Payday Loan, 11.10.2018 12:03:14) Odpovědět

    no credit loans <a href="https://creditloansguaranteedapproval.com">bad credit loans guaranteed approval</a> no credit loans <a href=https://creditloansguaranteedapproval.com>payday load</a>

  3. lccvsuqp (Cash Loan, 10.10.2018 23:51:21) Odpovědět

    how to get cash fast <a href="https://creditloansguaranteedapproval.com">poor credit loans</a> credit loans guaranteed approval <a href=https://creditloansguaranteedapproval.com>loan application template</a>

  4. egehjeff (Pay Day Loans, 8.10.2018 21:25:44) Odpovědět

    poor credit loans guaranteed approval <a href="https://creditloansguaranteedapproval.com">no credit loans</a> lion loans <a href=https://creditloansguaranteedapproval.com>payday loan las vegas</a>

  5. hqvjwdcw (Easy Payday Loan, 19.8.2018 8:21:41) Odpovědět

    lender <a href="https://cashnow.cars">direct lender installment loans</a> lender <a href=https://cashnow.cars>loan lenders</a>

  6. shrwpvbo (Loans For Bad Credit, 18.8.2018 8:34:50) Odpovědět

    lender <a href="https://cashnow.cars">direct lender installment loans</a> personal loan rates <a href=https://cashnow.cars>loan lenders</a>

  7. rhqwwcjf (Quick Loan, 15.8.2018 6:14:23) Odpovědět

    payday lender <a href="https://cashnow.cars">smart loans</a> 500 dollar loan <a href=https://cashnow.cars>loan no credit check</a>

  8. ondoseer (Cash Advance, 14.8.2018 10:39:08) Odpovědět

    payday lender <a href="https://cashnow.cars">payday loan direct lender</a> direct lender installment loans <a href=https://cashnow.cars>lender</a>

  9. bftgzeul (Online Loan, 13.8.2018 9:45:43) Odpovědět

    va loan <a href="https://cashnow.cars">loans no checking account</a> lender <a href=https://cashnow.cars>lender</a>

  10. byngsfxy (Online Loan, 13.8.2018 3:46:52) Odpovědět

    money lender <a href="https://cashnow.cars">direct loan consolidation</a> loan over the phone https://cashnow.cars - 1 hour payday loans no credit check

  11. vdswaryd (Payday Loan, 10.8.2018 6:39:45) Odpovědět

    payday loans without credit check <a href="https://cashnow.cars">payday loans direct lender</a> payday loan direct lender <a href=https://cashnow.cars>large payday loans</a>

  12. hxdjjxsu (Direct Lenders, 9.8.2018 9:45:55) Odpovědět

    internet payday loans <a href="https://cashnow.cars">payday loan direct lender</a> lender https://cashnow.cars - loan servicing primelending

  13. dtzpiird (Fastest Payday Loan, 7.8.2018 4:19:54) Odpovědět

    money lender <a href="https://cashnow.cars">payday loan direct lender</a> payday loans direct lender <a href=https://cashnow.cars>lender</a>

  14. uhyeepim (Payday Express, 5.8.2018 18:12:52) Odpovědět

    direct lender payday loans <a href="https://cashnow.cars">payday loan direct lender</a> payday loans direct lender <a href=https://cashnow.cars>lender</a>

  15. olgmyokj (Quick Loan, 5.8.2018 0:21:02) Odpovědět

    lender <a href="https://cashnow.cars">payday lender</a> direct lender payday loans <a href=https://cashnow.cars>personal loans for bad credit</a>

  16. tsecnchx (Loan Cash, 29.7.2018 17:00:12) Odpovědět

    direct lender payday loans <a href="https://cashnow.cars">christmas loans</a> lender <a href=https://cashnow.cars>loan lenders</a>

  17. atjawzfu (Online Lenders, 27.7.2018 4:30:09) Odpovědět

    direct lender payday loans <a href="https://cashnow.cars">multiple payday loans</a> payday loans direct lender [url=https://cashnow.cars]lender[/url]

  18. xmvzmwbk (Get A Loan, 26.7.2018 9:55:29) Odpovědět

    money lender <a href="https://cashnow.cars">loan lenders</a> credit card loans <a href=https://cashnow.cars>lender</a>

  19. gwwkcvri (Easy Payday Loan, 25.7.2018 17:36:43) Odpovědět

    money lender <a href="https://cashnow.cars">online lenders</a> lender <a href=https://cashnow.cars>bad credit loans with cosigner</a>

  20. bjoeergf (Online Lenders, 25.7.2018 14:44:46) Odpovědět

    direct lender installment loans <a href="https://cashnow.cars">lender</a> lender <a href=https://cashnow.cars>loan lenders</a>

  21. tvvafuer (Direct Lenders, 25.7.2018 12:11:14) Odpovědět

    payday lender <a href="https://cashnow.cars">lender</a> money lender <a href=https://cashnow.cars>loan lenders</a>

  22. wqehbppv (Online Payday Loan, 25.7.2018 9:09:17) Odpovědět

    no interest loans <a href="https://cashnow.cars">credit loans online</a> payday loan direct lender <a href=https://cashnow.cars>payday loan direct lender</a>

  23. wlpnlzwq (Quick Loan, 25.7.2018 6:17:45) Odpovědět

    lender <a href="https://cashnow.cars">lender</a> loan lenders <a href=https://cashnow.cars>loan estimator</a>

  24. mihdspll (Quick Loan, 25.7.2018 3:40:33) Odpovědět

    lender <a href="https://cashnow.cars">payday loans san antonio</a> lender <a href=https://cashnow.cars>lender</a>

  25. pasqitrc (Get A Loan, 24.7.2018 23:20:11) Odpovědět

    loan servicing primelending <a href="https://cashnow.cars">where to get a loan</a> free loans <a href=https://cashnow.cars>money lender</a>

  26. gtfxgclm (Loans For Bad Credit, 24.7.2018 21:05:40) Odpovědět

    loans lenders only <a href="https://cashnow.cars">no credit check payday loans instant approval</a> payday loans in texas <a href=https://cashnow.cars>1000 payday loans</a>

  27. tnkgwqeh (Payday Loan, 24.7.2018 18:00:21) Odpovědět

    payday now loans <a href="https://cashnow.cars">lender</a> direct lender installment loans <a href=https://cashnow.cars>payday loans direct lender</a>

  28. znajflpy (Pay Day Loan, 24.7.2018 15:20:03) Odpovědět

    loan iq <a href="https://cashnow.cars">direct lender installment loans</a> loan online instant <a href=https://cashnow.cars>lender</a>

  29. jjjulcrq (Direct Lenders, 24.7.2018 11:55:13) Odpovědět

    direct lender installment loans <a href="https://cashnow.cars">long term loan</a> payday lender <a href=https://cashnow.cars>lender</a>

  30. uojvvjyz (A Payday Loan, 24.7.2018 8:54:38) Odpovědět

    payday loan services <a href="https://cashnow.cars">on line payday loans</a> money lender <a href=https://cashnow.cars>payday loans tulsa</a>

  31. nyfkvlef (A Payday Loan, 24.7.2018 5:12:00) Odpovědět

    payday loans direct lender <a href="https://cashnow.cars">borrow money with bad credit</a> emergency loans <a href=https://cashnow.cars>loan lenders</a>

  32. kngijojc (Online Loans, 24.7.2018 3:10:47) Odpovědět

    fast online payday <a href="https://cashnow.cars">lender</a> lender <a href=https://cashnow.cars>direct loans</a>

  33. vrxybrlu (Pay Day Loan, 23.7.2018 23:53:55) Odpovědět

    direct lender installment loans <a href="https://cashnow.cars">cash advance payday loans online</a> lender <a href=https://cashnow.cars>lender</a>

  34. hbjvecrk (Fastest Payday Loan, 23.7.2018 20:53:42) Odpovědět

    payday loans direct lender <a href="https://cashnow.cars">lender</a> personal loans online <a href=https://cashnow.cars>lender</a>

  35. fkduyrrp (Online Loans, 23.7.2018 17:29:35) Odpovědět

    lender <a href="https://cashnow.cars">no credit check payday loans instant approval</a> lender <a href=https://cashnow.cars>payday loans direct lender</a>

  36. ldeoczci (Getting A Loan, 20.7.2018 22:55:10) Odpovědět

    checking account advance <a href="https://cashnow.cars">fast and easy payday loans</a> quick cash loans <a href=https://cashnow.cars>money lender</a>

  37. vvifjqnv (Instant Online Loans, 20.7.2018 19:55:08) Odpovědět

    lender <a href="https://cashnow.cars">payday loans direct lender</a> lender <a href=https://cashnow.cars>money lender</a>

  38. gdsrixrv (Money Loan, 20.7.2018 17:09:47) Odpovědět

    lender <a href="https://cashnow.cars">loan lenders</a> lender <a href=https://cashnow.cars>loans in las vegas</a>

  39. waamqaph (A Payday Loan, 20.7.2018 13:51:53) Odpovědět

    loan lenders <a href="https://cashnow.cars">loans in las vegas</a> lender <a href=https://cashnow.cars>payday loans direct lender</a>

  40. amicxcno (Online Payday Loan, 20.7.2018 11:07:01) Odpovědět

    direct lender installment loans <a href="https://cashnow.cars">payday loan direct lender</a> lender <a href=https://cashnow.cars>payday loans direct lender</a>

  41. pgwblsvm (Get A Loan, 20.7.2018 8:12:50) Odpovědět

    money lender <a href="https://cashnow.cars">payday lender</a> chicago payday loans <a href=https://cashnow.cars>payday lender</a>

  42. qwydmspz (Payday Loans Online, 20.7.2018 5:05:37) Odpovědět

    payday loan direct lender <a href="https://cashnow.cars">loan lenders</a> lender <a href=https://cashnow.cars>lender</a>

  43. vepnzify (Cash Loan, 20.7.2018 2:13:22) Odpovědět

    loan lenders <a href="https://cashnow.cars">loans without credit</a> payday loan direct lender <a href=https://cashnow.cars>loan lenders</a>

  44. ornqxmne (Direct Lender Loans, 19.7.2018 22:42:12) Odpovědět

    direct lender payday loans <a href="https://cashnow.cars">unsecured loan</a> direct lender payday loans <a href=https://cashnow.cars>direct lender payday loans</a>

  45. ghrxwefr (Money Loan, 19.7.2018 20:05:02) Odpovědět

    payday lender <a href="https://cashnow.cars">lender</a> debt consolidation with bad credit <a href=https://cashnow.cars>loan iq</a>

  46. ucamlqjg (Speedycash, 19.7.2018 17:06:20) Odpovědět

    lender <a href="https://cashnow.cars">lender</a> lender <a href=https://cashnow.cars>payday loans direct lender</a>

  47. zkjpmbfh (Loan, 19.7.2018 14:20:38) Odpovědět

    payday loans no credit check lenders <a href="https://cashnow.cars">payday loans direct lender</a> loan iq <a href=https://cashnow.cars>debt consolidation with bad credit</a>

  48. lcboxiws (Spotloan, 19.7.2018 11:11:13) Odpovědět

    direct lender payday loans <a href="https://cashnow.cars">payday loans direct lender</a> lender <a href=https://cashnow.cars>payday loan direct lender</a>

  49. nmodvoor (Speedycash, 19.7.2018 7:36:53) Odpovědět

    lender <a href="https://cashnow.cars">loan lenders</a> payday loan direct lender <a href=https://cashnow.cars>lender</a>

  50. forlkmzu (Payday Loan, 19.7.2018 4:39:31) Odpovědět

    lender <a href="https://cashnow.cars">lender</a> lender <a href=https://cashnow.cars>loans for startups</a>

předchozí
1 | 2 | 3 následující

TOP produkty

Arduino MEGA2560

Arduino MEGA2560
424 Kč s DPH

Arduino DUE

Arduino DUE
696 Kč s DPH

Kontakt

Ing. Petr Foltýn
Kunčice pod Ondřejníkem 814, 73913
TOPlist