Difference between revisions of "Create SD Image Version 0.8"
(→Install MEMS microphone I2S support) |
(→Install MEMS microphone I2S support) |
||
Line 422: | Line 422: | ||
===Install MEMS microphone I2S support=== | ===Install MEMS microphone I2S support=== | ||
− | + | sudo apt-get install git | |
sudo apt-get install raspberrypi-kernel-headers | sudo apt-get install raspberrypi-kernel-headers | ||
cd /home/downloads | cd /home/downloads |
Revision as of 16:49, 17 May 2017
The next image will be 0.8
Contents
- 1 Feature Request
- 2 Bug Fix
- 3 How the image was created
- 3.1 Get latest Jessie image
- 3.2 Set up Wi-Fi
- 3.3 Update, upgrade
- 3.4 Remove packages we don't need
- 3.5 Install packages we need
- 3.6 Install perl modules
- 3.7 Install HiveTool software
- 3.8 Patch perl module GD::Graph
- 3.9 Web Server
- 3.10 Create SQLite database
- 3.11 phpLiteAdmin ver 1.9.6
- 3.12 Install TEMPerHUM software
- 3.13 Install Broadcom 2835 Library ver 1.5
- 3.14 Install wiringPi library ver 2.32
- 3.15 DHT22 Temperature/Humidity Sensor
- 3.16 DHTxx Temperature/Humidity Sensor
- 3.17 HX711 weight ADC
- 3.18 TLS2591 Lux Sensor
- 3.19 Add crontab entries
- 3.20 Video
- 3.21 Access Point
- 3.22 gEDA Schematic/PCB layout software
- 3.23 xrdp
- 3.24 open62541
- 3.25 Install touchscreen pop up keyboard support
- 3.26 Install MEMS microphone I2S support
- 3.27 Install RTC support
- 3.28 Install openOCD
- 3.29 Set GPU memory
- 3.30 Install Desktop Background and Icons
- 4 Write Image
Feature Request
Display LAN IP prominently on config (currently on status screen).Add RTC supportSee Real Time Clock RTC.Add openOCD to talk to the BMD-301.See BMD301.Add MEMS digital microphone modules.Set system timezone and timeRain Gauge Add digital input and counting software for rain gauge at the hive.Add Hivetool icon to desktop and start menu that will launch browser. Set browser home page to localhost.- Add support for metric/SI units.
- NASA Data Download
- Load cell calibration wizard
- Fix graphing software.
- Add more help pages including sensor connector pictures. Put the whole Hivetool wiki on the image?
- Add comment field to beekeeper interface to annotate the data.
- Data sampling engine See Change: Data Acquisition
- Data reduction and compression. Change the weather updates from being downloaded to the hive computer and then uploaded to the public server to reduce the amount of data transferred when using 3G/4G communication to minimize the charges for data transfer. The beehive would send only hive data to the public server, and the public server would fetch the weather data from public sources. This would also simplify the administration when moving the hives to another location, so the client doesn’t need to be updated. In Norway it’s normal to change the location 2 times per year. Also see Change: Weather Data.
- Integrate HiveControl or drop it.
Bug Fix
- Auto expand image
init=/usr/lib/raspi-config/init_resize.sh raspberrypi.stackexchange.com/questions/47773/disable-auto-file-system-expansion-in-new-jessie-image-2016-05-10
- fix formating in line 310 hive.sh when lux is NULL
printf " %s %s %s %.2f %.2f %12s\n"
- Change HIVETOOL_UPLOAD=YES to NO so that the IP doesn't get blacklisted before the hive is configured
- Make sure ntpd is running
- PIGPIO library based sensor drivers quit working with the latest update.
How the image was created
Get latest Jessie image
Download, verify the SHA-1 checksum, unzip, burn image.
Raspbian Jessie with PIXEL Image with PIXEL desktop based on Debian Jessie Version: April 2017 Release date: 2017-04-10 Kernel version: 4.4
Verify the checksum:
sha1sum 2017-04-10-raspbian-jessie.zip
6d7b11bb3d64524203edf6c80c499456fb5fef53
Unzip the image and copy it to the SD card
unzip 2017-04-10-raspbian-jessie.zip
dd bs=4M if=22017-04-10-raspbian-jessie.zip of=/dev/sdb
Boot
Jessie boots directly into the window system. Menu -> Preferences->Raspberry Pi Configuration
Set up Wi-Fi
1. Add your network information to /etc/wpa_supplicant/wpa_supplicant.conf. For an unencrypted open network with an ESSID of dlink:
vi /etc/wpa_supplicant/wpa_supplicant.conf
network={ ssid="dlink" key_mgmt=NONE
auth_alg=OPEN }
Update, upgrade
update your system's package list and then upgrade all your installed packages to their latest versions:
sudo apt-get update sudo apt-get dist-upgrade
DO NOT USE rpi-update. It is for Whezzy, not Jessie and will break the GPIO.
Remove packages we don't need
sudo apt-get remove --purge penguinspuzzle scratch dillo squeak-vm squeak-plugins-scratch sonic-pi netsurf-gtk netsurf-common sudo apt-get autoremove sudo apt-get clean rm -rf /home/pi/python_games sudo rm -rf /opt/minecraft-pi
https://project.altservice.com/issues/418 NO! Don't do this if you want to use the video camera: sudo rm -rf /opt/vc
Install packages we need
sudo apt-get -y install gawk bc apache2 libusb-dev libgd-graph-perl libexpat1-dev sqlite3 sudo apt-get install dh-autoreconf libudev-dev libusb-1
pi@raspberrypi:~ $ sudo apt-get install dh-autoreconf libudev-dev libusb-1 Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package libusb-1
Oops. What happened to libusb-1? Hope it is not needed ... OK, We'll go on without it ...
sudo apt-get install dh-autoreconf libudev-dev
Install perl modules
sudo cpan GD::Text GD::Graph Date::Format XML::Simple DBI DBD::SQLite
Install perl DateTime module
apt-get install libdatetime-perl
Install HiveTool software
Create symbolic links to the hivetool log files:
sudo ln -s /home/hivetool/hivetool_raw.db /var/www/html sudo ln -s /home/hivetool/hive.conf /var/www/html sudo ln -s /home/hivetool/hivetool.log /var/www/html
Patch perl module GD::Graph
The Perl Module, GD::Graph needs a patch to correctly draw a graph with two y axes. Note that the target directory changes with each new perl version. This time it is 5.20.2. Copy the patched file to it's proper location:
sudo cp /home/downloads/axestype.pm /usr/local/share/perl/5.20.2/GD/Graph/
Web Server
Configure apache
- Link the cgi.load and include.load module to mods-enabled
- ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled
- ln -s /etc/apache2/mods-available/include.load /etc/apache2/mods-enabled
- Add .pl to AddHandler cgi-script
- sudo vi /etc/apache2/mods-enabled/mime.conf
- uncomment #AddHandler cgi-script .cgi (around line 219) and add .pl so it looks like:
- AddHandler cgi-script .cgi .pl
- add Includes and +ExecCGI to Options:
- sudo vi /etc/apache2/apache2.conf
- In stanza <Directory /var/www/>
- change
- Options Indexes FollowSymLinks
- to
- Options Indexes FollowSymLinks Includes ExecCGI
- Add index.shtml to DirectoryIndex:
- sudo vi /etc/apache2/mods-enabled/dir.conf
- Change
- DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
- to
- DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm index.shtml
- Set up apache to listen on port 8080 if using port forwarding:
- sudo vi /etc/apache2/ports.conf
- add Listen 8080
- Restart Apache
sudo apachectl restart or sudo/etc/rc4.d/S02apache2 restart
Set sudo user privileges for Apache
This is necessary to allow config.pl to read the sensors. Run visudo to edit the sudo config file:
sudo visudo
and insert this line in the "User privilege specification" section:
www-data ALL=NOPASSWD: /home/hivetool/hive.sh, /home/hivetool/hx711pyB.sh, /home/hivetool/hx711.sh, /home/hivetool/HX711a128.py, /home/hivetool/hx711py.sh, /usr/local/bin/2591, /usr/local/bin/2561, /usr/bin/nice, /home/hivetool/temperhum.sh, /usr/local/bin/hx711, /usr/local/bin/Seeed_DHT22, /usr/local/bin/hx711b
Create SQLite database
cd /home/hivetool sqlite3 hivetool_raw.db sqlite> .read create_hivetool_sqlite.sql sqlite> .quit
Make it writable or config.pl will fail to save to the database.
sudo chmod a+w /home/hivetool/hivetool_raw.db sudo chmod a+w /home/hivetool
Create a symbolic link to /home/hivetool/hivetool_raw.db from /var/www/html so hive_stats.pl and hive_graphX.pl can access the database:
sudo ln -s /home/hivetool/hivetool_raw.db /var/www/html/
phpLiteAdmin ver 1.9.6
Install SQLite database administration tools. https://www.phpliteadmin.org/download/
sudo apt-get install php5 php5-sqlite cd /var/www/html sudo mkdir admin cd admin sudo cp /home/downloads/phpLiteAdmin_v1-9-6.zip . sudo unzip phpLiteAdmin_v1-9-6.zip
http://www.raspitux.de/en/using-phpliteadmin-with-raspberry-pi/#respond
sudo cp phpliteadmin.config.sample.php phpliteadmin.config.php vi phpliteadmin.config.php
change
$directory = '.';
to
$directory = '..';
Install TEMPerHUM software
sudo apt-get update sudo apt-get install dh-autoreconf libudev-dev libusb-1.0-0-dev cmake-curses-gui
cd /home/downloads sudo git clone git://github.com/signal11/hidapi cd hidapi sudo ./bootstrap sudo ./configure sudo make sudo make install
cd ..
#sudo git clone git://github.com/edorfaus/TEMPered #cd TEMPered
#sudo git clone https://github.com/rcrum003/TEMPered-v6-2015 #cd TEMPered-v6-2015
git clone git://github.com/mushisushi/TEMPered/
sudo ccmake .
Then the sub commands: "c" to configure then "g" to save and go
sudo make sudo make install
Add /usr/local/lib/arm-linux-gnueabihf/ to /etc/ld.so.conf
sudo vi /etc/ld.so.conf
So it looks like this:
include /etc/ld.so.conf.d/*.conf /usr/local/lib/arm-linux-gnueabihf/
Run ldconfig to pick up the new libraries
sudo ldconfig
Install Broadcom 2835 Library ver 1.5
Download and install the bcm2835 library: https://gist.github.com/annem/3183536
cd /home/downloads wget http://67.192.60.197/mikem/bcm2835/bcm2835-1.5.tar.gz tar xvfz bcm2835-1.5.tar.gz cd bcm2835-1.5 ./configure make sudo make check sudo make install
Install wiringPi library ver 2.32
- get wiringPi code from github and compile it
- cd /home/downloads
- git clone git://git.drogon.net/wiringPi
- cd wiringPi
- ./build
- Test
- gpio -v
- gpio readall
gpio -v gpio version: 2.32 Copyright (c) 2012-2015 Gordon Henderson
http://wiringpi.com/download-and-install/
DHT22 Temperature/Humidity Sensor
Groove Seeed - DHT22 with modified code. Note that the code has been modified to return the temperature and humidity in floating point instead of having to divide it by 10, and a few other "improvements".
- Install wiringPi libraries
- Get the DHT22 software
- cd /home/downloads
- sudo git clone https://github.com/Seeed-Studio/Grove-RaspberryPi.git
- cd Grove-RaspberryPi/Grove\ -\ Temperature\ and\ Humidity\ Sensor\ Pro
- make
- sudo cp Seeed_DHT22 /usr/local/bin
Python DHT22 code from Adafruit
sudo apt-get install python-dev cd /home/downloads git clone https://github.com/adafruit/Adafruit_Python_DHT.git cd Adafruit_Python_DHT sudo python setup.py install cd examples python AdafruitDHT.py
DHTxx Temperature/Humidity Sensor
This code uses the PiGPIO libraries (pigpiod).
- Download the DHT11/21/22/33/44 Sensor code from http://abyz.co.uk/rpi/pigpio/code/DHTXXD.zip
- Unzip
- compile
Note that this code uses the Broadcom GPIO numbering so Ras Pi GPIO 2 <=> Broadcom GPIO 27 Ras Pi GPIO 3 <=> Broadcom GPIO 22
HX711 weight ADC
hx711wp
Note: The original hx711 code has been modified to use the wiringPi library and a bug fixed.
- Download the software from gitHub
- cd /home/downloads
- sudo git clone https://github.com/ggurov/hx711
- replace hx711.c with hx711wp.c and add locking.h
- compile
- gcc -o hx711wp hx711wp.c -lwiringPi
- Copy hx711 command to /usr/local/bin:
- sudo cp hx711wp /usr/local/bin/hx711
- To read the battery voltage, copy hx711wp_chanB command to /usr/local/bin:
- sudo cp hx711wp_chanB /usr/local/bin/hx711wp_chanB
TLS2591 Lux Sensor
2591 Adafruit with modified code.
-rw-r--r-- 1 root root 10439 Aug 3 01:36 2591a.cpp -rw-r--r-- 1 root root 3303 Aug 3 01:36 2591a.h -rw-r--r-- 1 root root 1509 Aug 3 01:36 2591_pi_2.cpp
gcc 2591_pi_2.cpp 2591a.cpp -lwiringPi -o 2591 cp 2591 /usr/local/bin
Add crontab entries
Edit crontab:
sudo crontab -e
Add to crontab:
# # ### Start of Hivetool crontab entries ### # # start PIGPIO daemon on boot @reboot /usr/local/bin/pigpiod # # start Data Acquisition Daemon on boot @reboot /home/hivetool/dad7.sh # # Check hive instruments every 5 minutes. Kill process after 3 1/2 minutes. 0,5,10,15,20,25,30,35,40,45,50,55 * * * * timeout -s KILL 3.5m /home/hivetool/hive.sh >/dev/null 2>&1 # # Check the server status. Kill process after 1 minute. 4,9,14,19,24,29,34,39,44,49,54,59 * * * * timeout -s KILL 1m /home/hivetool/server_status.sh > /var/www/html/server_status.txt # # Reset the rain gauge at midnight 1 0 * * * timeout -s KILL 1m /home/hivetool/rain_reset.sh # # ### End of HiveTool crontab entries ### #
Video
Install VLC media software. Note that for the camera to work, it must be enabled by running raspi-config.
sudo apt-get install vlc
To automatically start the video streaming using Real Time Streaming Protocol to port 8554, add to /etc/rc.local
# start video stream su pi /home/hivetool/stream_video.sh
/home/hivetool/stream_video.sh should be:
raspivid -n -o - -t 0 -w 800 -h 400 -fps 24 |cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554}' :demux=h264
This method uses raspivid to streams video from the PiCam to vlc where is can be accessed with videoLAN, a free and open souce media player for Apple, Linux, Microsoft platforms at port 8554 using RTSP://hive.ip:8554
Access Point
sudo apt-get install hostapd isc-dhcp-server
https://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/install-software
gEDA Schematic/PCB layout software
sudo apt-get update sudo apt-get install geda sudo apt-get install pcb sudo apt-get install gerbv sudo apt-get install zip
xrdp
uninstall RealVNC (This is a work around as now realvnc-vnc-server comes installed and breaks xrdp. xrdp is currently favored over realvnc as xrdp works with Microsoft Windows.)
uninstall RealVNC and install xrdp
apt-get purge realvnc-vnc-server sudo apt-get install xrdp
fix mouse pointer
vi .xsessionrc xsetroot -cursor_name left_ptr&
open62541
sudo git clone git://github.com/open62541/open62541 # ### sudo apt-get install git build-essential gcc pkg-config cmake python python-lxml sudo apt-get install cmake cmake-data python-lxml # enable additional features sudo apt-get install libexpat1-dev # for XML-encodingi ### already done sudo apt-get install liburcu-dev # for multithreading sudo apt-get install check # for unit tests sudo apt-get install graphviz doxygen # for documentation generation sudo cd open62541 sudo mkdir build sudo cd build sudo cmake .. sudo make # select additional features sudo ccmake .. # enter g to build and exit sudo make
Install touchscreen pop up keyboard support
sudo apt-get install matchbox
Install MEMS microphone I2S support
sudo apt-get install git sudo apt-get install raspberrypi-kernel-headers cd /home/downloads git clone https://github.com/skakri/asoc-i2s-loader cd asoc-i2s-loader make ... to be continued ...
in /boot/config.txt
# Uncomment to enable I2S MEMs microphone 6-9-16 AO dtparam=i2s=on
in /sys/kernel/debug/asoc/platforms get the platform and device name. Change in the asoc-i2s-loader.c
3f203000.i2s snd-soc-dummy
in /etc/modprobe.d/raspi-blacklist.conf
blacklist snd_soc_wm8804 blacklist snd_soc_pcm512x blacklist snd_soc_tas5713
To record:
arecord -D hw:0 -c2 -r 48000 -f S32_LE -t wav -v file.wav
Install RTC support
Edit /boot/config.txt. Add:
#enable RTC DS3231 module dtoverlay=i2c-rtc,ds3231
Edit /lib/udev/hwclock-set and comment out these three lines:
#if [ -e /run/systemd/system ] ; then # exit 0 #fi
Install openOCD
Set GPU memory
Set GPU_MEM, GPU_MEM_256, GPU_MEM_512, and GPU_MEM_1024 for different Pi models in config.txt. Maybe:
GPU_MEM=64 GPU_MEM_256=64 GPU_MEM_512=128 GPU_MEM_1024=256
Install Desktop Background and Icons
Write Image
Copy the image to another computer:
1. Remove the SD card from the Pi and on another computer, copy the image to a file:
dd bs=4M if=/dev/sdb of=/home/downloads/hivetool074.img
2. Shrink the image:
http://sirlagz.net/2013/03/10/script-automatic-rpi-image-downsizer/
3. Compress the image using zip:
zip hivetool074.img.zip hivetool074.img
bash-4.2# dd bs=40M if=/dev/sdb of=/home/downloads/hivetool074.img 379+1 records in 379+1 records out 15931539456 bytes (16 GB) copied, 596.492 s, 26.7 MB/s
./autosizer.sh hivetool074.img
e2fsck 1.42.6 (21-Sep-2012) Pass 1: Checking inodes, blocks, and sizes Inodes that were part of a corrupted orphan linked list found. Fix<y>? yes Inode 13283 was part of the orphaned inode list. FIXED.
...
Inode 392946 was part of the orphaned inode list. FIXED. Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information
/dev/loop0: ***** FILE SYSTEM WAS MODIFIED ***** /dev/loop0: 141123/971040 files (0.2% non-contiguous), 1308188/3872384 blocks resize2fs 1.42.6 (21-Sep-2012) resize2fs 1.42.6 (21-Sep-2012) Resizing the filesystem on /dev/loop0 to 1412558 (4k) blocks. Begin pass 2 (max = 420793) Relocating blocks XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Begin pass 3 (max = 119) Scanning inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Begin pass 4 (max = 14259) Updating inode references XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX The filesystem on /dev/loop0 is now 1412558 blocks long.
# zip hivetool074.img.zip hivetool074.img adding: hivetool074.img (deflated 58%)
bash-4.2# md5sum hivetool074.img.zip 7cdca1e73a5d81e3c70909961c6ea4b9 hivetool074.img.zip bash-4.2# sha1sum hivetool074.img.zip ff504657257fdf13905a1ad24fd2f2eab5af1562 hivetool074.img.zip $ md5sum hivetool074.img 2e26e8f266870cebcd51bf365d861559 hivetool074.img $ sha1sum hivetool074.img c855c8c1175866bd52ed8143490d320011323108 hivetool074.img $ ls -l hivetool074* -rw-r--r-- 1 root root 5856092672 Feb 21 20:01 hivetool074.img -rw-r--r-- 1 root root 2474147900 Feb 21 20:07 hivetool074.img.zip