I am starting to develop for Android Things and I was wondering if it was possible to implement OpenThread Border Router on a Raspberry PI 3B with Android Things flashed into it.
https://github.com/openthread/openthread
https://github.com/openthread/borderrouter
"A Border Router connects a Thread network to networks at different layers, such as WiFi or Ethernet. OpenThread Border Router provides end-to-end IP via routing between Thread devices and other external IP networks, as well as external Thread Commissioning."
Update: While Border Routing functionality isn't available on Android Things, the Android team released a new API that adds first-class support for Thread radios. This makes it possible to develop Android applications that implement border routing functionality equivalent to borderrouter. See the blog for more details. Note that I'm not aware of any implementations at this time as I no longer work on the project.
---------- Original reply ----------
I work on the OpenThread team. Currently, the borderrouter project targets Linux platforms and has been demonstrated on a Raspberry Pi 3 running Raspbian Jesse Lite. Android Things is not supported at this time. We plan on supporting more platforms but I have no updates of when new ones will be added. Please file a feature request issue on Github.
Related
I'm trying to get some initial info on my very first IoT project. I want to build a * tiny * wifi connected relay to control, let's say, lights. I'm a newbie in the hardware and electronics field though, but I'm a pro developer, so programming is not a problem.
Now, I've looked at different options and I can't seem to find really small components for the task. It might be I overlooked something, so please help me with available options.
Look at the ESP8266 devices. They have WiFi on chip and can be programmed using the Arduino environment. You basically write code in C++ to do whatever you need.
Here is an Amazon search for some examples:
https://www.amazon.com/s?k=esp8266
I recently did a project using a Linknode R4 (similar to above but with 4 relays) and programmed it as a web server with REST API. Then I built a front end with ASP.NET Core to that talks to the REST API for the devices on my network. The Arduino sketch for the web server is posted on Github at https://github.com/SteveInCO/LinknodeR4. I would assume it would work with little modification on the device I linked above.
The default program for the R4 allows controlling it via their website or iOS/Android apps, though I could never get it to work out of the box. Their model uses a polling method so the relays continually ask the server what to do next.
Windows IoT doesn't run on these small devices yet, but no reason you can't front end the Arduino API with a UWP app running under Windows IoT on a Raspberry Pi instead of the web app like I did. I think the eventual plan is for ASP.NET Core to be able to run on an ARM based system like a Raspberry Pi, but last I checked it wasn't quite there yet.
I'm developing a medical record system for iOS and OSX. The idea is to have the iPad devices contain the presentation layer and just a tiny bit business layer, while the actual business layer is running on a Mac OSX machine.
I would really appreciate thoughts on which basic communication to use between the iPads and the OSX machine. Web services? Game kit? Remote objects? The actual data must be protected by SSL.
Your best option is to write a web service and expose an XML API. Then, enforce SSL constraints on all resources and program your iOS device to use the standard HTTP verbs to communicate with the server. Depending on the web platform you select, a number of wrappers exist to help with the communication. For example:
iPhone on Rails
I'm starting to work on a project that involves integration with the mapping software on a navigation device. Ideally the navigation device will be touch screen, and we will be able to write code that controls the navigation/mapping software on the device (we want to send info to and from the mobile device -it will be in a car permanently).
What mapping software and mobile platform would you recommend for such a job?
I would advise TomTom. Disclaimer: they pay me.
It's a cheap device, and runs Linux. We've recently introduced the TomTom Blue&Me for Fiat. The "blue" part refers to the fact that it talks with the car using Bluetooth, e.g. the TomTom will find a pump when the car tells the TomTom it's running low on gas. Your project sounds similar enough.
We have a range of PC demonstration programs for our microcontroller products. The programs typically connect to a USB HID chip on the microcontroller board. The USB chip acts as a communications bridge, allowing the programs to communicate with the micros over SPI/I2C/UART. The programs can configure the micros, and get back status information to display to the user.
We are now looking to build some standalone demonstrations using single board PCs. We would like to reuse as much as possible of our existing demo app source code. Ideally, we could just run them as-is.
Does anybody have any advice on the best way forward? The basic options seem to be WinCE or XP Embedded boards. WinCE boards seem to pull less power, which would be an advantage from a battery life point of view.
Our existing demos are built either in C++ under Borland Builder, or in Delphi.
Thanks in advance.
EDIT: see my answer below with info from a board vendor.
Free Pascal/Lazarus can compile some forms of Delphi apps to WiNCE/arm. Even visual ones.
There isn't a Delphi version for WinCE, so you would need to rewrite the applications. The same applies for the Borland Builder's control libraries. Only if you have used plain Win32 API, you would be able to port your application to WinCE easily. You may also encounter problems with the hardware access part. The Serial Port driver may not work as is. Also, you need to find a WinCE board that can act as USB host and provides HID drivers (this isn't very common).
In conclusion, I believe that you would be better of with Windows XP Embedded boards. These should run your applications as they are.
As an update, and for future reference, I thought I'd post the results of our discussions with a WinCE board vendor here. Caveat: I haven't actually tried any of this.
The bottom line is that there isn't a straightforward way to do what we were hoping for (i.e., re-compile our existing demo applications to run under WinCE). The reason is that the generic HID drivers and standard APIs that exist in desktop flavours of Windows just aren't there in WinCE.
To talk to HID devices in WinCE you need to implement a custom HID driver. This needs to support an interface allowing user mode applications to communicate with the driver, and to construct HID reports to be sent to the physical device. As this interface would itself be custom, application code needs to be updated accordingly.
WinCE application development is generally done using Visual Studio and the Microsoft compilers. The approach recommended to us was:
Create a custom HID class driver. This could be based on, for instance, the Microsoft keyboard HID driver.
Create an API for talking to the driver.
Use .net to create our GUI applications, and use PInvoke to actually talk to the API.
The end result of all this head-scratching is that to avoid the time and learning curve associated with this approach, we're going to go for a board running XP. We can then use our existing demo applications straight out of box. The trade-off is that we'll have to live with substantially reduced battery life.
Every indication I have, based on my experience in embedded computing is that doing something like this would require expensive equipment to get access to the platform (ICE debuggers, JTAG probes, I2C programmers, etc, etc), but I've always wondered if some ambitious hacker out there has found a way to load native code on a Blackberry device. Anyone?
Edit: I'm aware of the published SDK and it's attendant restrictions. I'm curious if anyone has attempted to get around them, and if so, how far they got.
I've seen this question pop up in a number of different forums over time. The original Blackberries were programmable in C++ but I think that RIM ran up against the problems of trying to implement a secure platform in the C/C++ compile to native paradigm.
The devices do have JTAG ports, but unless one could get hands on the RIM code as a place to start the problem is enormous.
I also have to wonder how useful a Blackberry with a replacement FOSS operating system would be, since it would not likely have the protocols to connect to BES or BIS, send PIN's etc. If one was simply looking for a the power of the hand held computing platform I suspect there are many more likely candidates available.
No, C++ is no longer a supported RIM development tool, as they phased it out a number of years ago. Client applications can be developed in Java (or one of a few 5GL frameworks), and web + sever-side apps can be developed using standard tools.
For those looking for updated information, the new Playbook os, also known as QNX, also known as Blackberry 10 (or it will be when the phones running it come out) is in fact c/c++ based, also using QML and a C++ add on called Cascades.
Unfortunately the official SDK website only seems to mention Java. According to wikipedia, different versions of the BlackBerry use different processors. Combined with the fact that RIM uses a proprietary operating system for the devices, it becomes pretty difficult to develop native code without official tools. There is also a partial API-level security restriction which would further prohibit advanced tinkering.
Just randomly searching for an answer to this and came across http://supportforums.blackberry.com/t5/Tablet-OS-SDK-for-Adobe-AIR/Native-C-C-SDK/td-p/778009 which mentions that BB intend to release a C/C++ SDK soon, more details will be provided at the 2011 Game Developer Conference.