author

gm310509

22
Inbox View Profile
6Instructables31,864Views26CommentsSydney, Australia
I am an IT professional working in Big Data. I've also been messing around with IoT devices such as Arduino, Raspberry PI and electronics for decades. I also have a passion for both giving and receiving knowledge. It is a good day if I've learned something new and helped somebody else.

Achievements

10K+ Views Earned a bronze medal
    • Event Countdown Clock (Covid Clock - V2.0)
      353 views
      4 favorites
      0 comments
  • Achieve the 3 Elusive Achievements

    LOL, thanks for the post it is very informative. I couldn't help but to comment in an attempt to get 1 step closer to the comments achievement.

    View Instructable »
  • gm310509's instructable Painless WiFi on Arduino's weekly stats:
    • Painless WiFi on Arduino
      592 views
      6 favorites
      0 comments
  • Motion Activated Automatic LED Stair Lighting With Arduino (Updated)

    Nice idea - so I'm assuming as people approach the front door, the button "fades on" to draw visitors attention to the door bell and make it easy to find. Cool!With a simple mod to the code, you can maybe make it pulsate as well. i.e. once it is faded on, you could fade it off to, say, 40-50% then back to 100% a few times. This would make it even more noticeable - and hopefully not too creepy :-).

    View Instructable »
  • Arduino MEGA 2560 With WiFi Built-in - ESP8266

    I would like to run the ESP8266 in AT mode, but I am completely confused about your statement to "download the PDF file" (step 5) - how does that help me run it in AT mode?Where can I get the AT mode firmware for the ESP8266 it doesn't seem to be in any of the samples. Maybe I am missing something, but I can not seem to find a reference anywhere on this page!?!?

    View Instructable »
  • Cooperative Multitasking on Arduino - With Pretty Blinky Lights!

    @marciot, you might be interested in my quarantine clock project that I just posted (link below). It uses timer interrupts to drive the refresh one of displays.As a point of interest, you can compile the program two ways - one way uses interrupts to drive the refreshing of the display; The other way uses a polling mechanism to drive the display refresh. All you need to do is define/not define a constant to switch modes.There are detailed comments in the code - including a description of an experiment that illustrates the benefit of using an interrupt driven architecture for time critical activities (and the potential pitfall of not...).Anyway, I thought you might be interested.Best Regardshttps://www.instructables.com/Corona-Virus-Quarantine-Clock/

    View Instructable »
  • Motion Activated Automatic LED Stair Lighting With Arduino (Updated)

    Hi Mikeoo, I am not sure if you are still interested, but I've updated the code to support any number of PIRs (obviously at least one is required :-)). The code still defines just a single PIR, but comments at line 37 show how to define more with examples for 2 and 3 PIRs. Also, I have described in the steps how to go about hooking up additional PIR(s).

    View Instructable »
  • gm310509's instructable Coronavirus Quarantine Clock's weekly stats:
    • Coronavirus Quarantine Clock
      43 views
      0 favorites
      0 comments
  • How to Change Fuse Bits of AVR Atmega328p - 8bit Microcontroller Using Arduino

    Arduino developed LED project still operating just fine on bare ATMega328P MCU - minus the crystal oscillator and supporting capacitors.

    View Instructable »
  • How to Change Fuse Bits of AVR Atmega328p - 8bit Microcontroller Using Arduino

    A very useful article, but possibly dated.In my case (Arduino IDE v1,8,12 / Windows 10) the boards.txt and variants directory (step 7) were not in the program files directory. Rather, they were in "c:\users\<my user>\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3"Additionally, I found that when running avrdude, I had to specify where its configuration file was on the command line. This is achieved using the -C option... For example:avrdude -P com37 -b 19200 -c stk500 -p m328p -C "C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf" -vIn the above command I was using an stk500 as the programmer (as opposed to an Arduino Mega). If you are using an Arduino Mega as the programmer, then you should still probably use -c arduino (as opposed t…

    see more »

    A very useful article, but possibly dated.In my case (Arduino IDE v1,8,12 / Windows 10) the boards.txt and variants directory (step 7) were not in the program files directory. Rather, they were in "c:\users\<my user>\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3"Additionally, I found that when running avrdude, I had to specify where its configuration file was on the command line. This is achieved using the -C option... For example:avrdude -P com37 -b 19200 -c stk500 -p m328p -C "C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf" -vIn the above command I was using an stk500 as the programmer (as opposed to an Arduino Mega). If you are using an Arduino Mega as the programmer, then you should still probably use -c arduino (as opposed to -c stk500) in the command line. And obviously you should use whatever COM port your programmer is connected to, not just copy my specific example of COM37!Again very useful - apart from those two minor points, everything else was correct.

    View Instructable »
      • ESP8266-01 With HTU21 (MQTT)
      • Driving a 4 Channel Relay Board With ESP8266-01 and MQTT and OpenHAB
      • Working With the Funduino W5100 Ethernet Module.
  • Motion Activated Automatic LED Stair Lighting With Arduino

    Hi Acieus,Actually the LDR was just one of a couple that I had in the parts box.Under a fairly typical room light, it measures about 4K resistance. If I turn off the lights in my room (at night) and measure again using just the light from my computer monitor it measured about 30K resistance.To be honest, when I inserted it into my circuit, I had no clue, nor did I really care, what the resistance was. What was important, for me at least, was the reading at A0 for the light setting that I wanted to trigger the LED's to fade on. I used my test rig and a print statement to narrow in on the A0 reading that corresponded to a good level of light to trigger the Fade On.So put another way, it probably doesn't matter (within reason) a huge amount what the LDR and 10K resistor values are - just as …

    see more »

    Hi Acieus,Actually the LDR was just one of a couple that I had in the parts box.Under a fairly typical room light, it measures about 4K resistance. If I turn off the lights in my room (at night) and measure again using just the light from my computer monitor it measured about 30K resistance.To be honest, when I inserted it into my circuit, I had no clue, nor did I really care, what the resistance was. What was important, for me at least, was the reading at A0 for the light setting that I wanted to trigger the LED's to fade on. I used my test rig and a print statement to narrow in on the A0 reading that corresponded to a good level of light to trigger the Fade On.So put another way, it probably doesn't matter (within reason) a huge amount what the LDR and 10K resistor values are - just as long as you get usable values at A0.I hope this helps.

    View Instructable »
  • Motion Activated Automatic LED Stair Lighting With Arduino

    @mikeoo, unfortunately I have not been able to look at your code and probably won't be able to do so anytime soon. Also, probably it is not appropriate to have a one on one discussion here.However, might I suggest the following.1) I like your idea of having a second PIR. when I saw your photo, I was reminded that my sister has the same type of stair case. So I will add on to this project an option of a second PIR.2) Since you have already had a go at writing the code, might I suggest asking a question on stack overflow specifically the Arduino sub-site (https://arduino.stackexchange.com/). I am also a contributor (unpaid) over there. If you've never posted on this site, I strongly encourage you to take the tour first (https://arduino.stackexchange.com/tour) as quality and completeness of …

    see more »

    @mikeoo, unfortunately I have not been able to look at your code and probably won't be able to do so anytime soon. Also, probably it is not appropriate to have a one on one discussion here.However, might I suggest the following.1) I like your idea of having a second PIR. when I saw your photo, I was reminded that my sister has the same type of stair case. So I will add on to this project an option of a second PIR.2) Since you have already had a go at writing the code, might I suggest asking a question on stack overflow specifically the Arduino sub-site (https://arduino.stackexchange.com/). I am also a contributor (unpaid) over there. If you've never posted on this site, I strongly encourage you to take the tour first (https://arduino.stackexchange.com/tour) as quality and completeness of the question is important.

    View Instructable »
  • Motion Activated Automatic LED Stair Lighting With Arduino

    In terms of how long the LED's stay on (i.e. how long before they start to fade off), this is all handled by the PIR. As soon as the PIR says that there is no longer any motion, the fade will begin. This is all handled in the processPIR function. You can see it at the bottom of that function in the "else" clause of "if (pirState == HIGH)". That is as soon as the PIR is no longer HIGH, the fadeOff will be initiated. Note that thanks to the very first if in that function "if (val != pirState)" this logic is only executed when the pir changes state (i.e. goes from LOW to HIGH or it goes from HIGH to LOW).Having said that, the fading is a timed operation. The timing of the fading (off or on) is all managed by the variables faderDelayTmr and faderTime. The basic a…

    see more »

    In terms of how long the LED's stay on (i.e. how long before they start to fade off), this is all handled by the PIR. As soon as the PIR says that there is no longer any motion, the fade will begin. This is all handled in the processPIR function. You can see it at the bottom of that function in the "else" clause of "if (pirState == HIGH)". That is as soon as the PIR is no longer HIGH, the fadeOff will be initiated. Note that thanks to the very first if in that function "if (val != pirState)" this logic is only executed when the pir changes state (i.e. goes from LOW to HIGH or it goes from HIGH to LOW).Having said that, the fading is a timed operation. The timing of the fading (off or on) is all managed by the variables faderDelayTmr and faderTime. The basic algorithm for this type of timing is that faderDelayTmr counts the number of milliseconds that have passed each time "loop()" is called. The other variable (faderTime) defines when it is time to do something.For example, when fadeOff is called, faderDelayTmr is set to "zero milliseconds". Also, faderTime (when next to do something) is set to "a few milliseconds" (FADE_OFF_TIME).Time goes by as loop is called. The faderDelayTmr will increase roughly by 1 every millisecond (this is the bit in loop where "delta" is added to faderDelayTmr). Eventually faderDelayTmr will reach (or pass) faderTime. This is when processFade() function is called. ProcessFade adjusts the LED brightness until it is fully bright (fadeOn) or fully off (fadeOff) and the faderDelayTmr is reset back to zero again. Then as loop is called, it will increment once every millisecond until it again reaches faderTime and the whole process repeats until, as mentioned, the LED is either fully on or off.I had a quick look at your code and noticed that you have put delays in. Generally delays are not so good as they prevent anything from happening. I suggest you look at the "BlinkWithOutDelay" sample program (File -> Examples -> 02 Digital -> BlinkWithoutDelay in the IDE) to more easily understand how the fading works without using delay.The concept in BlinkWithoutDelay is important in understanding the concept I outline above that permits while the LED is fading off to simultaneously detect motion and fade back on.As I said I had a quick look at your code, but I have quite a few things demanding my time at the moment. I will try to have a more detailed look on the weekend.

    View Instructable »
  • Motion Activated Automatic LED Stair Lighting With Arduino

    It is unfortunate that code does not format well in the comments section. Are you able to post it to a file sharing site (or better yet, github?)As for the duration, you could probably put in a timer - i.e. do not call the fadeOff until such time as the 30 seconds has passed. However, there might be a better way. On my PIR, there are two variable resistors on the back. Generally you want them to be about in the middle. One of them controls the sensitivity. The other controls how long the "motion detected" signal remains on after the motion has actually stopped. If you turn it completely to one end, it will turn the "motion detected" signal off pretty much as soon as the motion actually stops. If you turn it the other way, the "motion detected" signal will sta…

    see more »

    It is unfortunate that code does not format well in the comments section. Are you able to post it to a file sharing site (or better yet, github?)As for the duration, you could probably put in a timer - i.e. do not call the fadeOff until such time as the 30 seconds has passed. However, there might be a better way. On my PIR, there are two variable resistors on the back. Generally you want them to be about in the middle. One of them controls the sensitivity. The other controls how long the "motion detected" signal remains on after the motion has actually stopped. If you turn it completely to one end, it will turn the "motion detected" signal off pretty much as soon as the motion actually stops. If you turn it the other way, the "motion detected" signal will stay on for much longer after the motion has stopped. I have one which claims that it will remain on for (I think) 30 minutes after motion has ceased (it is an outdoor security light+sensor).

    Wow, I never thought of using it on a "ladder" !!That looks like a heck of a steep set of stairs!!!! :-)

    View Instructable »
  • Cooperative Multitasking on Arduino - With Pretty Blinky Lights!

    Hi @marciot, I just saw your post and thought I would let you know that I am currently working on a preparing a class to teach this exact topic. Over the next few weeks, I will post some projects to my GitHub repository that do exactly this (no assembler required). The projects show how to strobe an LED display (e.g. 2 x 4 digit clock displays) with a common cathode to create an 8 digit display. The first project will use Arduino Uno (only - no other models unless you adapt it) to control everything, then I will add a multiplexor and SIPO register.The code will start by using traditional methods (no interrupts) and illustrate how things can go wrong very quickly (I print some messages to the serial port which causes the display to flicker horribly). Then we move on to interrupts and even …

    see more »

    Hi @marciot, I just saw your post and thought I would let you know that I am currently working on a preparing a class to teach this exact topic. Over the next few weeks, I will post some projects to my GitHub repository that do exactly this (no assembler required). The projects show how to strobe an LED display (e.g. 2 x 4 digit clock displays) with a common cathode to create an 8 digit display. The first project will use Arduino Uno (only - no other models unless you adapt it) to control everything, then I will add a multiplexor and SIPO register.The code will start by using traditional methods (no interrupts) and illustrate how things can go wrong very quickly (I print some messages to the serial port which causes the display to flicker horribly). Then we move on to interrupts and even though we are printing messages to the serial port, the display is flicker free.There is an initial version here: https://github.com/gm310509/Arduino/tree/master/BootstrapTraining/Stage3-LoadOS but it is a work in progress.I just thought you might be interestedAll the best GMc

    View Instructable »
  • Motion Activated Automatic LED Stair Lighting With Arduino

    Hi @mikeoo, I'm glad you were able to recreate the project. I hope it is working well for you. It would be wonderful if you click the "i made it" button above. I've never had anyone do that before!Anyway, to your question, basically you would mirror the existing pir code. I would suggest renaming some of the variables to have meaningful names (e.g. pirPin to pirTopOfStairsPin and pirState to pirTopOfStairsState) then when you add the second variable you could also give it a meaningful name (e.g. pirBottomOfStairsPin and pirBottomOfStairsState) or whatever names are meaningful to you. note that the pirPin variable appears in two places in the code and the pirState variable appears 4 times. Make sure you edit all of them.In the setup part, you shouldn't need to do anything because…

    see more »

    Hi @mikeoo, I'm glad you were able to recreate the project. I hope it is working well for you. It would be wonderful if you click the "i made it" button above. I've never had anyone do that before!Anyway, to your question, basically you would mirror the existing pir code. I would suggest renaming some of the variables to have meaningful names (e.g. pirPin to pirTopOfStairsPin and pirState to pirTopOfStairsState) then when you add the second variable you could also give it a meaningful name (e.g. pirBottomOfStairsPin and pirBottomOfStairsState) or whatever names are meaningful to you. note that the pirPin variable appears in two places in the code and the pirState variable appears 4 times. Make sure you edit all of them.In the setup part, you shouldn't need to do anything because the default is that pins are "inputs".In the loop, you will need to check for your second PIR. The easiest way would be to not modify the loop per se, but modify the function it calls (processPir).The trickiest bit will be to implement the logic that you want - i.e. how do you want the PIR's to affect the LED status. I would *suggest* starting out by detecting if either of them have changed state. Then, "fadeOn" if either of the PIR's are on (HIGH) and fadeOff when both are off (LOW). This could be achieved as follows (I hope the code formats nicely in the reply - i did indent it when i entered it, i promise!):Change:int val = digitalRead(pirPin);if (val != pirState) { pirState = val; if (pirState == HIGH) {To:int valTop = digitalRead(pirTopOfStairsPin);int valBottom = digitalRead(pirBottomOfStairsPin);if (valTop != pirTopOfStairsState || valBottom != pitBottomOfStairsState) { // Did either of the PIR's change state? pirTopOfStairsState = valTop; pirBottomOfStairsState = valTop; if (pirTopOfStairsState == HIGH || pirBottomOfStairsState == HIGH) { // If either pir is activated (HIGH), then consider fadeingOn, otherwise, fade off.Please note that I do not have the bandwidth to test this anytime soon, so there may still be some other things that need attention, but that should be most of what is needed to add a second PIR sensor...Let me know how you went, and please click the "I made it too" button.

    View Instructable »
    • Household Environmental Monitor IoT Solution
      49 views
      1 favorites
      0 comments
  • Hi Marciot,Thanks for the kind words. Actually I quite like AVR assembly. The sense of achievement is somehow much greater than higher level languages such as C.However, in the Arduino world (and indeed the generic AVR world) you can do this type of work without assembler. In the past i've used a Basic compiler (I think maybe it was called Bascom) and you could program interrupts, peek and poke memory just like you might in assembler. The basic interpreter simply programmed the AVR EEPROM, so there was no awareness of the environment (e.g. there was no concept of a LED_BUILTIN being a standard piece of equipment, nor was there a Serial and so on).In the Arduino world, the compiler lets you write Interrupt Service Routines (ISR) in C (as void functions) and register them with with C API's …

    see more »

    Hi Marciot,Thanks for the kind words. Actually I quite like AVR assembly. The sense of achievement is somehow much greater than higher level languages such as C.However, in the Arduino world (and indeed the generic AVR world) you can do this type of work without assembler. In the past i've used a Basic compiler (I think maybe it was called Bascom) and you could program interrupts, peek and poke memory just like you might in assembler. The basic interpreter simply programmed the AVR EEPROM, so there was no awareness of the environment (e.g. there was no concept of a LED_BUILTIN being a standard piece of equipment, nor was there a Serial and so on).In the Arduino world, the compiler lets you write Interrupt Service Routines (ISR) in C (as void functions) and register them with with C API's such as SIGNAL(vector) and attachInterrupt (https://www.arduino.cc/en/Reference/AttachInterrupt?utm_source=rb-community&utm_medium=forum&utm_campaign=arduino-101-timers-and-interrupts)Anyway all the best with your ISR's.

    View Instructable »
  • I had one more thought about this.If you put it outside, you might want to check how well your PIR works in your particular environment - *before* doing a full build / install.To do this, you could just build the test circuit with a single LED in place of the LED strip - and power the Arduino via an old phone USB style charger (make sure your mains voltage supply to the charger is protected from the elements).The questions I would have are:a) Is it triggered on windy days by the motion of trees, plants etc?b) Assuming you are talking about a very cold climate; will it be triggered by you when you are wearing lots of thick thermal clothing?My expectation is:a) Probably not (GOOD)b) also probably not (NOT SO GOOD).Why? because a PIR works by detecting movements of warm bodies. So if you are…

    see more »

    I had one more thought about this.If you put it outside, you might want to check how well your PIR works in your particular environment - *before* doing a full build / install.To do this, you could just build the test circuit with a single LED in place of the LED strip - and power the Arduino via an old phone USB style charger (make sure your mains voltage supply to the charger is protected from the elements).The questions I would have are:a) Is it triggered on windy days by the motion of trees, plants etc?b) Assuming you are talking about a very cold climate; will it be triggered by you when you are wearing lots of thick thermal clothing?My expectation is:a) Probably not (GOOD)b) also probably not (NOT SO GOOD).Why? because a PIR works by detecting movements of warm bodies. So if you are all rugged up on a cold winter day, it might not trigger because all of the clothes you are wearing are keeping you warm. That means no heat is escaping. That means no (or not much) IR. That means you might not be detected by the PIR.Here is a quite good explanation of how they work (or do not work): https://learn.adafruit.com/pir-passive-infrared-proximity-motion-sensor/how-pirs-workHaving said that if in your environment a PIR does not work for you, you could always try other triggering mechanisms such as breaking an Infrared light beam (at the approaches to the stairs), pressure plates, vibration sensors and so on.

    View Instructable »
  • I see no reason why it could not be used on a set of outdoor stairs. Being from Sydney Australia, a "Northern climate" is pretty nice - possibly even tropical. I'm assuming you mean something like Alaska????Anyway, apart from the power supply, it is operating on 12 Volts, so weather shouldn't be a problem.I would be inclined to seal it in a project box of some sort. Just ensure that the PIR motion sensor and the LDR can see outside of the enclosure. I expect the dome on the PIR would protect it, you could probably put the LDR behind some transparent plastic etc.As the the LED's, I do not know how harsh your climate is, but I have seen outdoor LED's that come in plastic tubing. We have some on our balcony (they are sort of like Christmas lights). In our case, the plastic tubing i…

    see more »

    I see no reason why it could not be used on a set of outdoor stairs. Being from Sydney Australia, a "Northern climate" is pretty nice - possibly even tropical. I'm assuming you mean something like Alaska????Anyway, apart from the power supply, it is operating on 12 Volts, so weather shouldn't be a problem.I would be inclined to seal it in a project box of some sort. Just ensure that the PIR motion sensor and the LDR can see outside of the enclosure. I expect the dome on the PIR would protect it, you could probably put the LDR behind some transparent plastic etc.As the the LED's, I do not know how harsh your climate is, but I have seen outdoor LED's that come in plastic tubing. We have some on our balcony (they are sort of like Christmas lights). In our case, the plastic tubing isn't to protect them from the weather. Rather, the plastic tubing is to stop the rotten birds (there is just one type - they are the vandals of the bird world) from eating the LED's!

    View Instructable »
    • Cooperative Multitasking on Arduino - With Pretty Blinky Lights!
      680 views
      7 favorites
      0 comments
  • Thanks for the feedback.Actually I only lit one side. It certainly could do both sides, but I found that one side was more than enough in my situation. The LED strip is quite bright. Also, I was a little bit worried about running the wire across the stairs to the other side as there is no "under stair" access for me to run the wire across under the stairs.

    Thanks for the feedback.I've also just posted another project which describes how to get Arduino to seemingly do multiple things at once.This project builds up from a simply blinking one LED with a push button that "controls it", to a Mega Blinky LED Extravaganza.It is all about the coding (but also makes a nice blinky light thingy). Check it out at https://www.instructables.com/Cooperative-Multi... or even just watch the blinky light video. :-)

    Agreed,Also, I think it has other uses - e.g. as a "safety light" in a babies room (LED strip under baby's bed) so that illuminates when parents have to check on baby in the middle of the night.Having the LED strip under the bed means that there isn't a bright light shining directly into baby's or parent eyes as would potentially be the case from a room light or a bedside lamp.Also, the brightness can be controlled by "capping" the PWM at say 50% illumination to get the level of light just right.

    View Instructable »
  • Sure....I will also add it to the Instructable. Let me know (and if possible post a photo) if you make it. :-)

    View Instructable »
  • Thanks for your feedback.Access to AC power is a problem whether for this project or a commercial product. In my case there were a few AC outlets, but only one was convenient to the stairs. In my case, we have a display case at the entrance to the stairs. Adjacent to that was a power outlet, so I simply ran the AC connection behind the display case.I am not familiar with the relevant building codes in Australia. Our apartment is quite old so even if there is such a building code requirement now, it may be that my building was constructed prior to that coming into force.

    Most of this was built from parts that were already lying around.The main items for the "production version" were:* An Arduino Leonardo - which seems to vary greatly in price depending upon where you get it from (I've seen ads from $16.45 up to $52.18. You do not need to use Leonardo, all up you only need is a system with 2 digital ports, 1 analog port and the ability to run the Arduino from the 12V input.* A prototyping shield and headers (maybe $3.00 to $5.00)* a couple of resistors - $1.00* the LDR - $1.00* the MOSFET - $5.45* the LED Strip - varies greatly. I purchased mine at an electronics outlet in Shanghai for about $10 for a 5m strip. I've seen the exact same strip in commercial stores for over $60. Be careful when ordering online, I've seen a few sites that list the pe…

    see more »

    Most of this was built from parts that were already lying around.The main items for the "production version" were:* An Arduino Leonardo - which seems to vary greatly in price depending upon where you get it from (I've seen ads from $16.45 up to $52.18. You do not need to use Leonardo, all up you only need is a system with 2 digital ports, 1 analog port and the ability to run the Arduino from the 12V input.* A prototyping shield and headers (maybe $3.00 to $5.00)* a couple of resistors - $1.00* the LDR - $1.00* the MOSFET - $5.45* the LED Strip - varies greatly. I purchased mine at an electronics outlet in Shanghai for about $10 for a 5m strip. I've seen the exact same strip in commercial stores for over $60. Be careful when ordering online, I've seen a few sites that list the per meter rate but describe their 5m cables (i.e. they sound cheap, but really they are not). I've never seen them this cheap on line.* wire, solder etc - maybe another $5 total.So all up, you could do it for as little as $35.00 (excluding airfare to Shanghai). I expect a typical cost would be around maybe $50-60 if you look hard enough. I hope this helps.

    View Instructable »
  • gm310509 followed software, arduino, raspberry-pi, computers and 12 others channel
  • Thanks, if you make one, I'd love to see a photo. :-)I've also created one using a 240 volt colour changing ornamental lamp. It switches on when we enter our apartment. The PIR is amazingly sensitive. It is positioned in a large room and can "see" us down a narrow passage way from over 10 meters away.I wish I could claim that I made the lamp (it's really nice) - sadly, I can not claim that I made the lamp (and simultaneously retain my integrity) :-)

    View Instructable »