From 1ca574ad20163b48641417b87bbce76404becc68 Mon Sep 17 00:00:00 2001 From: zeus Date: Thu, 25 Nov 2021 00:05:32 +0200 Subject: [PATCH] poc --- auto-complete.sh | 2 +- build.sh | 13 +- poc-datacollector/antora.yml | 5 + .../modules/ROOT/images/swarmlab.png | Bin 0 -> 81561 bytes poc-datacollector/modules/ROOT/nav.adoc | 2 + .../modules/ROOT/pages/index-imu.adoc | 505 ++++++++++++ .../modules/ROOT/pages/index.adoc | 762 ++++++++++++++++++ poc-datacollector/run/build-intro.sh | 4 + poc-datacollector/run/build.sh | 4 + poc-datacollector/site.yml | 21 + 10 files changed, 1315 insertions(+), 3 deletions(-) create mode 100644 poc-datacollector/antora.yml create mode 100644 poc-datacollector/modules/ROOT/images/swarmlab.png create mode 100644 poc-datacollector/modules/ROOT/nav.adoc create mode 100644 poc-datacollector/modules/ROOT/pages/index-imu.adoc create mode 100644 poc-datacollector/modules/ROOT/pages/index.adoc create mode 100755 poc-datacollector/run/build-intro.sh create mode 100755 poc-datacollector/run/build.sh create mode 100644 poc-datacollector/site.yml diff --git a/auto-complete.sh b/auto-complete.sh index 2bd370c..e7a53a1 100755 --- a/auto-complete.sh +++ b/auto-complete.sh @@ -4,7 +4,7 @@ function libs() { if [ "$1" != "" ]; then - COMPREPLY=($(compgen -W "network-scanning sensor-node ssh-tunneling iptables help" "${COMP_WORDS[$COMP_CWORD]}")) + COMPREPLY=($(compgen -W "network-scanning sensor-node ssh-tunneling iptables poc-datacollector help" "${COMP_WORDS[$COMP_CWORD]}")) fi } diff --git a/build.sh b/build.sh index fec019d..3abd18d 100755 --- a/build.sh +++ b/build.sh @@ -29,14 +29,16 @@ usage () echo "" echo " Examples of [OPTIONS] can be:" echo "" + echo -e " ${txtg}iptables:${NOCOLOR} This tutorial demonstrates, howto setup iptables & howto use it " + echo "" echo -e " ${txtg}network-scanning:${NOCOLOR} This tutorial demonstrates some common nmap port scanning scenarios and explains the output. " echo "" + echo -e " ${txtg}poc-datacollector:${NOCOLOR} This tutorial demonstrates, howto setup data collector & howto use it " + echo "" echo -e " ${txtg}sensor-node:${NOCOLOR} This tutorial demonstrates, howto create a mote with Raspberry Pi and Arduino & howto use it " echo "" echo -e " ${txtg}ssh-tunneling:${NOCOLOR} This tutorial demonstrates, howto create a ssh-tunneling & howto use it " echo "" - echo -e " ${txtg}iptables:${NOCOLOR} This tutorial demonstrates, howto setup iptables & howto use it " - echo "" echo -e " ${txtg}help:${NOCOLOR} show this message" echo " ./build.sh help" echo "" @@ -112,6 +114,13 @@ do COMMAND_CREATE=1 ;; + poc-datacollector) + DESC="Data Collector" ; + build="build.sh" ; + # source adoc directory + docdir="poc-datacollector" ; + COMMAND_CREATE=1 + ;; iptables) DESC="iptables" ; build="build.sh" ; diff --git a/poc-datacollector/antora.yml b/poc-datacollector/antora.yml new file mode 100644 index 0000000..35d0039 --- /dev/null +++ b/poc-datacollector/antora.yml @@ -0,0 +1,5 @@ + name: swarmlab_poc-datacollector + title: swarmlab_poc-datacollector + version: docs + nav: + - modules/ROOT/nav.adoc diff --git a/poc-datacollector/modules/ROOT/images/swarmlab.png b/poc-datacollector/modules/ROOT/images/swarmlab.png new file mode 100644 index 0000000000000000000000000000000000000000..d94ea42de7574e8b383fad42942151ad9fe5147d GIT binary patch literal 81561 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 +#include +#include +#include +#include + +// Create sensor instances. +Adafruit_LSM303_Accel_Unified accel(30301); +Adafruit_LSM303_Mag_Unified mag(30302); +Adafruit_BMP085_Unified bmp(18001); + +// Create simple AHRS algorithm using the above sensors. +Adafruit_Simple_AHRS ahrs(&accel, &mag); + +// Update this with the correct SLP for accurate altitude measurements +float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA; + +void setup() +{ + Serial.begin(115200); + Serial.println(F("Adafruit 10 DOF Board AHRS Example")); Serial.println(""); + + // Initialize the sensors. + accel.begin(); + mag.begin(); + bmp.begin(); +} + +void loop(void) +{ + sensors_vec_t orientation; + + // Use the simple AHRS function to get the current orientation. + if (ahrs.getOrientation(&orientation)) + { + /* 'orientation' should have valid .roll and .pitch fields */ + Serial.print(F("Orientation: ")); + Serial.print(orientation.roll); + Serial.print(F(" ")); + Serial.print(orientation.pitch); + Serial.print(F(" ")); + Serial.print(orientation.heading); + Serial.println(F("")); + } + + // Calculate the altitude using the barometric pressure sensor + sensors_event_t bmp_event; + bmp.getEvent(&bmp_event); + if (bmp_event.pressure) + { + /* Get ambient temperature in C */ + float temperature; + bmp.getTemperature(&temperature); + /* Convert atmospheric pressure, SLP and temp to altitude */ + Serial.print(F("Alt: ")); + Serial.print(bmp.pressureToAltitude(seaLevelPressure, + bmp_event.pressure, + temperature)); + Serial.println(F("")); + /* Display the temperature */ + Serial.print(F("Temp: ")); + Serial.print(temperature); + Serial.println(F("")); + } + + delay(500); +} +---- + +=== compile + +- Compile the sketch, +- open up the Serial Monitor (Tools > Serial Monitor), +- set the baud rate to 115200 + + +.output +image::ROOT:sensors_01_AHRSOutput.png[alt="AHRS raw data"] + +This raw data shows the main orientation data, consisting of 'roll', 'pitch' and 'heading' (or 'yaw) in degrees, followed by the current altitude and temperature + + + +=== Using AHRS Data + +The AHRS sketchs reads raw data from the board's accelerometer/magnetometer and converts the raw data into easy to understand **Euler angles.** + +In this case, we can see that the **roll is about 18°**, the **pitch is about 78°** and the **heading or yaw is about 32°**, and the sketch will keep updating itself with the latest values at whatever speed we've set in the sketch. + +[NOTE] +==== +.Euler angles, one of the possible ways to describe an orientation +image::ROOT:Eulerangles.svg.png[alt="Euler angles"] + +The first attempt to represent an orientation is attributed to Leonhard Euler. He imagined three reference frames that could rotate one around the other, and realized that by starting with a fixed reference frame and performing three rotations, he could get any other reference frame in the space (using two rotations to fix the vertical axis and other to fix the other two axes). The values of these three rotations are called Euler angles. + +.Tait–Bryan angles, another way to describe orientation +image::ROOT:Taitbrianzyx.svg.png[alt="Tait–Bryan angles"] + +These are three angles, also known as yaw, pitch and roll, Navigation angles and Cardan angles. Mathematically they constitute a set of six possibilities inside the twelve possible sets of Euler angles, the ordering being the one best used for describing the orientation of a vehicle such as an airplane. In aerospace engineering they are usually referred to as Euler angles. + +https://en.wikipedia.org/wiki/Rigid_body_dynamics[More Info: Rigid_body_dynamics^] + +https://en.wikipedia.org/wiki/Euler_angles[More Info: Eulers angles^] + +https://en.wikipedia.org/wiki/Leonhard_Euler[Leonhard Euler^] +==== + + +=== Save/Sending the Data + +This raw data can then be sent over the network to the central application. + +This will be the subject of another Lab Lesson + +=== Visualizing Data + + + +==== The tools, languages, and frameworks + +===== Three.js + +**Three.js** is a cross-browser JavaScript library and Application Programming Interface (API) used to create and display animated 3D computer graphics in a web browser. Three.js uses WebGL. + + +===== Processing + +**Processing** is an open-source graphical library and integrated development environment (IDE) built for the electronic arts, new media art, and visual design communities with the purpose of teaching non-programmers the fundamentals of computer programming in a visual context. + +Processing uses the Java language, with additional simplifications such as additional classes and aliased mathematical functions and operations. It also provides a graphical user interface for simplifying the compilation and execution stage. + +The Processing language and IDE were the precursor to other projects including Arduino, Wiring and p5.js. + +===== p5.js + +In 2013, Lauren McCarthy created p5.js, a native JavaScript alternative to Processing.js that has the official support of the Processing Foundation. + +===== Processing.py + +Python Mode for Processing, or Processing.py is a Python interface to the underlying Java toolkit. It was chiefly developed by Jonathan Feinberg starting in 2010, with contributions from James Gilles and Ben Alkov + + + +[NOTE] +==== +**ThreeJS** is a wrapper around the browser’s native WebGL API. It’s the de facto standard 3D library — there are others, like BabylonJS, but Three is just miles more popular. The native browser APIs are… painful to work with, you can think of ThreeJS kinda like a jQuery for in-browser 3D graphics. Doesn’t give you anything that’s not already there, it just wraps it all into a user-friendly API + +**P5** is not a 3d graphics library, it’s an API for doing creative coding: things like procedural generation, natural simulations etc. It has some 3D features because it wraps the native WebGL API, but that’s not it’s core purpose. It is a artistic and teaching tool — it is occasionally used in production outside of artistic audio/visual stuff, but not often. It’s basically the JS version of Processing. + +==== + +https://www.slideshare.net/victorporof/processingjs-vs-threejs[More: Processing.js vs. three.js^] + + +==== Requirements + +To visualize the data, we've put together a basic **Processing** sketch that loads a 3D model and renders it using the data generated by the AHRS sketch. + +- https://processing.org/[Processing^] +- https://code.google.com/archive/p/saitoobjloader/#Download[OBJ Loader library for Processing^] +- http://www.lagers.org.uk/g4p/[G4P GUI library for Processing^] + +[NOTE] +==== +The OBJ library is required to load 3D models. It isn't strictly necessary and you could also render a boring cube in Processing, but why play with cubes when you have rabbits?! +==== + + +==== Write the Processing Sketch + +.Processing Sketch +[source,c] +---- +import processing.serial.*; +import java.awt.datatransfer.*; +import java.awt.Toolkit; +import processing.opengl.*; +import saito.objloader.*; +import g4p_controls.*; + +float roll = 0.0F; +float pitch = 0.0F; +float yaw = 0.0F; +float temp = 0.0F; +float alt = 0.0F; + +OBJModel model; + +// Serial port state. +Serial port; +String buffer = ""; +final String serialConfigFile = "serialconfig.txt"; +boolean printSerial = false; + +// UI controls. +GPanel configPanel; +GDropList serialList; +GLabel serialLabel; +GCheckbox printSerialCheckbox; + +void setup() +{ + size(400, 500, OPENGL); + frameRate(30); + model = new OBJModel(this); + model.load("bunny.obj"); + model.scale(20); + + // Serial port setup. + // Grab list of serial ports and choose one that was persisted earlier or default to the first port. + int selectedPort = 0; + String[] availablePorts = Serial.list(); + if (availablePorts == null) { + println("ERROR: No serial ports available!"); + exit(); + } + String[] serialConfig = loadStrings(serialConfigFile); + if (serialConfig != null && serialConfig.length > 0) { + String savedPort = serialConfig[0]; + // Check if saved port is in available ports. + for (int i = 0; i < availablePorts.length; ++i) { + if (availablePorts[i].equals(savedPort)) { + selectedPort = i; + } + } + } + // Build serial config UI. + configPanel = new GPanel(this, 10, 10, width-20, 90, "Configuration (click to hide/show)"); + serialLabel = new GLabel(this, 0, 20, 80, 25, "Serial port:"); + configPanel.addControl(serialLabel); + serialList = new GDropList(this, 90, 20, 200, 200, 6); + serialList.setItems(availablePorts, selectedPort); + configPanel.addControl(serialList); + printSerialCheckbox = new GCheckbox(this, 5, 50, 200, 20, "Print serial data"); + printSerialCheckbox.setSelected(printSerial); + configPanel.addControl(printSerialCheckbox); + // Set serial port. + setSerialPort(serialList.getSelectedText()); +} + +void draw() +{ + background(0,0, 0); + + // Set a new co-ordinate space + pushMatrix(); + + // Simple 3 point lighting for dramatic effect. + // Slightly red light in upper right, slightly blue light in upper left, and white light from behind. + pointLight(255, 200, 200, 400, 400, 500); + pointLight(200, 200, 255, -400, 400, 500); + pointLight(255, 255, 255, 0, 0, -500); + + // Displace objects from 0,0 + translate(200, 350, 0); + + // Rotate shapes around the X/Y/Z axis (values in radians, 0..Pi*2) + rotateX(radians(roll)); + rotateZ(radians(pitch)); + rotateY(radians(yaw)); + + pushMatrix(); + noStroke(); + model.draw(); + popMatrix(); + popMatrix(); + //print("draw"); +} + +void serialEvent(Serial p) +{ + String incoming = p.readString(); + if (printSerial) { + println(incoming); + } + + if ((incoming.length() > 8)) + { + String[] list = split(incoming, " "); + if ( (list.length > 0) && (list[0].equals("Orientation:")) ) + { + roll = float(list[1]); + pitch = float(list[2]); + yaw = float(list[3]); + buffer = incoming; + } + if ( (list.length > 0) && (list[0].equals("Alt:")) ) + { + alt = float(list[1]); + buffer = incoming; + } + if ( (list.length > 0) && (list[0].equals("Temp:")) ) + { + temp = float(list[1]); + buffer = incoming; + } + } +} + +// Set serial port to desired value. +void setSerialPort(String portName) { + // Close the port if it's currently open. + if (port != null) { + port.stop(); + } + try { + // Open port. + port = new Serial(this, portName, 115200); + port.bufferUntil('\n'); + // Persist port in configuration. + saveStrings(serialConfigFile, new String[] { portName }); + } + catch (RuntimeException ex) { + // Swallow error if port can't be opened, keep port closed. + port = null; + } +} + +// UI event handlers + +void handlePanelEvents(GPanel panel, GEvent event) { + // Panel events, do nothing. +} + +void handleDropListEvents(GDropList list, GEvent event) { + // Drop list events, check if new serial port is selected. + if (list == serialList) { + setSerialPort(serialList.getSelectedText()); + } +} + +void handleToggleControlEvents(GToggleControl checkbox, GEvent event) { + // Checkbox toggle events, check if print events is toggled. + if (checkbox == printSerialCheckbox) { + printSerial = printSerialCheckbox.isSelected(); + } +} +---- + + + +==== Run it + +- Run the AHRS Sketch on the Uno +- Run the Processing Sketch on the Processing + + +[NOTE] +==== +Make sure that the appropriate AHRS example sketch is running on the Uno (as described), and that the Serial Monitor is closed. +==== + +.And Voila! +video::CoyU3W925io[youtube] +image::ROOT:sensors_bunny.png[alt="Processing example"] + + + + +.Cockpit Simulator +[NOTE] +==== +With small changes we can make this too + +image::ROOT:sensors_Yaw_Axis_Corrected.png[Aeroplane,120,120,pdfwidth=25%,scaledwidth=25%] + +image::ROOT:HSI.png[alt="Cockpit"] +image::ROOT:TC.png[alt="Cockpit"] +==== + + + + +[appendix] +== Source Code + +- https://github.com/adafruit/Adafruit_AHRS[Adafruit_AHRS^] +- https://sourceforge.net/projects/g4p/files/?source=navbar[g4p^] + + diff --git a/poc-datacollector/modules/ROOT/pages/index.adoc b/poc-datacollector/modules/ROOT/pages/index.adoc new file mode 100644 index 0000000..f8c67b6 --- /dev/null +++ b/poc-datacollector/modules/ROOT/pages/index.adoc @@ -0,0 +1,762 @@ += Data collector! + +image::ROOT:swarmlab.png[swarmlab,150,float=right] + +This tutorial demonstrates: *a.* howto create a mote with Raspberry Pi and Arduino *b.* howto use it + +The data collector is a lightweight microservice applicatio that sends metadata collected from a system such as an IoT network, distributed system, data center, etc. + +The data are transmitted, stored, and can be retrieved at any time. + +== Start + +You can start it in the same way as you start any other application. + +Here you can find +http://docs.swarmlab.io/SwarmLab-HowTos/swarmlab/docs/swarmlab/docs/hybrid/start-microservices.html[here^} + +http://docs.swarmlab.io/SwarmLab-HowTos/swarmlab/docs/swarmlab/docs/hybrid/start-microservices.html + + + + +.Raspberry Pi 2 Model B +image::ROOT:Raspberry_Pi_2_Model_B_v1.1_top_new.jpg[alt="Raspberry Pi 2 Model B"] + +[NOTE] +.Remember +==== +A mote is a node but a node is not always a mote! + +image::ROOT:arduino-connect-pi.jpg[alt="Raspberry Pi and Arduino"] + +==== + + +=== Install Raspberry Pi + +==== Step 1: Download Raspbian + +https://www.raspberrypi.org/downloads/raspbian/[Download^] the Raspbian disc image - Choose Raspbian Lite + +[NOTE] +.Why Raspbian Lite? +==== +Because it is a lightweight version of the Raspbian and it doesn’t have a graphical user interface installed. + +This means that it doesn’t have any unnecessary software installed that we don’t need for our projects, so this makes it the perfect solution for future automation projects. +==== + +==== Step 2: Unzip the file + + +- Windows users, you’ll want 7-Zip. +- Linux users will use the appropriately named Unzip. + + +==== Step 3: Write the disc image to your microSD card + +Next, pop your microSD card into your computer and write the disc image to it. You’ll need a specific program to do this: + +- Windows users, your answer is https://sourceforge.net/projects/win32diskimager/[Win32 Disk Imager^]. +- Linux people, https://www.balena.io/etcher/[Etcher – which also works on Windows – is what the Raspberry Pi Foundation recommends^] + +The process of actually writing the image will be slightly different across these programs, but it’s pretty self-explanatory no matter what you’re using. + +- Each of these programs will have you select the destination (make sure you’ve picked your microSD card!) and the disc image (the unzipped Raspbian file). +- Choose, double-check, and then hit the button to write. + + +==== Step 4: Enabling SSH + +- Windows users + +.Create ssh file (no extension) +image::ROOT:ssh-file-to-sd-card.jpg[alt="Create ssh file"] + +- Linux Users + +.Create ssh file +[source,bash] +---- +sudo fdisk -l +# find dev and Boot partition +sudo mkdir /mnt/sdcardP1 +sudo mount /dev/device_partion_boot /mnt/sdcardP1 -rw +cd /mnt/sdcardP1 +sudo touch ssh +---- + +==== Step 5: Put the microSD card in your Pi and boot up + +Your default credentials are username **pi** and password **raspberry** + + +==== Step 6: Access via SSH + + +- The boot protocol for the ethernet interface is set to DHCP by default + +You can find the open SSH ports on your network using the nmap utility: + + +.find ports on Network +[source,bash] +---- +nmap -p 22 --open -sV 192.168.1.0/24 +---- + +You should find your pi listed in the output along with the IP assigned to the pi. + + +- You can change the boot protocol to static and define a static IP address for the pi by editing the ifcfg-eth0 file: + +.static IP address +[source,bash] +---- +sudo fdisk -l +# find dev and Boot partition +sudo mkdir /mnt/sdcardP1 +sudo mount /dev/device_partion_ext /mnt/sdcardP1 -rw +cd /mnt/sdcardP1 +vi /etc/sysconfig/network-scripts/ifcfg-eth0 +---- + +Then edit the file to suit your needs + +.static IP address +[source,bash] +---- +DEVICE=eth0 +BOOTPROTO=static +ONBOOT=yes +NETWORK=192.168.1.0 +NETMASK=255.255.255.0 +IPADDR=192.168.1.200 +GATEWAY=192.168.1.1 +---- + + +==== Step 7: Configure your Raspberry Pi. + +**raspi-config** is the Raspberry Pi configuration tool + + +.config Pi +[source,bash] +---- +sudo raspi-config +---- + +It has the following options available: + +.config options +[source,bash] +---- + +┌──────────┤ Raspberry Pi Software Configuration Tool (raspi-config) ├─┐ +│ │ +│ 1 Change User Password Change password for the current user │ +│ 2 Network Options Configure network settings │ +│ 3 Boot Options Configure options for start-up │ +│ 4 Localisation Options Set up language and regional settings │ +│ 5 Interfacing Options Configure connections to peripherals │ +│ 6 Overclock Configure overclocking for your Pi │ +│ 7 Advanced Options Configure advanced settings │ +│ 8 Update Update this tool to the latest version │ +│ 9 About raspi-config Information about this configuration tool │ +│ │ +│