SlideShare a Scribd company logo
1 of 38
Download to read offline
PHARO IOT
Using Pharo to playing with GPIOs and sensors on
IoT devices remotely
HELLO!
Marcus Denker
CR1 Inria (tenured researcher)
marcus.denker@inria.fr
Allex Oliveira
IoT Engineer
allex.oliveira@msn.com
SUMMARY
1 – OVERVIEW
2 – INSTALLATION
3 – PLAYING
4 – PERSONAL WEATHER STATION
5 – THE FUTURE
1 - OVERVIEW
• Created by Rmod Team, a research team
from INRIA (France)
• Written by Denis Kudriashov in 2016/17
dionisiydk@gmail.com
• In 2018, Allex Oliveira joined the Rmod Team
to continue the project 
1 - OVERVIEW
What is PharoThings?
• A Pharo image running on IoT device (ARM VM)
• A Pharo image controlling remote IoT device
• A Pharo library running on Raspberry Pi to control
GPIOs through an object board model (using Wiring Pi) 
• A Pharo library to control Arduino Devices (using
Firmata)
• An advanced board model inspector
• Remote IDE (TelePharo)
1 - OVERVIEW
1 - OVERVIEW
• GPIO pins (general-purpose input/output), I2C,
SPI
• Board modelling library which simplifies board
configuration
• Raspberry Pi only (for now) 
1 - OVERVIEW
PharoThings Library
1 - OVERVIEW
Board Inspector
• Provides a scheme of pins
similar to physical position
• A live tool which represents
the current pins state
• Digital pins are shown with
green/red icons which
represent high/low (1/0)
values
1 - OVERVIEW
With PharoThings you can to develop tools to
lively program, explore and debug remote boards.
• It is part of TelePharo project
• With remotePharo instance you can open:
remote playground 

remote system browser or
remote process browser
1 - OVERVIEW
Remote Playground
1 - OVERVIEW
Remote System Browser
1 - OVERVIEW
Remote Process Browser
2 - INSTALLATION
How to run Pharo on ARM architecture?
• Metacello new
       baseline: 'PharoThings';
       repository: 'github://pharo-iot/PharoThings/src';
       load: #(RemoteDevServer Raspberry).
• Metacello new
       baseline: 'PharoThings';
       repository: 'github://pharo-iot/PharoThings/src';
       load: 'RemoteDev'
2 - INSTALLATION
• ArmVM:  

     files.pharo.org/vm/pharo-spur32/linux/armv6/latest.zip
2 - INSTALLATION
• #chmod +x pharo
• #chmod +x lib/pharo/5.0-201804182009/pharo
• #./pharo Pharo.image
• #./pharo --headless Pharo.image remotePharo 
--startServerOnPort=40423
3 - PLAYING
Controlling LEDs, sensors and LCD display remotely
3 - PLAYING
Playing with LEDs and Button
• 1 Raspberry Pi (any model) connected to your
network (wired or wireless)
• 1 Breadboard
• 2 LEDs
• 2 Buttons
• 2 Resistors (330ohms)
• Jumper wires
3 - PLAYING
Playing with LEDs and Button
3 - PLAYING
Playing with LEDs and Button

ledRed := gpio22.
ledRed beDigitalOutput.
ledRed value: 1.
ledRed toggleDigitalValue.

buttonRed := gpio25.
buttonRed beDigitalInput.
buttonRed enablePullUpResister.
buttonProcess := [ [100 milliSeconds wait. 

ledRed value: (buttonRed value=0) asBit

] repeat 

] forkNamed: 'button process'.
buttonProcess terminate.
3 - PLAYING
Playing with Sensors (I2C)
1 Raspberry Pi (any model) connected to your netw
ork (wired or wireless)
• 1 Breadboard
• 1 BME280 sensor
(Temperature, pressure and humidity)
• 1 MCP9808 sensor (Temperature)
• 1 ADXL345 sensor (Acelerometer, axis X, Y and Z)
• Jumper wires
3 - PLAYING
Playing with Sensors (I2C)




3 - PLAYING
Playing with Sensors (I2C)
• Add the follow line in /boot/config.txt
dtparam=i2c1=on
• Add the ‘pi’ user to I2C group and restart the Raspberry
sudo adduser pi i2c
• Code:
a:= board installDevice: PotBME280Device new. 

