Editing Tasks WiSe2021

Jump to navigation Jump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
 
= Semesterplan and Tasks =
 
= Semesterplan and Tasks =
* Regular Online Session on Thursday 18:00-19:00
+
 
* Tutors available in discord:
+
Online Session on Thursday 18:00-19:00
** 10.12.2020 (Thursday) from 17:00-21:00
 
** 16.12.2020 (Wednesday) from 17:00-21:00
 
** on request - please let us know when you want to work on it
 
  
 
== Session 1: Introduction (Monday 07th Dec) ==  
 
== Session 1: Introduction (Monday 07th Dec) ==  
Line 15: Line 12:
 
* look at the following page: https://micropython-on-wemos-d1-mini.readthedocs.io/en/latest/basics.html
 
* look at the following page: https://micropython-on-wemos-d1-mini.readthedocs.io/en/latest/basics.html
  
=== Tasks and Submission (Deadline 16th of Dec) ===  
+
=== Tasks and Submission ===  
 
* Unpacking of the hardware
 
* Unpacking of the hardware
 
* Install the software on your computer, put the software image onto the ESP8266 D1 mini, see [[Tutorial Basics]]
 
* Install the software on your computer, put the software image onto the ESP8266 D1 mini, see [[Tutorial Basics]]
Line 27: Line 24:
 
** write the analog value to the serial line
 
** write the analog value to the serial line
 
* Submission:
 
* Submission:
** Deadline: 16th of December 2020 latest 23:59 (Wednesday)
+
** For each task submit a video of max 30 seconds (should show the setup, your code ond the screen, an the system functioning)
** For each task submit a video of max 30 seconds (should show the setup, your code on the screen, an the system functioning)
 
  
==Session 2: Sensors and Actuators (Thursday 17th Dec) ==  
+
==Session 2: Sensors and Actuators==  
* Discussion of sensors, actuators, libraries
 
* Organisation - check that teams of 2 people exist
 
  
=== Videos and Tutorials to watch ===
+
* 17th Dec: IO, sensors and actuators
* Understand how to connect a servo and how to move it, see [[Tutorial Digital IO]]
+
** watch videos: sensors (distance, acceleration), actuatos (stepper, servo)
* learn at how to create sounds, see [[Piezo Speaker]]
+
** hand in basic chip working, digital IO and analog in
* look at how control a stepper motor [[Stepper Motor and ULN2003]]
+
** orga: system design in groups of 2
* get familiar with how to connect the [[Ultrasonic Sensor HC-SR04]]
 
 
 
=== Tasks and Submission (Deadline 13th of Jan) ===
 
* Task 1: Play a sound, PWM
 
** Connect the piezo speaker to an output pin
 
** Modify the example given in [[Piezo Speaker]] to play a part of a Xmas song
 
 
 
* Task 2: Read the distance with HC-SR04
 
** Connect the [[Ultrasonic Sensor HC-SR04]]
 
** Understand how to include a library in mycropython (see [[Tutorial Network]], [[Tutorial Display]])
 
** use the hcsr04.py library and read out the distance
 
** write the distance to the serial line
 
 
 
* Task 3: Implement Theremin-like instrument
 
** Connect the piezo speaker to an output pin (task 1)
 
** Connect the [[Ultrasonic Sensor HC-SR04]] (task 2)
 
** Change the tone (frequency) that is played based on the distance
 
** write the frequency you play to the serial line
 
 
 
* Task 4: Stepper Motor
 
** Connect the stepper motor [[Stepper Motor and ULN2003]]
 
** Connect a button (see session 1)
 
** For a short press on the button move 45° and for a long press move 180°
 
** '''there may be a problem with power - see [[Stepper Motor and ULN2003]]''' - if this is the case just build up the setup and the program and document this
 
 
 
* Task 5:
 
** Connect the servo motor, see [[Tutorial Digital IO]] and [[SG90 Servo]]
 
** Connect a potentiometer to A0 and read the analog value
 
** Set the position (angle) of the servo based on the analog value
 
** '''there may be a problem with power - see [[SG90 Servo]]''' - if this is the case just build up the setup and the program and document this
 
 
 
* Submission:
 
** Deadline: 13th of January 2021 latest 23:59 (Wednesday)
 
** For each task submit a video of max 30 seconds (should show the setup, your code on the screen, an the system functioning)
 
 
 
==Session 3: Networked IoT Systems (Thursday 14th Jan) ==
 
