Difference between revisions of "2010910 pi workshop notes"

From Hackuarium
Jump to navigation Jump to search
 
(24 intermediate revisions by the same user not shown)
Line 35: Line 35:
  
 
=First test=
 
=First test=
 +
 +
Connect to Pi computer using this command in the terminal:
 +
 +
ssh pi@JUPITER
 +
 +
Enter password: raspberry
  
 
If we want to connect the LED on the GPIO4 port: <br>
 
If we want to connect the LED on the GPIO4 port: <br>
Line 41: Line 47:
  
 
Or using '''BASH ([http://elinux.org/RPi_GPIO_Code_Samples#Shell Shell]) command line''' (UNIX language): <br>
 
Or using '''BASH ([http://elinux.org/RPi_GPIO_Code_Samples#Shell Shell]) command line''' (UNIX language): <br>
sudo -i <br>
+
sudo -i <br>
echo "4" > /sys/class/gpio/export <br>
+
echo "4" > /sys/class/gpio/export <br>
echo "out" > /sys/class/gpio/gpio4/direction <br>
+
echo "out" > /sys/class/gpio/gpio4/direction <br>
echo "1" > /sys/class/gpio/gpio4/value <-turns it on <br>
+
echo "1" > /sys/class/gpio/gpio4/value <-turns it on <br>
echo "0" > /sys/class/gpio/gpio4/value <-turns it off <br>
+
echo "0" > /sys/class/gpio/gpio4/value <-turns it off <br>
  
 
Or '''[http://wiringpi.com/the-gpio-utility/ GPIO utility command]''': <br>
 
Or '''[http://wiringpi.com/the-gpio-utility/ GPIO utility command]''': <br>
gpio -g mode 4 out <br>
+
gpio -g mode 4 out <br>
gpio -g write 4 1 <-turns it on <br>
+
gpio -g write 4 1 <-turns it on <br>
gpio -g write 4 0  <-turns it off <br>
+
gpio -g write 4 0  <-turns it off <br>
  
 
=The Operating System=
 
=The Operating System=
Line 67: Line 73:
 
Everything in Linux is either a FILE or a DIRECTORY <br>
 
Everything in Linux is either a FILE or a DIRECTORY <br>
  
"man" stands for manual and gives instructions on how to use commands, eg. "man cat"
+
man
"pwd" shows the directory we're in <br>
+
stands for manual and gives instructions on how to use commands, eg. "man cat"
"ls" lists all items in this directory <br>
+
pwd
"ls -ailh" give the size of all files in the directory <br>
+
shows the directory we're in <br>
 +
ls
 +
lists all items in this directory <br>
 +
ls -ailh
 +
give the size of all files in the directory <br>
 +
 
 +
rm -r NAME
 +
remove directory
 +
 
 +
rm NAME
 +
remove file
 +
 
 +
mv FILENAME ..
 +
moves file NAME into the upper directory
 +
 
 +
mv FILENAME DIRECTORY
 +
moves FILENAME into any DIRECTORY
 +
 
 +
ctrl c
 +
cancels all commands <br>
 +
ctrl l
 +
cleans the screen <br>
 +
 
 +
sudo -s
 +
login as root <br>
 +
exit
 +
leaves root mode <br>
 +
 
 +
cat [FILE NAME] | less
 +
-> the pipe character "|" will take the output of one command into the next command<br>
 +
 
 +
=Bash scripting=
 +
 
 +
==test1:==
 +
 
 +
nano myfirstscript.txt
 +
 
 +
#! /bin/bash"
 +
echo Hello!
 +
echo World!
 +
whoami
 +
 
 +
chmod +x myfirstscript.txt
 +
 
 +
->makes the file executable -> into some program that you can run <br>
 +
 
 +
./myfirstscript.txt
 +
 
 +
-> executes the file
 +
 
 +
==test2:==
 +
 
 +
nano mysecondscript.txt
 +
 
 +
--
 +
 
 +
#! /bin/bash
 +
echo Hello!
 +
echo World!
 +
whoami
 +
 
 +
mkdir woz
 +
