Nye magasiner og blader * Pi

Momas private blogg for 05.des.2015.

Full circle mag:
http://fullcirclemagazine.org/
Blad #103 har også introduksjon til Raspberry Pi.

Også juleutgaven av PCLinux mag er ute med mange interessante tips.
http://pclosmag.com/html/enter.html

Raspberry Pi mag og bøker.
http://www.linuxlinks.com/article/20160328051718621/RaspberryPiBooks.htm...

Advanced Linux programming (PDF download)
http://advancedlinuxprogramming.com

Jeg har også bestilt en Raspberry PI 2 med flere tilleggskomponenter (bl.a wifi brikke med antenna, en liten TFT-berøringsskjerm og 8GB mikro SD-kort for Raspbian distro).

EDIT: 3.5" TFT-skjermen er ubrukelig for mitt formål. Skjermen opptar flere GPIO-pinner på RaspberryPi. Den er også veldig liten og upålitelig ved berøring. Ikke kjøp med mindre din app og GUI har behov for 2 - 3 knapper (og ikke mer).

Jeg har bestilt en 7” Touchscreen Display som koples til DSI-porten på RPi. (må også ha extra lang DSI kabel).

Der jeg bor er det veldig tørt om sommeren og vi må vanne mye. Det er også meget varmt og tørt nå selvom vi står midt i vinteren. Normalt er vintrene fuktige og regnet vil komme før eller senere og i store mengder.

EDIT: Nå har det regnet nesten uten opphold i flere dager. LOL -;)

Jeg vil programmere Raspberry PI til å åpne vannventiler slik at vanningen av gressplener, trær og busker kan automatiseres og styres via nettet. Det er vanlig at slike ventiler (solenoid valves) styres av 24V AC spenning. Hver ventil er koplet til 1" vannrør som frakter og fordeler vann til mindre rør og sprinklere.

Typiske vannventiler: http://i1.no/0hxj/
En slik ventil drar ca. 0.2A strømm og hvis man åpner f.eks 8 ventiler samtidig vil dette kreve 1.6A(2A) strømforsyning.

Brønnen og vannpumpen min kan ikke forsyne mer enn 3 soner samtidig (tenker jeg). Det er ikke noe hensikt å la pumpen rulle på høygir. Det er bedre å vanne 1 eller 2 soner om gangen, og vanne hver sone 2 ganger om dagen.

Jeg trenger også noen relér (relay) for å overføre output signaler fra Raspberry Pi (GPIO pins) til 24V AC strøm.
Ref: https://www.raspberrypi.org/documentation/usage/gpio/

Jeg kunne ha brukt en mosfet eller transistor hvis dette var 24V DC, men overføring til AC strøm er best via en relé. Styringsspenningen fra RPi (GPIO) er ca. 3.3v DC og relén må kunne kople minst 24V AC.

Man kan også kople til Raspberry varierte sensoner som regn-dropp sensor, atmosfærisk-trykk(barometer) og temperatur sensorer. Raspberry Pi kommer med flere gode eksempler skrevet i Python. Jeg tenker også at http://webpy.org kan installeres i RPi.

Raspbian (Debian distro) kan settes i kiosk-modus hvis man vil mekke et låst GUI for vanningsystemet med programmering av soner og vanningstider. En liten TFT-skjerm er tilstrekkelig for alt dette. Ref: https://www.adafruit.com/products/1601

Raspberry Pi kan fjernprogrammeres via nett over en SSH forbildelse.
https://www.raspberrypi.org/documentation/remote-access/ssh/unix.md

Phoronix har benchmark-testet Raspberry Pi 2 og Zero.
http://www.phoronix.com/scan.php?page=article&item=raspberry-pi-burst&nu...

Valg for kommentarvisning

Velg din foretrukket måte å vise kommentarer på og klikk på "Lagre innstillinger" for å aktivere endringene.

moma

Hei,
Jeg har avansert relativt langt med vanningsystemet. Jeg benytter Javascript for all koding. På serversiden har jeg Node.js med express server og på klientsiden benyttes HTML, Javascript med JQuery. Jeg henter også Tabs og Accordion elementene fra JQuery.ui. Det er deilig å kode alt på samme språk. Jeg lærer Javascript og Node.js relativt lett fordi det finnes bra dokumentasjon og eksempler paa nettet.

1981643

EDIT: En liten test med wiring-pi (Node.js) modul.
"wiring-pi" installerte seg uten problemer og alle tester på RaspberryPi med Rasbian og Node.js funker bra.
Ref: https://www.npmjs.com/package/wiring-pi

$ sudo apt-get update
$ sudo apt-get install npm git
$ sudo npm install wiring-pi

