Miksi Raspberry, miksi ei Arduino?

Näin minulta kysyttiin heti eka päivänä kun julkaisin blogin. Myös töissä sain perustella valintaani välittömästi kun otin projektin ruokalassa puheeksi. Jos haluat lyhyen vastauksen: Se sattui ensimmäisenä käteen Verkkokaupan hyllyltä. Pidempi vastaus? – jatka lukemista… 

Kelataanpa historiaa 20 vuotta taaksepäin – aikaan jolloin Raspberryjä ja Arduinoja ei vielä ollut olemassa –  jolloin itse aloittelin ohjelmoitavien mikrokontrollerien ohjelmointia PIC16-nimisellä mikrokontrollerilla. Valjastin kyseisen kontrollerin ohjaamaan manuaalista vaihteistoa, jonka olin suunnitellut PC-autopelien ratti-poljinyhdistelmän kylkeen. Siihen aikaan ei ollut kaupallisesti sellaisia ratti-poljinyhdistelmiä, joissa olisi ollut manuaalinen vaihteisto ja käsijarru, joten päätin yrittää tehdä itse. Itse mekaniikka oli faneerista, puusta ja metallista. Vaihteen kytkeminen aiheutti suljetun piirin ja tämän informaation toimitin PIC16:lle. PIC16:lla oli sitten tilakone, joka “togletti” ratti-poljinyhdistelmän vaihteita tarvittavan määrän ylös tai alas. Systeemi toimi mainiosti ja sillä sai mahtavasti lisää fiilistä rallipeliin! En millään muista itse rallipelin nimeä, mutta se oli suomalaisten tekemä ja siinä pääsi ajamaan Ladalla, Saab 96:lla, Taunuksella ja muilla legendaarisilla vauhtihirmuilla.  

PIC16-seikkailujen jälkeen onkin ollut hiljaista ohjelmointi- ja elektroniikkarintamalla, sillä opintojen jälkeen ajauduin nopeasti hektiseen työelämään ja sen jälkeen vielä hektisempään perhe-elämään. Aika ei vaan riittänyt kaikkeen, joten harmittavasti mikrokontrolleri-harrastukseen on tullut 20-vuoden tauko. Sinä aikana on sitten tullut jotain Atmelin ohjelmoitavia piirejä, Arduino ja Raspberry. Toki sen verran seurasin rintamaa, että tiesin joidenkin tehneen Arduinoilla autotallinovien avaajia ja jotain kaljapullonavauslaskureita. Ja että taisipa niitä olla Robot Wars –tv-ohjelmassakin joitain häkkyröitä ohjaamassa. Ja Raspberryillä kuulemma sai tehtyä mediakeskuksen olohuoneeseen. Mutta siihenpä se tietämys sitten jäikin.  

Joten – hirvittävän syvällisesti en tähän projektiin pohtinut “Arduino vai Raspberry” –valintaa. Taisin käydä seuraavien tyyppisillä sivuilla: 

https://flaviocopes.com/arduino-vs-raspberry-pi/ => Täällä sanotaan, että minulle olisi riittänyt Arduino… 

https://all3dp.com/1/arduino-vs-raspberry-pi/ => Tällä sivulla sanotaan että: 

”Your first consideration should be what you want to do with it! If you need a full-blown OS and want to run multiple programs on a single computer, the Raspberry Pi is the right choice. If you just want to get one job done and also need to control external periphery, the Arduino is the superior machine.”