touch woz/niak.txt
 +
 
 +
--
 +
 
 +
chmod +x mysecondscript.txt
 +
 
 +
./mysecondscript.txt
 +
 
 +
==LEDBlink==
 +
 
 +
#! /bin/bash
 +
tells the terminal the langage of code (Bash here)
 +
 
 +
while true; do
 +
gpio -g write 4 1
 +
sleep 0.5
 +
gpio -g write 4 0
 +
sleep 0.1
 +
done
 +
Makes pin 4 (here a LED) blink forever (while)
 +
 
 +
=Networking=
 +
 
 +
To update anything:
 +
 
 +
sudo apt-get update NAME
 +
 
 +
To install anything:
 +
 
 +
sudo apt-get install NAME
 +
 
 +
to find IP address of Raspberry Pi (will retrieve the IP address):
 +
 
 +
hostname -I
 +
 
 +
To connect to the Pi via wifi
 +
 
 +
ssh pi@... (IP address)
 +
 
 +
To get the IP address:
 +
 
 +
#find a screen with HDMI cable
 +
#plug into Raspberry Pi
 +
#plug mouse in the USB
 +
#use the graphical user interface on the screen
 +
 
 +
top right corner, wifi signal, select the wifi network, type in password, write down IP address, then can be used to connect
 +
 
 +