Kode:
$ cat test2.js
var wpi = require('wiring-pi');
const PIN = 18;
wpi.setup('gpio');
wpi.pinMode(PIN, wpi.OUTPUT);
wpi.digitalWrite(PIN, 1);

Kjør (krever sudo):
$ sudo node test2.js
1981686
Ser bra ut. GPIO pin #18 er koplet til en relé på relébordet. Koden skrudde på relén med suksess. Denne aktuelle relén kan styre spenninger fra 0 - 250V AC med 7A belastning. Mine vannventiler funker på 24V AC.

Jeg hadde først en liten webserver skrevet i Nodes http module,

var http = require('http');
server = http.createServer( function(req, res) {
...
do_GET(req, res);
...
do_POST(req, res);
});

Men express gjør jobben enklere og den har også login/autentiseringsmodul. Man slipper å skrive det selv.
1981644
Jeg benytte disse modulene i Node.js:
$ npm install express workerjs semaphore death wiring-pi

Express: https://www.npmjs.com/package/express
WorkerJs: https://www.npmjs.com/package/workerjs
Semaphore: https://www.npmjs.com/package/semaphore
Exit cleanup: https://www.npmjs.com/package/death
Wiring-pi: https://www.npmjs.com/package/wiring-pi

moma

Jeg har bestemt å benytte Jquery-mobile istedet for Jquery-ui.
GUI-komponentene er tilpasset for mobile enheter og tablets, men jeg vet ikke om biblioteket er mindre/raskere enn vanlig Jquery-ui. EDIT: Ser ut som Jquery-mobile er basert på Jquery-ui?

Jeg kom over en velkjent bug i Chromium da jeg testet Jquery-mobile rammeverket.
Se: https://goo.gl/FX52T8

Feilen oppstår når man viser lokale file:///xxx.html filer i Chrome eller Chromium. Feilen kan (av-og-til) omgås ved å legge # i slutten av url`en. Feilen oppstår ikke når websiden hentes fra en server.

Jquery-mobile: https://api.jquerymobile.com/tabs/

Jaguarboard:
Det produseres stadig nye, billige hovedkort á la RaspberryPi. Jaguarboard er et kickstarter prosjekt.
http://hothardware.com/news/jaguarboard-intel-atom-powered-single-board-...

Et annet ypperlig valg er Odroid C1,
http://www.hardkernel.com/main/main.php

Samt Pine 64 !
http://itavisen.no/2016/03/16/denne-er-bade-kraftigere-og-rimeligere-enn...

moma

Ok, jeg har nå konvertert koden til Jquery-mobile. Jeg må si at det var lettere å få ting til å fungere med normal JQuery ui! Mobile-jquery legger til ekstra klasser og properties som kan gi noen overraskelser på veien. Jeg har måttet flere ganger debugge og inspisere elementer og deres klasser (styles) i Javascript-konsollen. Man må grave åg lete.

Det fine med Jquery-mobile er at nettsiden skalerer seg automatisk til ulike skjermstørrelser. Dette kan man lett teste i Chromiums javascript konsoll hvor det finnes flere ferdige maler for mobiltelefoner, tablets og laptop.

Det er enkelt å lage pent organiserte websider i Jquery-mobile med data-roller.

<div data-role="page" id="page1"> 
      <div data-role="header">
          <h1>Side 1 tittel.</h1>
      </div><!-- /header -->
       
      <div data-role="content"> 
          <p>Side 1 innhold....</p>
      </div>
   <div data-role="footer">
          <h4>Side 1 footer</h4>
      </div><!-- /footer -->
  </div><!-- /page -->

Mobile-biblioteket har også fine effekter for overgang fra en webside til annen.
F.eks:
<a href="#page1" data-role="button" data-transition="slide">Gå til side1</a>
1982701

1982714

moma

Dialog-bokser vises som egne websider i Jquery Mobile. ALtså aktuelle websiden blir satt til side og dialogen popper opp istedet. Kan hende det finnes parametre som får dialogen til å oppstå oppå gjeldende websiden.

1983847

EDIT: Jeg har mottatt 7" Touchscreen Display for RPi2. Den er virkelig bra og funksjonell for mitt vanningsprosjekt. Det er viktig å kunne innsette DSI-kabelen i riktig vei (husk å dra ut de små håndtakene ved siden av konnektoren). Man må også kople to (2) jumper ledninger for +5V og GND.

Jeg fant denne videon som viser installasjonen steg for steg. Begynner fra 1m34s.
https://www.youtube.com/watch?v=tK-w-wDvRTg#t=1m43s

moma