a readParameters. 
b := board installDevice: PotMCP9808Device new. 

b readTemperature. 
c := board installDevice: PotADXL345Device new. 

c readCoordinates. 
3 - PLAYING
Playing with Sensors (I2C)
3 - PLAYING
Playing with LCD Display
1 Raspberry Pi (any model) connected to your netw
ork (wired or wireless)
• 1 Breadboard
• 1 LCD 1602
• Jumper wires 



3 - PLAYING
Playing with LCD Display




3 - PLAYING
Playing with LCD Display
lcd := board installDevice: PotLCD1602Device new.
lcd message: 'Hello everybody!Pharo is cool!'.
lcd clear.




4 - PERSONAL WEATHER STATION
Taking the sensor data with Pharo, showing in LCD
display and sending to a remote server
4 - PERSONAL WEATHER STATION
• We will run PharoThings in a Raspberry Pi 

• To collect the sensor data (BME280)
temperature, humidity and pressure 

• Show this data in a LCD 

• Send the data to a remote server
4 - PERSONAL WEATHER STATION
• Created class to instantiate the LCD and Sensor  

• Created subclass to create process: 

print information on LCD each 1 second
send data to a webserver in cloud each 1 minute 

4 - PERSONAL WEATHER STATION
• Started Pharo on Raspberry boot with arguments to
start the 2 process (DisplayLCD and PostData)
/etc/init.d/pharo.sh
/home/pi/pharo-iot/start.st
LCD Display
5 - THE FUTURE
Projects and news
• Beaglebone models 

• Zeroconf for armVM + PharoThings 

• Remote refactoring 

• Security 
5 - THE FUTURE
Automatic detection of running images in network 
(TeleRadar using SSDP protocol)
5 - THE FUTURE
Middleware to manage the devices
5 - THE FUTURE
Website official with many lessons and tutorials
Draft: http://pharothings.allexoliveira.com.br
WITH PHAROTHINGS YOU CAN
• Dynamically update your running board
• Interact remotely with pins  and boards
• Modify the system while it is running (create new
board, change code)
• Make your changes persistent
Easy, powerful.
THANKS!
Any questions?
marcus.denker@inria.fr
allex.oliveira@msn.com
PRESENTATION INFORMATION
This slides was presented at ESUG 2018, in Cagliari, ITALY
•Title: Pharo IoT
•Presenters:
Marcus Denker - marcusdenker.de / zweidenker.de
Allex Oliveira - www.linkedin.com/in/allex-oliveira
ESUG conferences
http://www.esug.org/wiki/pier/Conferences
INRIA
https://www.inria.fr/
RMOD TEAM
https://rmod.inria.fr/web
PHARO PROJECT
https://github.com/pharo-project/pharo
PHAROTHINGS PROJECT
https://github.com/pharo-iot/PharoThings

More Related Content

What's hot

Raspberry and Pharo
Raspberry and PharoRaspberry and Pharo
Raspberry and PharoPharo
 
Ops for NoOps - Operational Challenges for Serverless Apps
Ops for NoOps - Operational Challenges for Serverless AppsOps for NoOps - Operational Challenges for Serverless Apps
Ops for NoOps - Operational Challenges for Serverless AppsErica Windisch
 
Building Composable Serverless Apps with IOpipe
Building Composable Serverless Apps with IOpipe Building Composable Serverless Apps with IOpipe
Building Composable Serverless Apps with IOpipe Erica Windisch
 
Going Serverless: The Best Ops is NoOps.
Going Serverless: The Best Ops is NoOps.Going Serverless: The Best Ops is NoOps.
Going Serverless: The Best Ops is NoOps.PolarSeven Pty Ltd
 
SIPLABS - Hard Rocking Kazoo - KazooCon 2015
SIPLABS - Hard Rocking Kazoo - KazooCon 2015SIPLABS - Hard Rocking Kazoo - KazooCon 2015
SIPLABS - Hard Rocking Kazoo - KazooCon 20152600Hz
 
Terraform modules and (some of) best practices
Terraform modules and (some of) best practicesTerraform modules and (some of) best practices
Terraform modules and (some of) best practicesAnton Babenko
 
