Menu |
Prof /
Cosqm-RaspbianCoSQM - a color hack to the SQM-LE for Light At Night SensingSoftware 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 controlling a light pollution monitoring system consisting in a 5 slot filters wheel in order to add multispectral detection capabilities to the Sky Quality Meter (SQM-LE). Four of the slots are filled with color filers (Red, Green, Blue, Yellow). The SQM is connected to a raspberry pi 3b (RPI) and a step motor filter wheel. 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. Also to promote the implementation of measuring network, the data acquired by the CoSQM is stored on a web server installed on the RPI. From internet: ssh -p 2022 sand@router_public_ip or inside a private network ssh sand@servers_local_ip From the internet, port 2022 is used instead of standard port 22 to reduce risk of attacks by hackers. A password and user name is required. The standard username is sand. The system administrator should be able to provide you the password for sand. 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 apt install vim sudo vim /etc/passwd
/bin/bash
sudo raspi-config
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 python3-gpiozero 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 22 -j ACCEPT sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT sudo iptables-save Activating the pi camera module
sudo raspi-config
Setting pi passwordsudo passwd pi Disabling the camera front LEDTo forbid the LED light reflected by the window to interfere with the sky image, it is useful to shutdown the camera LED. Symply enter the following commands in the command line prompt. sudo sh -c 'echo "# disabling the camera LED" >> /boot/config.txt' sudo sh -c 'echo "disable_camera_led=1" >> /boot/config.txt' Installing CoSQM applicationsLatest available package release on bitbucket mercurial repository
cd mkdir git cd git git clone --single-branch --branch CoSQMv1 https://github.com/aubema/cosqm.git
sudo cp -f /home/sand/git/cosqm/* /usr/local/bin/ sudo chmod a+x /usr/local/bin/*
cp -f /home/sand/git/cosqm/localconfig /home/sand Automatic startup of observe-sqm-stepper.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/observe-sqm-stepper.bash &> /home/sand/cosqm.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 cosqm <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 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 00 12 * * * /sbin/shutdown -r now Save and quit by typing: <escape> :wq N.B. the time for daily shutdown above was set to noon (00 12). Please adapt to you time zone so that it will be executed around noon local time. Then logout from the root exit USB GPS Stratux Vk-162 Remote Mount USB GPS (U-blox)The GPS code in no more compatible with the new version of gpsd. So that we recommend not to use the GPS module until that bug will be corrected. The latitude/longitude of your site can simply be written ii the /home/sand/localconfig file 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-sqm-stepper.bash 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/cosqm 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 ESC. 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 Esc, 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 Esc 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. Configuring the IP address of the SQMThe SQM-LE does not come shipped with a fixed IP address, so it may be necessary to fix that address before installing the unit into such a direct connection system without DHCP server software running.
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 i.e. # Example static IP configuration: interface eth0 static ip_address=192.168.0.100/24 static ip6_address=fd51:42f8:caae:d92e::ff/64 static routers=192.168.0.1 static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1 System rebootNow all the relevant software are installed, in order to activate all newly added functionalities, restart the computer. Optional stuffD-LINK router configurationThe router is useful when CoSQM is connected to the Internet and that the appropriate ports are open to take control of the instrument remotely. If the system is not connected to the internet, a simple network switch or hub is sufficient.
UPS controlThe UPS is a power battery backup. It will protect the system against power fluctuations and will allow the system to continue its ongoing tasks during short power failure.
sudo service apcupsd start
apcaccess |