IoT fun demo project to gather sensors data by using Digi Xbee Zigbee modules to create a wireless mesh network. If one of the nodes drops from the network, the Digi Xbee technology allow automatic packet re-routing through other healthy Xbee nodes.
For the purpose of this demo, we have 3 nodes. 1 Xbee coordinator gateway node (On the bottom of the picture) always powered ON and act as the bridge/gateway between the internet connected cloud back-end (Amazon AWS, Microsoft Azure, IBM Watson etc..) and other Xbee nodes.
Besides, there is a service running on an embedded hw platform connected to 2G/3G or LoRa . This service will read and unpack Xbee packets using the Xbee API Mode and send them to the back end services. There is also the possibility to store data on SD card when the gateway cannot be reached (offline mode).
In this demo, 2 Xbee are configured in end devices and gather sensors data in the field. When deployed in the field, this nodes will be standalone and battery powered.
PS: The usb connection for both end device nodes is just for the sake of this demo to provide power to the modules.
Refer to blog diagram below for a more complete system view.
Servo-actuated stereo vision project with Visual studio C++ and OPENCV. Objective track object and give the depth in cm. Using Polulu servo controller to steer the Hitec digital servos and Turnigy 2S Lipo to power it all. Baseline between cameras == 11cm. Algorithm steps are:
Find features (Camshit or HSV color Filter + Blob detection)
Based on least square method to solve GPS receiver position from raw data of a GPS device, we follow this algorithm :
Choose a starting user position. (Latitude: 45.49| Longitude: -73.56 | Altitude: 21m) (Montreal)
Choose an initial receiver clock bias cbu (cbu=0)
Compute SV position in ECEF based on ephemeris data
Correct SV position due to earth rotation by applying a rotation matrix to the SV pos calculated above
Compute the Azimuth and Elevation of the SV used below in ionosphere and troposphere algo.
Correct the pseudoranges by calculating:
SV clock bias using the algorithm described in project appendix
Ionosphere clock bias using the algorithm described in project appendix
Troposphere clock bias using the algorithm described in project appendix
Compute a coarse estimate to the receiver position [X Y Z] in ECEF and Receiver clock bias Cbu based on the assumptions of transit time tau and intial user position guess. (Least square method).
New Receiver time: Ttrc = Ttrc + (Cbu/c)
New Transit time: tau= (pseudorange+ cbu)/c
Update GPS transmission time: Ttr= Ttrc -tau
Re do step 1 to 5 with the newly corrected Ttr and tau to obtain a finer estimate of the user position
Note: The solution converge after doing iteration 2 with more precise measurements, increasing the number of iterations do not have any effect since the solution converged from iteration 2.
The best solution is to select an optimal set of the tracked Satellite vehicule (SV) to minimize a desired DOP factor.
With all our 6 SV we have the following DOP factors:
Generally GDOP factor range from 2 to 3 depending on SV geometry but it can be larger than 3 especially in condition where there is not a clear view of the sky down to the Horizon. This seems to be our case.
First an FT232HL received data from Java Application via USB and the sends it to the FPGA (Xilinx Spartan 6 LX9) in Asynchronous FIFO mode , the FPGA store the data in the RAM(ipcore) and then sends the 12bit data clocked @ 250MHZ (DCM ipcore) which is our max Freq achievable without distortion to the signals, to 12bit DAC (ISL5857 ) configured in complementary current output . It is connected to a THS4304 AOP that convert the differential current signals to a voltage in the +-500mV range. This signal is then filtred with a 4th order passive low pass Butterworth filter.