Hei,
Jeg har eksperimentert med et annet billigere 5V relèbord og det gjør jobben meget bra.
Ref ebay: http://i1.no/0i2d/
På eBay selges 8 relès kort for 6 - 8EUR. Man kan også utvide systemet med et annet 8, 4 eller 2 relès kort. Kortet krever 5V kjørespenning. Styring (input) ser ut til å fungere med 0 og 3.3V (istedet for 5V). Obs! jeg gjorde bare en kort test!. Relèet aktiveres med lav spenning ved å skrive 0 i RPis GPIO port. Hvert relè tåler opptil 10A på 230V AC.

EDIT: Et mulig problem. Rèleer (med aktiv 0V) kan havne i feil tilstand rett etter oppstart av RPi2 og Rasbian distro. Dette må jeg undersøke nærmere spesielt fordi styringspenningen er 0 og 3.3V istedet for 0 og 5V.

1984172

EDIT: Ok, jeg har testet tilstanden til rèleene under systemboot, omstart og plutselig dra-ut-veggkontakt, og de oppfører seg riktig.

Jeg tror dette rèlekortet er Sainsmarts produkt og det skal visst funke bra i RPi?
Ref: https://github.com/fixedd/RPi_Relay_Interface#readme

Best å shope dette kortet direkte hos Sainsmart?
Selgere på eBay nevner ikke produsenten.

EDIT: LOL ;-)
https://www.youtube.com/watch?v=m83UdW67hVY

moma

Hei,
Temperatur -og fuktighetssensor DHT22:
Jeg har integrert en temperatur -og fuktighetssensor i mitt vanningsystem. Sensoren hindrer at vanningsystemet startes ved regnvær, tykk skodde og lav temperatur.

Sensoren DHT22 gir relativt bra nøyaktighet på temperatur og luftfuktighet. Sensoren må polles og leses med jevne mellomrom.
Ref: https://www.adafruit.com/products/385

Følgende video viser hvordan man leser DHT22 i Python.
https://www.youtube.com/watch?v=IHTnU1T8ETk
Bla til 06:00 minutter for å se koplingsskjemaet.

Mitt koplingsskjema er lik, men jeg har koplet ledning 2 fra DHT22 til GPIO-pin 21. Derfor er 21 gitt som argument til dht22-program (se nedenfor).

Bilde med DHT22-sensor: 1992039
Merk at numerering av GPIO og andre PINs på Raspberry Pi2 er litt annerledes enn på bildet.

GPIOs på RPI2: 1992038
------

Jeg benytter her c-kode som jeg nedlastet fra Adafruit.com (hvis jeg husker riktig).

Kode og copyright © tilhører Adafruit.com. Jeg har kun modifisert dht22.c.
Ref: https://drive.google.com/folderview?id=0B9cDusRJFb4QZnlIWi1aNDJyOUk&usp=...

Pakk ut dht22.tar.bz2 og kompiler programmet med m.sh.
chmod +x m.sh
./m.sh

Du må også ha installert "build-essential" package.

Kjør ./dht22 som sudo. Husk å kjøre som root/sudo ellers får du feilresultat ("result" < 0).
sudo ./dht22 21

{"pin":21, "result":0, "temperature":17.2, "humidity":79}

Argumentet 21 er GPIO-pin som DHT22s fot #2 er koplet til.

Output er en JSON-struktur med 4 felter.

pin: GPIO pin på Raspberry Pi.

result: Evt. feilkode ved lesning av sensoren.
0 = Ingen feil.
-n = Feil! Ikke bruk resultatet. Vent minst 2 sekunder og les om.

temperature: Temperatur med 1 decimal (har ca. 0.5% feilmargin)

humidity: Luftfuktighet (har ca. 3% feilmargin).
------

Jeg kjører dht22 og leser verdiene fra mitt Python-program (app.py) som også fungerer som web-server for hele vanningsystemet.

Hele applikasjonen kjøres på RPI2 som styrer releer med vannventiler. Jeg har koplet DHT22 til GPIO-pin 21.

Kjøring av ./dht22 som sudo uten å angi passord:

Jeg vil ikke starte hele applikasjonen (app.py) som root/sudo, derfor har jeg lagt en linje i /etc/sudoers fila som lar programmet kjøre "sudo /home/moma/irrman/dht22/dht22" uten å kreve sudo passord.

Altså editer /etc/suoders fila med "sudo visudo"
sudo visudo

Og legg til følgende linja i slutten av fila.

ALL ALL=NOPASSWD: /home/moma/irrman/dht22/dht22

Hvor /home/moma/irrman/dht22/dht22 er en fullstendig sti (path) til ditt dht22 program.
-----

Modulen "temp_humid_sensor.py" viser hvordan jeg leser dht22 fra Python. Applikasjonen sender hvert 15. sekund push-meldinger (via Websockets) til alle webklienter som ser på websiden med vanningstider osv. Dette funker ypperleg bra.

Boa Páscoa, Feliz Páscoa para ti!

  • Skriv ut artikkel
  • Abonner med RSS

Siste kommentarer