* Network library, Display, ES32, MPU6050
 
 
 
=== Videos and Tutorials to watch ===
 
* Understand the network library [[Tutorial Network]]
 
* Understand the display library [[Tutorial Display]] (requires coming to the lab for soldering/picking up ESP32)
 
* Understand the [[MPU 6050]] Sensor and I2C connection (requires coming to the lab for soldering)
 
 
 
=== Tasks and Submission (Deadline 20th of Jan) ===
 
* Task 1: Play a sound over the network, connected devices
 
** Connect a potentiometer to A0 and read the analog value
 
** Write the value to the network [[Tutorial Network]]
 
** Read the value from the network from your team colleague
 
** Play a sound based on the value you get from the network
 
 
 
* NOT POSSIBLE as we have no access to the lan: Task 2: Subtle communication, connected devices
 
** (requires coming to the lab for soldering)
 
** Solder the Pins onto the MPU 6050
 
** Connect the [[MPU 6050]] Sensor as I2C device
 
** When the sensor is moved, write a value to the network [[Tutorial Network]]
 
** When the device has not been moved for 10 seconds, write a different value to the network
 
** Read the movement value from the network from your team colleague
 
** Switch on the LED if the remote device has been moved
 
 
 
* Alternativ Task 2: Subtle communication, connected devices
 
** Connect a Sensor ([[LDR]], [[Ultrasonic Sensor HC-SR04]], [[PIR Sensor]], ...)
 
** If the sensor value changes, write a value to the network [[Tutorial Network]] (not more than every 5 seconds)
 
** Read the sensor value from the network from your team colleague
 
** Switch on the LED if the remote site is active (changing sensor values)
 
 
 
* Task 3: Quotes on the Display
 
** (requires coming to the lab for soldering/picking up ESP32)
 
** put the micropython image onto the ESP32, see [[Tutorial Basics]] and session 1
 
** Show every minute a random quote on the display (at least 3 different quotes) [[Tutorial Display]]
 
 
 
* Task 4: Ideation (for the group projects). Generate ideas within your team using the following process:
 
**First, before meeting your partner, everyone of you should independently think about 5-10 issues with remote connectedness (eating, dancing, etc.)
 
**Second, before meeting your partner, everyone of you should think independently about 5-10 hardware components (sensors, actuators, etc.)
 
**Third, together (!) randomly pick one issue and one hardware component and imagine a project. Save your solution! Create and describe at least five projects this way. So, person A picks both and describes a solution. Next, person B does the same, and so on.
 
 
 
* Submission:
 
** Deadline: 20th of January 2021 latest 23:59 (Wednesday)
 
** For each task submit a video of max 30 seconds (should show the setup, your code on the screen, an the system functioning)
 
 
 
==Session 4: Group projects (Thursday 21st Jan) ==
 
* Group project ideation: Presentation of ideas.
 
 
 
=== Tasks and Submission (Deadline 27th of Jan) ===
 
* Task 1: Describe your group project in detail
 
** Pick an idea that you want to implement
 
** Create a visual concept of how your system will work
 
** Describe what needs to be done
 
* Create a List:
 
** Team name
 
** Can all members can pick up hardware from Frauenlobstraße 7a (yes/no)
 
*** If not please add the address
 
** List the hardware components that you will need
 
*** Type (Pressure sensor)
 
*** Specific Name/Number
 
*** Quantity
 
*** Link to article in shop
 
**** https://www.sketching-with-hardware.org/wiki/List_of_shops
 
 
 
 
 
* Submission:
 
** Deadline: 27th of January 2021 latest 23:59 (Wednesday)
 
** A PDF for the group project description
 
 
 
 
 
<!--
 
 
* 7th Jan: networked system IoT
 
* 7th Jan: networked system IoT
 
** watch video: netvars, autostart, building a system
 
** watch video: netvars, autostart, building a system
Line 156: Line 45:
 
* 28th Jan: group project
 
* 28th Jan: group project
 
** orga: fix groups, time plan, concept, and time plan
 
** orga: fix groups, time plan, concept, and time plan
 +
 +
 +
 +
  
  
Line 196: Line 89:
  
 
----
 
----
-->
 
 
= Project Ideas =
 
 
 
== Resources ==
 
 
=== Pinout of Pi Zero ===
 
physical connections
 
<br/> JL: https://peppe8o.com/raspberry-pi-zero-pinout/
 
<br/> CR: https://de.pinout.xyz/pinout/io_pi_zero
 
<br/> HW: https://www.argon40.com/learn/index.php/2020/03/06/a-comprehensive-guide-on-raspberry-pi-3-and-raspberry-pi-zero-and-zero-w-gpio-pinout/
 
<br/> JW: https://www.raspberrypi.org/documentation/usage/gpio/
 
 
<br/> SF: With the gpiozero library you will by default want to reference the pin number as in GPIOx where x is the pin you define in software. Example: LED(5) in software; connect to GPIO5 on the Pi Zero header. (see also: https://gpiozero.readthedocs.io/en/stable/recipes.html#pin-numbering)
 
 
=== Setting up the OS and Python ===
 
NOOBS
 
configure
 
<br/> JL: https://www.tutorialspoint.com/python/python_environment.htm
 
<br/> CR: https://learn.adafruit.com/setting-up-a-raspberry-pi-with-noobs/download-noobs
 
<br/> HW: https://www.raspberrypi.org/help/noobs-setup./
 
<br/> JW: https://www.raspberrypi.org/documentation/installation/noobs.md
 
<br/> SG: https://medium.com/@nikosmouroutis/how-to-use-atom-with-your-raspberry-pi-through-sftp-382c43176a9e
 
 
<br/> SF: The simple three-step wizard we talked about: https://www.raspberrypi.org/software/
 
 
=== Access to GPIO ===
 
JL: http://codefoster.com/pi-basicgpio/
 
<br/> CR: https://fedoramagazine.org/raspberry-pi-zero-gpio-fedora/
 
<br/> HW: https://webnist.de/raspberry-pi-zero-gpio-pins-ueber-den-desktop-steuern/
 
<br/> SG: https://github.com/fivdi/onoff
 
 
<br/> SF: With the gpiozero library you will by default want to reference the pin number as in GPIOx where x is the pin you define in software. Example: LED(5) in software; connect to GPIO5 on the Pi Zero header. (see also: https://gpiozero.readthedocs.io/en/stable/recipes.html#pin-numbering)
 
 
=== Blinking an LED ===
 
JL: https://raspberrypihq.com/making-a-led-blink-using-the-raspberry-pi-and-python/
 
<br/> CR: https://fedoramagazine.org/raspberry-pi-zero-gpio-fedora/
 
<br/> HW: https://webnist.de/raspberry-pi-zero-gpio-pins-ueber-den-desktop-steuern/
 
<br/> JW: http://www.heidislab.com/tutorials/getting-started-with-raspberry-pi-led-blinking-on-raspberry-pi-zero
 
 
=== Reading a Pin ===
 
JL: http://raspberry.io/projects/view/reading-and-writing-from-gpio-ports-from-python/
 
<br/> CR: https://learn.sparkfun.com/tutorials/raspberry-gpio/all
 
<br/> HW: https://mjrobot.org/rpi-gpiozero/
 
<br/> SG: https://tutorials-raspberrypi.de/raspberry-pi-gpio-erklaerung-beginner-programmierung-lernen/
 
 
<br/> SF: What state does your input pin have by default? With gpiozero, you can configure the pin to be pulled up (pull_up=True) or pulled low (pull_up=False). If you pull up, you can only change the state by connecting the pin physically to GND. If pulled low, you can only change the input state by connecting it to 3.3V. (see also: https://gpiozero.readthedocs.io/en/stable/api_input.html). By default, the pin is pulled up. If you always define the state explicitly in your code, you might make it easier for yourself to debug the code. Example: Button(15, pull_up=True)
 
 
=== Runing a Webserver that access GPIO ===
 
JL: https://towardsdatascience.com/python-webserver-with-flask-and-raspberry-pi-398423cc6f5d
 
<br/> CR: https://www.e-tinkers.com/2018/04/how-to-control-raspberry-pi-gpio-via-http-web-server/
 
<br/> HW: https://hackaday.io/project/173322-controlling-gpio-outputs-using-a-web-interface-wit
 
<br/> JW: https://www.youtube.com/watch?v=c6FOpPXbLjs
 
<br/> SG: https://randomnerdtutorials.com/raspberry-pi-web-server-using-flask-to-control-gpios/
 
 
=== Restful API ===
 
JL: https://sites.google.com/site/cartwrightraspberrypiprojects/home/other-projects/rest-api
 
<br/> CR: https://docs.dataplicity.com/docs/control-gpios-using-rest-api
 
<br/> HW: https://www.youtube.com/watch?v=JZfevVG-VuA&list=PLLIDdNg0t5ceg3mI3vn0YJocJ4ndMtM98&index=4&t=0s
 
<br/> SG: https://tutorials-raspberrypi.de/raspberry-pi-nodejs-webserver-installieren-gpios-steuern/
 
 
=== Description of the components ===
 
JL: https://www.adafruit.com/product/3411
 
<br/> CR: https://computer.howstuffworks.com/raspberry-pi2.htm
 
<br/> HW: https://learn.adafruit.com/introducing-the-raspberry-pi-zero
 
<br/> JW: https://www.youtube.com/watch?v=WJdQ4rknBX0
 
 
== Raspberry Pi ==
 
 
 
 
=== Groups ===
 
HW, CR
 
 
YS, JW
 
 
JL, SG, JP
 
 
=== SG ===
 
mindSat:
 
 
<br/>A small portable gadget. Which can record sensor data and give feedback to a user. Mind satisfaction for your offices days.
 
<br/>It’s hard to do small exercises, often we find excuses to not do it. Concentrated breathing can help your brain to relax, or focusing on small things can reduce stress. Using those informations to create short (~ 5min) exercises.
 
 
=== JL ===
 
Home Office Buddy:
 
<br/> A speaker communicating in a pleasant way with the target person in order to minimize a possible social isolation and encourage the keeping of important routines & daily structures in order to maintain a certain productivity during a working day.
 
<br/> Example: suggest unplanned short breaks if the target person is showing a lack of concentration measured by a certain level of body movement.
 
 
=== JP ===
 
 
'''Problem''': too much sitting while working in the office
 
</br>'''Idea''': adjustable desk
 
</br>'''Sensors''': on the chair, to check, if the user is sitting and how long
 
</br>'''Notification''': User gets a message after a certain time, that the desk will rise for min. 30 minutes. After that time the desk can be lowerd again, if wished. The Sensor will messures again.
 
</br>'''Gamification''': a little "stand-up-figure" will be on the desk and will stand up, if the desk is rised. Will be collapse, if the desk is lowered.
 
 
=== CR ===
 
Problem: Tension due to prolonged sitting and incorrect sitting positions (e.g. crooked shoulders)
 
<br/> Sensors: Kinect for analysis of posture, sensors that measure the tension in the neck
 
<br/> The longer one maintains a bad sitting position, the older/bent an avatar becomes on the screen. Through movement the avatar becomes younger/upright again.
 
 
=== YS ===
 
 
<b>WALL-E: your digital stress cleaner</b>
 
<br/><b>Features</b>
 
<br/>
 
<ul>
 
<li>The buggy has two “hands” and one trash can</li>
 
<li>Users’ stress detection: EDA/HRV</li>
 
<li>If stressful: The buggy will </li>
 
<ul>
 
<li>search for the smartphone (RFID or GPS)</li>
 
<li>steal the smartphone</li>
 
<li>drop it into the trash can</li>
 
</ul>
 
<li>If user calms down: be allowed to use smartphone </li>
 
</ul>
 
 
=== JW ===
 
Problem: ① Uncomfortable working environment in aspects of lighting and air quality; ② Avoidable disturbance by colleges, etc.; ③ Remaining stationary for too long
 
 
Solution: ① Automatic adjustable light, automatic jalousie roller, automatic humidifier, LED as indicator next to windows; ② Display as door sign; ③ Speaker with a switch as indicator
 
 
Sensor: Temperature and humidity sensor Bme280, light sensor Tsl2561, CO2 sensor, motion sensor
 
 
=== HW ===
 
Problem: Pain in the hand and wrist due to consistent movement or incorrect hand/arm position
 
<br/> Sensors: e.g. Leap Motion for motion and posture detection, keyboard/mouse to track activity (?)
 
<br/> Vibration of the mouse/keyboard if the same position was kept for too long or no pause was made. A visualization of an inflammation (red pulsating circles) is displayed, which gets worse/better depending on user behavior.  This warns the user when his hand position is worsening. The user may choose to be prevented from continuing to work or not.
 
 
[[Category:Courses]]
 

Please note that all contributions to Sketching with Hardware at LMU Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see My wiki:Copyrights for details). Do not submit copyrighted work without permission!

Cancel Editing help (opens in new window)