Difference between revisions of "RaspberryPi"

From Land Boards Wiki
Jump to navigation Jump to search
 
(34 intermediate revisions by 2 users not shown)
Line 8: Line 8:
  
 
<video type="youtube">drVZHDs8yGk</video>
 
<video type="youtube">drVZHDs8yGk</video>
 +
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 108: Line 109:
 
| [[RPI_PSOC5]]
 
| [[RPI_PSOC5]]
 
| Raspberry Pi "Clone"
 
| Raspberry Pi "Clone"
 +
| N/A
 +
| N/A
 +
| All Raspberry Pi Models
 +
|-
 +
| [[RPI_SPI8]]
 +
| 8-Channel SPI Bus Multiplexer
 
| N/A
 
| N/A
 
| N/A
 
| N/A
Line 124: Line 131:
 
== Hardware Interfaces ==
 
== Hardware Interfaces ==
  
The Raspberry Pi has a 26-pin BERG stick style header which has the interfaces to connect up external hardware. They provide 8 GPIO pins plus access to I2C, SPI, UART), as well as +3.3 V, +5 V and GND supply lines.
+
[https://retropie-roms.co.uk/ The Raspberry Pi roms pack] has a 26-pin BERG stick style header which has the interfaces to connect up external hardware. They provide 8 GPIO pins plus access to I2C, SPI, UART), as well as +3.3 V, +5 V and GND supply lines.
  
 
WARNING: GPIO voltage levels are 3.3 V and are not 5 V tolerant. There is no over-voltage protection on the board.
 
WARNING: GPIO voltage levels are 3.3 V and are not 5 V tolerant. There is no over-voltage protection on the board.
Line 141: Line 148:
 
=== SPI Interface ===
 
=== SPI Interface ===
  
* [http://www.brianhensley.net/2012/07/getting-spi-working-on-raspberry-pi.html Getting SPI working on the Raspberry Pi]
+
* [https://www.takaitra.com/spi-device-raspberry-pi/ Controlling an SPI device with the Raspberry Pi] - Part 1
 +
* [https://www.takaitra.com/mcp4151-digital-potentiometer-raspberry-pi/ Controlling the MCP4151 Digital Potentiometer with the Raspberry Pi] - Part 2
 +
* [https://pimylifeup.com/raspberry-pi-spi/ Enabling SPI on the Raspberry Pi] - 01-2022
 +
* [https://learn.sparkfun.com/tutorials/raspberry-pi-spi-and-i2c-tutorial/all#spi-on-pi SPI on Pi sparkfun]
 
* [http://oss.oetiker.ch/rrdtool/doc/rrdtool.en.html rrdtool Data logging and graphing tool]
 
* [http://oss.oetiker.ch/rrdtool/doc/rrdtool.en.html rrdtool Data logging and graphing tool]
 
* [http://louisthiery.com/spi-python-hardware-spi-for-raspi/ Hardware SPI]
 
* [http://louisthiery.com/spi-python-hardware-spi-for-raspi/ Hardware SPI]
Line 178: Line 188:
 
[[File:CompVideo-Setup-2015-02-01.jpg]]
 
[[File:CompVideo-Setup-2015-02-01.jpg]]
  
3.5" LCD Display with Composite Video - Was $25 from mcmelectronics (now Newark no longer sold)
+
* 3.5" LCD Display with Composite Video - Was $25 from mcmelectronics (now Newark no longer sold)
Specifications:
+
* Specifications:
Display ratio: 4:3
+
* Display ratio: 4:3
Backlight: LED
+
* Backlight: LED
Brightness: 300 cd/m2
+
* Brightness: 300 cd/m2
Resolution: 320 x 240
+
* Resolution: 320 x 240
Viewing Angle: 40/60 60/60 (U/D/L/R)
+
* Viewing Angle: 40/60 60/60 (U/D/L/R)
Inputs: Composite Video
+
* Inputs: Composite Video
Controls: Keypad control board
+
* Controls: Keypad control board
Driving board dimension 62.0x55.2x 9.0mm
+
* Driving board dimension 62.0x55.2x 9.0mm
12~15VDC110mA±20mA
+
* 12~15VDC 110mA±20mA
83-15136.jpg
 
  
 
=== Software Setup Composite Output ===
 
=== Software Setup Composite Output ===
  
Using a Mini PAL/NTSC Display with a Raspberry Pi
+
* Using a Mini PAL/NTSC Display with a Raspberry Pi
To configure Raspian for composite output
+
* To configure Raspian for composite output
Reboot the Raspberry Pi and enter your username and password.
+
* Reboot the Raspberry Pi and enter your username and password.
To edit the configuration file, enter the command
+
* To edit the configuration file, enter the command
 +
<pre>
 
sudo nano /boot/config.txt
 
sudo nano /boot/config.txt
 +
</pre>
 
Add
 
Add
 +
<pre>
 
sdtv_mode=0    Normal NTSC
 
sdtv_mode=0    Normal NTSC
Comment out in 2 places
+
</pre>
 +
* Comment out in 2 places
 +
<pre>
 
#hdmi_force_hotplug=1
 
#hdmi_force_hotplug=1
Uncomment and add a/r
+
</pre>
 +
* Uncomment and add a/r
 +
<pre>
 
framebuffer_width=320
 
framebuffer_width=320
 
framebuffer_height=240
 
framebuffer_height=240
 +
</pre>
  
 
== Raspberry Pi Cluster Home Page ==
 
== Raspberry Pi Cluster Home Page ==
Line 273: Line 290:
 
=== Main .1 Network Static IP Addresses ===
 
=== Main .1 Network Static IP Addresses ===
  
192.168.1.7 = PiRouter wireless side (as seen from the main .1 network)
+
* 192.168.1.7 = PiRouter wireless side (as seen from the main .1 network)
192.168.1.XXX - MotionEyes camera
+
* 192.168.1.XXX - MotionEyes camera
PiCluster Addresses
+
* PiCluster Addresses
Intend to move the below addresses to the .2 secondary network
+
* Intend to move the below addresses to the .2 secondary network
 +
* RP2-01 192.168.1.18
  
 
=== Secondary .2 Network Static IP Addresses ===
 
=== Secondary .2 Network Static IP Addresses ===
Line 305: Line 323:
 
rpp3-15 = 192.168.2.165
 
rpp3-15 = 192.168.2.165
 
rpp3-16 = 192.168.2.166
 
rpp3-16 = 192.168.2.166
 +
</pre>
 +
 +
== Router/Bridge ==
 +
 +
* wifi-to-eth-route.sh
 +
 +
<pre>
 +
#!/bin/bash
 +
 +
# Share Wifi with Eth device
 +
# Loaded from on 2019-01-19
 +
# https://github.com/arpitjindal97/raspbian-recipes/blob/master/wifi-to-eth-rout
 +
e.sh
 +
#
 +
# This script is created to work with Raspbian Stretch
 +
# but it can be used with most of the distributions
 +
# by making few changes.
 +
#
 +
# Make sure you have already installed `dnsmasq`
 +
# Please modify the variables according to your need
 +
# Don't forget to change the name of network interface
 +
# Check them with `ifconfig`
 +
 +
ip_address="192.168.2.1"
 +
netmask="255.255.255.0"
 +
dhcp_range_start="192.168.2.2"
 +
dhcp_range_end="192.168.2.200"
 +
dhcp_time="12h"
 +
eth="eth0"
 +
wlan="wlan0"
 +
 +
sudo systemctl start network-online.target &> /dev/null
 +
 +
sudo iptables -F
 +
sudo iptables -t nat -F
 +
sudo iptables -t nat -A POSTROUTING -o $wlan -j MASQUERADE
 +
sudo iptables -A FORWARD -i $wlan -o $eth -m state --state RELATED,ESTABLISHED -
 +
j ACCEPT
 +
sudo iptables -A FORWARD -i $eth -o $wlan -j ACCEPT
 +
 +
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
 +
 +
sudo ifconfig eth0 $ip_address netmask $netmask
 +
 +
# Remove default route created by dhcpcd
 +
sudo ip route del 0/0 dev eth0 &> /dev/null
 +
 +
sudo systemctl stop dnsmasq
 +
 +
sudo rm -rf /etc/dnsmasq.d/* &> /dev/null
 +
 +
echo -e "interface=eth0\n\
 +
bind-interfaces\n\
 +
server=8.8.8.8\n\
 +
domain-needed\n\
 +
bogus-priv\n\
 +
dhcp-range=$dhcp_range_start,$dhcp_range_end,$dhcp_time" > /tmp/custom-dnsmasq.c
 +
onf
 +
 +
sudo cp /tmp/custom-dnsmasq.conf /etc/dnsmasq.d/custom-dnsmasq.conf
 +
sudo systemctl start dnsmasq
 
</pre>
 
</pre>
  
 
== Other Pi/Linux Stuff ==
 
== Other Pi/Linux Stuff ==
  
* Raspberry Pi Documentation page
+
* [https://www.raspberrypi.org/documentation/ Raspberry Pi Documentation page]
* GitHub for Raspberry Pi Documentation page - can copy to local git repo
+
* [https://github.com/raspberrypi/documentation GitHub for Raspberry Pi Documentation page - can copy to local git repo]
* Shell programming with bash: by example, by counter-example
+
* [http://matt.might.net/articles/bash-by-example/ Shell programming with bash: by example, by counter-example]
* How to Use the Command Line for Apple macOS and Linux
+
* [https://www.taniarascia.com/how-to-use-the-command-line-for-apple-macos-and-linux/ How to Use the Command Line for Apple macOS and Linux]
 +
* [https://installvirtual.com/how-to-install-python-3-8-on-raspberry-pi-raspbian/ How to install Python 3.8 on Raspberry Pi (Raspbian)]
  
 
== Game Machines ==
 
== Game Machines ==
  
 
* RetroPie - The one we use
 
* RetroPie - The one we use
* PiPlay, formerly called PiMAME
+
* [http://pimame.org/ PiPlay, formerly called PiMAME]
* EmulationStation
+
* [https://github.com/Aloshi/EmulationStation EmulationStation]
* MAME4ALL for Pi by Squid
+
* [http://code.google.com/p/mame4all-pi/ MAME4ALL for Pi by Squid]
* GroovyGameGear.com
+
* [http://groovygamegear.com/ GroovyGameGear.com]
 +
 
 +
== Raspberry Pi Pico ==
 +
 
 +
* [[Raspberry Pi Pico]]

Latest revision as of 18:31, 5 May 2022

Tindie-mediums.png

Raspberry Pi Page

Raspberry Pi Cards


Documentation Function 3.3V GPIO 5V GPIO Compatible with
RasPi-GVS GVS card 0 16 All Raspberry Pi Models
RPP-UIO-16 GVS card 3.3V/5V 26 0-16 Raspberry Pi Models A+, B+, Pi 2
RASPI-PLUS-GVS GVS card 5V 9 16 Raspberry Pi Models A+, B+, Pi 2
RASPI-PLUS-GVS-CFG Configurable GVS hat 26 0-8 Raspberry Pi Models A+, B+, Pi 2
RPIO-TINY GVS card 17 0 All Raspberry Pi Models
RPIO-TINY-2 GVS card 17 0-8 All Raspberry Pi Models
RPIO-TINY-3 GVS card 17 0 All Raspberry Pi Models
RPI-MDI Servo card 3 0 All Raspberry Pi Models
RPI-CONSOLE Console extender card (Mini USB) N/A N/A All Raspberry Pi Models
RPI-CONSOLE-U Console extender card (Micro USB) N/A N/A All Raspberry Pi Models
RPI-I2C-HUB I2C Hub/repeater/level translator card N/A N/A All Raspberry Pi Models
RPPSOC Programmable System On a Chip N/A N/A Raspberry Pi Models A+, B+, Pi 2, Pi 3
RPI-PWR Raspberry Pi Recessed Power Card N/A N/A All Raspberry Pi Models
PIATX Raspberry Pi <> ATX Case Connections N/A N/A All Raspberry Pi Models
PC-Case-USB ATX Case USB Connections N/A N/A All Raspberry Pi Models
RPI_PSOC5 Raspberry Pi "Clone" N/A N/A All Raspberry Pi Models
RPI_SPI8 8-Channel SPI Bus Multiplexer N/A N/A All Raspberry Pi Models

Prototyping plate

The Adafruit prototyping "plate" (ie, daughtercard) is available here.

Adafruit prototyping plate 801-04.jpg

If you put a mini-breadboard in the middle it obscures the silkscreen markings for the port numbers so the above picture can help determine which header pin corresponds to which channel.

Hardware Interfaces

The Raspberry Pi roms pack has a 26-pin BERG stick style header which has the interfaces to connect up external hardware. They provide 8 GPIO pins plus access to I2C, SPI, UART), as well as +3.3 V, +5 V and GND supply lines.

WARNING: GPIO voltage levels are 3.3 V and are not 5 V tolerant. There is no over-voltage protection on the board.

GPIO Pins

I2C Interface

SPI Interface

One Wire Interface

I/O Connector

http://makezineblog.files.wordpress.com/2014/02/gpio-descriptions.png

Composite Video

4-Pole A/V Connector

  • The Raspberry Pi Models A+ and B+ have a 4-pole 3.5mm connector which has right/left audio and video
  • Cheap ebay connector didn't work because of pinout
    • Cable has outer ring as ground
    • Raspberry Pi has outer ring as video

Model-B-Plus-Audio-Video-Jack-Diagram.png

Av-pinouts-zune.jpg

  • Re-wired cable and it worked

CompVideo-cable rewired.jpg

3.5" Composite Output Monitor

CompVideo-Setup-2015-02-01.jpg

  • 3.5" LCD Display with Composite Video - Was $25 from mcmelectronics (now Newark no longer sold)
  • Specifications:
  • Display ratio: 4:3
  • Backlight: LED
  • Brightness: 300 cd/m2
  • Resolution: 320 x 240
  • Viewing Angle: 40/60 60/60 (U/D/L/R)
  • Inputs: Composite Video
  • Controls: Keypad control board
  • Driving board dimension 62.0x55.2x 9.0mm
  • 12~15VDC 110mA±20mA

Software Setup Composite Output

  • Using a Mini PAL/NTSC Display with a Raspberry Pi
  • To configure Raspian for composite output
  • Reboot the Raspberry Pi and enter your username and password.
  • To edit the configuration file, enter the command
sudo nano /boot/config.txt

Add

sdtv_mode=0    Normal NTSC
  • Comment out in 2 places
#hdmi_force_hotplug=1
  • Uncomment and add a/r
framebuffer_width=320
framebuffer_height=240

Raspberry Pi Cluster Home Page

Pi Mechanicals

The Raspberry Pi PCB measures 85mm x 56.2mm excluding overhanging connectors and is 20.8mm high. Pi Mechanicals are complicated due to a lack of adequate mounting holes. Various methods have been developed to deal with this deficiency. The primary method is clamping the card from the sides.

Using a Raspberry Pi as Wireless to Ethernet Switch Bridge

Raspberry_Pi_as_Wireless_to_Wired_Ethernet_Bridge

Setting a Static IP on the Raspberry Pi (Raspian Stretch)

To find out which version of Raspian is running

cat /etc/os-release
sudo nano /etc/dhcpcd.conf

At the bottom of the file add settings:

interface eth0
static ip_address=192.168.2.31/24
static routers=192.168.2.1
static domain_name_servers=192.168.2.1 8.8.8.8 4.2.2.1
static domain_search=example.com
static domain_name=example.com

Setting a Static IP on the Raspberry Pi (Raspian Jessie and earlier)

cat /etc/os-release

RPI-staticIP.PNG

sudo nano /etc/network/interfaces

address 192.168.1.81
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

sudo rm /var/lib/dhcp/*

Network Static IP Addresses

There are two networks. The .1 network connects to the router to the Internet. The .2 network connects to the PiRouter.

Main .1 Network Static IP Addresses

  • 192.168.1.7 = PiRouter wireless side (as seen from the main .1 network)
  • 192.168.1.XXX - MotionEyes camera
  • PiCluster Addresses
  • Intend to move the below addresses to the .2 secondary network
  • RP2-01 192.168.1.18

Secondary .2 Network Static IP Addresses

192.168.2.1 = PiRouter wired Ethernet side (as seen from the .2 network)
192.168.2.51 = hpg7i3 - HP laptop
192.168.2.101 = RPP2-02
192.168.2.102 = RP2-01
192.168.2.103 = rpp01
192.168.2.104 = rp256
192.168.2.105 = B256
192.168.2.109 = BBB_RevC
192.168.2.110 = BBB_RevB
rpp3-01 = 192.168.2.151
rpp3-02 = 192.168.2.152
rpp3-03 = 192.168.2.153
rpp3-04 = 192.168.2.154
rpp3-05 = 192.168.2.155
rpp3-06 = 192.168.2.156
rpp3-07 = 192.168.2.157
rpp3-08 = 192.168.2.158
rpp3-09 = 192.168.2.159
rpp3-10 = 192.168.2.160
rpp3-11 = 192.168.2.161
rpp3-12 = 192.168.2.162
rpp3-13 = 192.168.2.163
rpp3-14 = 192.168.2.164
rpp3-15 = 192.168.2.165
rpp3-16 = 192.168.2.166

Router/Bridge

  • wifi-to-eth-route.sh
#!/bin/bash

# Share Wifi with Eth device
# Loaded from on 2019-01-19
# https://github.com/arpitjindal97/raspbian-recipes/blob/master/wifi-to-eth-rout
e.sh
#
# This script is created to work with Raspbian Stretch
# but it can be used with most of the distributions
# by making few changes.
#
# Make sure you have already installed `dnsmasq`
# Please modify the variables according to your need
# Don't forget to change the name of network interface
# Check them with `ifconfig`

ip_address="192.168.2.1"
netmask="255.255.255.0"
dhcp_range_start="192.168.2.2"
dhcp_range_end="192.168.2.200"
dhcp_time="12h"
eth="eth0"
wlan="wlan0"

sudo systemctl start network-online.target &> /dev/null

sudo iptables -F
sudo iptables -t nat -F
sudo iptables -t nat -A POSTROUTING -o $wlan -j MASQUERADE
sudo iptables -A FORWARD -i $wlan -o $eth -m state --state RELATED,ESTABLISHED -
j ACCEPT
sudo iptables -A FORWARD -i $eth -o $wlan -j ACCEPT

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

sudo ifconfig eth0 $ip_address netmask $netmask

# Remove default route created by dhcpcd
sudo ip route del 0/0 dev eth0 &> /dev/null

sudo systemctl stop dnsmasq

sudo rm -rf /etc/dnsmasq.d/* &> /dev/null

echo -e "interface=eth0\n\
bind-interfaces\n\
server=8.8.8.8\n\
domain-needed\n\
bogus-priv\n\
dhcp-range=$dhcp_range_start,$dhcp_range_end,$dhcp_time" > /tmp/custom-dnsmasq.c
onf

sudo cp /tmp/custom-dnsmasq.conf /etc/dnsmasq.d/custom-dnsmasq.conf
sudo systemctl start dnsmasq

Other Pi/Linux Stuff

Game Machines

Raspberry Pi Pico