For remote access to the files on the SD from a computer (to edit code for example), download [https://cyberduck.io Cyberduck] and use '''SFTP''' protocol (or any other similar interface).
 +
 
 +
'''VNC''' allows to use the virtual use interface via wifi (without cable and screen).
 +
 
 +
#Install tightvncserver using
 +
 
 +
sudo apt-get update tightvncserver
 +
 
 +
#run vncserver :1 on Pi
 +
 
 +
Choose password:
 +
 
 +
raspberry
 +
 
 +
Gives back this answer:
 +
 
 +
New 'X' desktop is jupiter:1
 +
Creating default startup script /home/pi/.vnc/xstartup
 +
Starting applications specified in /home/pi/.vnc/xstartup
 +
Log file is /home/pi/.vnc/jupiter:1.log
 +
 
 +
Download RealVNC [https://www.realvnc.com/download/viewer/ viewer].
 +
 
 +
Log in using in this case, use this as username: JUPITER:5901
 +
 
 +
==RFID code==
 +
 
 +
Sam's code is [http://bit.ly/2bYJXwu here]
 +
 
 +
=Graphical coding using Node-Red=
 +
 
 +
[http://nodered.org Node-Red] is installed on the Raspberry Pi (needs to be enabled)<br>
  
"ctrl c" cancels all commands <br>
+
Use [http://JUPITER:1880 this link] to code my device from the web browser
"ctrl l" cleans the screen <br>
 
  
"sudo -s" login as root <br>
+
=Excercise=
"exit" leaves root mode <br>
 
  
"cat [file name] | less" -> the pipe character "|" will take the output of one command into the next command<br>
+
Try to generate a sound using light signal from photodiode (CLIP)

Latest revision as of 15:25, 10 September 2016

Intro

Raspberry Pi 3 computer
OS (Raspbian) loaded on SD card
All GPIO pins are flexible 3.3V OUT or IN (will generate floating voltage when not programmed)
GPIO can be programmed using gpio utility: http://wiring.com/the-gpio-utility/
UART pins carry data (RX=receive, TX=transmit), allows connection of devices (GPS), 3V->3V, GND->GDN, RX->TX, TX->RX
Sends text signals, each character encoded in 8bits ("packed" encapsulated into a "start bit" and a "stop bit")
Speed is 9600 Baud (1 Baud = 1 bit per sec)
To access this data, you can either use a Python script, or a software called "screen"
directory "/dev/ttyACM0 9600" contains a new file that represents the connexion to a device (arduino, printer, etc.)
I2C protocol
For example: BMP280 sensor temperature and pressure sensor (4pins=3V, GND, SDA, SCL)
On pi, up to 127 sensors can be connected to the SDA and SCL ports. Each device has a fix-programmed specific address.
i2c-tools is a program that allows to detect from all these sensors using the i2cdetect protocol.
"sudo raspi-config" to configure the pi computer
Step 1. Tell pin to be GPIO2
Step 2. Tell pin to be ON or OFF
2 ways of accessing the pins: GPIO# or pin#
"GPIO-g" flags to GPIO#

First test

Connect to Pi computer using this command in the terminal:

ssh pi@JUPITER

Enter password: raspberry

If we want to connect the LED on the GPIO4 port:

Controlling GPIO ports using Python:

Or using BASH (Shell) command line (UNIX language):

sudo -i 
echo "4" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio4/direction
echo "1" > /sys/class/gpio/gpio4/value <-turns it on
echo "0" > /sys/class/gpio/gpio4/value <-turns it off

Or GPIO utility command:

gpio -g mode 4 out 
gpio -g write 4 1 <-turns it on
gpio -g write 4 0 <-turns it off

The Operating System

An OS is a piece of software that people wrote to use a computer in an easy and structured way.
Linus is the kernel (not an operating system), robust, versatile, stable.
Operating system is Raspian in our case.

Linux always has a BASH (Shell) terminal: type something, press enter, view output.

The terminal uses: arrows
enter key (execute)
tab key (autocomplete)

Everything in Linux is either a FILE or a DIRECTORY

man

stands for manual and gives instructions on how to use commands, eg. "man cat"

pwd

shows the directory we're in

ls

lists all items in this directory

ls -ailh

give the size of all files in the directory

rm -r NAME

remove directory

rm NAME

remove file

mv FILENAME ..

moves file NAME into the upper directory

mv FILENAME DIRECTORY

moves FILENAME into any DIRECTORY

ctrl c

cancels all commands

ctrl l

cleans the screen

sudo -s

login as root

exit

leaves root mode

cat [FILE NAME] | less

-> the pipe character "|" will take the output of one command into the next command

Bash scripting

test1:

nano myfirstscript.txt
#! /bin/bash"
echo Hello!
echo World!
whoami
chmod +x myfirstscript.txt

->makes the file executable -> into some program that you can run

./myfirstscript.txt

-> executes the file

test2:

nano mysecondscript.txt

--

#! /bin/bash
echo Hello!
echo World!
whoami
mkdir woz
touch woz/niak.txt

--

chmod +x mysecondscript.txt
./mysecondscript.txt

LEDBlink

#! /bin/bash

tells the terminal the langage of code (Bash here)

while true; do
gpio -g write 4 1
sleep 0.5
gpio -g write 4 0
sleep 0.1
done

Makes pin 4 (here a LED) blink forever (while)

Networking

To update anything:

sudo apt-get update NAME

To install anything:

sudo apt-get install NAME

to find IP address of Raspberry Pi (will retrieve the IP address):

hostname -I

To connect to the Pi via wifi

ssh pi@... (IP address)

To get the IP address:

  1. find a screen with HDMI cable
  2. plug into Raspberry Pi
  3. plug mouse in the USB
  4. use the graphical user interface on the screen

top right corner, wifi signal, select the wifi network, type in password, write down IP address, then can be used to connect

For remote access to the files on the SD from a computer (to edit code for example), download Cyberduck and use SFTP protocol (or any other similar interface).

VNC allows to use the virtual use interface via wifi (without cable and screen).

  1. Install tightvncserver using
sudo apt-get update tightvncserver
  1. run vncserver :1 on Pi

Choose password:

raspberry

Gives back this answer:

New 'X' desktop is jupiter:1
Creating default startup script /home/pi/.vnc/xstartup
Starting applications specified in /home/pi/.vnc/xstartup
Log file is /home/pi/.vnc/jupiter:1.log

Download RealVNC viewer.

Log in using in this case, use this as username: JUPITER:5901

RFID code

Sam's code is here

Graphical coding using Node-Red

Node-Red is installed on the Raspberry Pi (needs to be enabled)

Use this link to code my device from the web browser

Excercise

Try to generate a sound using light signal from photodiode (CLIP)