Ajattelin asiaa siltä kannalta, että Raspberryllä saisin käyttää tuttua Python-kieltä ohjelmointiin, Raspberry on helppo liittää telkkuun,  virtalähteeseen ja nettiin sekä käyttöjärjestelmänä olisi tuttu Linux. Raspberryllä voisin myös pyörittää useampia sovelluksia (kasvien web-kamera, palvelin, striimauskoneeksi – samalla kun se ohjaisi kastelujärjestelmää keskusyksikkönä ja toimisi langattomien anturien tukiasemana). Näihin jokaisiin varmaan Arduino-fani vastaisi, että no voihan samat tehdä Arduinollakin!? En yhtään epäile, enkä väheksy Arduinoa – vaan päinvastoin. Arduino on erittäin pätevä ja fiksu valinta samanlaiseen systeemiin mitä minulla on tulossa. Mutta minun valinta nyt vaan on Raspberry –  ja toisaiseksi olen valintaan erittäin tyytyväinen. Raspi on osoittautunut vakaaksi ja toimivaksi. Käytän sitä paitsi Arduinoon (pääasiassa) suunniteltuja anturi-moduuleja, joten olen erittäin tyytyväinen että Arduinot ovat olemassa ja että niitä moni harrastaa! 😊 

Jade plants 💲 Rahapuu 🤑

Last posting was quite technology oriented, so this time I’m writing something that is not technical but extremely difficult though – so I’m talking about plant care!

Both plants which I have under automated irrigation are very thirsty ones. They like to get irrigated at least twice a week and sometimes even three times. One might say that they are drunks among the plants. But that’s very good since those kind of plants are perfect for my irrigation experiments. They don’t care so much if my program contains a mistake (never happened so far ;)) and I accidentally pump 5 dl instead of 1…

But there are also other kind of plants. They’d rather stay far away from water and drink only when it’s absolutely necessary. We bought couple of this kind of plants some months ago and they’re called as Jade plants. We didn’t read the instructions of irrigation and watered the plants quite normally – once a week like our other plants. But that seems to be a fatal mistake! The other Jade plant died some weeks ago and the other is alive, but suffering. But we won’t give up! We bought new ones and we’ll try to be more careful from now on. We read from the internet that Jade plants should be irrigated only once per three weeks. Who in earth – can remember which plants needs irrigation three times a week and which only once per three weeks?

So the conclusion is: Plant care is far more difficult than technology stuff!

Ohjelmointia Pythonilla

Tänään kirjoitan asiasta josta tiedän jotain, mutta en todellakaan paljoa – saatikka että väittäisin olevani minkääntasoinen asiantuntija. Eli hieman siis liikutaan epämukavuusalueella.

Kyse on siis ohjelmoinnista. Ja nimenomaan perinteisestä ”soft”-ohjelmoinnista, eikä laitteisto-ohjelmoinnista (VHDL, Verilog, SystemVerilog), jota kyllä osaan kattavasti työn puolesta. Olen käynyt pakolliset C++ -kurssit opiskeluaikoina ~20 vuotta sitten, eikä kurssinumerot olleet silloin mitenkään ylihyviä. HW-puolelle suuntauduttuani ja työsarkaa sillä puolella koluttuani, alkoi vähäisetkin koodaamistaidot jäädä unholaan ainakin C++-kielen osalta. Työelämässä olen toki tarvinut alusta asti skriptauskieliä kuten sh, csh, bash, Perl, Tcl, html, awk jne. Myöskin Assembly-kieli tuli tutuksi mikrokontrollerin ohjelmoinnissa. Perl ja Tcl ovat toki paljon enemmänkin kuin skriptauskieliä, mutta siihen tarkoitukseen minä niitä lähes yksinomaan käytin. Skriptausohjelma on siis tyypillisesti pieni ohjelmanpätkä, joka hoitaa joko yhden tai muutamia asioita kerrallaan. Jos vaikka jokin tulostiedosto näyttää sekavalta, voi esim. Perlillä saada sen näyttämään järkevämmältä.

Python-kieleen tutustuin nykyisessä työpaikassani 4,5 vuotta sitten. Työkaverilla oli hienoja Python-skriptejä, joilla hän muutti tulostusta kätevästi. Python syntaksi näytti paljon helpommalta kuin Perl-totetus, joten kipinä Pythonista jäi mieleen itämään. Otinkin Pythonin käyttöön skriptaamisessa ja muutamia arkea helpottavia pikkuohjelmia tuli tehtyä. Ilokseni huomasin että Python tukee Tcl/Tk-GUI rajapintaa, josta minulla oli jo aiempaa kokemusta. Tk -lisäystä kutsutaan Pythonissa Tkinter-nimellä, jolla olen siis tehnyt aiemmassa postauksessa olleet GUI-harjoitelmat.

Raspberryä voisi ohjelmoida monella muullakin kielellä, mutta Python on ilmeisesti suosituin ei-web-pohjaiseen ohjelmointiin. Raspberry-palstoilla web-pohjaiseen ohjelmointiin suositeltiin Node-RED:iä, joka generoi JavaScriptiä. Jotkut käyttävät ilmeisesti C++-kieltä tai kirjoittavat suoraan Javaa. Myös täysin graafista Scratch-ohjelmointiympäristöä voi käyttää, taikka sitten Rubyä, jota wikipedian mukaan pidetään maailman helpoimpana ohjelmointikielenä. Sitä ilmeisesti opetataan jo peruskoulussa?

Mutta takaisin Pythoniin! Hehkutan sitä kieltä tässä eniten, koska sitä osaan parhaiten – mikä siis ei tarkoita että täydellisesti. Python on tulkkaava ohjelmointikieli, eli välittömästi ohjelman kirjoitettuani voin ajaa sen ja saada virheilmoitukset heti näkyviin. Python myös etenee koodissa iloisesti aina sinne saakka, kunnes ensimmäinen virhe koodista löytyy. C++-ohjelma sen sijaan pitää kääntää erikseen – mikä ei sekään ole iso steppi, mutta vaatii enemmän aikaa kuin Pythonin välitön palaute. Tulkkaavilla ohjelmointikielillä on kääntöpuolensa – ne eivät ole yhtä suorituskykyisiä kuin kääntävillä kielillä kirjoitetut ohjelmat.

Ohjelmointiprojekti on edennyt seuraavasti:

  • Kosteuden mittaus: 10 riviä koodia
  • Kodinonnen ja Nukkumatin kastelu (pumpun ohjaus): 34 riviä koodia
  • Kosteuden mittaus ajastetusti ja tallennus tiedostoon: 70 riviä koodia
  • Kosteuden mittaus ja kastelu ajastetusti kahtena päivänä viikossa ja tallennus tiedostoon: 180 riviä koodia
  • Kosteuden mittaus ja kastelu ajastetusti kahtena päivänä viikossa ja tallennus tiedostoon. Viikkomittaus päivittäin 4h välein ja tallennus tiedostoon. Testiversio GUI:sta (näkyvissä aiemmassa postauksessa), Kasvivalo-ohjaus: 400 riviä koodia
  • Nykyinen versio: Kaikki edelliset ominaisuudet + päiväkohtaiset kastelumääräasetukset, kuivuusraja, kosteustilanne näyttö, manuaalikastelu, logitiedoston teko, on/of statusvalot, kasteluhistorian ikkuna, jossa pv-viikko-kohtainen tulostus. Ohjelmien järjestely luokkakohtaisesti omiin tiedostoihin. GUI 650 riviä + filehandler 150 riviä + manual_controls 35 riviä + history_plot 35 riviä = 870 riviä koodia.

Täytyy huomioida että rivien määrä ei kerro mitään koodin hyvyydestä ja valmiusasteesta. Välissä on paljon erilaisia testitulostuksia ja ihan joka paikassa en ole käyttänyt looppeja. Välillä teen myös turhia tietotyyppimuunnoksia, jotka olen tajunnut vasta myöhemmin, mutta en ole jaksanut korjata. Optimointia siis riittää!

Mitä seuraavaksi? Nykyisessä GUI:ssa alkaa olla jo kaikki perusominaisuudet mitä alunperin ajattelin. Pystyn aikataulutetusti kastelemaan (yhtä kasvia) halutun määrän haluttuun aikaan – mikäli kasvi on tarpeeksi kuiva. Näen GUI:sta onko automaatio päällä ja mikä on viimeisin kosteustilanne. Näen myöskin graafin minkä tahansa päivän tai viikon tilanteesta. Tarvittaessa pystyn kastelemaan manuaalisesti halutun määrän. Ja jos jokin menee vikaan, niin näen logitiedostosta johtolankoja.

