Showing posts with label IOT. Show all posts
Showing posts with label IOT. Show all posts

Thursday, December 15, 2016

IOT106 - Programming Internet of Things (IoT) using Android Things

For those of you who live life on the edge, I just wanted to tell you that I have planned a new course on the latest Android Things. This is a 2-day course similar in structure to the IOT101 (Raspberry Pi) and IOT104 (Arduino).


Android Things is the latest offering from Google that attempts to draw Android developers to the burgeoning IoT market. Instead of using Raspbian or Windows IoT Core to power your Raspberry Pi, you now use Android. The key benefits of using Android Things is that it uses the Android programming framework, and thus it should be easy for Android developers to migrate to this platform.

As usual, you can expect a boat load of sensors to come with the course. For this course, we are using the Raspberry Pi.

We are currently outlining the course structure, so be sure to check this page often. In the meantime, here is the upcoming schedule:
IOT106 - Programming Internet of Things (IoT) using Android Things
Course Fee
S$1897 (nett; no GST)
If your company is sponsoring you for the training, your company can enjoy 400% tax deductions/ allowances and/or 40% cash payout for investment in innovation and productivity improvements under the Productivity and Innovation Credit (PIC) scheme. For more details, check out the Productivity and Innovation Credit page. 
Schedules
Start DateEnd DateCourse Outline and Application FormCategory
Mon Apr 03 2017Tue Apr 04 2017
Venue
Hotel Grand Pacific Singapore
101 Victoria Street
Singapore 188018

If your company requires in-house training, you can contact us to customize the topics to meet your training requirements. We train worldwide! We have conducted customized classes in the United States, Canada, Norway, Denmark, Japan, China, Hong Kong, Taiwan, and Thailand. 

Sunday, November 27, 2016

IOT104 - Programming IoT using Arduino course

Build a currency rates application using the ESP8266 and I2C LCD Display in the upcoming IOT104 - Programming IoT using Arduino course. 


Internet of Things (IoT) Course Roadmap

Here is the series of courses that participants may find useful if they want to embark on the journey of Internet of Things (IoT) development.



Monday, November 21, 2016

Course Updates

Courses Confirmed for December 2016

Here is the list of courses that are confirmed for December 2016:


  • IOT202 - Introduction to Data Science using Python

  • AND101 - Fundamentals of Android Programming using Android Studio

  • IOS101 - Fundamentals of iPhone Programming using Swift



  • IOT101 - Programming Internet of Things (IoT) using Raspberry Pi


  • IOT104 - Programming Internet of Things (IoT) using Arduino

  • WEB202 - Implementing iOS and Android Push Notifications


Changes to Course Duration and Content

MOB104 - Writing Cross Platform iOS and Android Apps using Xamarin.Forms and C#


MOB104 is now a 2-day course. Due to the focus of Microsoft on the cross-platform developers' tools, Xamarin.Forms is now more important than ever. In this course, you will learn how to develop cross-platform mobile apps for Android and iOS, as well as learn some advanced techniques like:

  • Cross-platform User Interface
  • Dependency Injection
  • MVVM Architecture

IOS302 - Advanced iOS - Apple Watch Programming


With the latest watchOS from Apple, the Apple Watch is now a much more compelling wearable device. Apps now launch quicker, and battery life is much improved on the new Apple Watch series 2. We have since revised this course to 2 days, so that we have time to cover all the cool new features in watchOS 3. (Course comes with an Apple Watch Series 2 watch)

IOT201 - Python Programming


IOT201 is now titled "Python Programming". Instead of focusing just on the syntax of Python, we now cover doing interesting things with Python, such as:

  • Developing RESTful service using Flask
  • Securing your RESTful service using a SSL and Basic Authentication
  • Sockets programming using Python
  • Push notifications using Python
  • Writing your own modules

As such, the IOT201 is now a 2-day course.

Thursday, November 17, 2016

IOT101 - Integrating Alexa Voice Service with Raspberry Pi