Gotchas using Terraform in a secure delivery pipeline
Gotchas using Terraform in a secure delivery pipelineGotchas using Terraform in a secure delivery pipeline
Gotchas using Terraform in a secure delivery pipelineAnton Babenko
 
Wso2 con raspberry-pi-cluster
Wso2 con raspberry-pi-clusterWso2 con raspberry-pi-cluster
Wso2 con raspberry-pi-clusterAfkham Azeez
 
Comment automatiser le déploiement de sa plateforme sur des infrastructures ...
Comment automatiser le déploiement de sa plateforme sur des infrastructures ...Comment automatiser le déploiement de sa plateforme sur des infrastructures ...
Comment automatiser le déploiement de sa plateforme sur des infrastructures ...Scaleway
 
Spinnaker - Bay Area AWS Meetup - 20160726
Spinnaker - Bay Area AWS Meetup - 20160726Spinnaker - Bay Area AWS Meetup - 20160726
Spinnaker - Bay Area AWS Meetup - 20160726Adam Jordens
 
Terraform AWS modules and some best practices - September 2019
Terraform AWS modules and some best practices - September 2019Terraform AWS modules and some best practices - September 2019
Terraform AWS modules and some best practices - September 2019Anton Babenko
 
20110421 02 15分でrails3サーバ作成
20110421 02 15分でrails3サーバ作成20110421 02 15分でrails3サーバ作成
20110421 02 15分でrails3サーバ作成雄哉 吉田
 
KazooCon 2014 - Kazoo Scalability
KazooCon 2014 - Kazoo ScalabilityKazooCon 2014 - Kazoo Scalability
KazooCon 2014 - Kazoo Scalability2600Hz
 
2600hz WebRTC Meetup at WeWork, San Francisco, CA
2600hz WebRTC Meetup at WeWork, San Francisco, CA2600hz WebRTC Meetup at WeWork, San Francisco, CA
2600hz WebRTC Meetup at WeWork, San Francisco, CA2600Hz
 
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013Puppet
 
OSDN: Serverless technologies with Kubernetes
OSDN: Serverless technologies with Kubernetes OSDN: Serverless technologies with Kubernetes
OSDN: Serverless technologies with Kubernetes Provectus
 
What is serveless?
What is serveless? What is serveless?
What is serveless? Provectus
 

What's hot (20)

Raspberry and Pharo
Raspberry and PharoRaspberry and Pharo
Raspberry and Pharo
 
DrupalGov2014 Heartbleed
DrupalGov2014 HeartbleedDrupalGov2014 Heartbleed
DrupalGov2014 Heartbleed
 
Ops for NoOps - Operational Challenges for Serverless Apps
Ops for NoOps - Operational Challenges for Serverless AppsOps for NoOps - Operational Challenges for Serverless Apps
Ops for NoOps - Operational Challenges for Serverless Apps
 
Building Composable Serverless Apps with IOpipe
Building Composable Serverless Apps with IOpipe Building Composable Serverless Apps with IOpipe
Building Composable Serverless Apps with IOpipe
 
Going Serverless: The Best Ops is NoOps.
Going Serverless: The Best Ops is NoOps.Going Serverless: The Best Ops is NoOps.
Going Serverless: The Best Ops is NoOps.
 
SIPLABS - Hard Rocking Kazoo - KazooCon 2015
SIPLABS - Hard Rocking Kazoo - KazooCon 2015SIPLABS - Hard Rocking Kazoo - KazooCon 2015
SIPLABS - Hard Rocking Kazoo - KazooCon 2015
 
Terraform modules and (some of) best practices
Terraform modules and (some of) best practicesTerraform modules and (some of) best practices
Terraform modules and (some of) best practices
 
Gotchas using Terraform in a secure delivery pipeline
Gotchas using Terraform in a secure delivery pipelineGotchas using Terraform in a secure delivery pipeline
Gotchas using Terraform in a secure delivery pipeline
 
Wso2 con raspberry-pi-cluster
Wso2 con raspberry-pi-clusterWso2 con raspberry-pi-cluster
Wso2 con raspberry-pi-cluster
 
Comment automatiser le déploiement de sa plateforme sur des infrastructures ...
Comment automatiser le déploiement de sa plateforme sur des infrastructures ...Comment automatiser le déploiement de sa plateforme sur des infrastructures ...
Comment automatiser le déploiement de sa plateforme sur des infrastructures ...
 
Spinnaker - Bay Area AWS Meetup - 20160726
Spinnaker - Bay Area AWS Meetup - 20160726Spinnaker - Bay Area AWS Meetup - 20160726
Spinnaker - Bay Area AWS Meetup - 20160726
 
Terraform AWS modules and some best practices - September 2019
Terraform AWS modules and some best practices - September 2019Terraform AWS modules and some best practices - September 2019
Terraform AWS modules and some best practices - September 2019
 
20110421 02 15分でrails3サーバ作成
20110421 02 15分でrails3サーバ作成20110421 02 15分でrails3サーバ作成
20110421 02 15分でrails3サーバ作成
 
Wake Up
Wake UpWake Up
Wake Up
 
KazooCon 2014 - Kazoo Scalability
KazooCon 2014 - Kazoo ScalabilityKazooCon 2014 - Kazoo Scalability
KazooCon 2014 - Kazoo Scalability
 
2600hz WebRTC Meetup at WeWork, San Francisco, CA
2600hz WebRTC Meetup at WeWork, San Francisco, CA2600hz WebRTC Meetup at WeWork, San Francisco, CA
2600hz WebRTC Meetup at WeWork, San Francisco, CA
 
Event machine
Event machineEvent machine
Event machine
 
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
 
OSDN: Serverless technologies with Kubernetes
OSDN: Serverless technologies with Kubernetes OSDN: Serverless technologies with Kubernetes
OSDN: Serverless technologies with Kubernetes
 
What is serveless?
What is serveless? What is serveless?
What is serveless?
 

Similar to PHARO IOT

Pharo IoT Installation Improvements and Continuous Integration
Pharo IoT Installation Improvements and Continuous IntegrationPharo IoT Installation Improvements and Continuous Integration
Pharo IoT Installation Improvements and Continuous IntegrationAllex Oliveira
 
PHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous IntegrationPHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous IntegrationPharo
 
PHARO IoT: Present and Future
PHARO IoT: Present and FuturePHARO IoT: Present and Future
PHARO IoT: Present and FutureESUG
 
Smart homes using android
Smart homes using androidSmart homes using android
Smart homes using androidDroidcon Berlin
 
Republic of IoT 2018 - ESPectro32 and NB-IoT Workshop
Republic of IoT 2018 - ESPectro32 and NB-IoT WorkshopRepublic of IoT 2018 - ESPectro32 and NB-IoT Workshop
Republic of IoT 2018 - ESPectro32 and NB-IoT WorkshopAlwin Arrasyid
 
From printed circuit boards to exploits
From printed circuit boards to exploitsFrom printed circuit boards to exploits
From printed circuit boards to exploitsvirtualabs
 
From the internet of things to the web of things course
From the internet of things to the web of things courseFrom the internet of things to the web of things course
From the internet of things to the web of things courseDominique Guinard
 
Securing IoT Applications
Securing IoT Applications Securing IoT Applications
Securing IoT Applications WSO2
 
Getting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer KitGetting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer KitSulamita Garcia
 
Mozilla chirimen firefox os dwika v5
Mozilla chirimen firefox os dwika v5Mozilla chirimen firefox os dwika v5
Mozilla chirimen firefox os dwika v5Dwika Sudrajat
 
Iot Bootcamp - abridged - part 1
Iot Bootcamp - abridged - part 1Iot Bootcamp - abridged - part 1
Iot Bootcamp - abridged - part 1Marcus Tarquinio
 
Enhancing drone application development using python and dronekit
Enhancing drone application development using python and dronekitEnhancing drone application development using python and dronekit
Enhancing drone application development using python and dronekitDony Riyanto
 
FIWARE Primer - Learn FIWARE in 60 Minutes
FIWARE Primer - Learn FIWARE in 60 MinutesFIWARE Primer - Learn FIWARE in 60 Minutes
FIWARE Primer - Learn FIWARE in 60 MinutesFederico Michele Facca
 