Seuraavaksi siis: kopioidaan toiminnot toisiin sheetteihin ”Nukkumatti, Chilit jne”. Sen jälkeen pidän tauon GUI:n kanssa ja alan testaamaan ilmankosteus-, valo- ja vuoto-antureita sekä niiden integroimista järjestelmään. Odotan myös jo innolla seuraavaa lähetystä Kiinasta. Sieltä pitäisi tulla lisää pumppuja, raja-antureita vesisäiliöihin, letkuliittimiä, vuoto-anturi ja kaikkea muuta kivaa. 🙂

The latest GUI. All the basic features (for one plant) starts to be ready. Now it’s mainly about copying the features for the other plants.

Blog ideas and job opportunities

Greetings from sick room! I’m recovering, but my ears are still blocked – making difficult to hear even own thoughts. In some of the next blogs I’m planning to tell about the selections I’ve made – why Raspberry and not Arduino? Why Python? More about IoT sensor selections, pump selections etc. This time I only share couple of links. Stay tuned!

Want to join my team? Even though Nokia doing reductions in some areas, we’re also hiring new employees all the time. 5G is very big investment at Nokia and new talents are continuously in demand. This particular opportunity is for experienced candidates but we’re also looking for trainees and summer trainees. Please don’t hesitate to contact me if you want to know more.

https://duunitori.fi/tyopaikat/tyo/backend-design-power-lead-snsok-11880781

https://www.linkedin.com/jobs/view/backend-design-power-lead-at-nokia-1680666554/?originalSubdomain=fi

Graafisen käyttöliittymän ohjelmointi aloitettu

Lentsu iski eilen ja oon ollut aika zombiena pari päivää. Sain viikonloppuna – kun olin vielä terve – aloitettua GUI:n rakentamisen alla näkyvin tuloksin. On vähän hullunkurista tehdä suomenkielistä GUI:ta, kun yleisesti on niin tottunut englanninkielisiin nimiin; start, stop, exit jne. Mutta haluan tehdä GUI:n ehdottomasti suomeksi, sillä englanninkielen ylivalta välillä vähän tympäisee. Sitä paitsi meillä kutsutaan kasveja suomenkielisillä nimillä, joten suomi sopii siinäkin mielessä.

I’ve been sick for the last couple of days. I started GUI design in the weekend and early results are visible below. I also translated couple of strange plant names for you:

Nukkumatti = prayer plant (Maranta leuconeura)

Kodinonni = baby’s tears, angel’s tears, bits and pieces (Soleirolia soleirolii)

This is how my working area looks like. I’ve been using Thonny IDE as Python programming interface. In the front you can see a first test version of the GUI. Another irrigation python program is running on the terminal behind – it’s creating measurement log and irrigates according to the schedule.
The second version. But not a final… not even close.

Lopuksi vinkki seuraajille: Kannattaa painaa ”subscribe” -nappia alhaalla ja antaa sähköpostiosoite. Saatte sitten viestin aina kun päivitän uusia höpinöitä tai kuvia.

Kiitokset kaikille seuraajille ja vierailijoille tähän mennessä! En tiedä keitä olette ja milloin käytte, mutta näköjään tämä porukoita kiinnostaa. Sen verran statistiikkaa näen, että kävijöitä on joka päivä yli viidestä kymmeniin ympäri maailmaa. Enimmäkseen kuitenkin Suomesta.

A hint for the followers: If you press ”subscribe” button and give your email, you’ll be informed when I update something wild and crazy. And also the boring stuff…

I also want to thank all visitors so far! I’ve been surprised that so many have been interested in my experiments. Of course this will not compare to any fashion blogs, but who knows if I start publishing some fashion hints also… or maybe not! 😀

More water please!

