TinyOS Programming
ͼ3.2 telosb½ÚµãµÄ·´Ãæ
½ÓÏÂÀ´Õë¶ÔTelosbƽ̨ӵÓеÄ×ÊÔ´ÖбȽϳ£ÓõĿɱà³Ì²¿·Ö£¬½áºÏTinyOSÖÐÌṩµÄ¶ÔÓ¦µÄ×é¼þ¼°½Ó¿Ú½øÐнéÉÜ¡£
3.1 Led
3.1.1 TelosbÓ²¼þƽ̨ÉϵÄLedÆ÷¼þչʾ
Led¿ÉÒÔ˵ÊÇTinyOS±à³ÌÖÐ×î³£ÓõĿɱà³ÌÆ÷¼þÖ®Ò»¡£Æä±à³ÌÒ²±È½Ï¼òµ¥£¬Ò»°ãÖ»ÊÇÁîÆäÁÁ¡¢Ï¨ÃðµÈ¡£ÔÚTelosb½ÚµãÖÐÆäËùÔÚλÖÃÈçͼ3.3Ëùʾ£º
ͼ 3.3 LED
3.1.2 TinyOSÖÐLed±à³Ì×é¼þ½éÉÜ
1) ½Ó¿Ú
¹ØÓÚLEDµÄ½Ó¿Ú½öÓÐÒ»¸ö£¬¸Ã½Ó¿ÚÎļþÔÚÒÔÏÂĿ¼£ºtinyos-2.x\\tos\\interfaces£¬ÎļþÃûΪLeds.nc¡£ÆäÄÚÈÝÈçÏ£º
Page 22 of 94
TinyOS Programming
interface Leds {
async command result_t init(); //³õʼ»¯LED£¨½Ó¿Ú£© async command result_t redOn(); //ÁîºìÉ«LEDÁÁ async command result_t redOff(); //ÁîºìÉ«LEDϨÃð async command result_t redToggle(); //ÁîºìÉ«LED¸Ä±ä״̬ //ÈôÁÁÔòϨÃ𣬷´Ö®ÒàÈ» async command result_t greenOn(); async command result_t greenOff(); async command result_t greenToggle(); async command result_t yellowOn(); async command result_t yellowOff(); async command result_t yellowToggle();
async command uint8_t get(); //»ñÈ¡LEDµ±Ç°×´Ì¬,¼´ÄĸöLedÁÁ»¹ÊÇϨÃð async command result_t set(uint8_t value);//ÉèÖÃLEDµÄ״̬£¨0~7£© }
2) ×é¼þ
ÌṩLeds½Ó¿ÚµÄ×é¼þÓÐÁ½¸ö£¬Ò»¸öÊÇÄ£¿éLedsC£¬ÁíÒ»¸öÊÇÄ£¿éNoLedsC¡£ÕâÁ½¸öÄ£¿éµÄÎļþ¶¼ÊÇÔÚtinyos-2.x\\tos\\system Ŀ¼Ï£¬¶ÔÓ¦ÎļþÃû·Ö±ðÊÇLedsC.ncºÍNoLedsC.nc¡£
ÆäÖУ¬NoLedsÄ£¿é²¢·ÇÕæÕý¿ØÖÆLEDÆ÷¼þ£¬LedsC²ÅÊÇʵʵÔÚÔڵؿØÖÆLEDÆ÷¼þ¡£LED¿ÉÒÔ˵ÊÇTelosb½ÚµãµÄΨһ¡°½çÃæ¡±£¬ºÜ¶à±à³ÌÈËÔ±¶¼ÓÃÆäÀ´µ÷ÊÔ³ÌÐò¡£
3.2 ´«¸ÐÆ÷
´«¸ÐÆ÷¿ÉÒÔ˵ÊÇÎÞÏß´«¸ÐÆ÷ÍøÂçµÄÖØÍ·Ï·Ö®Ò»£¬¼¸ºõËùÓеÄÓ¦Óö¼»áÉæ¼°µ½´ËÆ÷¼þ¡£
3.2.1 TelosbÓ²¼þƽ̨ÉϵĴ«¸ÐÆ÷չʾ
Ò»°ã¶øÑÔ£¬Telosbƽ̨ÉϵĴ«¸ÐÆ÷ÓÐËĸö£¬Ò²¿ÉÄÜÖ»ÓÐÄÚ²¿µÄÁ½¸ö£¬´«¸ÐÆ÷ÊýÁ¿²»Í¬£¬½ÚµãµÄ¼Û¸ñÓÐËùÇø±ð£º
? ÄÚ²¿µçѹ´«¸ÐÆ÷ ? ÄÚ²¿Î¶ȴ«¸ÐÆ÷ ? ÍâÖõÄÊý×ÖÎÂʪ¶È´«¸ÐÆ÷ ? ÍâÖõĹâµç´«¸ÐÆ÷
ÆäÖУ¬ÄÚ²¿µçѹ¡¢ÄÚ²¿Î¶ȴ«¸ÐÆ÷±íÃæÉϲ»¿É¼û£¬ÍâÖõĴ«¸ÐÆ÷ÔòÈçͼ3.4Ëùʾ¡£
ͼ 3.4 ¹â¡¢Êý×ÖÎÂʪ¶È´«¸ÐÆ÷
Page 23 of 94
TinyOS Programming
3.2.2 TinyOSÖд«¸ÐÆ÷±à³Ì×é¼þ½éÉÜ
1) ½Ó¿Ú
Telosbƽ̨ÖУ¬´«¸ÐÆ÷Êý¾ÝµÄ¶ÁÈ¡ÊÇͨ¹ýADCµÄ£¬¹Ê´«¸ÐÆ÷·½ÃæµÄ±à³Ì¡°Êµ¼ÊÉÏ¡±ÊǶÔADCµÄ±à³Ì¡£
TinyOSÖУ¬ÓëADCµÄÏà¹ØµÄ½Ó¿ÚÓÐADC¡¢ADCControl¼°ADCErrorµÈ¡£ÆäËùÔÚĿ¼Ϊ£ºtinyos-2.x\\tos\\interfaces£¬¶ÔÓ¦ÎļþÃûÒÀ´ÎÊÇ£ºADC.nc¡¢ADCControl.nc¼°ADCError.nc¡£
ADC½Ó¿ÚµÄÄÚÈÝÈçÏ£º /************ * °üº¬ADC.hÍ·Îļþ£¬ * ×¢£ºnesCÖУ¬°üº¬Í·Îļþ²»ÊÇÀàËÆÓÚCÓïÑ﵀ #include ¡°XX.h¡± ************/ includes ADC; interface ADC { /* ÔÚÖ¸¶¨µÄ¶Ë¿ÚÉÏ (ADCControl½Ó¿Ú°ó¶¨µÄ)£¬½øÐÐADCת»» */ async command result_t getData(); /* ÔÚÖ¸¶¨µÄ¶Ë¿ÚÉÏ (ADCControl½Ó¿Ú°ó¶¨µÄ)£¬½øÐÐһϵÁеÄADCת»» */ async command result_t getContinuousData(); /*ADCת»»½áÊø£¬´¥·¢´Ëʼþ£¬dataΪËùµÃÊý¾Ý */ async event result_t dataReady(uint16_t data); } ADCControlµÄÄÚÈÝÈçÏ£º
interface ADCControl { /* ³õʼ»¯ADCControl½Ó¿Ú */ command result_t init(); /* ÉèÖòÉÑùƵÂÊ */ command result_t setSamplingRate(uint8_t rate); /* ½«port°ó¶¨µ½ADC¶Ë¿ÚadcPort*/ command result_t bindPort(uint8_t port, uint8_t adcPort); } ADCErrorµÄÄÚÈÝÈçÏ£º
interface ADCError{ command result_t enable(); //ÔÚÖ¸¶¨µÄADCͨµÀ¼¤»î´íÎ󱨸æ command result_t disable(); //ÔÚÖ¸¶¨µÄADCͨµÀÈ¡Ïû´íÎ󱨸æ event result_t error(uint8_t token); //´íÎó²úÉúÔò´¥·¢´Ëʼþ } Æäʵ£¬¸úADCÏà¹ØµÄ½Ó¿Ú²¢²»Ö¹ÒÔÉÏÈý¸ö£¬ÀýÈ磺HPLADC£¬²¢ÇÒTelosbƽ̨ËùÓõÄMSP430 MCUÒ²ÌṩÁ˼¸¸öADCÏà¹ØµÄ½Ó¿Ú£¬µ«ÔÚÓ¦ÓóÌÐòµÄ±àдÖÐÒ»°ãÖ»Óõ½ÒÔÉÏÈý¸ö½Ó¿Ú£¬¹ÊÔÚ´ËÖ»½éÉÜÉÏÊöÈý¸ö½Ó¿Ú£¬¶ÔÓÚÆäËüµÄ½Ó¿Ú£¬Èç¹û´ó¼ÒÓÐÐËȤµÄ»°£¬×Ô¼º¿ÉÒÔÈ¥Á˽âһϡ£
2) ×é¼þ
TinyOSÖÐÌṩÉÏÊö¼¸¸ö½Ó¿ÚµÄ×é¼þ±È½Ï¶à£¬ÓÉÓÚÆª·ùÓÐÏÞ£¬±¾½ÚÖ»½éÉܸú±¾½ÚÌáµ½µÄ´«¸ÐÆ÷Ïà¹ØµÄ¼¸¸ö×é¼þ£¬²¢ÇÒ½öÏÞÓÚTelosbƽ̨¡£
a) ÄÚ²¿µçѹ´«¸ÐÆ÷
Page 24 of 94
TinyOS Programming
ÄÚ²¿µçѹ´«¸ÐÆ÷Ïà¹ØµÄ×é¼þÊÇInternalVoltageC£¬ËùÔÚĿ¼Ϊ£ºtinyos-2.x\\tos\\chips\\msp430\\sensors£¬Ïà¹ØÎļþÒÀ´ÎΪ: Msp430InternalVoltageC.nc¼°Msp430InternalVoltageP.nc¡£Í¨¹ýµ÷ÓÃÆäÌṩµÄ½Ó¿ÚRead¼´¿ÉÒÔ¶ÁÈ¡ÄÚ²¿µçѹ²ÉÑùÖµ£¬¾¹ý¼ÆËãºó¿ÉÒÔת»¯Îªµçѹֵ¡£
b) ÄÚ²¿Î¶ȴ«¸ÐÆ÷
ÄÚ²¿Î¶ȴ«¸ÐÆ÷Æ÷Ïà¹ØµÄ×é¼þÊÇInternalTempC£¬ËùÔÚĿ¼Ϊ£ºtinyos-2.x\\tos\\ chips\\msp430\\sensors£¬Ïà¹ØÎļþÒÀ´ÎΪ£ºMsp430InternalTemperatureC.nc¼°Msp430InternalTemperatureP.nc¡£Í¨¹ýµ÷ÓÃÆäÌṩµÄ½Ó¿ÚRead¼´¿ÉÒÔ¶ÁÈ¡ÄÚ²¿Î¶ȲÉÑùÖµ£¬¾¹ý¼ÆËãºó¿ÉÒÔת»¯ÎªÎ¶ÈÖµ¡£
c) Êý×ÖÎÂʪ¶È´«¸ÐÆ÷ d) ¹âµç´«¸ÐÆ÷
ÔÚtinyos2.xÖÐûÓÐÌṩ¿ÉÒÔÖ±½Óµ÷ÓõÄÊý×ÖÎÂʪ¶È´«¸ÐÆ÷ºÍ¹âµç´«¸ÐÆ÷×é¼þ¡£¹ØÓÚÕâÁ½ÖÖ´«¸ÐÆ÷µÄÓ¦ÓÃÔÚÏÂÒ»Õ½éÉÜ¡£
3.3 ´®¿Ú
´®¿ÚÉ豸ͨ³£ÓÃÀ´¸úPCͨÐÅ¡£´®¿Ú±à³ÌÊÇTinyOS±à³Ì±Ø²»¿ÉÉٵIJ¿·Ö¡£
3.3.1 TelosbÓ²¼þƽ̨ÉϵĴ®¿Úչʾ
Telosbƽ̨ÓÐÁ½¸ö´®¿Ú£¬·Ö±ðÊÇ´®¿Ú0ºÍ´®¿Ú1¡£Telosbƽ̨ÖеĴ®¿Ú×ÊÔ´ÊÇÆäMCU¡ª¡ªmsp430ÖеÄ×ÊÔ´£¬TinyOSÖÐĬÈÏʹÓõÄÊÇ´®¿Ú1¡£Èçͼ3.5Ëùʾ£¬¶Ô´®¿Ú½øÐжÁд²Ù×÷ʱ£¬Êý¾Ý¾¹ýUSBת´®¿ÚоƬFT232BMÔÙ½«Êý¾Ý´«Êäµ½PCÖеÄUSB½Ó¿Ú¡£
ͼ 3.5 USBת´®¿ÚоƬ
Èçͼ3.6Ëùʾ£¬´®¿Ú0´ÓMSP430ÒýÏß³öÀ´¡£
ͼ3.6 ´®¿Ú0·¢ËͽÓÊÕÏß
Page 25 of 94