Federico Michele Facca - FIWARE Primer - Learn FIWARE in 60 Minutes
Federico Michele Facca - FIWARE Primer - Learn FIWARE in 60 MinutesFederico Michele Facca - FIWARE Primer - Learn FIWARE in 60 Minutes
Federico Michele Facca - FIWARE Primer - Learn FIWARE in 60 MinutesCodemotion
 
Workshop: Arduino for makers - Strumenti SW per la prototipazione elettronica...
Workshop: Arduino for makers - Strumenti SW per la prototipazione elettronica...Workshop: Arduino for makers - Strumenti SW per la prototipazione elettronica...
Workshop: Arduino for makers - Strumenti SW per la prototipazione elettronica...Luigi Francesco Cerfeda
 
Srikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latestSrikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latestSrikanth Pilli
 
Zephyr Introduction - Nordic Webinar - Sept. 24.pdf
Zephyr Introduction - Nordic Webinar - Sept. 24.pdfZephyr Introduction - Nordic Webinar - Sept. 24.pdf
Zephyr Introduction - Nordic Webinar - Sept. 24.pdfAswathRangaraj1
 

Similar to PHARO IOT (20)

Pharo IoT Installation Improvements and Continuous Integration
Pharo IoT Installation Improvements and Continuous IntegrationPharo IoT Installation Improvements and Continuous Integration
Pharo IoT Installation Improvements and Continuous Integration
 
PHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous IntegrationPHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous Integration
 
PHARO IoT: Present and Future
PHARO IoT: Present and FuturePHARO IoT: Present and Future
PHARO IoT: Present and Future
 
Smart homes using android
Smart homes using androidSmart homes using android
Smart homes using android
 
Republic of IoT 2018 - ESPectro32 and NB-IoT Workshop
Republic of IoT 2018 - ESPectro32 and NB-IoT WorkshopRepublic of IoT 2018 - ESPectro32 and NB-IoT Workshop
Republic of IoT 2018 - ESPectro32 and NB-IoT Workshop
 
From printed circuit boards to exploits
From printed circuit boards to exploitsFrom printed circuit boards to exploits
From printed circuit boards to exploits
 
From the internet of things to the web of things course
From the internet of things to the web of things courseFrom the internet of things to the web of things course
From the internet of things to the web of things course
 
IoT Session Thomas More
IoT Session Thomas MoreIoT Session Thomas More
IoT Session Thomas More
 
Cc internet of things @ Thomas More
Cc internet of things @ Thomas MoreCc internet of things @ Thomas More
Cc internet of things @ Thomas More
 
Securing IoT Applications
Securing IoT Applications Securing IoT Applications
Securing IoT Applications
 
Getting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer KitGetting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer Kit
 
The FatRat
The FatRatThe FatRat
The FatRat
 
Mozilla chirimen firefox os dwika v5
Mozilla chirimen firefox os dwika v5Mozilla chirimen firefox os dwika v5
Mozilla chirimen firefox os dwika v5
 
Iot Bootcamp - abridged - part 1
Iot Bootcamp - abridged - part 1Iot Bootcamp - abridged - part 1
Iot Bootcamp - abridged - part 1
 
Enhancing drone application development using python and dronekit
Enhancing drone application development using python and dronekitEnhancing drone application development using python and dronekit
Enhancing drone application development using python and dronekit
 
FIWARE Primer - Learn FIWARE in 60 Minutes
FIWARE Primer - Learn FIWARE in 60 MinutesFIWARE Primer - Learn FIWARE in 60 Minutes
FIWARE Primer - Learn FIWARE in 60 Minutes
 
Federico Michele Facca - FIWARE Primer - Learn FIWARE in 60 Minutes
Federico Michele Facca - FIWARE Primer - Learn FIWARE in 60 MinutesFederico Michele Facca - FIWARE Primer - Learn FIWARE in 60 Minutes
Federico Michele Facca - FIWARE Primer - Learn FIWARE in 60 Minutes
 
Workshop: Arduino for makers - Strumenti SW per la prototipazione elettronica...
Workshop: Arduino for makers - Strumenti SW per la prototipazione elettronica...Workshop: Arduino for makers - Strumenti SW per la prototipazione elettronica...
Workshop: Arduino for makers - Strumenti SW per la prototipazione elettronica...
 
Srikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latestSrikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latest
 
Zephyr Introduction - Nordic Webinar - Sept. 24.pdf
Zephyr Introduction - Nordic Webinar - Sept. 24.pdfZephyr Introduction - Nordic Webinar - Sept. 24.pdf
Zephyr Introduction - Nordic Webinar - Sept. 24.pdf
 

More from Marcus Denker

ConstantBlocks in Pharo11
ConstantBlocks in Pharo11ConstantBlocks in Pharo11
ConstantBlocks in Pharo11Marcus Denker
 
First Class Variables as AST Annotations
First Class Variables as AST AnnotationsFirst Class Variables as AST Annotations
First Class Variables as AST AnnotationsMarcus Denker
 
Supporting Pharo / Getting Pharo Support
Supporting Pharo / Getting Pharo SupportSupporting Pharo / Getting Pharo Support
Supporting Pharo / Getting Pharo SupportMarcus Denker
 
Lecture: "Advanced Reflection: MetaLinks"
Lecture: "Advanced Reflection: MetaLinks"Lecture: "Advanced Reflection: MetaLinks"
Lecture: "Advanced Reflection: MetaLinks"Marcus Denker
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerMarcus Denker
 
Lecture. Advanced Reflection: MetaLinks
Lecture. Advanced Reflection: MetaLinksLecture. Advanced Reflection: MetaLinks
Lecture. Advanced Reflection: MetaLinksMarcus Denker
 
Improving code completion for Pharo
Improving code completion for PharoImproving code completion for Pharo
Improving code completion for PharoMarcus Denker
 
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinksVUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinksMarcus Denker
 
Lecture: Advanced Reflection. MetaLinks
Lecture: Advanced Reflection. MetaLinksLecture: Advanced Reflection. MetaLinks
Lecture: Advanced Reflection. MetaLinksMarcus Denker
 
Open-Source: An Infinite Game
Open-Source: An Infinite GameOpen-Source: An Infinite Game
Open-Source: An Infinite GameMarcus Denker
 
PharoTechTalk: Contributing to Pharo
PharoTechTalk: Contributing to PharoPharoTechTalk: Contributing to Pharo
PharoTechTalk: Contributing to PharoMarcus Denker
 
Feedback Loops in Practice
Feedback Loops in PracticeFeedback Loops in Practice
Feedback Loops in PracticeMarcus Denker
 
Reflection in Pharo: Beyond Smalltak
Reflection in Pharo: Beyond SmalltakReflection in Pharo: Beyond Smalltak
Reflection in Pharo: Beyond SmalltakMarcus Denker
 

More from Marcus Denker (20)

Soil And Pharo
Soil And PharoSoil And Pharo
Soil And Pharo
 
ConstantBlocks in Pharo11
ConstantBlocks in Pharo11ConstantBlocks in Pharo11
ConstantBlocks in Pharo11
 
Demo: Improved DoIt
Demo: Improved DoItDemo: Improved DoIt
Demo: Improved DoIt
 
First Class Variables as AST Annotations
First Class Variables as AST AnnotationsFirst Class Variables as AST Annotations
First Class Variables as AST Annotations
 
Supporting Pharo / Getting Pharo Support
Supporting Pharo / Getting Pharo SupportSupporting Pharo / Getting Pharo Support
Supporting Pharo / Getting Pharo Support
 
Lecture: "Advanced Reflection: MetaLinks"
Lecture: "Advanced Reflection: MetaLinks"Lecture: "Advanced Reflection: MetaLinks"
Lecture: "Advanced Reflection: MetaLinks"
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Variables in Pharo
Variables in PharoVariables in Pharo
Variables in Pharo
 
Lecture. Advanced Reflection: MetaLinks
Lecture. Advanced Reflection: MetaLinksLecture. Advanced Reflection: MetaLinks
Lecture. Advanced Reflection: MetaLinks
 
Improving code completion for Pharo
Improving code completion for PharoImproving code completion for Pharo
Improving code completion for Pharo
 
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinksVUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
 
Slot Composition
Slot CompositionSlot Composition
Slot Composition
 