That’s what Kodinonni yelled already two days ago. It starts to look like a two dosing per week cadence is not enough for it. Now it’s suffering.. let’s see if it’s still alive next week.

But something good has also happened! I planted some chilies and sweet peppers. I also installed Raspberry controlled flower lamp for giving more light. Extra light is provided every morning between 8 – 11. I haven’t ever planted chilies that early in the winter, but according to some experts in Facebook’s garden group – that should be the correct way to go! 🙂

Alhaalla kuvat istutuksista ja uudesta järjestelystä. Nukkumatti piti nostaa jakkaran päälle, jotta överikastelu ei toistuisi. Tein nimittäin amatöörimokan aluksi, sillä Nukkumatin veden syöttöletkun pää oli alempana kuin pumpun tulopää. Siittähän seuraa tietysti se, että alempana oleva letku imee vesikaukalon tyhjäksi, vaikka pumppu ei olekaan päällä… 🙈😆 Olen tyhjentänyt monta bensatankkia (omia :)) ja jopa yhden veneen ”ime letkua ja laita letkun pää alas” -menetelmällä, mutta eipähän tullut hydrodynamiikan peruslait mieleen letkuja kytkiessä. Mutta nyt toimii!

Ikigai

Meillä kävi töissä tänään luennoimassa Perttu Pölönen, joka tituleeraa itseään keksijäksi, kirjailijaksi, säveltäjäksi ja futuristiksi: https://www.perttupolonen.com/. On siinä varsinainen moniosaaja, vaikka ikää on vasta 24v! Hän on käynyt meillä ennenkin ja tällä kertaa aiheena oli työelämän haasteet tulevaisuudessa. Esitelmä oli mieleenpainuva ja pisti kyllä ajattelemaan mennyttä elämää ja varsinkin tulevaisuutta. Kehitys on ollut niin vauhdikasta viime vuosikymmeninä, että on todella vaikea ennustaa tulevaisuutta 100 vuoden päähän. Tai edes 30 vuoden päähän? Eteneekö ilmastonmuutos sitä vauhtia, että nykyisellään viljavat seudut kuivuvat ja ihmisten on muutettava ilmastopakolaisina pohjolaan – joka nykyisellään on karua, mutta ehkäpä 100 vuoden päästä parasta viljelymaata? Vai eteneekö kehitys siihen, että on alettava kasvattamaan itse oma ruokansa – vähän kuin ennen vanhaan? Ehkäpä minunkin parvekeviljelyn kehittämisellä on kauskantoisemmat seuraukset ja tulevaisuudessa kaupunkinviljely on yhtä normaalia kuin kaupassa käynti. Käydäänkö silloin kaupassa omalla parvekkeella, kun sieltä ehkä vielä saa puhdasta ruokaa?

Pertun esitelmästä jäi mieleen ”Ikigai” – Japanilaisten salaisuus pitkään ja onnelliseen elämään. Alla olevasta kuvasta voi jokainen miettiä omalta kohdaltaan, että montako palloa toteutuu tällä hetkellä. Ja jos jokin ei toteudu, niin voisiko asialle tehdä jotain? Omalla kohdallani – työelämää miettien – häilyvästi täyttyy kaikki pallot, varskin jos ajatusketjun vie tarpeeksi pitkälle. Parvekepuutarhaprojektissa täytyy kirkkaasti keltainen ja punainen pallo (uskon oikeasti, että parvekepuutarhat automaatiolaitteineen tulee lisääntymään tulevaisuudessa). Virhreään palloon pyrin intohimoisesti opiskelemalla lisää ja alin pallo ei valitettavasti täyty, vaan päinvastoin: rahaa palaa… 😀

Wireless sensor possibilities

Today I’ve been thinking little bit about the wireless sensor possibilities. My friend at work knows about BLE (Bluetooth Low Energy) technology and he was going to order a NRF51822 BLE4.0 module for he’s projects. This module uses Nordic Semiconductor’s nRF51822 chip, which is designed for ulta-low-power wireless applications. Originally I was planning to use some WiFi module like CH340, but since BLE technology consumes less power, I think it makes more sense to use BLE in my project. I’m very lazy changing batteries, so if some engineer** from Nordic Semiconductor reads this, I hope you guys have done good job since I’m also going to use your nRF51822 chip!

