01204423
play

(01204423) Sensor Node Programming II (UART and Radio) Chaiporn - PowerPoint PPT Presentation

Network Kernel Architectures and Implementation (01204423) Sensor Node Programming II (UART and Radio) Chaiporn Jaikaeo chaiporn.j@ku.ac.th Department of Computer Engineering Kasetsart University Outline UART communication Single-hop


  1. Network Kernel Architectures and Implementation (01204423) Sensor Node Programming II (UART and Radio) Chaiporn Jaikaeo chaiporn.j@ku.ac.th Department of Computer Engineering Kasetsart University

  2. Outline UART communication  Single-hop radio communication  2

  3. Connecting Mote to PC USB connector on IWING-MRF and IWING-JN  3.3V RX TX GND USB dongles  3.3V 5V RX TX GND USB Dongle based on Silicon Labs’s CP2102 ThaiEasyElec’s USB Dongle (FDTI) 3

  4. UA UART RT API ( motelib/uart.h ) Enable UART (both TX and RX)  uartEnable(true,true); Send a single byte over UART  uartWriteByte(50); Send multiple bytes over UART  uint8_t buf[10]; : uartWrite(buf, 10); 4

  5. UART API (cont'd) Check whether there is any data received  from UART if (uartInputLen() > 0) ... Read a single byte from UART input buffer  uint8_t byte = uartReadByte(); Send formatted string over UART using  Standard I/O library #include <stdio.h> : : printf("Hello, world\n"); printf("i = %d\n", i); 5

  6. Processing UART Data on PC Locate UART device file  Run dmesg to find out  Usually /dev/ttyUSB0 or /dev/ttyACM0  $ dmesg : [70063.712091] usb 4-1: new low speed USB device using uhci_hcd and .. [70063.871042] usb 4-1: config 1 interface 1 altsetting .. [70063.871056] usb 4-1: config 1 interface 1 altsetting .. [70063.895220] cdc_acm 4-1:1.0: ttyACM0: USB ACM device For textual data  Run terminal program such as screen ,  gtk-term , putty on UART device For binary data  Any UART library can be used  E.g., Python's serial package  6

  7. USB-UART Implementation MoteLib provides UART-via-USB  implementation for IWING-MRF platform (>= rev. 388)  Emulated using V-USB library by Objective Development  Based on AVR-CDC project (http://www.recursion.jp/avrcdc/) Requires no USB dongle  Build your app with UART_VIA_USB=1  $ make UART_VIA_USB=1 ... 7

  8. Example: sense-to-uart.c Sense light intensity every second; send  values to display via UART void senseDone( uint16_t value) #include <stdio.h> { #include <motelib/system.h> printf("Light = %d\r\n", value); #include <motelib/timer.h> actorSetState(ACTOR_0, 0); #include <motelib/uart.h> } #include <motelib/sensor.h> #include <motelib/actor.h> void sense(Timer *t) { Timer t; actorSetState(ACTOR_0, 1); void senseDone( uint16_t value); sensorRequestAnalog(SENSOR_1, senseDone); void sense(Timer *t); } void boot() { uartEnable(true,true); timerCreate(&t); timerStart(&t, TIMER_PERIODIC, 1000, sense); } 8

  9. Testing sense-to-uart Build with UART_VIA_USB option  $ make UART_VIA_USB=1 flash Capture UART output using screen  (or gtk-term or putty) $ screen /dev/ttyACM0 9

  10. Radio Communication IWING-MRF: Microchip's MRF24J40 controller  IWING-JN: Built-in  IEEE 802.15.4 @ 2.4 GHz, 250 kbps  16 non-overlapping channels  16-bit node ID  16-bit PAN (Personal Area Network) ID  10

  11. Configuring Radio (IWING-MRF) Use config-mote.py script located in  $MOTELIB_DIR/platforms/iwing- mrf/tools Have mote enter bootloader, then run:  $ cd $MOTELIB_DIR/platforms/iwing-mrf/tools $ ./config-mote.py E.g., set address to 234 and PAN ID to 555  $ ./config-mote.py --address 234 --panid 555 Set channel to 0x1A  $ ./config-mote.py --channel 0x1A 11

  12. Configure Radio (IWING-JN) Set the following variables via make   DEFAULT_ADDR  DEFAULT_PANID  DEFAULT_CHANNEL Example:  $ make PLATFORM=iwing-jn DEFAULT_ADDR=50 12

  13. Radio Message Format Type Seq No. App Data Check 802.15.4 Header (1 byte) (1 byte) (max ~100 bytes) sum Type and application data are provided by  the application via Radio API 13

  14. Radio API ( motelib/radio.h ) Broadcast a message (type=7) containing  "HELLO" to all neighbors  Call txDone() when message has been sent radioRequestTx(BROADCAST_ADDR, 7, "HELLO", 5, txDone); : void txDone(RadioStatus status) { : }  Use NULL when callback is not needed radioRequestTx(BROADCAST_ADDR, 7, "HELLO", 5, NULL); 14

  15. Radio API (cont'd) Set a handler to process received  messages radioSetRxHandler(receive); : void receive(Address src, MessageType type, void *msg, uint8_t len) { : } 15

  16. Example: sense-to-base.c Every second, each sensor node measures light  intensity and reports to the base station Assume base station has address = 0  Base station reports light measurements over  UART Base station Sensor node Sensor nodes measuring light intensity 16

  17. sense-to-base.c #include <motelib/system.h> void sense(Timer *t) #include <motelib/timer.h> { #include <motelib/radio.h> actorSetState(ACTOR_0, 1); #include <motelib/sensor.h> sensorRequestAnalog( #include <motelib/actor.h> SENSOR_1, senseDone); } Timer t; void sense(Timer *t); void senseDone( uint16_t value) void senseDone( uint16_t value); { radioRequestTx(0, 1, &value, void boot() sizeof (value), NULL); { actorSetState(ACTOR_0, 0); timerCreate(&t); } timerStart( &t, TIMER_PERIODIC, 1000, sense); } 17

  18. base.c #include <stdio.h> #include <motelib/system.h> #include <motelib/radio.h> #include <motelib/uart.h> void receive(Address src, MessageType type, void *msg, uint8_t len) { if (type == 1) { printf("Node %d: Light = %d\n", src, *(( uint16_t *)msg)); } } void boot() { uartEnable(true,true); radioSetRxHandler(receive); } 18

  19. Exercise: Voting Machine Create an application for wireless voting  machine  Allow user to cast a vote using the USER button  Voting choices are: Red (1), Yellow (2), Green (3), or No Vote (0)  When the USER button is pressed, Set LED status accordingly  Report current vote to the base station (#1) with  message type 50 19

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend