Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-23 15:11
Ljusföroreningar är ett av många problem i världen. För att lösa det problemet måste vi veta hur mycket natthimlen är förorenat med artificiellt ljus. Många elever med lärare i världen försöker mäta ljusföroreningar med dyra sensorer. Jag bestämde mig för att byta min bärbara luxmeter (för mer kolla tidigare instruerbara projekt Portable Luxmeter) till väderstation med TSL2591 -sensor. Denna sensor är tillräckligt känslig för att mäta nattföroreningar. Jag lägger också till HTU21D för temperatur- och fuktmätning.
Steg 1: Vad är nattförorening och hur det mäter
Nattföroreningar är ljus från lampor, bilar, hus, stora LCD -paneler i staden och varje ljus som skapats av människor. Det ljusa samtalet konstgjort. För observatörer är artificiellt ljus det största problemet för att se stjärnor från staden, och de måste gå utanför staden. För människa är hög ljusförorening skadligt. Och även för träd, gräs och djur.
För att kontrollera ljusföroreningar på din plats kan du se ljusföroreningskartan här
Det är bara modell och verkliga värden kan variera. Det är därför jag skapade den där luxmetern.
För att mäta ljusföroreningar mäter jag bara lux och beräknar magnitude/ arsec2.
Jag kan beräkna från lux till candela per suqare meter:
1 cd/m2 = 1 lux
Magnitud per kvadratbågsekund (mag/bågsek2) beskriver natthimlens bakgrund (det kallar ytljusstyrka).
Mer på wiki: Ytans ljusstyrka
För att beräkna cd/m2 till mag/arcsec2 är formeln:
[värde i mag/arcsec2] = Log10 ([värde i cd/m2]/108000)/-0,4
unihedron.com/projects/darksky/magconv.php
Steg 2: BOM
För detta projekt behöver du:
1. WEMOS D1 Mini eller någon mikrokontroller
(Jag använder wemos, eftersom det är den minsta, med usb -port kan du prova Arduino Nano)
WEMOS D1 MINI (Yanwen Economic Air Mail)
WEMOS D1 MINI (AliExpress Standard Leverans)
WEMOS D1 MINI 10 st (Kina postregistrerat luftpost - gratis leverans)
usb -kabel för programmering och uppladdning av kod till wemos
2. TSL2591 Sensor
TSL2591 (Yanwen Economic Air Mail)
TSL2591 (Kina postregistrerat luftpost)
TSL2591 (Kina postregistrerat luftpost)
3. HTU21D temperatur- och fuktsensor
HTU21D (Cainiao Super Economy)
HTU21D (Yanwen Economic Air Mail - gratis frakt)
4. OLED -skärm 0,96 (128 x 64)
OLED -skärm
OLED -skärm
OLED -skärm
5. 18650 batteri
18650 litiumjonbatteri
18650 litiumjonbatteri
batteri 18650 hållare
6. TP4056 laddningsmodul
tp4056
tp4056
7. växla knappar eller doppbygel
swtich röd dopp
swtichers, många olika
8. brödbräda och dupontkablar
liten brödbräda
kit för brödbräda
9. fall, jag skapar av trä + tejp
röd tejp
Prusa 3D -skrivare, jag hoppas att jag kommer att göra fodral av plast: D
Steg 3: Krets
Kretsen är ganska enkel:
Anslut alla i2c -moduler (TSL2591, OLED, HTU21D) till SCL- och SDA -stift på wemos (SDA -> D2, SCL -> D1).
Driv dem med 3,3 V från wemos.
Anslut batteriets plusterminal till 5V -stiftet på wemos och batteriet + stiftet på tp4056 -laddningsmodulen till plusterminalen på batteriet.
Anslut alla grunder tillsammans.
Steg 4: HTU21D -sensor
Jag köper en ny temperatursensor, som mäter med noggrannhet 0,3 ° C!
Saker du bör veta om denna sensor (från sparkfun):
- Använder I2C -gränssnittet
- Typisk fuktighetsnoggrannhet på ± 2%
- Typisk temperaturnoggrannhet på ± 0,3 ° C
- Fungerar från 0 till 100% luftfuktighet men den här sensorn rekommenderas inte för tuffa miljöer där den kan komma i kontakt med vatten (t.ex. regn).
- 3.3V -sensor - använd inline -logiknivåomvandlare eller 10k -motstånd för att begränsa 5V -signaler
- Endast en HTU21D -sensor kan ligga på I2C -bussen åt gången
Min sammanfattning: det är en bra sensor, eftersom den mäter med noggrannhet 0,3 ° C och både - temperatur och luftfuktighet. Fördelar är I2C -störningar och nackdelar med 3.3V, men det spelar ingen roll i mitt fall.
Steg 5: TSL2591
Denna sensor är bra för att mäta föroreningar på natthimlen på grund av dess känslighet (till 188 mikro lux!).
1. är dioder med möjlig ir och fullmått. Jag använder den inte.
2. spänningsregulator från 5V till 3,3V
Chipspecifikationer (från adafruit):
- Närmar sig mänskligt ögonsvar
- Extremt brett dynamiskt område 1 till 600 000 000 räkningar
- Lux -intervall: 188 uLux -känslighet, upp till 88 000 Lux -ingångsmätningar.
- Temperaturområde: -30 till 80 *C
- Spänningsområde: 3,3-5V in ombordregulator
- Gränssnitt: I2C
- Detta kort/chip använder I2C 7-bitars adress 0x29 (fast)
- Mått: 19 mm x 16 mm x 1 mm /.75 "x.63" x.04 "Vikt: 1,1 g
- 2 dioder för mätning både - IR och Fullspektrum
Sammanfattning:
188 uLux är perfekt, även I2C -kommunikation är enkel. Kanske kan problemet fixas I2C -adressen (0x29). Ombord regulatorn är också bra och möjlig att använda sensorn under vintern (frost).
Steg 6: Kod
Du behöver dessa bibliotek (jag lägger till dem i en zip -fil):
- Adafruit-GFX-Library-master
- adafruit_gfx_library_master
- Adafruit_HTU21DF_Library-master
- Adafruit_Sensor-master
- Adafruit_TSL2591_Library-master
Kod: du kan använda min eller skapa egen. Glöm inte att ställa in maximal integrationstid (600 MS) och förstärkning till max (GAIN_MAX) för natthimelmätning.
Om du försöker använda min kod, ladda ner ino -filen. När jag kopierar från instruerbar min kod, är det något fel med bibliotek
Jag använder laddningsbilden av månen bara för skojs skull. Du kan använda vilken som helst, bara använda den här sidan för att få array:
javl.github.io/image2cpp/
//https://lastminuteengineers.com/oled-display-arduino-tutorial///https://javl.github.io/image2cpp/ // mcd to magnitude https://unihedron.com/projects/darksky/magconv.php… // HD44780 är en styrenhet för teckenbaserade LCD-skärmar. https://unihedron.com/projects/darksky/magconv.php… #include
#omfatta
#include #include #include "Adafruit_HTU21DF.h" #include "Adafruit_TSL2591.h" int counter; // OLED display TWI address #define OLED_ADDR 0x3C Adafruit_SSD1306 display (-1); // - 1 för omstartskärm med omstartsknapp på arduino -kortet Adafruit_HTU21DF htu = Adafruit_HTU21DF (); Adafruit_TSL2591 tsl = Adafruit_TSL2591 (2591); // skicka in ett nummer för sensoridentifieraren (för din användning senare) uint32_t lum; uint16_t ir, full; int ulux; float lux; float temp; flyta rel_hum; float mag_arcsec2; // visuella mags/bågsekund² [värde i mag/arcsec2] = Log10 ([värde i cd/m2]/108000)/-0,4 // symboler // grad för Celsius konstant osignerad teckengrad] PROGMEM = {0xe, 0x11, 0x11, 0x11, 0xe, 0x0, 0x0, 0x0}; // exponent 2 const unsigned char exponent PROGMEM = {0xe, 0x1b, 0x3, 0x6, 0xc, 0x18, 0x1f, 0x0}; // 'moon_logo', 128x64px const unsigned char intro PROGMEM = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xc0, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfd, 0x, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x03, 0xff, 0xc0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xfc, 0x07, 0xff, 0xe0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x07, 0xff, 0xf8, 0xff, 0xff, 0x, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xbe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xcc, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x3f, 0xc0, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf, 0xc0, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x3f, 0xe0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x3f, 0x80, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x3,, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x3f, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x3f, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x ff, 0xff, 0xf0, 0x00, 0x3f, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x3f, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xe0, 0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x60, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x07, 0xff, 0x, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x18, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x38, 0x 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x48, 0x7f, 0xff, 0xff, 0xff, 0xc0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x80, 0x3f, 0xff, 0xff, 0xff, 0x00, 0x1f, 0xff, 0xff, 0xff, 0x, 0xff, 0xff, 0xc0, 0xc4, 0x1f, 0xff, 0xff, 0xfc, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x60, 0x0f, 0x, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xf0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0x, 0xc0, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x01, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0, 0x43, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x4f, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x5f, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x3f, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x0,, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x01, 0xff, 0xff, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x03, 0xff, 0xff,, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x01, 0x0f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x01, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x 00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x01, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x1f, 0xff, 0xc7, 0xff, 0xff, 0xff, 0x, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; void setup () {// htu21d htu.begin (); // tsl2591 sensor_t sensor; tsl.getSensor (& sensor); tsl.setGain (TSL2591_GAIN_MAX); // MAX, HIGH MED, LOW, tsl.setTiming (TSL2591_INTEGRATIONTIME_600MS); // 100MS, 200 MS, 300MS, 400MS, 500MS, 600MS // installation för oled display display.begin (SSD1306_SWITCHCAPVCC, OLED_ADDR); display.clearDisplay (); display.display (); display.drawBitmap (0, 0, intro, 128, 64, WHITE); display.display (); fördröjning (1000); display.setTextSize (1); display.setTextColor (VIT); display.setFont (& FreeSerif9pt7b); display.clearDisplay (); } void loop () {lux = 0; ulux = 0; mag_arcsec2 = 0; temp = 0; rel_hum = 0; fördröjning (100); lum = tsl.getFullLuminosity (); ir = lum >> 16; full = lum & 0xFFFF; fördröjning (100); lux = tsl.calculateLux (full, ir); // ljusintensitet i microlux ulux = lux*1000000; om (ulux <0) {ulux = 0; } mag_arcsec2 = log10 (lux/108000)/-0,4; // (log ((ulux/108000)) /(-0.4) temp = htu.readTemperature (); rel_hum = htu.readHumidity (); display_values ();} void display_values () {//display.drawPixel(120, 50, WHITE); display.clearDisplay (); display.setCursor (1, 15); display.print (temp); display.drawBitmap (42, 2, degree, 8, 5, WHITE); display.setCursor (50, 15); display.print ("C"); display.setCursor (70, 15); display.print (rel_hum); display.setCursor (114, 15); display.print ("%"); display.drawLine (1, 20, 127, 20, WHITE); display.drawLine (67, 1, 67, 20, WHITE); display.setCursor (1, 35); display.print ("ulux ="); display.setCursor (50, 35); display.print (ulux); display.setCursor (1, 55); display.print ("mag/arsec"); display.drawBitmap (70, 45, exponent, 8, 8, WHITE); display. setCursor (83, 55); display.print (mag_arcsec2); display.display ();}
Steg 7: Inuti
Jag skapar ett eget fodral och jag använder brödbräda med dupontkablar som du kan se.
Jag använder TP4056 för att ladda batteriet med usb -kabel (behöver swtich dip -bygel).
För att slå på/av använder jag dip -bygel.
För dagsljus visar TSL2591 0 och mag/arcsec2 är nan.
För natthimlen ska TSL2591 visa från 0 till 1000 000 microlux (ulux) och motsvarande mag/bågsek2
(cca. 14 till 22 mag/arsec2).
För fullMoon mätte jag 50k ulux vilket är 0,05 lux.
Rekommenderad:
Fanair: en väderstation för ditt rum: 6 steg (med bilder)
Fanair: en väderstation för ditt rum: Det finns otaliga sätt att ta reda på det aktuella vädret, men då vet du bara vädret utanför. Vad händer om du vill veta vädret i ditt hus, inuti ett specifikt rum? Det är vad jag försöker lösa med det här projektet. Fanair använder flera
Väggfäste för iPad som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: 4 steg (med bilder)
Väggfäste för iPad Som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: På senare tid har jag ägnat ganska mycket tid åt att automatisera saker i och runt mitt hus. Jag använder Domoticz som min hemautomationsapplikation, se www.domoticz.com för mer information. I min sökning efter en instrumentpanelapplikation som visar all Domoticz -information tillsammans
Väderstation med Arduino, BME280 och display för att se trenden inom de senaste 1-2 dagarna: 3 steg (med bilder)
Väderstation Med Arduino, BME280 & Display för att se trenden under de senaste 1-2 dagarna: Hej! Här på instruerbara väderstationer har redan införts. De visar det aktuella lufttrycket, temperaturen och luftfuktigheten. Vad de saknade hittills var en presentation av kursen under de senaste 1-2 dagarna. Denna process skulle ha
KeyPi - en billig bärbar Raspberry Pi 3 bärbar dator under $ 80: 11 steg (med bilder)
KeyPi - en billig bärbar Raspberry Pi 3 bärbar dator under $ 80: *** UPPDATERING *** Hej alla! För det första tack för allt stöd och feedback, gemenskapen här är fantastisk :) Här är svar på några frågor: Varför gjorde du det här? Jag ville göra en bärbar dator som hade ett tangentbord i full storlek. Jag kände att t
Stöd för bärbar datorrem - för soffa eller säng: 5 steg
Stöd för bärbar datorrem - för soffa eller säng: Detta är något jag gjorde efter månader av ansträngning i nacken medan jag tittade ner på min bärbara dator när jag satt i soffan. Det fungerar bara om du sitter som jag gör när jag är i soffan, lutad bakåt med fötterna vilande på soffbordet .. Men det är också h