(** I know quite many engineers in Nordic. They are ex-colleagues from other companies)

I found this article about the BLE – WiFi comparison for IoT: https://dzone.com/articles/ble-vs-wi-fi-for-iot-product-development

NRF51822 BLE4.0 module: https://www.aliexpress.com/item/32892343351.html?spm=a2g0o.productlist.0.0.55581a1apPw2Qy&algo_pvid=ba999031-9b11-41b7-a923-792cfa11467c&algo_expid=ba999031-9b11-41b7-a923-792cfa11467c-0&btsid=278ad177-5e37-469f-ad60-f4d94f43e1aa&ws_ab_test=searchweb0_0,searchweb201602_8,searchweb201603_53

CH340 WiFi module: https://www.aliexpress.com/item/32654418046.html?spm=a2g0o.detail.100009.1.698d6b18MXHfr9&gps-id=pcDetailLeftTopSell&scm=1007.13482.95643.0&scm_id=1007.13482.95643.0&scm-url=1007.13482.95643.0&pvid=78f3a7fd-dddf-43d9-a2b9-0b215d537348

There is also commercial moisture sensor available by Xiaomi, but it cost’s more than DIY-version (Do It Yourself by connecting moisture sensor and BLE module): https://www.ebay.com/itm/Xiaomi-Plant-Tester-Light-Temperature-Soil-Moisture-Meter-Nutrition-Detector-/283447735022

That’s all about the technology for this time. Tomorrow I’ll buy chili seeds and start first plantings for this year!

Automaattinen kastelukokeilu käynnistetty!

Tein Pythonilla ohjeman, joka kastelee kasvit ajastetusti tiettyinä viikonpäivänä tiettyyn aikaan, mikäli mullan kosteus on tarpeeksi alhainen. Kastelusykli on ma- ja to-iltaisin klo 21.00. Aluksi meinasi olla vaikeuksia Raspberryn stabiilisuuden kanssa, mutta nyt järjestelmä on pysynyt pystyssä muutaman päivän. Vaikka Raspberry on pieni, se on silti täydellinen tietokone kaikkine aateekoo-ongelmineen ja saattaa näköjään kaatuilla omia aikojaan silloin tällöin. Syynä saattaa olla epästabiili Linux-jakelu puutteelisine USB, WLAN yms. ajureineen, jotka sitten heittää juntturaan koko systeemin kun joku bitti menee poikittain. Silloin saattaa VNC-yhteys kaatua ja siinäpä kaatuu sitten minun kasteluohjelmakin. Mutta nyt toistaiseksi tuntuu toimivan ja seuranta jatkuu…

Alhaalla on käppyrää kuivumisesta. Viimekertaisen ylikastelun jäljiltä kasvit olivat siis läpimärkiä ja Nukkumatti on vieläkin tosi kostea. Kodinonni sentään alkoi kuivumaan ja se sai lisää vettä ajastetusti perjantai-iltana. Nukkumatti saattaa saada maanantaina myös vettä, mikäli on tarpeeksi kuiva.

Nukkumatti has been drying quite linearly after the last over-irrigation. The system gave more water on Fri evening at 22.00
Nukkumatti has been very wet after the last over-irrigation. As seen, it’s drying out very slowly.

Thursday update

Today I share some photos from the past. Below is a shot from the last years chili’s and a night shot from the Christmas time. Narrow chili’s are called as ”Barak” and the more round ones are Jamaica Bell’s. Barak’s are quite hot! I can barely taste a little slice of it without crying like a baby! Jamaica bell’s are quite mild. They are more like normal sweet peppers (paprika in finnish). By the way, check this blog if you’re interested in chili’s: https://chiliblogi.blogspot.com/