Code Plan

Explanation

The user will be able to push one of the three buttons that are available on the pendant depending on how they are feeling at the moment. Each button will send a different message to the screen of the bracelet.

 

Components

  • 315Mhz RF Transmitter
  • 315Mhz Receiver
  • 3x Push Buttons
  • 3x 10k ohm resistors

 

Pseudocode

​I am using the RadioHead Library, download available here

Using the RH_ASK Class Driver, it works with a wide range of transmitters and receivers.

 

Push Buttons

  • Define all 3 buttons
  • Set pinMode of all 3 buttons to INPUT
  • Read button
  • When button clicked, it sends a message

Using if statements:

  • Message for Button 1: "I feel sick!!"
  • Message for Button 2: "I need to talk to you."
  • Message for Button 3: "HELP!!"

Transmitter

It first initiates the driver

The boolean RH_ASK send takes these parameters: (const uint8_t * data, uint8_t len)

Parameters

[in] data Array of data to be sent 
[in] len Number of bytes of data to send (> 0) 

Returns: true if the message length was valid and it was correctly queued for transmit

Then using the waitPacketSent(), that waits until previous transmit packet is finished being transmitted.

This will then load the message into the transmitter and start it.

Code plan for the transmitter:

// ask_transmitter.pde
// -*- mode: C++ -*-
// Simple example of how to use RadioHead to transmit messages
// with a simple ASK transmitter in a very simple way.
// Implements a simplex (one-way) transmitter with an TX-C1 module

// transmitter pin
#include <RH_ASK.h>
#include <SPI.h> // Not actually used but needed to compile

RH_ASK driver;
//Connect data to pin 12

define all three buttons to 2,4, and 7
set integer currentState to 0

Setup:

Serial.begin(4800);      // Debugging only
set each pinMode of the button to INPUT
 

Loop:

initiate 3 toggleState to read the input of each button

if the toggleState is HIGH, then print string message

     send the message to the receiver, this is where it uses one of the functions from the RadioHead Library
     add a delay of 100-200
  
set each toggleState with different messages

if toggleState is LOW, add one to currentState

 

Receiver

The boolean RH_ASK recv takes these parameters: (uint8_t * buf, uint8_t * len)

Parameters

[in] buf Location to copy the received message 
[in,out] len Pointer to available space in buf. Set to the actual number of octets copied. 

Returns: true if a valid message was copied to buf

This turns the receiver on. If there is a valid message, it will copy it to buf and return true else return false. If a message is copied, *len is set to the length.

Code plan for the receiver:

// ask_receiver.pde
// -*- mode: C++ -*-
// Simple example of how to use RadioHead to receive messages
// with a simple ASK transmitter in a very simple way.
// Implements a simplex (one-way) receiver with an Rx-B1 module

#include <RH_ASK.h>
#include <SPI.h> // Not actualy used but needed to compile

RH_ASK driver;  //Connect data to pin 11

Setup:

Serial.begin(4800);    // Debugging only

Loop:
check string message length

receives the message from the transmitter using the library
parse the string message

return the parsed message

print the message