Lecture: Advanced Reflection. MetaLinks
Lecture: Advanced Reflection. MetaLinksLecture: Advanced Reflection. MetaLinks
Lecture: Advanced Reflection. MetaLinks
 
Open-Source: An Infinite Game
Open-Source: An Infinite GameOpen-Source: An Infinite Game
Open-Source: An Infinite Game
 
Lecture: MetaLinks
Lecture: MetaLinksLecture: MetaLinks
Lecture: MetaLinks
 
PharoTechTalk: Contributing to Pharo
PharoTechTalk: Contributing to PharoPharoTechTalk: Contributing to Pharo
PharoTechTalk: Contributing to Pharo
 
Feedback Loops in Practice
Feedback Loops in PracticeFeedback Loops in Practice
Feedback Loops in Practice
 
Pharo6 - ESUG17
Pharo6 - ESUG17Pharo6 - ESUG17
Pharo6 - ESUG17
 
Pharo6
Pharo6Pharo6
Pharo6
 
Reflection in Pharo: Beyond Smalltak
Reflection in Pharo: Beyond SmalltakReflection in Pharo: Beyond Smalltak
Reflection in Pharo: Beyond Smalltak
 

Recently uploaded

Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 

Recently uploaded (20)

Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 

PHARO IOT

  • 1. PHARO IOT Using Pharo to playing with GPIOs and sensors on IoT devices remotely
  • 2. HELLO! Marcus Denker CR1 Inria (tenured researcher) marcus.denker@inria.fr Allex Oliveira IoT Engineer allex.oliveira@msn.com
  • 3. SUMMARY 1 – OVERVIEW 2 – INSTALLATION 3 – PLAYING 4 – PERSONAL WEATHER STATION 5 – THE FUTURE
  • 4. 1 - OVERVIEW • Created by Rmod Team, a research team from INRIA (France) • Written by Denis Kudriashov in 2016/17 dionisiydk@gmail.com • In 2018, Allex Oliveira joined the Rmod Team to continue the project 
  • 5. 1 - OVERVIEW What is PharoThings? • A Pharo image running on IoT device (ARM VM) • A Pharo image controlling remote IoT device • A Pharo library running on Raspberry Pi to control GPIOs through an object board model (using Wiring Pi)  • A Pharo library to control Arduino Devices (using Firmata) • An advanced board model inspector • Remote IDE (TelePharo)
  • 7. 1 - OVERVIEW • GPIO pins (general-purpose input/output), I2C, SPI • Board modelling library which simplifies board configuration • Raspberry Pi only (for now) 
  • 9. 1 - OVERVIEW Board Inspector • Provides a scheme of pins similar to physical position • A live tool which represents the current pins state • Digital pins are shown with green/red icons which represent high/low (1/0) values
  • 10. 1 - OVERVIEW With PharoThings you can to develop tools to lively program, explore and debug remote boards. • It is part of TelePharo project • With remotePharo instance you can open: remote playground 
 remote system browser or remote process browser
  • 11. 1 - OVERVIEW Remote Playground
  • 12. 1 - OVERVIEW Remote System Browser
  • 13. 1 - OVERVIEW Remote Process Browser
  • 14. 2 - INSTALLATION How to run Pharo on ARM architecture? • Metacello new        baseline: 'PharoThings';        repository: 'github://pharo-iot/PharoThings/src';        load: #(RemoteDevServer Raspberry). • Metacello new        baseline: 'PharoThings';        repository: 'github://pharo-iot/PharoThings/src';        load: 'RemoteDev'
  • 15. 2 - INSTALLATION • ArmVM:  
      files.pharo.org/vm/pharo-spur32/linux/armv6/latest.zip
  • 16. 2 - INSTALLATION • #chmod +x pharo • #chmod +x lib/pharo/5.0-201804182009/pharo • #./pharo Pharo.image • #./pharo --headless Pharo.image remotePharo  --startServerOnPort=40423
  • 17. 3 - PLAYING Controlling LEDs, sensors and LCD display remotely
  • 18. 3 - PLAYING Playing with LEDs and Button • 1 Raspberry Pi (any model) connected to your network (wired or wireless) • 1 Breadboard • 2 LEDs • 2 Buttons • 2 Resistors (330ohms) • Jumper wires
  • 19. 3 - PLAYING Playing with LEDs and Button
  • 20. 3 - PLAYING Playing with LEDs and Button 
