Home automation with Jarvis Assistant project - [Part 1]

For making my apartment more comfortable, without a PhD in computer science linguistics, I used a library for speech recognition and synthesis. Fortunately, Python is the best choice for this purpose. This part is to install essential modules.

It is divided into 3 modules. There are Jarvis’s Ears (for recognizing the speech) and Jarvis’s Mouth (for speaking what she wants to say ^^!) and API or modules that support for home automation and IoT

Jarvis’s Ears: Speech Recognition

Speech Recognition is library for performing speech recognition, with support for several engines and APIs, online and offline (CMU Sphinx, Google Speech Recognition, Wit.ai, Microsoft Bing Voice Recognition, Houndify API, IBM Speech To Text).

pip install SpeechRecognition

It also needs PyAudio that is required if you want to use microphone input.

pip install pyaudio

In this project I used Google Speech Recognition (online)

PlatformIO is a solution

I have had to work on quite lots of embedded platforms like Arduino, mbed, PIC32, Raspberry Pi… and develop them on Window as well as Linux. It is really inconvenient to me because each platform has each IDE to develop, and for some platforms its IDE is quite poor comparing with Text Editor (Atom, Vim, Sublime, Emacs) and I have to change environments many times. Fortunately, I found this one as the best solution at this time, PlatformIO. It is an open source ecosystem for “IoT” development and cross platform code builder and library manager with a lot of development platforms and frameworks (check here):

  • Colourful command-line output
  • IDE Integration with Arduino, Atom, CLion, Eclipse, Emacs, Energia, Qt Creator, Sublime, Vim, even Visual Studio
  • Cloud compiling and Continous Integration with AppVeyor, Circle CI, Drone, Shipable
  • Build-in Serial Port Monitor and configurable build -flags/-options
  • Automatic firmware uploading
  • Pre-built toolchains, frameworks for the popular Hardware Platforms
  • Friendly Comaand-Line Interface
  • Modern Web 2.0 Library Search
  • Open Source Library Registry API
  • Library dependency management
  • Automatic library updating

How to build PlatformIO based project

Arduino Uno

1. Make a new project directory and initialize an empty project

mkdir platformio/test_uno
cd platformio/test_uno
platformio init

This will create:

  • /src
  • /lib
  • platformio.ini

2. Configure platformio.ini with boards

platformio init --board=uno

platformio.ini looks like this:

; Project Configuration File
; Docs: http://docs.platformio.org/en/latest/projectconf.html

[env:uno]
platform = atmelavr
framework = arduino
board = uno

[env:nodemcu]
platform = espressif
framework = arduino
board = nodemcu
build_flags = -D LED_BUILTIN=BUILTIN_LED

[env:teensy31]
platform = teensy
framework = arduino
board = teensy31

[env:lpmsp430g2553]
platform = timsp430
framework = energia
board = lpmsp430g2553
build_flags = -D LED_BUILTIN=RED_LED

3. Arduino code in src/main.cpp

#include "Arduino.h"

void setup()
{
// initialize LED digital pin as an output.
pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
// turn the LED on (HIGH is the voltage level)
digitalWrite(LED_BUILTIN, HIGH);
// wait for a second
delay(1000);
// turn the LED off by making the voltage LOW
digitalWrite(LED_BUILTIN, LOW);
// wait for a second
delay(1000);
}

4. Upload to arduino

platformio run --target upload

LPC1768 development board

Basically, It is similar with Arduino. There are different when you initialize platformio:

platformio init --board=lpc1768

Example code for LPC1768:

#include "mbed.h"

Serial pc(USBTX, USBRX); // tx, rx
Serial device(p9, p10); // tx, rx

int main() {
while(1) {
if(pc.readable()) {
device.putc(pc.getc());
}
if(device.readable()) {
pc.putc(device.getc());
}
}
}

Maybe you will get error at the first line because the library of mbed is not in library manager then you have to add it (guide here).

You can get mbed library here.

The little prince

When I knew this masterpiece story, I listened the audiobooks that were made by beautiful girl voice. Then I really love this magnificent story.

2015 - 11 - 21

사실 10월부터 계획했는데 친구씩 일이 있어서 11월 21일 출발했다. 출발하기 전에 이 여행을 취소한다고 생각했다. 왜냐하면 포항 도시가 바다이라서 겨울에 가면 추운 것 같기 때문이다. 우선, 상미가 나를 왜 이렇개 편견이 많다고 했다. 근데 상미가 단호하게 가고 싶다고 했으니까 우리 같이 동의헀다.

한국에서 부산과 대천 바다 도시만 갔다. 근데 포항에는 조금 다르다. 경지가 아니라 포항은 오래 도시이라서 길에 사람이 적다.

한 친구가 포항대학교에서 대학원을 다니고 있는데 시간이 없어서 우리는 못 갔다. 아깝다!!! 아마 내년에 갈게…

체윳 그럼 포항에 살고 상미가 대구에 있고 남경(베트남 사람) 서울에 있고 소정이 전주에 있고 난 대전부터 시작헀다. 대전부터 포항까지 2시10분 동안 걸다. 그래서 8시30분 복합터미널에서 출발하면 됀다. 근데 늦게 일어나고 미리 준비하지 않아서 버스를 놓치고 캠메라 바트리가 없었다. 그래서 난 택시를 타야 했는데 10천 원 냈다. 그래서 좋은 사진을 찍지 못해…ㅜㅜ 다시 생각하면 정말 아쉽네 ….

오후 1시에 다 도착하자마자 바로 식당에 갔다. 이거 결과이다:

낙시 =))

그리고 바다에 가고 사진을 찍었다. 겨울에 바다에 가는 것이 생각보다 더 재미있다.

KakaoTalk_20151123_142832883

KakaoTalk_20151123_142756163

KakaoTalk_20151123_142829277

또 먹어

KakaoTalk_20151123_142822146

우리는 노래방에 가고 상미와 소정 돌아가지만 열자를 놓쳐서 포향에 유했어.. 그리고 여기 저기 가고 저녁 먹으지만 너무 배고파서 사진이 없찮아 ㅋㅋㅋㅋ. 먹은 후에 볼링장에 찾아 갔어. 볼링을 처음 하지만 잘 하는 것 같네 ^^

20151121_212035

20151121_212002

KakaoTalk_20151123_142703633

마지막 찜질방에 쭉으로 가고 재미있는 이야기 했다. 그때 난 한국어를 잘 하기 바래…왜냐하면 이야기 많은 만큼만 하고 싶기 때문이다.

KakaoTalk_20151123_142702394

20151121_235319

시계를 정말 좋아해

20151122_000132

=)) 그 밤에 많은 일이 났다. 재일 재미있는 것이 아마 alarm 벨이다 … 우리 자고 있으면서 갑자기 alarm 벨이 나고 급한 위험이 나온다고 생각헀지만 사실 그 alarm 시스템은 고장이 났근등 ㅋㅋㅋ. 우리 밖에 나갈 뻔했어 …아직 끝나지 않고 가끔 폭게 자면서 종이 나서 조금 잤다. 일직 일어나고 우리 버스를 타고 돌아갔다.

친구들 때문에 이 포향 여행을 아주 좋아하네!!! ^^

친구들 사랑해 !!!!

정말 여행하고 십다…

Sample Post with Feature Image
Image source: dargadgetz

This post demonstrate how to use feature images on your posts.

Just add:

image:
feature: filename.png

where filename.png is an image inside

1
images
folder. This image will be displayed on the top of your post.

Warning! The image height is not limited. The image width will be adjusted to fit on the post container, make sure to not use images with a high height.

Continue Reading ...