Initial Setup
==========

Reset Your Password
-------------------

Since all Raspian images come with the same password, you'll need to change the root password so no one can access it without your approval:

* At the terminal, run ``sudo raspi-config``
  * Choose the ``change_pass`` menu option & enter a new password

Configuring Your Keyboard
-------------------------

By default, the Raspian image uses a English UK keyboard setup, which can lead to some confusion. For those in the US, following the following steps to fix the keyboard:

* At the terminal, run ``sudo raspi-config``
  * Choose the ``configure_keyboard`` menu option
    * Other
    * English (US)
    * English (US) - yes, again

Additionally, if you like using the ``Caps Lock`` as ``Ctrl`` instead, run the following command:

* ``setxkbmap -option "ctrl:nocaps"``

Reboot
------

To make sure things are in order, reboot your RaspberryPi. This is typically only necessary if you alter the video memory setup or use the entire SD card for the Raspian setup.

* ``sudo reboot``

Python Packaging
----------------

While the RaspberryPi (& Raspian) run Python out-of-the-box, you'll likely want some common packaging tools for more advanced development. The following gets you some common Python tools (``pip`` for easy installation/removal of packages & ``virtualenv`` for nice isolated environments):

* ``sudo apt-get install python-dev``
* ``curl -O https://bootstrap.pypa.io/get-pip.py``
* ``sudo python get-pip.py``
* ``sudo pip install virtualenv``


Your First RaspberryPi Program: Blinken
=======================================

At a terminal, run the following commands to setup an environment for blinking an LED:

* ``mkdir blinken``
* ``cd blinken``
* ``virtualenv env``
* ``. env/bin/activate``
* ``pip install rpi.gpio``

Then run an editor (ex. ``vi blink.py``) & enter the following code:

    # Code goes here.
    import RPi.GPIO as GPIO
    import time
    
    # Variable for the GPIO pin number
    LED_pin_red = 21
    
    # Tell the Pi we are using the breakout board pin numbering
    GPIO.setmode(GPIO.BCM)

    # Set up the GPIO pin for output
    GPIO.setup(LED_pin_red, GPIO.OUT)

    # Loop to blink our led
    while True:
        GPIO.output(LED_pin_red, GPIO.HIGH)
        print("On")
        time.sleep(1)
        GPIO.output(LED_pin_red, GPIO.LOW)
        print("Off")
        time.sleep(1)


Books
=======================================
* Heitz, Ryan. Hello Raspberry Pi! (http://www.manning.com/heitz/). Manning Publications (2015). p.p. 225. ISBN 9781617292453