Menu |
Prof /
HABLAN-RaspbianHABLAN - Multispectral and Multiangular Remote Sensing of the Light at Night from High Altitude BalloonSoftware package <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>. IntroductionThe aim of this project is to develop a system capable of remotely sense multispectral and multiangular properties of light fixtures from above ground. The system is initially designed to fly on High Altitude Balloon but an application to commercial drones is also evaluated. The linux distribution used for this system is raspbian Jessie. We chose a development philosophy based on a complete control from the Linux command line. The system can be controlled simply with a low speed remote connection provided by a SSH client installed on the user workstation. The RPI connected to the system act as a server. From a private network ssh sand@servers_local_ip Installing and configuring subsystemsBasic system installations and dependanciesIf necessary, refer to this guide for the setting up of your Raspberry Pi.
sudo useradd sand sudo passwd sand sudo mkdir /home/sand sudo cp /home/pi/.bashrc /home/sand/ sudo chown -R sand /home/sand sudo chgrp -R sand /home/sand sudo sh -c 'echo "sand ALL=(ALL:ALL) ALL" >> /etc/sudoers'
sudo raspi-config
sudo vim /etc/passwd
/bin/bash
sudo apt-get update && sudo apt-get upgrade sudo apt-get install gfortran sudo ln -s `which gfortran` /usr/local/bin/g77 sudo apt-get install gcc sudo apt-get install cpp sudo apt-get install g++ sudo apt-get install make sudo apt-get install vim sudo apt-get install vim-common sudo apt-get install bc sudo apt-get install apache2 sudo apt-get install gpsd sudo apt-get install gpsd-clients sudo apt-get install lm-sensors sudo apt-get install openssh-client sudo apt-get install openssh-server sudo apt-get install imagemagick sudo apt-get install netpbm sudo apt-get install git sudo apt-get install python-serial sudo apt-get install ntp sudo apt-get install python-dev python-rpi.gpio sudo apt-get install software-properties-common (need to check it again...) sudo add-apt-repository ppa:jon-severinsson/ffmpeg && sudo apt-get update -qq (need to check it again..) sudo apt-get install ffmpeg sudo apt-get install python3-gpiozero sudo apt install gphoto2 libgphoto2* SSHSSH server allows any remote SSH client to connect to the server to remotely control system programs from the command line or to download (upstream / downstream) data.
sudo raspi-config
sudo iptables -I INPUT 1 -p tcp --dport 2022 -j ACCEPT sudo iptables -I INPUT 1 -p tcp --dport 2080 -j ACCEPT sudo iptables-save Installing HABLAN applicationsLatest available package release on bitbucket mercurial repository
cd mkdir git cd git git clone https://github.com/aubema/hablan.git
sudo cp -f /home/sand/git/hablan/* /usr/local/bin/ sudo chmod a+x /usr/local/bin/* Automatic startup of hablan.bash codeEdit /etc/rc.local sudo vim /etc/rc.local Enter the input mode by typing < i > and add the following line before the exit 0 (N.B. < i > is the keyboard key i) bash -c '/usr/local/bin/hablan.bash &> /home/sand/hablan.log' Then save the file by typing: <escape> :wq (N.B. <escape> is the keyboard key esc) Apache serverWe are using the Apache2 web server. This server allow the remote control from a web interface. It allow also browsing the database. To activate the web server, we must:
sudo a2enmod userdir sudo service apache2 restart
sudo mkdir /var/www/html/data sudo chmod a+rx /var/www/html/data
sudo vim /etc/apache2/apache2.conf Then type < i > to enter insert mode and add the following lines to the file # added for HABLAN <Directory /var/www/html/data> Options Indexes FollowSymLinks MultiViews AllowOverride None Require all granted </Directory> Then exit and save by typing: <escape> :wq
sudo a2enmod userdir sudo service apache2 restart USB GPS Stratux Vk-162 Remote Mount USB GPS (U-blox)The GPS is controlled by the gpsd server. The GPS startup may easily take 45 seconds (time to connect to available satellites). Sometime, the GPS do not succeed to connect to satellites. Most of the time this occur when satellites are masked by obstacles like mountains or buildings. The observe-hablan.py is able to extract latitude and longitude from the GPS. To be sure that the gpsd server will work properly, do the following steps. Edit the gpsd configuration sudo vim /etc/default/gpsd type < i > and set the following parameters # Default settings for the gpsd init script and the hotplug wrapper. # Start the gpsd daemon automatically at boot time START_DAEMON="true" # Use USB hotplugging to add new USB devices automatically to the daemon USBAUTO="true" # Devices gpsd should collect to at boot time. # They need to be read/writeable, either by user gpsd or the group dialout. DEVICES="/dev/ttyACM0" # Other options you want to pass to gpsd GPSD_OPTIONS="-F /var/run/gpsd.sock -b -n" Save and quit by typing: <escape> :wq Shutdown buttonEnter the following commands in the terminal cd /home/sand/git/hablan chmod a+x shutdown_button.py sudo cp shutdown_button.py /usr/local/bin sudo cp shutdown_button.service /etc/systemd/system sudo systemctl enable shutdown_button.service sudo systemctl start shutdown_button.service Real time clockWe are using the DS3231 RTC module to keep the date and time after powering off the system. Update the RPI sudo apt-get update sudo apt-get upgrade Configure the I2C interfacesudo raspi-config This command will bring up the configuration tool; this tool is an easy way to make a variety of changes to your Raspberry Pi’s configuration. Today, however, we will only by exploring how to enable the I2C interface. Use the arrow keys to go down and select “5 Interfacing Options“. Once this option has been selected, you can press Enter.
We must restart the Raspberry Pi. To do this first get back to the terminal by pressing Enter and then <escape>. Type the following command into the terminal on your Raspberry Pi to restart it. sudo reboot Run the following command on your Raspberry Pi to install python-smbus and i2c-tools: sudo apt-get install python-smbus i2c-tools With those tools now installed run the following command on your Raspberry Pi to detect that you have correctly wired up your RTC device. sudo i2cdetect -y 1 If you have successfully wired up your RTC circuit, you should see the ID #68 appear. This id is the address of the DS3231 RTC Chips. Once we have the Kernel driver up and running the tool will start to display UU instead, this is an indication that it is working as intended. Setting up the Raspberry Pi RTC TimeWith I2C successfully setup and verified that we could see our RTC circuit then we can begin the process of configuring the Raspberry Pi to use our RTC Chip for its time.
Run the following command on your Raspberry PI to begin editing the /boot/config.txt file. sudo vim /boot/config.txt Within this file, you will want to add the following line to the bottom of the file. DS1307 dtoverlay=i2c-rtc,ds3231 Once you have added the correct line for your device to the bottom of the file you can save and quit out of it by pressing <escape>, then :wq and then Enter. With that change made we need to restart the Raspberry Pi, so it loads in the latest configuration changes. Run the following command on your Raspberry Pi to restart it. sudo reboot Once your Raspberry Pi has finished restarting we can now run the following command, this is so we can make sure that the kernel drivers for the RTC Chip are loaded in. sudo i2cdetect -y 1 You should see a wall of text appear, if UU appears instead of 68 then we have successfully loaded in the Kernel driver for our RTC circuit. Now that we have successfully got the kernel driver activated for the RTC Chip and we know it’s communicating with the Raspberry Pi, we need to remove the fake hwclock package. This package acts as a placeholder for the real hardware clock when you don’t have one. Type the following two commands into the terminal on your Raspberry Pi to remove the fake-hwclock package. We also remove hwclock from any startup scripts as we will no longer need this. sudo apt-get -y remove fake-hwclock sudo update-rc.d -f fake-hwclock remove Now that we have disabled the fake-hwclock package we can proceed with getting the original hardware clock script that is included in Raspbian up and running again by commenting out a section of code. Run the following command to begin editing the original RTC script. sudo vim /lib/udev/hwclock-set If you upgrade the operating system, you may need to redo the following step. Find and comment out the following three lines by placing # in front of it as we have done below. Find if [ -e /run/systemd/system ] ; then exit 0 fi Replace With #if [ -e /run/systemd/system ] ; then # exit 0 #fi Once you have made the change, save the file by pressing <escape> then :wq then Enter. Syncing time from the Pi to the RTC moduleNow that we have our RTC module all hooked up and Raspbian and the Raspberry Pi configured correctly we need to synchronize the time with our RTC Module. The reason for this is that the time provided by a new RTC module will be incorrect.
sudo hwclock -D -r
date
sudo hwclock -w 4. Now if you read the time directly from the RTC module again, you will notice that it has been changed to the same time as what your Raspberry Pi was set at. You should never have to rerun the previous command if you keep a battery in your RTC module. sudo hwclock -r You should hopefully now have a fully operational RTC module that is actively keeping your Raspberry Pi’s time correct even when it loses power or loses an internet connection. Configure the network parameters of the raspberry piEdit the file /etc/dhcpcd.conf sudo vim /etc/dhcpcd.conf Uncomment the section related to the static ip configurations but set ip address to 192.168.0.100 USB stick backup unitPlug the usb stick in one of the RPI usb port. Type the following command: sudo lsblk You should see the usb drive on the sda1 drive then do the following mkdir /home/sand/backup sudo vim /etc/fstab Enter the insert mode by typing letter i and add the following line to the file /dev/sda1 /home/sand/backup vfat rw,user,exec,umask=000 0 0 Save an quit by typing <escape> :wq crontabThe crond daemon is scheduling repetitive task on lilux system. Users who have the right to use crond can schedule their own tasks to crond. We are using crond to schedule a webcam acquisition every 15 min. Add program Camera.bash to the root crond scheduleEdit crontab sudo su crontab -e chose editor 3. /usr/bin/vim.basic type < i > and add the following content: */15 * * * * /usr/local/bin/Camera.bash Save and quit by typing: <escape> :wq Desactivate wifi and bluetoothIn order to avoid interference with the space agency communication systems, it is required to turn off the wifi and bluetooth services. Edit the file /boot/config.txt sudo vim /boot/config.txt and add the following lines at the end of the file dtoverlay=pi3-disable-wifi dtoverlay=pi3-disable-bt Save an quit by typing <escape> :wq System rebootNow all the relevant software are installed, in order to activate all newly added functionalities, restart the computer. Optional stuff |