Wednesday, December 20, 2017

Locating a Point Using 3 Beacons

Beacons can be used to track the movement of object on a given space like in our example, is perhaps a Fashion Store with a regular  rectangular shape. Assuming the object is a smartphone with a beacon app installed and has stable internet connection to transmit data back to the shop owner's back end app. These data will be the rssi(received signal strength) of each beacons received every 1 second.

The back end app by default, knows exactly the position of the three beacons.

So with these sets of data available, the location of the smartphone can be traced every second using trilateration algorithm which is a process of finding the location of the point using the geometry of circles, spheres and triangle. More information about trilateration is in wikipedia.

Using the rssi transmitted by the smartphone, and since we know the distance of each beacon from each other(d and e), we have a lot of data to use in determining the exact location of the point. We will also assume that all points of interest in the scenario lie on the same plane. The formula for computing distance in meters from  rssi is as follows:

RSSI = -20 * log10(distance in meters) + RssiAtOneMeter
distance in meters = pow(10, (RssiAtOneMeter - ReceivedRSSI) / 20)

source: Evaluation of the Reliability of RSSI for Indoor Localization

In the above picture, we can easily determine the value of x and y by Trigonometry's Pythagorian Theorem:


Using the eaquation:

x2+y2=b2


Sunday, December 17, 2017

Google Nearby 101

It has been a huge challenge for business owners how to get people download their apps so that they can send notifications containing rich information about their products, services and promotions. One of the best idea how to get people's attention is to send them notifications even if they have not downloaded the app. This is a good idea aside from hiring somebody to be stationed in front of the store to convince people download the app and giving away flyers. The advantage of the electronic form is that it can be done 24/7 all year round.

Google introduced sometime in 2016 the Physical Web integrated with Chrome Internet Browser and using Eddystones. But the transmission and detection is intermitent and unreliable so it did not became very popular. About 7 months ago(not so sure) Google introduced the Nearby Messaging Service to replace the Physical Web and I only got to know about this 3 days ago and since then, I had been experimenting with it. Based on my tests, this is more stable and reliable even though the greatest setback is that the smartphone has to be connected to the internet to retrieve information about the beacon and in order to receive the notification, the screen must be opened and bluetooth and location services must also be turned on. But at least the service is consistent and stable. I also noticed that the notification had no sound at least on my cherry mobile flare xl 2 and the samsung s8 which I experimented with at the concept store and the notification disappears all by itself after 10 to 20 minutes. I wonder why google did not made the notification the same as receiving an sms message. The aliexpress app had the same notification characteristics as the sms messaging. Or at least google provided a way to let users configure it that way. And lastly, do take note that once the notification is deleted, it will not reappear too soon because of google's standard notification backoff policy. I figured a way to make the notification reappear quickly by disabling - enabling the bluetooth service.

All android smartphones with at least KitKat(4.43) version had this Google Nearby. And are ready to receive the Eddystone signal. The photo below is the screenshot of my SKK Android Kitkat showing the notification from google nearby and the physical web software. Both notifications came from the same eddystone beacon. In this device, both google nearby and physical web are not reliable. I just forced both software to detect the beacon signal.


Here is how I made the google nearby worked:

1. I created a Google Cloud Platform Project. This should be easy because if you are in the Beacon Dashboard which can be found here link, The first screen will abvice you to create a project.:
And here is the project I created:

2. After you created the project, it will take you back to the first screen and click your project to select it.

3. Download the Beacon Tools app in Play Store to register the beacon. Open the app and it will ask you to choose your project. Just select your project and the next screen will detect your beacon unregistered. The screen shot below shows the Eddystone URL frame. This frame cant be registered in Google Nearby. Only the UID or EID frames are allowed which I already did. Just make sure that the eddystone is in connectible mode.


And here is the registered UID Frame:
And here is the registration screen:

I only populated the Description field and saved the registration on this android app.

4. I went back to the Beacon Dashboard and clicked on the project and it has taken me to the screen that lists all active beacons on that project.


5. I clicked the active beacon I registered in the Beacon Tools app, and has taken me to a screen that allows me to further configure the beacon:

In this screen, I populated all the fields and added just one property and went to the second tab(create attachment).



 Even though I had no idea what it is for, I just created a dummy data:

And here is the attachment I created:


And lastly, I created the Nearby Notification:


I saved the data I entered. My main objective here is to just send a notification message which when clicked, will open my blog to an internet browser on the smartphone.

And here is the final result showing the Eddystone URL link:



I have not explained in detail what each fields are for because I am also a beginner trying to make the Google Nearby work and so that I can check if it is stable and yes it was! There are other message types that will allow the user to open the app of the eddystone owner if it was already installed or will open the google play store which displays the app and the user will have to click the download button and install the app.

To complete my experiment, I went to a nearest Samsung Concept store and brought along my Eddystone to check if other android smartphones can detect the signal without doing any configuration and it was a success, I did not took any picture because I did not bring along my phone so that I can fully test it. Bringing along my phone could influence the result.

Conclusion:
I still see a lot cons than pros but the best part of it is that the service is very stable and reliable and google has solved the huge problem how to get people' attention to get them download the business owner's app.

Saturday, December 16, 2017

Ways Eddystones can help boost sales of Businesses

With the Philippines' growing economy, big retailers keeps on investing in huge malls all over the country leaving small players struggling to boost sales. This holiday season, employees has received their 13th to 14th month pay plus Christmas bonuses and have a lot of money to spend.

With this huge potential customers, capturing a small portion can make retailers earn more profits. Beacon technologies is new and most likely very few developers and business owners are aware of its existence. And because of this, if early adapters use the technology to attract more customers is one great advantage because of the following reasons:

1 Beacon Technology can deliver relevant information to potential customers at the right place and the right time.
2. Traditional Marketing tool have smaller conversion rate than Beacon Marketing Technologies.
3. Beacon Marketing Technology enhance customers shopping experience by introducing new payment methods and helping them get the information they need with incredibly rich content and carefully designed website and video.
4. It can prevent customers frustrations when they cant find the products they need by sending them forms that will enable them to list those products and retailers can inform when the product is already in stock in invite them to come back.

I end this post with a sample news report featuring the beacon technology:


Digital Passes Issuance App with Eddystone

Digital Passes although not widely used in the Philippines can be a great tool to lure more customers or reach more customers that can not be reached by traditional forms of marketing tools. And with the help of eddystones, you can promote your products 24hrs a day or even when you go to a party. I have made a post explaining in detail what digital passes are(Pass2U Pass Issuance Service Integrated with Ibeacons).



As we all know, eddystone signals can be detected by any smartphone when the Physical Web is enabled in that smartphone. So in this case, we can develop a webpage that can generate a digital pass(like a discount coupon or an event) so that when the owner of that smartphone clicks on the link displayed on the physical web screen, it will automatically download the digital pass.

This marketing tool can be effective if the eddystone is placed along the highway or you may always carry it along with you so even if you are not saying anything about your business, people will still get know about it.

Friday, December 15, 2017

Developing Eddystones App In Android

Eddystone beacons is google's answer to Apple's Ibeacon. Both devices use BLE technology but differ in advertising protocols.

Ibeacons transmit a single frame wherein the Ibeacon identifier bytes is at the 8th and 9th byte of the frame. See picture below as seen on Ibeacon Detector app on android:

And a more detailed data structure of the frame is below:


In comparison, Eddystones transmit 3 frames which is like below:
As an evidence, if you use Ibeacon Detector App to detect the Eddystones, you will notice that the data packets received always changes that is because eddystones transmit 3 frames.

I have previously developed an android app to scan ibeacons (A Simple Ibeacon Scanner App in Android) and this app can be slightly modified to scan for eddystones as well by removing the validation that look for "0215" pattern in the frame and look for valid values to identify the frame type as described in the last picture.

A lot of people ask, why do we need eddystones since we already have ibeacons? The answer is obvious, eddystones is able to transmit more data than ibeacons. Ibeacon frame contain only the RSSI, UUID, Majo and Minor. The latter 3 is used to identify the ibeacon, while the eddystones frames contain the TX power, Temperature, URL, Battery Charge Level, Instance Id, Namespace Id, and many more.

Monday, November 20, 2017

I repaired my Micro M3d Printer

It was more than a year ago when I bought my very first 3d printer to try if the technology really works as I have seen on youtube. During that time, it was the cheapest 3d printer available(not the diy type).

During the first few days, I had very good experience with it, no wastage, all printed objects were perfect. Then when I decided to print a chopping board that would take 34hours to print and left it printing while I went to work. When I came back in the afternoon, to my surprise and dismay, it failed and it continued to print but no filament is coming out. That is weird. All the happy days with the printer became a constant nightmarish struggle just to succeed in printing. It even came to a point where the heating element was destroyed and negotiated with M3D to repair it but they came up with having the entire unit be replaced with a new one, but the new replacement had also the same problem. That was really weird.

I got fed up and decided not to use it anymore and that when I will have a time to go over it again, I had to tear it apart to check what controller they used. Not until last Sunday when I decided to repair it. I first downloaded the latest version of the software and during the first run, it asked me to update the firmware, so I updated the firmware and try to print the wheel used in a mars rover. To my surprised, the printer output was fairly solid, this is the first good output it ever produced so I thought maybe there is nothing wrong with the hardware, it was just the firmware that made all that troubles.

I thought that was the end of the problem, but when I tried to print the same object, the x-axis slowly shifted to the right. I tried other settings but yielded the same result. It was not brittle but the x-axis keeps on shifting to the right, weird!

I concluded that it is not the hardware that is making all these mess, it was the software and the firmware. So I tried to look for alternative to use other software and I succeeded, Adafruit had an article wherein they used raspberry pi and octopi. I tried it, and so far, I am getting good result. Octopi uses Cura engine which is used by Ultimaker.

So far this is the 3d printer busy printing the mars rover wheel:

Another good thing about using octopi is that I dont have to connect my laptop to the rpi all the time so while the rpi is busy printing i could use my laptop developing the accounring software and play dota.

Tuesday, October 3, 2017

Spindle Upgrade Project

The spindle that came with the cnc I just got is small, good enough to cut even a 12mm thick acrylic which is awesome because laser cutters requires 100w to cut acrylic this thick. But for me it is not powerful enough because I am planning to use the cnc as production machine for my air purifiers si I need to upgrade it and I found a suitable dremel class hand tool which can be bought cheaply at local hardware.

It is perfect since the tip of the hand tool is threaded so that means I can create a custom bracket having the same diameter as the original spindle and I will attach it to the cnc with no problem.

So I had to buy aluminum block (50mmx50mmx50mm) and off I go to my favorite machine shop to have it done perfectly. And with a few discussions with the machinist, he was able to execute the task perfectly and here is the result:

but when I tried to tighten the clamp to its maximum, the spindle still moves but I don't blame the machinist since I was the one who said the diameter should 45mm, but I was able to solve easily by wrapping the bracket with scatch tape and the problem was solved:
SO I test it further while moving the z-axis upwards, it wont go up to 30mm because the custom bracket was too thick it acts as a barrier so, tomorrow I will go back to have it fixed, it was still my fault, hehe here is the problem area:
Another problem I encountered is that as the rotation speed reaches 12000 rpm, the attached endmill begins to wiggle so I still need to fix it: