Yesterday I had a new delivery at my doorstep. I have received NodeMCU with ESP8266 and two ESP8266 modules:
Unfortunately I haven’t received external power supply which I ordered. So I am still waiting with my tests Arduino + ESP8266 as we need external power supply for ESP8266 module if we want to connect it wwith Arduino nano.
So what are ESP8266 modules?
As there is many really a lot of description around internet I will quote sparkfun as they have one of best:
The ESP8266 WiFi Module is a self contained SOC with integrated TCP/IP protocol stack that can give any microcontroller access to your WiFi network. The ESP8266 is capable of either hosting an application or offloading all Wi-Fi networking functions from another application processor. Each ESP8266 module comes pre-programmed with an AT command set firmware, meaning, you can simply hook this up to your Arduino device and get about as much WiFi-ability as a WiFi Shield offers (and that’s just out of the box)! The ESP8266 module is an extremely cost effective board with a huge, and ever growing, community.
This module has a powerful enough on-board processing and storage capability that allows it to be integrated with the sensors and other application specific devices through its GPIOs with minimal development up-front and minimal loading during runtime. Its high degree of on-chip integration allows for minimal external circuitry, including the front-end module, is designed to occupy minimal PCB area. The ESP8266 supports APSD for VoIP applications and Bluetooth co-existance interfaces, it contains a self-calibrated RF allowing it to work under all operating conditions, and requires no external RF parts.
In next couple weeks I will share with you experience I will have with ESP8266 module and prototype board.
I have just received copy of Arduino nano.Why I said copy as I have received Arduino nano clone from china. And I need to say it works and pretty well. Genuine Arduino nano cost about 30-35$ where Chinese clone cost about 2-5$. There is no 100% guarantee as it will work but I have read that 99% of them are fine. So I am inviting you to order one or another clone instead of paying more them 30$ (within shipment).
Okay so what next. If nothing will change for Get To Know The Bob project I have decided to use Raspberry PI 2 (Raspbian) + Arduino clone (three). Also I have forgotten to tell you. Except Raspberry Pi and arduino nano I have three Raspberry Pi Zero boards so if I will have I will also try to use them as another three end-devices.
Now as I have all devices I needed. I can start testing ESP8266 modules which another three I have received on Thursday. I did some tests with it week ago but I had only one module so I wasn’t able to connect with it to anything.
I had some time during last weekend. I have cleaned up all small apps I have created to this day. Whole source code I am pushing to my git repo. If you are interested in it please check my repository. List of applications:
Coordinator application (Raspbian OS in C++)
Endevice application (Arduino)
Basic monitor of incoming data from serial port (Win + C#) // This console app I will use to test my Arduino as it doesn’t have HDMI or any other video output. I will try to debug it by sending back through USB cable information I will need.
Okay. So now I have my basic software and devices. I think this is best moment to start testing ESP8266 modules and to try connect them with each other.
So I have spend whole last weekend, the only two days I have to work on the project I spend by installing couple version of operating system and node.js. But I have end-up with many problems so let’s go through all of them one by one hopefully they will be also useful for you.
The first. I have installed raspbian version from early February. I don’t know why but it had some problems during node.js installation (unfortunately I don’t have logs to show as I have lost them) . Probably I was missing one or another library or simply I had stale libraries. So I have update whole apt tree apt-get update | apt-get upgrade but it didn’t help. I was unable to install any of node.js versions I’ve had. The hardest thing is the real problem could be somewhere else. The reason for that is not so mature node.js as a whole system (an idea). I have found X number of possible ‘best’ solution how to install node.js what version I should install also even on node.js website there are at list two or three ways to install node.js on linux. And which libraries we should have and how we should install it.
Solution: You can try use apt-get install node or apt-get install nodejs. I am not sure I have read it is exactly same things but apt-get install node didn’t work for me and apt-get install nodejs npm. Also as you can see I have added npm (node.js package manager) on the end of command line. Which I didn’t understand and I didn’t have time to try understand it but when I was install nodejs without npm it wasn’t working. Clear madness. Okay, so before install nodejs I have downloaded latest raspbian (which was released on the end of February). And it worked. Nodejs was installed.
Another problem was and will be with not again so mature libraries. E.g. I was trying to install ESP8266 library which need old serial port which of course I had latest one which didn’t worked. So I have old one but again now it was too old.
Later I have also tried ubuntu mate and Windows IoT. But raspbian seems to be the best choice.
This is my second day of coding but let’s talk about whole weekend and things I have done.
Yesterday I spend most of the time installation different operating *nix systems on my raspberry ii within trying to install node.js with all extensions. What I have found out it is not easy to get node.js working. There is lot of versions of node.js packages and extensions what worst on each website there is many working solution but only one helped me. I have downloaded lot of different node.js versions before I have found one which was working.
Another problem you could experience will be npm version or other extensions. Unfortunately npm compiler sometimes is too old and doesn’t recognize new types (e.g. uint8) used in source code of latest extensions. Also there are libraries which was developed basing on already stale extensions. So if you want to use them you need to find right version of extension and hopefully it will not crash another library.
But on the end I have done it and I have found working combo of each tool with February version of Raspbian. And I have created first working version of node.js application which simply sends hello command to ESP6288. Last thing which worried me. There is ESP6288 extension for node.js but I haven’t manage to run it. I have solve couple problems but still it doesn’t work.
So what are my first feelings. Preparing whole environment for node.js took me almost two days. Of course it was weekend and we had lot of other stuff to do during week we are just to busy to do all things but I think good 8 hours I have spend on everything including installation of couple different OS.
As for a conclusion about different OS I would say that raspbian is best one for me. Ubuntu mate takes too much processor power, lite versions doesn’t includes some of packages you will need. I have also tried windows 10 IoT. An as everyday C# developer I could say that I felt there like in home but it has it’s limitation. As for example it has problem with reading temperature signal from DS18B20 and you need converter for it (google).
Today I would like to show you my work plan and ideas I had for my project. Also I will try to show you how important is planning your job even a little bit before you will start implementation.
In last couple days and especially on Sunday I was thinking about possible problems and technical limitation I could meet in next couple weeks. As an example the one major problem I have is more ideas and more tasks on my task list today then I will be able to do in next 10 weeks of #DajSiePoznac contest. My project plan and number of tasks in two days grown from couple small to the medium large system.
So what is the plan?
I am planning to create network of one coordinator and couple end-devices. To do that I will need to create basic protocol (or find pattern) which will be used for communication between devices. What is important it need to be robust. So whatever will happen network must be self-sufficient.
I have read about ESP8266 couple weeks ago and I have decided I want to try it. ESP8266 is a low-cost Wi-Fi chip with full TCP/IP stack which should be easy to use and if needed to program. Also it cost nothing. Seems to be a perfect choice.
How I will do it.
I have just started but what progress I am on. I have order couple ESP8266 modules, some cables, resistors and breadboards. One module from local shop and rest from aliexpress. First module is already in my hands but rest probably will be delivered in next two weeks.
Today I have recovered my raspberry pi from deep sleep with new fresh installation of Raspbian OS. Tomorrow I am planning to work on first node.js application and try to connect with ESP8266 module.
Today I would like to tell you more about my project and why I called it ‘The Bob’.
Why Bob? I don’t know really. And as I asked my fiancee she doesn’t know too. But ‘bob’ is our favorite word which we are using for almost everything. And what is most hilarious we always know for which object we just used it. As and example my xbox pad is a bob. Our car Polo is a bob, pineapple which we love is always named as bob on our shopping list. So I think this a reason we are calling bob thing we like or love. And as I am really excited about #DajSiePoznac contest I named my project as The Bob.
Okay, so we know the name but what’s this all about then?
For some time I wanted to have smart home. Use one or another technology of one or another brand. But it just cost too much. Even I could safe some money for same time and buy a system. But I believe that it is just wrong to pay 75$ for simple relay. Wireless relay but still basic one. Which probably I would need to use plenty around my home.
So I decided to do it on my own. But as I am full-time employed I had a problem to start it. Problem solved. As I mention I have registered myself in #DajSiePoznac contest. So now I am obligated in 10 weeks (about 50 evenings) post two post a day on my new blog about Bob. And develop working version of application I decided to do.
So The Bob. What is it?
It will be simple wireless control system used for my home automation. Communication between devices will base on ESP8266 wifi modules. They are budget modules which should be easy to use. Also they are supporting mesh networks which will be great for this type of project. Each system will be build from one coordinator (Master device) and many end-devices. ED which will be talking to Master Device as it will be a core part of whole system. I am planning to create a few different end-devices which will have varied tasks to do. So it will need to be done in most effective and efficient manner as possible.
I know that this project wont be straightforward but I am sure it will give me a lot of fun. I can’t wait to start coding but before that there is something I should do. But I will write about it in my next post.
“The Bob” is an idea to create alternative and free wireless control system. Project will be developed for my private needs as I always wanted to have budget control system and also as I registered myself for #DajSiePoznac contest I want to share it with interested developers and other interested parties.
Project location, where installation will be placed and tested is my lovely small apartment. (I have hope my fiancee will not throw me through the window until project completion 🙂
Something about me? I am C# WPF Software engineer/developer also working with WinForms and Android/Xamarin.