Monday, 30 May 2016

NatureBytes Lite - bare bones build for Raspberry Pi A+


The NatureBytes Raspberry Pi camera kit is an excellent way to capture great photos of wildlife.



The lovely injection-moulded case is perfect for keeping everything nice and dry when deployed outside. the only problem I encountered was using the supplied Raspbian image: the GUI that ships is really nice and will be well suited to people using a Pi for the first time. But on a Raspberry Pi model A+ it can be quite resource intensive and I found myself getting frustrated with the performance.


Personally I wouldn't really consider using X-windows on an A+: it just doesn't have the muscle.

So I thought I'd put together a bare-bones installation that just runs the code necessary to detect motion with the PIR and take photos. I'm not bothered about saving onto a USB drive either: I'm happy to use the SD card and then connect the Pi to a network and extract using ssh.

So here is my recipe for building a quick, low profile image that works really well on an A+. Note that this does not include any windowing system so it's command line all the way!

1) Download the latest Jessie-Lite image and write it to an SD card.

2) Boot up and install the following stuff:

sudo apt-get update
audo apt-get upgrade -y
sudo apt-get install python3 python3-dev git i2c-tools python3-pip
sudo pip3 install gpiozero picamera RPi.GPIO spidev

3) Configure the Pi: run

sudo raspi-config

and enable the Camera and I2C interface (under advanced options). You might as well expand the filesystem to fill the whole disk too.

4) If you want to use the Real Time Clock, follow these excellent instructions from the Pi Hut.

5) Add the following code to a file (e.g. nblite.py). This makes use of the great gpiozero library to handle the PIR and starts a new logfile every time the code is run. Each image is date/timestamped and saved into /home/pi. The Pi will keep taking photos every half a second as long as motion continues to be detected.

from gpiozero import MotionSensor
import logging
from datetime import datetime
import picamera
import time
logfile = "/home/pi/nb-"+str(datetime.now().strftime("%Y%m%d-%H%M"))+".csv"
logging.basicConfig(filename=logfile, level=logging.DEBUG,
    format='%(asctime)s %(message)s',
    datefmt='%Y-%m-%d, %H:%M:%S,')

pir = MotionSensor(11)

print('Starting')
logging.info('Starting')
while True:

    pir.wait_for_motion()
    logging.info('Motion detected')
    print('Motion detected')
    while pir.motion_detected:
        print('Taking photo')
        ts  ='{:%H%M%S-%d%m%Y}'.format(datetime.now())
        logging.info('Taking photo: '+ str(ts)+'.jpg')
        with picamera.PiCamera() as cam:
            cam.resolution=(1024,768)
            cam.capture('/home/pi/'+str(ts)+'.jpg')
        time.sleep(0.5)
    print('Motion Ended')

    logging.info('Motion Ended')

6) Edit the /etc/rc.local to include the line

/usr/bin/python3 /home/pi/nblite.py &

before the exit 0 final line so that the code starts every time the Pi is booted.

That's it! All done.






19 comments:

  1. Richard

    Thanks for doing the work and writing it up - the thought was beginning to form in my mind that the config for an A+ needed lightening, but it hadn't really registered.

    I think I've spotted a typo above, the line
    pir = MotionSensor(11)
    should really be
    pir = MotionSensor(17)
    if one has wired up the box according to the NB instructions.

    Also, I like my photos with a completely hierarchical name, so I've changed the line with ts = to:

    ts ='{:%Y%m%d-%H%M%S}'.format(datetime.now())

    Thanks again...

    Peter

    ReplyDelete
  2. Thanks for this, I did add a loop so it would take 3 photos one second apart but found the minimum separation was almost 3 seconds. The slow usb stick was part of the problem. Your suggestion should also speed things up.

    ReplyDelete
  3. This is great, I wondered why they didn't use PiCamera, and yes choosing a better (faster) USB drive really helps the speed on the standard kit, the supplied Kingston drive is SLOWWWWW. I am writing to a RAM disk and scp'ing each image to network storage now. I am working to replace their overlay implementation as it appears to stomp over the EXIF data.

    ReplyDelete
  4. I've been meaning to try this out for ages and have finally got round to it. Compared to the NatureBytes software this is a vast improvement and I've managed to capture some great shots of the birds that come to our back garden. Thank you for publishing this blog.

    ReplyDelete
  5. Hi Richard, thanks for your addition to the project. I've modified my program to record video but find that after two or three videos the Pi only creates empty video files i.e. 0kb.

    Have you encountered this before? I don't know whether this has to do with the pir polling too frequently?

    ReplyDelete

  6. I am a Staff Author at Fieldengineer.com a Marketplace for On-Demand telecom workforce, extending from field engineers to high-level network engineers, project managers and Network Architects in 146 nations.
    Checkpoint Engineer

    ReplyDelete
  7. The Home Fix has been providing first-rate home appliances repair services and maintenance. We provide excellent home appliances repair, maintenance and electrician services.

    ReplyDelete
  8. If you are looking for dryer repairing services in Dubai then you are at the right place. We offer you the astonishing dryer repair service in your budget, contact us through our website for more details.
    Dryer Repair Dubai

    ReplyDelete
  9. A2zappliancerepairs provides best services of Electronic Repair Dubai. We have a team of best skilled and certified electricians and technicians that will repair all types of electronics appliances in a very less time. If you have broken up your television, microwave or any types of electronics appliances then there is no need to stress yourself. We are always here to help you, our experienced team of experts can repair your appliance in only a couple of hours. Only you have to do is just to call us, or contact us through our website.

    ReplyDelete
  10. Our company is a well known Electrical maintenance company Dubai and specialized in electronics. So, if you are looking for someone to maintain Electrical Appliances or something else then your worries are over. We will give the services like Electrical Services Dubai with the certified Electrician in Dubai. Our electrical contractor will construct the work related to the design, installation and maintenance of electrical items. So, if you are interested to take our services then contact Green Astro Pools & Landscape L.L.C or visit our website for more information.

    ReplyDelete
  11. Eagle Technical services are the best painting service provider company in Dubai. Our company is the best company for Dubai professional painter service, Professional Painters Dubai, Building painting service Dubai, Dubai painting service, professional painting company Dubai, Interior Exterior painting service Dubai, painting service Dubai, and Exterior painting work Dubai.

    ReplyDelete
  12. Get the best interior renovation company in Dubai from Fix Hub Technical Services LLC. We have workers, who have years of experience in this renovation field, and also they are experts in other fields Like, Interior fit-out, Gypsum work, bathroom Renovation, Office renovation dubai, Villa Renovation, Kitchen Renovation, etc. So if You want our services Then just contact Fix Hub Technical Services LLC fast or you can visit our Website for more information.

    ReplyDelete
  13. we have the best printer repair shop in dubai
    , we can repair all types of printers at very effective cost, to know more about our service just contact us.

    ReplyDelete
  14. If You Want Your Own Cheapest Visa at a low cost and if you are looking for a company that can provide you with these services, then you have come to the right place. We give a lot of services here like, freelance visa, freelancer visa Dubai, freelance visa Dubai, own visa in UAE, freelance visa UAE, freelance work permit Dubai.

    ReplyDelete