torstai 14. kesäkuuta 2018

Elävä valo


No en taida tässä jäädä koodaamaan liikennevaloja.

Jos tekis sellaisen sydeemin, että nettisivulta klikkais nappia, ja se sais valon sitten elämään. Plus ja miinus napit, ja niistä kirkastuu tai himmenee. Simuloisiko se jääkaapin lämpötilan muutosta. Niin pitäähän se lämpötila ensin nähdä siinä sivulla.



keskiviikko 2. toukokuuta 2018

Tämäkin toimii

Micro:bit lähettää valoisuusarvoja Raspberryyn. Raspberryssä Python-ohjelma lukee sarjaporttia ja kirjoittaa SQLite tietokantaan arvoja. Python-ohjelmalla luetaan tietokantaa ja näytetään tiedot selaimessa. Selainta päivittämällä uudet tiedot tulee näkyviin.


Seuraavana html-jquery-python, palvelimen sql-tietokannasta json jqueryyn.

keskiviikko 25. huhtikuuta 2018

tiistai 24. huhtikuuta 2018

Voi jummi

No kestipäs hieman saada näin yksinkertainen ohjelma toimimaan, hah hah. Kaikkea sitä oppii.
No nyt pelittää, tästä se lähtee.

torstai 19. huhtikuuta 2018

Uusi microbit projekti

Dataa syntyy ja se menee säilöön.

Micro:bit http://microbit.org/ lähettää aika ajoin dataa.
Raspberry lukee dataa ja tallentaa ne sql-tietokantaan.

Nettisivulla näytetään ne tiedot.



Testataan Raspberryllä, minicom-ohjelmalla
sudo minicom -b 11520 -D /dev/ttyACM0

Toimii, tulee V:30


Sitten tein tietokannan  Raspberryyn


sqlite3 asennettu.
tietokanta.db
taulu
-avain, valo kaikki NUMERIC
Lisäsin yhden tietueen.

SQL-tietokanta


Kokeilin tietokannan lukua:
from serial import *
import time
import sqlite3

conn = sqlite3.connect('tietokanta.db')
print("tietokanta avattu")
c = conn.cursor()

c.execute("SELECT * FROM taulu")

conn.commit()

for row in c:
   print ("Aika ",row[0])

conn.close()

print("loppu")

Toimii.
Sitten koodataan lisää.
Ohjelma lukee sarjaporttia ja kirjoittaa sql-tietokantaan tietueita.

#! /usr/bin/python3
# -*- coding: utf-8 -*-
"""
Copyright (c) 2018 Jani Mantynen & Ville Heikkiniemi
Sirpa Mazarakis
Sarjaportin luku Janin ja VIllen ohjelmasta
Permission is granted to copy, distribute and/or modify this document under
the terms of the GNU Free Documentation License, Version 1.3 or any later
version published by the Free Software Foundation; with no Invariant Sections,
no Front-Cover Texts, and no Back-Cover Texts. A copy of the license can be
found online at http://www.fsf.org/licensing/licenses/fdl.txt

Ohjelma lukee sarjaportista rivin ja tekee siitä tietueen tietokantaan
"""
from serial import *
import time
import sqlite3

def Tapahtuma(data):
   #print("data ",data)
   if len(data) > 2:  
       try:
           conn = sqlite3.connect('tietokanta.db')
           #print("tietokanta avattu")
       except Exception:
           print("tietokantaa ei avattu")
           sys.exit()
           
       c = conn.cursor()
       aika = int(time.time())
       #print(aika)
       valo = int(data[2:len(data)])
       #print(valo)
       c.execute("INSERT INTO taulu VALUES (?, ?)", (aika, valo))
       conn.commit()
       conn.close()
       
def main():
   # Yritetään luoda sarjaportti
   try:
       microbit = Serial(port='/dev/ttyACM0', baudrate=115200, timeout=2)
   except Exception:
       print("tarkista portti")
   while True:
       try:
           Tapahtuma(microbit.readline().decode()) # luetaan rivi
       except KeyboardInterrupt:
           print("keskeytetään")
           sys.exit()
if __name__ == "__main__":
   main()

Paitsi että kun syöte jää puskuriin, niin sama aikaleima tulee useaan tapahtumaan. Microbitin pitäisi lähettää se aika..eiku muuttamaan.
Tai olkoot.

Sitten tätä dataa pitäisi saada nettisivulle näkyviin.

torstai 12. huhtikuuta 2018

Tää toimii

Kyllä koodaaminen on kuin syömään rupeais 😊

Testasin ensin Python-ohjelman toiminnan Raspberryn työpöydällä. Kuinka vaikeaa onkaan ottaa kuvaruutukaappaus Raspbianilla, puhumattakaan videoida. Ohje kuvaruutukaappaukseen täältä: https://www.imore.com/how-take-screenshot-raspberry-pi

No, ohjelma toimii, eli työpöydälle syntyy json.tietokanta, ja se myös päivittyy.

Kreditit Janille ja Villelle.

Sitten se jQuery. Eli micro:bitillä painetaan nappia, ja nettisivun divi liikkuu.
Koodipohja saatiin taas Villeltä. Ohjelma lukee json-tietokantaa.

// Koodi saatu Ville Heikkiniemeltä
// Haetaan JSON
function haeJson(e){
$.ajax({
cache: false,
url: 'data.json',
dataType: 'json',
success: function(data) {
var date = new Date(data['REF']*1000);
if (parseInt((date.getTime() / 1000), 10) - data['YY'] < 5){
$( "#keski1" ).addClass( "liikkuu" );
} else { $( "#keski1" ).removeClass( "liikkuu" ); }
if (parseInt((date.getTime() / 1000), 10) - data['II'] < 5){
$( "#keski3" ).addClass( "liikkuu" );
} else { $( "#keski3" ).removeClass( "liikkuu" ); }
}
});
setTimeout("haeJson()" ,1000);
}

function haivytys_click(lohko) {
var _lohko = document.getElementById(lohko);
_lohko.onclick = function() { _lohko.classList.add("liikkuu"); }
_lohko.ondblclick = function() { _lohko.classList.remove("liikkuu"); }
}


// Funktio joka ladataan sivun lataamisen yhteydessa
window.onload = function() {
haivytys_click('keski1');
haivytys_click('keski3');
haeJson();
}


Tää toimii!


torstai 5. huhtikuuta 2018

Toinenkin div liikkuu

Lisätään sama divin kasvaminen oikeaankin reunaan.





No onpas tyhmän näköistä koodia. Kun jos liikkuvia osia olisikin useampi. Tämä tarvinnee jQueryä.

perjantai 23. maaliskuuta 2018

Div liikkuu

Lisäsin tuohon samaan sivuun hieman liikettä. Kun hiiri viedään vasemmalla olevan vihreän divin päälle, niin se levenee. Kun hiiri siirtyy pois, leveys palautuu normaaliksi.
Alkuperäistä css:ää joutui muuttamaan, jotta divillä on tilaa liikkua. 

Divillä keski1 on tilaa liikkua, kun selain huolehtii divin keski2 leveydestä. En taida tykätä tästä. Selvitetään lisää.


Rajapinta

Tänään tutkailtiin micro:bitin ja Raspberryn rajapintaa.

Micro:bit lähettää sarjaporttiin pari tavua tekstiä, kun jotain nappia painetaan.

Ravistaminen saa näköjään 2 tapahtumaa aikaiseksi. 

Sitten tarkastellaan Raspberryllä, mitä sinne sen sarjaporttiin tulee.

Hyvin näyttää tulevan. 

Seuraavaksi luetaan Pythonilla sarjaporttia.


torstai 22. maaliskuuta 2018

Uusi blogi

Keväältä tuoksuva lounatuuli kävi aamulla.
Tuossa ne sitten on, työpöydällä.
Loin uuden blogin, teema Hennolla otteella. Kyseessä on micro:bit ja Rapberry Pi. Opiskelijat ovat jo viisi viikkoa harjoitelleet, itse tulen vähän jälkijunassa tässä aiheessa. Hieman koodaamista harjoittelin tuolla http://microbit.org/fi/. Mahtavaa! Nyt pitäisi iskeä kourat rautaan kiinni.

Micro:bitissä on kaksi painonappia, A ja B. Tavoitteena on saada aikaan ohjelma, joka näyttää ledeissä kirjaimen A, kun A-nappia painetaan ja kirjaimen B, kun B-nappia painetaan. Kun laitetta ravistetaan, niin näyttö tyhjenee. Koodaamaan, koodaamaan! Selaimessa, Chromessa.


Sitten micro:bit koneeseen kiinni ja ladataan ohjelma micro:bittiin. Kokeillaan.

Toimii.

No tämä oli se helppo osuus. Tavoitteena olisi tehdä sydeemi, jossa micro:bitillä ohjataan nettisivua. Eli kun micro:bitissä tehdään jotain, vaikkapa painetaan nappia A, niin nettisivulla tapahtuu jotain.

Otetaan Raspberry Pi käyttöön. Asennetaan siihen Apashe2-palvelin.
Terminaaliin: sudo apt-get install apashe2 
Sitten haetaan ip-osoite: ifconfig
Ja selaimella tuohon ip-osoitteeseen. 
Juuresta var-kansio ja siellä www, johon tallennetaan nettisivut.

Sivun rakenne näyttäisi tältä:

Sivulla tapahtuisi vaikka sellaista, että kun A-nappia painetaan, niin tummempi oranssi osa ylhäällä muuttuisi vaaleammaksi. Sivu on rakennettu div:eillä ja muotoiltu css:llä.


Javascriptillä voidaan muokata html-sivua. Kokeilen ensin hiirellä klikkaamista tuohon oranssiin nauhaan.

Näyttää toimivan.



Nyt koodia pitäis saada muutettua siten, että useammalle diville tapahtuisi jotain, vaikka samoja juttuja.
jQueryllä voi kirjoittaa tehokkaammin. Siispä siihen tutustumaan. Tässä tämän aamun tulos.