I have an always on net-book for weather forecast (yeah, when paragliding, you need the most up to date forecast)
It basically displays a full screen custom web-page with time and date and weather.
Its always on, not really good for the back-light and energy consumption.
So I got the idea of plugging a PIR sensor to wake up the screen when someone approach it.
Take an Arduino Micro Pro (4€ for the Chinese version), a PIR sensor (2€), a Hammond case (1€) and an USB A male from scrap (0€).
Let’s give a try, with a basic wiring, and this sketch to emulate keyboard thanks to it’s USB HID, the Arduino Micro Pro is a must.
Updated 05-01-2017:
- code with USB wakeuphost and capslock instead of ctrl
- green TX led always on
- orange RX led only on motion
#include <Keyboard.h>
#define SENSOR_PIN 10 // Senor state input pin
#define RX_LED_PIN 17 // The RX LED has a defined Arduino pin
static bool sensor_previous_state = false;
void setup()
{
pinMode(SENSOR_PIN, INPUT); // PIR sensor pin as input
pinMode(RX_LED_PIN, OUTPUT); // RX LED as an output
digitalWrite(RX_LED_PIN, HIGH); // RX LED off
TXLED0; // switch on TX green to show init/powered up (only available by macro)
sensor_previous_state = digitalRead(SENSOR_PIN); // get sensor initial state (can be already true)
}
void loop()
{
bool sensor_current_state = digitalRead(SENSOR_PIN);
if ( sensor_previous_state == false // looping until we detect a rising edge
&& sensor_current_state == true) {// when sensor state is trigged, it takes about 20 sec to recover
digitalWrite(RX_LED_PIN, LOW); // set the LED on
USBDevice.wakeupHost();
Keyboard.press( KEY_CAPS_LOCK );
Keyboard.release( KEY_CAPS_LOCK );
TXLED0; // great hackery in this: we have to force down the TXLED
delay(1000); // wait a bit for the led
} else {
digitalWrite(RX_LED_PIN, HIGH); // set the LED off
TXLED0;
}
sensor_previous_state = sensor_current_state;
}












