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 Buttons
• 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 Buttons
3 - PLAYING
Playing with LEDs and Buttons

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
and more…
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 - 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

BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!
BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!
BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!
Linaro
 
Solnik secure enclaveprocessor-pacsec
Solnik secure enclaveprocessor-pacsecSolnik secure enclaveprocessor-pacsec
Solnik secure enclaveprocessor-pacsec
PacSecJP
 
Home automation-in-the-cloud-with-the-esp8266-and-adafruit-io
Home automation-in-the-cloud-with-the-esp8266-and-adafruit-ioHome automation-in-the-cloud-with-the-esp8266-and-adafruit-io
Home automation-in-the-cloud-with-the-esp8266-and-adafruit-io
Tran Minh Nhut
 
Mr201305 tizen security_eng
Mr201305 tizen security_engMr201305 tizen security_eng
Mr201305 tizen security_eng
FFRI, Inc.
 
Claudio Scordino - Handling mixed criticality on embedded multi-core systems
Claudio Scordino - Handling mixed criticality on embedded multi-core systemsClaudio Scordino - Handling mixed criticality on embedded multi-core systems
Claudio Scordino - Handling mixed criticality on embedded multi-core systems
linuxlab_conf
 
Emanuele Faranda - Creating network overlays with IoT devices using N2N
Emanuele Faranda - Creating network overlays with IoT devices using N2NEmanuele Faranda - Creating network overlays with IoT devices using N2N
Emanuele Faranda - Creating network overlays with IoT devices using N2N
linuxlab_conf
 

What's hot (20)

Sandbox detection: leak, abuse, test - Hacktivity 2015
Sandbox detection: leak, abuse, test - Hacktivity 2015Sandbox detection: leak, abuse, test - Hacktivity 2015
Sandbox detection: leak, abuse, test - Hacktivity 2015
 
BlackHat USA 2011 - Stefan Esser - iOS Kernel Exploitation
BlackHat USA 2011 - Stefan Esser - iOS Kernel ExploitationBlackHat USA 2011 - Stefan Esser - iOS Kernel Exploitation
BlackHat USA 2011 - Stefan Esser - iOS Kernel Exploitation
 
DrupalGov2014 Heartbleed
DrupalGov2014 HeartbleedDrupalGov2014 Heartbleed
DrupalGov2014 Heartbleed
 
Snap Your App
Snap Your AppSnap Your App
Snap Your App
 
SyScan360 - Stefan Esser - OS X El Capitan sinking the S\H/IP
SyScan360 - Stefan Esser - OS X El Capitan sinking the S\H/IPSyScan360 - Stefan Esser - OS X El Capitan sinking the S\H/IP
SyScan360 - Stefan Esser - OS X El Capitan sinking the S\H/IP
 
BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!
BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!
BKK16-406 Ubuntu Core - a snappy platform for Embedded, IoT and 96boards!
 
Solnik secure enclaveprocessor-pacsec
Solnik secure enclaveprocessor-pacsecSolnik secure enclaveprocessor-pacsec
Solnik secure enclaveprocessor-pacsec
 
Introduction to Ubuntu core, Ubuntu for IoT
Introduction to Ubuntu core, Ubuntu for IoTIntroduction to Ubuntu core, Ubuntu for IoT
Introduction to Ubuntu core, Ubuntu for IoT
 
Andrea De Gaetano - An Adventure with ESP8266 firmwares and IOT
Andrea De Gaetano - An Adventure with ESP8266 firmwares and IOTAndrea De Gaetano - An Adventure with ESP8266 firmwares and IOT
Andrea De Gaetano - An Adventure with ESP8266 firmwares and IOT
 
CODE BLUE 2014 : Drone attack by malware and network hacking by DONGCHEOL HONG
CODE BLUE 2014 : Drone attack by malware and network hacking by DONGCHEOL HONGCODE BLUE 2014 : Drone attack by malware and network hacking by DONGCHEOL HONG
CODE BLUE 2014 : Drone attack by malware and network hacking by DONGCHEOL HONG
 
Learn Evothings Studio along with ESP8266
Learn Evothings Studio along with ESP8266Learn Evothings Studio along with ESP8266
Learn Evothings Studio along with ESP8266
 
Home automation-in-the-cloud-with-the-esp8266-and-adafruit-io
Home automation-in-the-cloud-with-the-esp8266-and-adafruit-ioHome automation-in-the-cloud-with-the-esp8266-and-adafruit-io
Home automation-in-the-cloud-with-the-esp8266-and-adafruit-io
 
Android Security Development - Part 2: Malicious Android App Dynamic Analyzi...
Android Security Development - Part 2: Malicious Android App Dynamic Analyzi...Android Security Development - Part 2: Malicious Android App Dynamic Analyzi...
Android Security Development - Part 2: Malicious Android App Dynamic Analyzi...
 
Mr201305 tizen security_eng
Mr201305 tizen security_engMr201305 tizen security_eng
Mr201305 tizen security_eng
 
Programando o ESP8266 com Python
Programando o ESP8266 com PythonProgramando o ESP8266 com Python
Programando o ESP8266 com Python
 
Michele Dionisio & Pietro Lorefice - Developing and testing a device driver w...
Michele Dionisio & Pietro Lorefice - Developing and testing a device driver w...Michele Dionisio & Pietro Lorefice - Developing and testing a device driver w...
Michele Dionisio & Pietro Lorefice - Developing and testing a device driver w...
 
Claudio Scordino - Handling mixed criticality on embedded multi-core systems
Claudio Scordino - Handling mixed criticality on embedded multi-core systemsClaudio Scordino - Handling mixed criticality on embedded multi-core systems
Claudio Scordino - Handling mixed criticality on embedded multi-core systems
 
Build WiFi gadgets using esp8266
Build WiFi gadgets using esp8266Build WiFi gadgets using esp8266
Build WiFi gadgets using esp8266
 
Getting Started with Embedded Python: MicroPython and CircuitPython
Getting Started with Embedded Python: MicroPython and CircuitPythonGetting Started with Embedded Python: MicroPython and CircuitPython
Getting Started with Embedded Python: MicroPython and CircuitPython
 
Emanuele Faranda - Creating network overlays with IoT devices using N2N
Emanuele Faranda - Creating network overlays with IoT devices using N2NEmanuele Faranda - Creating network overlays with IoT devices using N2N
Emanuele Faranda - Creating network overlays with IoT devices using N2N
 

Similar to Pharo IoT: Using Pharo to playing with GPIOs and sensors on IoT devices remotely

Smart homes using android
Smart homes using androidSmart homes using android
Smart homes using android
Droidcon Berlin
 
Securing IoT Applications
Securing IoT Applications Securing IoT Applications
Securing IoT Applications
WSO2
 
Srikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latestSrikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latest
Srikanth Pilli
 

Similar to Pharo IoT: Using Pharo to playing with GPIOs and sensors on IoT devices remotely (20)

Raspberry and Pharo
Raspberry and PharoRaspberry and Pharo
Raspberry and Pharo
 
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
 
Securing IoT Applications
Securing IoT Applications Securing IoT Applications
Securing IoT Applications
 
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
 
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
 
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
 
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
 
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
 
Srikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latestSrikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latest
 
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...
 
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
 
Presentation 3 software developer in rfid
Presentation 3 software developer in rfidPresentation 3 software developer in rfid
Presentation 3 software developer in rfid
 

More from ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
ESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
ESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
ESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
ESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
ESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
ESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
ESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
ESUG
 

More from ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Recently uploaded

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Recently uploaded (20)

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 

Pharo IoT: Using Pharo to playing with GPIOs and sensors on IoT devices remotely

  • 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 Buttons • 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 Buttons
  • 20. 3 - PLAYING Playing with LEDs and Buttons 
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 and more…
  • 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 - 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