Build a cloud-ready temperature sensor with the Arduino Uno and the IBM Watson IoT Platform

Part 2: Write the sketch and connect to the IBM Watson IoT Platform

by Kyle Brown



Overview

In Part 1 of this four-part tutorial series, I discussed the design of a project for monitoring temperatures in my wiring closet, built by using the Arduino Uno and the Virtuabotix DHT11 temperature sensor. I showed the construction of the circuit for the project and walked you through the installation of the Arduino IDE and how to test out each of the individual components of the project with different Arduino sample sketches. You’re now ready to see the design of the sketch that ties the IoT project into the cloud and the steps to enable monitoring of realtime temperature and humidity data remotely. However, first I need to discuss the protocol that you’ll use to communicate with the IBM IoT Foundation: MQTT.

What is MQTT?

MQTT (formerly Message Queueing Telemetry Transport) is a lightweight, fast communications protocol designed for the Internet of Things. It has its origins at IBM (where it was originally developed by Andy Stanford-Clark), and it has since been submitted to Organization for the Advancement of Structured Information Standards (OASIS) for standardization, where the current version of the protocol standard is version 3.1. The MQTT V3.1 Protocol Specification specification states that its purpose is to be a “lightweight broker-based publish/subscribe messaging protocol designed to be open, simple, lightweight and easy to implement.” In the time since its introduction, the “easy to implement” part has certainly proven to be true, as several different libraries implementing MQTT clients have been developed. You can find links to nearly all of them at the Eclipse Paho project page.

MQTT is perfect for use in embedded devices because it:

  • Is asynchronous, with multiple different levels of quality of service, which is important in cases where Internet connections are unreliable.
  • Sends short, tight messages that make it handy for low-bandwidth situations.
  • Doesn’t require much software to implement a client, which makes it great for devices like the Arduino with limited memory.

MQTT is the protocol that the IBM IoT Foundation QuickStart is designed to take input on.

Resources

Learn
MQTT V3.1 Protocol Specification: Read the latest version of the MQTT specification.
IBM Internet of Things Foundation: Try out the IBM IoT Foundation and sign up for the beta program.
Arduino: Visit the Arduino website.
“Bluemix and the Internet of Things” (Ryan Baxter, developerWorks, July 2014): Find out how IBM Bluemix and the IBM IoT Foundation can work together.

Get products and technologies
MQTT client for Arduino: Click the GutHub link to download the client.
Mosquitto: Download the Mosquitto broker.
Eclipse Paho Project: Download MQTT clients.

Learn more

Goto Original
Goto Part1

저작자 표시 동일 조건 변경 허락
신고
Creative Commons License
블로그 이미지

밤소 MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

Arduino Garage Controller

by aramperez



Overview

Although there are many garage door projects on Instructables using Arduinos, He needed/wanted something different. So He thought, he could use an Arduino with a real-time clock (RTC) to automatically close the garage door at 9 pm. So he built the first version of a garage controller. I used two sensors, one for “door is closed” and the other for “door is fully open” and a relay. The controller worked quite well.

He also made it to connect ethernet shield with Vera 2 - Smart home controller - for smart phone’s app, instead of WiFi shield. Vera 2 can supports uPnP, Vera 2 can control the garage controller with smart phone anywhere, anytime.

How to make

He exlains this instructable as followng steps

  • Step 1: Parts & Tools
  • Step 2: Schematic/Block Diagram
  • Step 3: Arduino Uno, Ethernet Shield & 4 Channel Relay Module
  • Step 4: Breadboard
  • Step 5: Door Sensors and Pushbutton
  • Step 6: The Arduino Code
  • Step 7: The Vera Code
  • Step 8: Future Enhancements and Conclusion

Schematic

Learn More

Goto original : http://www.instructables.com/id/Arduino-Garage-Controller/


저작자 표시 동일 조건 변경 허락
신고
Creative Commons License
블로그 이미지

밤소 MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

Twitter Connector

by Nearbus


Overview

This project consists of an Internet configurable clock that sends ON / OFF messages through Twitter to the NearBus connector. The NearBus connector forwards these messages to the Arduino Ethernet board (through Internet) who Turns On and Turns Off a power switch allowing in this way to control the light sequence form any place with a simple browser.

Note: It is important to remark that Twitter in contrast to its traditional use (as message platform) in this case is used as a "text transport channel" to carry the pseudo RESTful string (like to the http protocol). 

Component

To implement this project you will need:

  • 1 Arduino Ethernet Board
  • Power Relay (5Vdc coil - 110/220Vac 5Amp power side)
  • transistor BC548C (or equivalent)
  • 1 Diode 1N4148 (or equivalent)
  • Resistor ( 2 KOhm 1/4 W)
  • Ethernet Internet connection (with a RJ45 cable)
  • Difficulty Level: Low-Medium

Schematic


How to operate

  • STEP 1 - Setup a New NearBus Account
  • STEP 2 - Activate the Twitter Channel in NearBus
  • STEP 3 - Accept the NearBus Twitter Request
  • STEP 4 - Create a New IFTTT task
  • STEP 5 - Check the Twitter Messages
  • STEP 6 - Connect the Power Circuit

How to use Nearbus

Refer to http://nearbus.net/wiki/index.php?title=Help.


Learn More

Goto original source


저작자 표시 동일 조건 변경 허락
신고
Creative Commons License
블로그 이미지

밤소 MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

Power Meter

by Nearbus


Overview

This project show how to control Arduino Ethernet board with IoT cloud service - NearBus - and smart phone. You can turn on/off the heat and measure the current amount of the heat.


Component

To implement this App Note you will need:

  • 1 Arduino Ethernet Board
  • 1 Arduino Grove Shield
  • 1 Arduino Relay Shield
  • 1 Current Transformer
  • 1 Resistive Power Load - (aprox. 500W)

http://wiznetmuseum.com/wp/wp-content/uploads/2015/09/nearbus_power.png


Javasript & Smart phone & Xivley

You can show the logging data on smart phone by using javascript and Xively service.
For more detail, refer to http://nearbus.net/wiki/index.php?title=Power_Monitor


How to use Nearbus

Refer to http://nearbus.net/wiki/index.php?title=Help.


Goto original source


저작자 표시 동일 조건 변경 허락
신고
Creative Commons License
블로그 이미지

밤소 MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

Xively Temperature Controller

by Nearbus


Overview

This project is intended to show how to implement a simple Temperature Control System using the X-Controller NearBus feature.
The system works under the NearBus paradigm, this means that every sensed signal will be transmitted to the Cloud for its processing.
No processing is accomplished in the remote device that works in a transparent way, controlling the sensors and actuators through the NearBios functions.


Component

The system is composed by three main components:

  • The power switch: Arduino Ethernet/WiFi board + Relay driver
  • The temperature sensor: Arduino Ethernet/WiFi + temperature sensor ( LM35 lineal IC)
  • The NearBus X-Controller: An special NearBus feature that allows to interconnect remote devices using the Xively Cloud Infraestructure

How to operate

The temperature sensor is sampled each 2000 ms for example (a configurable value) and feed it to a proportional controller (with hysteresis to avoid a flapping output). The controller compare the sensed signal with its internal setting and decides to turn on or off the electrical heater in order to maintain the room’s temperature as near as possible to the configured value.


How to use Nearbus

Refer to http://nearbus.net/wiki/index.php?title=Help.


Goto original source


저작자 표시 동일 조건 변경 허락
신고
Creative Commons License
블로그 이미지

밤소 MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

HTTP SD Card File Server on WIZwiki-W7500 platform

WIZwiki-W7500 platform과 ARMembed Web-Compiler를 이용하여, Web-Browser 상에서 SD File 목록을 볼 수 있도록 하는 프로그램을 작성해 보자.

Import Program on ARMmbed developer site

mbed 사이트에는 다양한 Example이 존재한다. 직접 모든 code를 작성할 수 있지만, Open source를 활용하면 손쉽고 빠르게 원하는 프로그램을 구현할 수 있다.

Search a program

mbed 검색에서 우리가 원하는 응용프로그램을 Key Word는 HTTP와 SD로 검색해 보자.
다행히 원하는 프로그램을 다음과 같이 볼 수 있다. 자 Import 하자.

주의  : 프로그램 작성 시 검색이 되었지만, 현재 검색이 되지 않는 관계로 아래 URL을 참조하자.
       https://developer.mbed.org/teams/FRDM-K64F-Code-Share/code/HTTP_SD_Server_K64F/

 

Import program

해당 Program을 성공적으로 Import 했을 경우 다음과 같이 Web-Compiler의 Program Workspace 창에 나타난다.

 

Select a platform

ARMmbed Web-Compiler의 우측 상단의 [mbed LPC1768] icon을 클릭하고, [Add Platform]을 눌러 Platfrom 목록에서 WIZwik-W7500 Platform를 찾아 선택하자.

WIZwiki-W7500 Platform을 선택할 경우 Web-Browser의 우측 창에 다음과 같이 나타난다.
[Add to your mbed Compiler] 버튼이 없을 경우 아래 Example programs 중 하나를 Import하면 WIZwiki-W7500 Platform을 당신의 mbed-Compiler에 추가할 수 있다.

 

How to port mbed-LPC1768 into WIZwiki-W7500

mbed-rtos 는 현재 사용하지 않는 라이브러리이므로 삭제(우 클릭 후 delect 선택)한다. 또한 lwip 기반의 EthernetInterface Library를 WIZnetInterface Library로 변경(삭제 후 추가)한다.

WIZnetInterface Library는 https://developer.mbed.org/teams/WIZnet/에서 Import 할 수 있다. (현재 검색이 잘 안되니, URL 참조).
WIZnetInterface Library를 Example HTTP_SD_Server_K64F 프로그램으로 import 한다.

 

Compile HTTP_SD_Server_K64F example for WIZwiki-W7500

지금까지 잘 따라 왔다면, 다음과 같이 Platform과 Library를 성공적으로 변경했을 것이다. 자 이제 과감하게 컴파일을 해보자.

[Compile] 버튼을 누르자. 다음과 같은 Error가 발생한다.

Can not open source input file "device.h" : No such file or directory "#include "device.h""

이 Error는 mbed Library가 Update 되지 않기 때문에 발생한다. 이를 해결하기 위해서는 [Program Workspace] 창의 “mbed” Library를 더블클릭하고, [Library Details] 창의 “Update” 버튼을 눌러 mbed Library를 Update한다.

다시 컴파일하자. 그럼 SDFileSystem 에서 4개, eth.init()에서 1개 총 5개의 Error가 발생한다.

4 Error : SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd");
1 Error : eth.init();

 

main.c

//SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // K64F
SDFileSystem sd(PB_3, PB_2, PB_1, PB_0, "sd"); // WIZwiki-W7500
  • Ethernet Initialization
    eth.init() 대신 DHCP를 사용할 경우 eth.init(MAC) 를 사용하고, Static IP를 사용할 경우 eth.init((uint8_t*)MAC,IP,MASK,GATEWAY)를 사용한다. 여기서는 static IP를 사용한다.
#define MAC     "\x--\x--\x--\x--\x--\x--"   // Should be Replaced -- with your MAC
#define IP      "192.168.77.100"             // Should belong with your lan.
#define MASK    "255.255.255.0"
#define GATEWAY "192.168.77.1"
//eth.init((uint8_t*)MAC);    // Use DHCP for WIZnetInterface
eth.init((uint8_t*)MAC,IP,MASK,GATEWAY);  //IP,mask,Gateway

 

Upload the binary image on WIZwiki-W7500

WIZwiki-W7500은 CMSIS-DAP를 지원하여, W7500의 Code flash가 USB storage로 인식된다. Web-compiler에서 compile을 성공적으로 마쳤을 경우, Binaray Image를 Download할 수 있게 된다. 이때, Local Directory로 저장한 후 해당 Binary image를 WIZwiki-W7500의 USB storage(MBED)로 copy 하거나, image를 바로 MBED로 저장하면 된다.

 

Demos

해당 Project는 아래 URL이나 WIZwiki-W7500 Example programs에서 Import할 수 있도록 만들어 두었다.
동작 상태를 확인하기 위해 Ticker를 활용하여 LED1 LED2를 On/oFF toggle하는 코드도 추가되었다.

 

Initialization

 

Connect to WIZwiki-W7500 through Web-Browser

  • Terminal

  • Web-Browser

 

Click [img] directory

 

Click [WIZnet_log_IoT.png] file

저작자 표시 동일 조건 변경 허락
신고
Creative Commons License
블로그 이미지

밤소 MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

WIZWiki-W7500 Platform on ARMmbed

mBed Platform WIZwiki_W7500에 대해 간략히 살펴보고, mbed web-compiler를 활용g하는 방법을 알아보자.

mbed Platform WIZwiki-W7500

WIZnet사에서 개발한 W7500 - Cortex M0 + TCP/IP Core + 128KB flash + 16KB Ram - mcu를 기반으로 하는 Open source hardware platform으로, ARMmbed enabled Platform 이다.
자세한 내용은 wizwiki를 참조하세요.

 

  • Block Diagram
    WIZWiki-W7500 보드는 크게 3개의 Main IC - W7500, Ethernet PHY, MCU for debugging - 로 구성된다.
    ARMmbed enabled 지원을 위한 CMSIS-DAP을 내장하고 있어, mbed Web-Compiler로 통해 만들어진 binary image를 USB storage로 인식된 W7500의 Code flash로 단순히 copy하는 것만으로 Firmware를 Upload할 수 있다.

 

  • Part Layout

  • Extension Pin - Arduino Compatible
    WIZwiki-W7500의 확장 핀들은 Aruduino Board와 호환가능하도록 설계되어 있으며, 각종 Arduino Shield 들과 Stacking 할 수 있어 다양한 응용을 개발 할 수 있다.

ARMmbed

ARMmbed는 CortexM 계열의 ARM 개발자들을 위한 Open Community 사이트다. Web 개발 환경을 무료로 제공할 뿐 아니라, 개발자끼리 서로 code를 공유할 수 있다. ARM은 Silicon Partner와 Platform Partner와 같은 Eco-system을 제공하고, 개발자들은 자유롭게 이를 활용하여 손쉽게 빠르고 원하는 제품을 개발할 수 있도록 도와 준다.
ARMmbed에 접속을 하고 Sign-up 후 Web-Compiler를 무료로 사용할 수 있다.
다음 그림 우측 상단 Red Box 참조.

Web-Compiler

다음은 mbed Web-Compiler를 실행한 화면이다. 자신이 원하는 Example이나 응용을 찾아서 import Program 혹은 Import Library를 하면 자신의 Web-Compiler에 import한 Program이나 Library가 로딩된다.

 

How to import a program or library to your web-compiler

mbed developer site에서 원하는 program이나 library의 Keyword로 검색을 하고, 해당 프로그램을 click하자.

 

  • import
    해당 프로그램을 클릭할 경우 우측 상단에 [Import this program] 이나 [Import this Library]를 클릭하여 자신의 Web Compiler로 Loading 한다.

저작자 표시 동일 조건 변경 허락
신고
Creative Commons License
블로그 이미지

밤소 MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

Internet of Things.

by James Moxham


James Moxham made this instructable was inspired by This project was inspired by http://www.instructables.com/id/ARDUINO-ENERGY-METER/

This intstructable guides our how to use xively IoT cloud server with WiFi, Arduino Shield and Serial port. In the serial port case, He shows that Xively cloud works with a Visual Basic program on your PC.

Alt Text

He explains his instructable with 6 steps.

  1. The internet of things - smaller, cheaper, less power
  2. A small hack - snap off a pin
  3. Wifi or Ethernet
  4. Talk to the Cloud
  5. Program the board
  6. VB net and xively

Learn More…
Blog : http://drvernacula.topcities.com/


저작자 표시 동일 조건 변경 허락
신고
Creative Commons License
블로그 이미지

밤소 MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

 

고양이가 드나드는 출입문에 센서를 장착하여

고양이기 들어오면 twit을 해주고

깜직한 토끼가 반겨주는 것이 재미 있네요.

 

http://hackaday.com/2012/03/09/pushingbox-alerts-you-of-your-cats-roaming-habits/

 

 

 

저작자 표시
신고
Creative Commons License
블로그 이미지

밤소 MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

Notifying Doorbell with PushingBox

 

 

Notifying Doorbell with PushingBox

 

요즘 IOT와 Cloud Service가 접목된 다양한 응용을 볼 수 있습니다.

여기서 소개하고자 하는 것 또한 IOT Cloud 제품입니다. 본 제품은 방문자가 도어벨을 눌렀을 경우 사진과 함께 이메일로 알려주는 편리한 기능을 제공합니다.

IOT는 도어벨, 아두이노, 이더넷실드로 구성되어 있으며, Cloud Sevice는 PushingBox라는 무료서비스를 이용합니다. IOT와 Cloud의 접목를 잘 보여주는 예입니다.

PushingBox는 IOT의 request를 Push, Tweet, e-mail 등 다양한 알림서비스를 제공한다.

http://www.pushingbox.com/ 에 들어가면 자세히 설명되어 있으니 참고하라.

 

 

Makezine에 11가지 단계의 설명, 데모영상 뿐만 아니라 소스코드까지 자세히 포스트되어져 있으니 관심있는 분들은 참고하세요.

 

 

Nowadays, We can see a variety of applications that combine IOT with Cloud service.

We also introduce one of IOT-Cloud sevices that the door-bell notifies to you by  e-mail when visitor press your door-bell. These service provides a convenient when you are not in you home.

 

IOT consists of 11-steps tutorial, demo-movie, and source codes.

A Cloud sevice is provided by the PushingBox.

PushingBox is free software  that can send notifications based on API calls.
From one request, you can send several notifications like a Push, a Tweet, an Email... All this in real time.

For more detail, refer to http://www.pushingbox.com/.

.

 

This posted on the Makezine with 11-step tutorial, Demo-movie and source codes. If you interest in these product, visit on makine website.

 

http://makezine.com/projects/notifying-doorbell-with-pushingbox/

 

 

 

저작자 표시
신고
Creative Commons License
블로그 이미지

밤소 MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

티스토리 툴바