ledRed := gpio22. ledRed beDigitalOutput. ledRed value: 1. ledRed toggleDigitalValue.
 buttonRed := gpio25. buttonRed beDigitalInput. buttonRed enablePullUpResister. buttonProcess := [ [100 milliSeconds wait. 
 ledRed value: (buttonRed value=0) asBit
 ] repeat 
 ] forkNamed: 'button process'. buttonProcess terminate.
  • 21. 3 - PLAYING Playing with Sensors (I2C) 1 Raspberry Pi (any model) connected to your netw ork (wired or wireless) • 1 Breadboard • 1 BME280 sensor (Temperature, pressure and humidity) • 1 MCP9808 sensor (Temperature) • 1 ADXL345 sensor (Acelerometer, axis X, Y and Z) • Jumper wires
  • 22. 3 - PLAYING Playing with Sensors (I2C) 
 

  • 23. 3 - PLAYING Playing with Sensors (I2C) • Add the follow line in /boot/config.txt dtparam=i2c1=on • Add the ‘pi’ user to I2C group and restart the Raspberry sudo adduser pi i2c • Code: a:= board installDevice: PotBME280Device new. 
 a readParameters.  b := board installDevice: PotMCP9808Device new. 
 b readTemperature.  c := board installDevice: PotADXL345Device new. 
 c readCoordinates. 
  • 24. 3 - PLAYING Playing with Sensors (I2C)
  • 25. 3 - PLAYING Playing with LCD Display 1 Raspberry Pi (any model) connected to your netw ork (wired or wireless) • 1 Breadboard • 1 LCD 1602 • Jumper wires 
 

  • 26. 3 - PLAYING Playing with LCD Display 
 

  • 27. 3 - PLAYING Playing with LCD Display lcd := board installDevice: PotLCD1602Device new. lcd message: 'Hello everybody!Pharo is cool!'. lcd clear. 
 

  • 28. 4 - PERSONAL WEATHER STATION Taking the sensor data with Pharo, showing in LCD display and sending to a remote server
  • 29. 4 - PERSONAL WEATHER STATION • We will run PharoThings in a Raspberry Pi 
 • To collect the sensor data (BME280) temperature, humidity and pressure 
 • Show this data in a LCD 
 • Send the data to a remote server
  • 30. 4 - PERSONAL WEATHER STATION • Created class to instantiate the LCD and Sensor  
 • Created subclass to create process: 
 print information on LCD each 1 second send data to a webserver in cloud each 1 minute 

  • 31. 4 - PERSONAL WEATHER STATION • Started Pharo on Raspberry boot with arguments to start the 2 process (DisplayLCD and PostData) /etc/init.d/pharo.sh /home/pi/pharo-iot/start.st
  • 33. 5 - THE FUTURE Projects and news • Beaglebone models 
 • Zeroconf for armVM + PharoThings 
 • Remote refactoring 
 • Security 
  • 34. 5 - THE FUTURE Automatic detection of running images in network  (TeleRadar using SSDP protocol)
  • 35. 5 - THE FUTURE Middleware to manage the devices
  • 36. 5 - THE FUTURE Website official with many lessons and tutorials Draft: http://pharothings.allexoliveira.com.br
  • 37. WITH PHAROTHINGS YOU CAN • Dynamically update your running board • Interact remotely with pins  and boards • Modify the system while it is running (create new board, change code) • Make your changes persistent Easy, powerful. THANKS! Any questions? marcus.denker@inria.fr allex.oliveira@msn.com
  • 38. PRESENTATION INFORMATION This slides was presented at ESUG 2018, in Cagliari, ITALY •Title: Pharo IoT •Presenters: Marcus Denker - marcusdenker.de / zweidenker.de Allex Oliveira - www.linkedin.com/in/allex-oliveira ESUG conferences http://www.esug.org/wiki/pier/Conferences INRIA https://www.inria.fr/ RMOD TEAM https://rmod.inria.fr/web PHARO PROJECT https://github.com/pharo-project/pharo PHAROTHINGS PROJECT https://github.com/pharo-iot/PharoThings