Create your own Amazon Echo by integrating the Alexa Voice Service with your Raspberry Pi. Join us in the upcoming IOT101 to learn how to do that.
IOT101 - Programming Internet of Things (IoT) using Raspberry Pi
Course Fee
S$1897 (nett; no GST)
If your company is sponsoring you for the training, your company can enjoy 400% tax deductions/ allowances and/or 40% cash payout for investment in innovation and productivity improvements under the Productivity and Innovation Credit (PIC) scheme. For more details, check out the Productivity and Innovation Credit page. 
Schedules
Start DateEnd DateCourse Outline and Application FormCategory
Tue Dec 13 2016 CONFIRMEDWed Dec 14 2016
Tue Mar 14 2017Wed Mar 15 2017
Venue
IBIS HOTEL
170 Bencoolen Street
Singapore 189657

If your company requires in-house training, you can contact us to customize the topics to meet your training requirements. We train worldwide! We have conducted customized classes in the United States, Canada, Norway, Denmark, Japan, China, Hong Kong, Taiwan, and Thailand.

Wednesday, November 09, 2016

Integrating the Alexa Voice Service into your Raspberry Pi

In the upcoming IOT101 - Programming Internet of Things (IoT) using Raspberry Pi course, we will cover how to incorporate the Alexa Voice Service into your Raspberry Pi. Instead of buying a US$179 Amazon Echo, you can build your own using a speaker and a USB mic. What's more, you will learn how to activate the Alexa Voice Service using the "Alexa" wake word. How cool is that!



IOT101 - Programming Internet of Things (IoT) using Raspberry Pi
Course Fee
S$1897 (nett; no GST)
If your company is sponsoring you for the training, your company can enjoy 400% tax deductions/ allowances and/or 40% cash payout for investment in innovation and productivity improvements under the Productivity and Innovation Credit (PIC) scheme. For more details, check out the Productivity and Innovation Credit page. 
Schedules
Start DateEnd DateCourse Outline and Application FormCategory
Tue Dec 13 2016 CONFIRMEDWed Dec 14 2016
Tue Mar 14 2017Wed Mar 15 2017
Venue
IBIS HOTEL
170 Bencoolen Street
Singapore 189657

If your company requires in-house training, you can contact us to customize the topics to meet your training requirements. We train worldwide! We have conducted customized classes in the United States, Canada, Norway, Denmark, Japan, China, Hong Kong, Taiwan, and Thailand. 

Tuesday, November 08, 2016

Instructor-led training for your company and partners

Are you looking for instructor-led developer training for your company? If you are, then you are at the right place. I have travelled around the world, conducting trainings for companies in areas such as :

  • iOS (Objective-C and Swift)
  • Android
  • Bluetooth Low Energy
  • Xamarin 
  • IoT (Raspberry Pi and Arduino)
  • Node.js
  • Amazon Web Services
  • Python and Data Science

In-house training is most cost-effective for companies with a class size as small as 5. My hands-on training focuses on learning-by-doing and is code-intensive. Participants are expected to code and get their hands dirty. This is the most effective way to learn a new technology.

If you are a training provider and would like to bring my trainings to your partners, contact me at weimenglee@learn2develop.net to start the conversation now.

Photo by Scott Kvitberg Photography

Thursday, October 20, 2016

IoT Development using Raspberry Pi

In the upcoming IOT101 - Programming Internet of Things using Raspberry Pi course,  we will be covering the latest Raspbian OS - PIXEL. This is the latest version of the Raspbian OS and it is updated with a very modern look-and-feel.


Besides using the latest OS, we have also taken this opportunity to update the course content. In this upcoming course, we will cover:

  • how to send data to the cloud
  • how to implement your own Amazon Echo using Amazon's Alexa service

Of course, we will also cover the popular topics that our participants have always enjoyed:
  • How to send push notifications to your Android devices
  • How to implement and scan iBeacons using the Raspberry Pi
  • How to interface with NFC readers
  • How to connect the Raspberry Pi to sensors - smoke, ultrasonic, temperature, and motion sensors
And of course, participants will get to bring back the IOT Kit, which includes items like:

  • Raspberry Pi 3
  • Various sensors
  • LCD screens
  • Mic and Speaker
  • Pi Camera
  • NFC Reader

Monday, October 17, 2016

IoT development using Arduino

The upcoming IOT104 - Programming Internet of Things using Arduino course has been totally updated to include more exciting topics. Instead of one day, this course is now two days and include a comprehensive IOT Kit with all the various sensors and accessories that allows you to build interesting connected IoT apps.

Projects you will create:

  • How to connect the Arduino to the Internet using Ethernet and WiFi 
  • How to display information using LCD, LED Dot Matrix, and OLED displays 
  • How to measure temperature, pressure and humidity using Arduino 
  • How to control your Arduino using infrared remote control 
  • How to control your Arduino using Bluetooth Low Energy 
  • How to interface the Arduino with key pads 
  • How to send data to the cloud 
  • How to send push notifications to Android devices 
  • How program the NodeMCU development board (bonus topic)
  • How to communicate between Arduinos using ZigBee

This course comes with the IoT Kit containing more than 30 accessories and sensors, including the following: (this list is continually updated to include the latest devices; items subject to change subject to availability)

  • Arduino Board 
  • Arduino board with ESP8266 
  • Arduino Ethernet Shield 
  • LCD with Keypad Shield 
  • Dupoint Jumper Cables 
  • Breadboard 
  • PIR Motion Sensor 
  • Ultrasonic Sensor 
  • LEDs 
  • Colored Tactile Push Buttons 
  • Light Dependent Resistor 
  • 7 Segment LED Display 
  • Potentiometer 
  • Keypad Keyboard 
  • Dot Matrix Display Module 
  • OLED Display Module 
  • LCD Touch Module 
  • Key Display + Push buttons Module 
  • IR Remote Control Module 
  • Bluetooth Low Energy Module 
  • Xbee Shields 
  • Xbee Modules 
  • 4 7-Segment Display Module 
  • Stackable Header for Arduino 
  • Temperature/Barometric/Pressure Sensor Module 
  • Heart Rate Sensor 
  • Accelerometer and Gyroscope Module 
  • NodeMCU development board

Thursday, September 22, 2016

IOT104 - Programming Internet of Things using Arduino course is now 2 days!

We are excited to inform that the IOT104 Arduino course has now been extended to 2 days! In this newly revised course, we will cover more sensors and accessories, such as this featured LED Matrix display.

We will also cover server-side programming, such as how to send data to the cloud and how to push notifications to mobile apps.

We are continually adding new items to the IoT Kit, which you can bring back home after the course. Meantime, if you have any topics you wish that we could cover, please feel free to email me at weimenglee@learn2develop.net.

Hope to see you at the course!

Wednesday, July 27, 2016

Code Magazine - Introduction to IoT Using the Raspberry Pi

My latest article (co-authored with Clarence Chng) for Code Magazine is online now - http://www.codemag.com/Article/1607071.

This article introduces readers to what is Internet of Things (IoT), using the Raspberry Pi. Have fun and enjoy!

Monday, June 27, 2016

Introducing IOT200 – Python GUI Programming using Tkinter


Today, we have just launched a new course - IOT200 – Python GUI Programming using TKinter.

While most of the time your Python app interacts with the user through the command line, this is not always the case. Using Tkinter you can write GUI apps using Python.

What's more, for this course you will get the following:

  • Raspberry Pi 3
  • Raspberry Pi 7" Touch Screen Display 
IOT200 - Python GUI Programming using Tkinter
Course Fee
S$899 (nett; no GST)
If your company is sponsoring you for the training, your company can enjoy 400% tax deductions/ allowances and/or 60% cash payout for investment in innovation and productivity improvements under the Productivity and Innovation Credit (PIC) scheme. For more details, check out the Productivity and Innovation Credit page. 
Schedules
Start DateEnd DateDetailsCategory
Fri Aug 19 2016Fri Aug 19 2016PDFIOT
Wed Sep 28 2016Wed Sep 28 2016PDFIOT

Wednesday, May 18, 2016

Data Visualization Using Python, Pandas and Matplotlib

Internet of Things (IoT) has been the buzzwords of late. While most people associate IoT with the collection of data using sensors and transmitted to central servers, an integral part of IoT involves processing the data collected. The ability to visualize data and make intelligent decisions is the cornerstone of IoT systems.

Python is one of the preferred languages for data analytics, due to its ease of learning and its huge community support of modules and packages designed for number crunching. In this article, I am going to show you the power of Python and how you can use it to visualize data.

Collection of Blood Glucose Data

With the advancement in technologies, heathcare is one area that is receiving a lot of attention. One particular disease – diabetes, garners a lot of attention. According to the World Health Organization (WHO), the number of people with diabetes has risen from 108 million in 1980 to 422 million in 2014. The care and prevention of diabetes is hence of paramount importance. Diabetics need to regular prick their fingers to measure the amount of blood sugar in their body.

For this article, I am going to show you how to visualize the data collected by a diabetic so that he can see at a glance on how well he is keeping diabetes in control.

Storing the Data

For this article, I am assuming that you have a CSV file named readings.csv, which contains the following lines:

,DateTime,mmol/L
0,2016-06-01 08:00:00,6.1
1,2016-06-01 12:00:00,6.5
2,2016-06-01 18:00:00,6.7
3,2016-06-02 08:00:00,5.0
4,2016-06-02 12:00:00,4.9
5,2016-06-02 18:00:00,5.5
6,2016-06-03 08:00:00,5.6
7,2016-06-03 12:00:00,7.1
8,2016-06-03 18:00:00,5.9
9,2016-06-04 09:00:00,6.6
10,2016-06-04 11:00:00,4.1
11,2016-06-04 17:00:00,5.9
12,2016-06-05 08:00:00,7.6
13,2016-06-05 12:00:00,5.1
14,2016-06-05 18:00:00,6.9
15,2016-06-06 08:00:00,5.0
16,2016-06-06 12:00:00,6.1
17,2016-06-06 18:00:00,4.9
18,2016-06-07 08:00:00,6.6
19,2016-06-07 12:00:00,4.1
20,2016-06-07 18:00:00,6.9
21,2016-06-08 08:00:00,5.6
22,2016-06-08 12:00:00,8.1
23,2016-06-08 18:00:00,10.9
24,2016-06-09 08:00:00,5.2
25,2016-06-09 12:00:00,7.1
26,2016-06-09 18:00:00,4.9

The CSV file contains rows of data that are divided into three columns – index, date and time, and blood glucose readings in mmol/L.

Reading the Data in Python

While Python supports lists and dictionaries for manipulating structured data, it is not well suited for manipulating numerical tables, such as the one stored in the CSV file. As such, you should use pandas. Pandas is a software library written for Python for data manipulation and analysis.

Let’s see how pandas work. Note that for this article, I am using IPython Notebook for running my Python script. The best way to use IPython Notebook is to download Anaconda (https://www.continuum.io/downloads). Anaconda comes with the IPython Notebook, as well as pandas and matplotlib (more on this later).

Once Anaconda is installed, launch the IPython Notebook by typing the following command in Terminal:

$ ipython notebook

When IPython Notebook has started, click on New | Python 2:




Type the following statements into the cell:

import pandas as pd
data_frame = pd.read_csv('readings.csv', index_col=0, parse_dates=[1])
print data_frame

You first import the pandas module as pd, then you use the read_csv() function read the data from the CSV file to create a dataframe. A dataframe in pandas behaves like a two-dimensional array, with an index for each row. The index_col parameter specifies which column in the CSV file will be used as the index (column 0 in this case) and the parse_dates parameter specifies the column that should be parsed as a datetime object (column 1 in this case). To run the Python script in the cell, press Ctrl-Enter.

When you print out the dataframe, you should see the following:

              DateTime  mmol/L
0  2016-06-01 08:00:00     6.1
1  2016-06-01 12:00:00     6.5
2  2016-06-01 18:00:00     6.7
3  2016-06-02 08:00:00     5.0
4  2016-06-02 12:00:00     4.9
5  2016-06-02 18:00:00     5.5
6  2016-06-03 08:00:00     5.6
7  2016-06-03 12:00:00     7.1
8  2016-06-03 18:00:00     5.9
9  2016-06-04 09:00:00     6.6
10 2016-06-04 11:00:00     4.1
11 2016-06-04 17:00:00     5.9
12 2016-06-05 08:00:00     7.6
13 2016-06-05 12:00:00     5.1
14 2016-06-05 18:00:00     6.9
15 2016-06-06 08:00:00     5.0
16 2016-06-06 12:00:00     6.1
17 2016-06-06 18:00:00     4.9
18 2016-06-07 08:00:00     6.6
19 2016-06-07 12:00:00     4.1
20 2016-06-07 18:00:00     6.9
21 2016-06-08 08:00:00     5.6
22 2016-06-08 12:00:00     8.1
23 2016-06-08 18:00:00    10.9
24 2016-06-09 08:00:00     5.2
25 2016-06-09 12:00:00     7.1
26 2016-06-09 18:00:00     4.9

You can print out the index of the dataframe by using the index property:

print data_frame.index

You should see the index as follows:

Int64Index([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
            17, 18, 19, 20, 21, 22, 23, 24, 25, 26],
           dtype='int64')

You can also print out the individual columns of the dataframe:

print data_frame['DateTime']

This should print out the DateTime column of the dataframe:

0    2016-06-01 08:00:00
1    2016-06-01 12:00:00
2    2016-06-01 18:00:00
3    2016-06-02 08:00:00
4    2016-06-02 12:00:00
5    2016-06-02 18:00:00
6    2016-06-03 08:00:00
7    2016-06-03 12:00:00
8    2016-06-03 18:00:00
9    2016-06-04 09:00:00
10   2016-06-04 11:00:00
11   2016-06-04 17:00:00
12   2016-06-05 08:00:00
13   2016-06-05 12:00:00
14   2016-06-05 18:00:00
15   2016-06-06 08:00:00
16   2016-06-06 12:00:00
17   2016-06-06 18:00:00
18   2016-06-07 08:00:00
19   2016-06-07 12:00:00
20   2016-06-07 18:00:00
21   2016-06-08 08:00:00
22   2016-06-08 12:00:00
23   2016-06-08 18:00:00
24   2016-06-09 08:00:00
25   2016-06-09 12:00:00
26   2016-06-09 18:00:00
Name: DateTime, dtype: datetime64[ns]

Likewise, you can also print the mmol/L column:

print data_frame['mmol/L']

You should see the following:

0      6.1
1      6.5
2      6.7
3      5.0
4      4.9
5      5.5
6      5.6
7      7.1
8      5.9
9      6.6
10     4.1
11     5.9
12     7.6
13     5.1
14     6.9
15     5.0
16     6.1
17     4.9
18     6.6
19     4.1
20     6.9
21     5.6
22     8.1
23    10.9
24     5.2
25     7.1
26     4.9
Name: mmol/L, dtype: float64

Visualizing the Data

Let’s now try to visualize the data by displaying a chart. For this purpose, let’s use matplotlib. Matplotlib is a plotting library for the Python language and is integrated right into pandas.

Add the following statements in bold to the existing Python script:

%matplotlib inline

import pandas as pd
import numpy as np

data_frame = pd.read_csv('readings.csv', index_col=0, parse_dates=[1])
print data_frame
print data_frame.index
print data_frame['DateTime']
print data_frame['mmol/L']

data_frame.plot(x='DateTime', y='mmol/L')

The “%matplotlib inline” statement instructs IPython notebook to plot the matplotlib chart inline. You can directly plot a chart using the dataframe’s plot() function. The x parameter specifies the column to use for the x-axis and the y parameter specifies the column to use for the y-axis.

This will display the chart as follows:


  
You can add a title to the chart by importing the matplotlib module and using the title() function:

%matplotlib inline

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data_frame = pd.read_csv('readings.csv', index_col=0, parse_dates=[1])
print data_frame

print data_frame.index
print data_frame['DateTime']
print data_frame['mmol/L']

data_frame.plot(x='DateTime', y='mmol/L')
plt.title('Blood Glucose Readings for John', color='Red')

A title is now displayed for the chart:


By default, matplotlib will display a line chart. You can change the chart type by using the kind parameter:

%matplotlib inline

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data_frame = pd.read_csv('readings.csv', index_col=0, parse_dates=[1])
print data_frame

print data_frame.index
print data_frame['DateTime']
print data_frame['mmol/L']

data_frame.plot(kind='bar', x='DateTime', y='mmol/L')
plt.title('Blood Glucose Readings for John', color='Red')

The chart is now changed to a barchart:



Besides displaying as a barchart, you can also display an area chart:

data_frame.plot(kind='area', x='DateTime', y='mmol/L')

The chart is now displayed as an area chart:



You can also set the color for the area chart by using the color parameter:

data_frame.plot(kind='area', x='DateTime', y='mmol/L', color='r')

The area is now in red:


Learning More


This article is just touching on the surface of what Python can do in the world of data analytics. To learn more about using Python for data analysis, come join my workshop (Introduction to Data Science using Python) at NDC Sydney 2016 on the 1-2 August 2016. See you there!