IoT
NuMaker-PFM-M2351
The NuMaker-PFM-M2351 is fantastic board powered by a microcontroller from the ARM Cortex-M23 family.
The board combines a secure memory, one WiFi module (ESP8266EX ESP03), one NAU88L25 audio codec with a 3.5mm Mid-Mount SMD headphone jack and one Micro-SD socket placed on the back side of the board.
The ESP03 module can be programmed from the M2351’s UART3.
Arduino UNO Shield compatibility is by default. The pin strips are installed.
The MCU’s pin are fanout to 2.54mm 128 pins placeholder. No pinstrips included.
It seems that Nuvoton built the board as a IoT Device Reference Design.
The combination of the Crypto Accelerator and the Secure Flash Memory brings the board in the Secure IoT class. Therefore, you can build Secure OTA upgradeable firmware.
I was surprised seeing that Segger offers emWin as library completely free for some Nuvoton chips including the M2351. It may be cheaper than using Synergy for some displays.
Only after I changed the VCP Com DIP Switch I saw the board’s MBED flash drive showing in My Computer. In addition, I’ve enabled it in the MBED Online Compiler.

The Break-Away Programmer seems to be the usual Nu-Link-Me but is called ICE V3.0 – anyway is a very good SWD Debug/Programming Interface.
The ETM1 Trace Connector is connected on the Embedded Trace Macrocell Trace pins of Port.E and also SWD.

Useful Links:
The Nuvoton CD Link: https://www.nuvoton.com/NuMicroDVD
NuMicroM23 Family: https://www.nuvoton.com/hq/products/microcontrollers/arm-cortex-m23-mcus/?__locale=en
The 1714 pages Technical Reference Manual: http://www.nuvoton.com/hq/products/microcontrollers/arm-cortex-m23-mcus/Technical-Reference-Manual/?__locale=en&resourcePage=Y
ARM Cortex-M23 Reference: https://developer.arm.com/ip-products/processors/cortex-m/cortex-m23
Free MDK version limited to Cortex-M0 and M23
Request here: http://www.keil.com/nuvoton
STEVAL-FKI868V1 – Sigfox testing with ST Hardware
STEVAL-FKI868V1 with NUCLEO-L152RE board.
Can be used “normally” or via mbed.
ST Page: http://www.st.com/en/evaluation-tools/steval-fki868v1.html
Sigfox page: https://partners.sigfox.com/products/steval-fki868v1
Schematics in the datasheet or here: http://www.st.com/resource/en/schematic_pack/steval-fki868v1_schematic.pdf
S2-LP ULP transceiver page: http://www.st.com/en/wireless-connectivity/s2-lp.html
STMicro Wireless Connectivity for IoT Applications Brochure: http://www.st.com/resource/en/brochure/brwireless_web.pdf
! many thanks to STMicroelectronics
Sigfox – WiSOL SFM10R1 – SNOC Board
WiSOL SFM10R1: a cheap Sigfox Module made by WiSOL available as devkit from SNOC/Yadom.
Some links:
Wisol module manufacturer site: http://www.wisol.co.kr/
Yadom online shop: http://yadom.fr/
SNOC (Société Nationale des Objets Connectés): https://snoc.fr/
The only strange thing with this WiSOL module is that it responds with “ERROR: parse error” at the usual “AT” command.
A simple test code that sends some data to the network respecting the constraints:
[sourcecode language=”C”]
/*
Sigfox Module Test Unit
*/
int button = 2;
int led = 13;
void setup() {
// WiSOL works on 9600:
Serial.begin(9600);
// some basic LED debug info
pinMode(button, INPUT);
pinMode(led, OUTPUT);
// more to go for the receive function
// add ",1" for the downlink frame
}
void loop() {
int buttonState = digitalRead(button);
if (buttonState == LOW){
Serial.println("AT$SF=000011110000");
// some basic LED debug info
digitalWrite(led, HIGH);
delay(800);
digitalWrite(led, LOW);
delay(200);
digitalWrite(led, HIGH);
delay(800);
digitalWrite(led, LOW);
delay(200);
// obey to the max 1 msg every 10 min rule
delay(600000);
}
else {
// basic LED debug info
digitalWrite(led, HIGH);
delay(50);
digitalWrite(led, LOW);
delay(1000);
digitalWrite(led, HIGH);
delay(50);
digitalWrite(led, LOW);
delay(1000);
digitalWrite(led, HIGH);
delay(50);
digitalWrite(led, LOW);
delay(1000);
digitalWrite(led, HIGH);
delay(50);
digitalWrite(led, LOW);
delay(1000);
delay(40000);
}
}
[/sourcecode]
Playing with ESP8266 modules and IoT
ESP8266 as IoT device
Reviewing the Exosite Murano Platform for a IoT solution, I started to build a new board based on ESP8266 powered ESP-12E module.
Tools used: Autotrax DEX aka DEXPCB and DFM now!
Arduino ESP support installation instructions:
Start Arduino and open Preferences window.
Enter the following link into “Additional Board Manager URLs” field.:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Start the Boards Manager, update and select the ESP support package.
Install and use a USB to Serial adapter to program the board.
Links:
Arduino Core for ESP: Github link
Ai Thinker ESP-12E Product Page: http://www.ai-thinker.com/html/2016/ESP_01-14Series_0422/49.html
Ai Thinker ESP-12E Datasheet: http://www.ai-thinker.com/uploadfile/2016/0722/20160722020431739.pdf
http://wiki.ai-thinker.com/_media/esp8266/docs/esp8266_series_modules_user_manual_cn.pdf
It’s IoT Time!
Live IoT PTC – KeyWorx Streaming and a TweetStorm also.
http://www.ptc.com/liveworx/watch-event-stream
Good content and good streaming quality (even in the EU).
LiveWorx Keynote Agenda
8:30am – 9:00am EDT | Bridging Digital and Physical Worlds Speaker Jim Heppelmann – President and Chief Executive Officer, PTC |
9:00am – 9:30am | Importance of the IoT Platform Speaker Russ Fadel – President, ThingWorx, a PTC Business |
9:30am – 10:00am | The Internet of Things: Real-World Successes Speaker Rob Gremley – Executive Vice President, IoT Segment, PTC |
10:00am – 10:30am | Morning Break |
10:30am – 11:15am | The Rise of Smart, Connected Products: Third Great Wave of IT-Driven Innovation Speakers Michael E. Porter – Harvard Business School Jim Heppelmann – President and Chief Executive Officer, PTC |
11:15am – 11:30am | Advantage Massachusetts: How the State is Poised to Become an IoT Industry Cluster Speaker Charles D. Baker – Governor of Massachusetts |
11:30am – 12:00pm | Industry Titans of The Internet of Things Speakers Jim Heppelmann – President and Chief Executive Officer, PTC Platinum Partners |
12:00pm – 1:00pm | Lunch at the Hynes Convention Center |
1:00pm – 1:45pm | IoT Hackathon Results Speaker Steve “the Woz” Wozniak |
TI CC3200 Launchpad – Quick Guide
A quick start guide to the CC3200 Launchpad:
Out Of the Box feeling
OOB application is very nice, you can connect to the AP without security and then you go to the 192.168.1.1 (or http://mysimplelink.net , as indicated by TI, if you think that’s shorter…). Here answers a small webserver that serves some (uncompressed) html files that are a frontend to the configuration settings and also some nice demo programs and documentation.
More
Prerequisites:
Uniflash Simplelink: The flashing tool for the CC3200 http://www.ti.com/tool/uniflash
Jumper on SOP pins.
Uniflash wiki UG: http://processors.wiki.ti.com/index.php/CC31xx_%26_CC32xx_UniFlash
The CC3200 SDK + Service pack can be downloaded from here: http://www.ti.com/tool/cc3200sdk
Some IoT provider, I chose Exosite. Step by step account and usage documentation: https://support.exosite.com/hc/en-us/articles/202271424–CC3200-Wi-Fi-Launchpad
Shortlist:
Create a TI Exosite account https://ti.exosite.com
Add the device mac to the Exosite Dashboard
Flash the Exosite firmware on the CC3200 Launchpad
Enjoy!
Issues:
- Profiles won’t be saved if the WPA2 key is too long. Even in OOB Fw.
- Flashing without format won’t work.
- Formatting various sizes (1MB, 2MB, 4MB, 8MB, 16MB from Format Options window that comes after you push Format button) leads to strange results, my CC3200 Launchpad has responded well only on 4MB. Even the OOB was unable to restore the board without reformatting to 4MB.
- I noticed that sometimes the CC3200LP communication enters in a strange mode, appearing offline to Exosite and the Dashboard is showing up some negative temperatures. The LP responds to ping, the uptime displayed by the http server is ok. Only a power cycle reset solves it…
Fastest way:
- Select COM port, put jumper on SOP pins, verify using Get Version (
Reset push-button required). - Formatted 4MB, nothing else checked.
- Apllied Service Pack Update.
- Flash the desired firmware.
- Remove SOP jumper. Put on the AP Jumper (VCC-P58)
- Connect to the AP without security
- Create a Profile with the local WiFi configuration (SSID, Key) and give it a index number. Save.
- Reset the board and wait the boot and connect sequence.
If you try to restore the OOB firmware, you get the original status by opening with Uniflash the out_of_box.ucf that comes in the CC3200SDK\cc3200-sdk\example\out_of_box\html folder.
Other useful links:
E2E TI Forum – CC3200 section: http://e2e.ti.com/support/wireless_connectivity/f/968.aspx
CC32xx Wiki: http://processors.wiki.ti.com/index.php/CC31xx_&_CC32xx
The public dashboard hosted on Exosite: https://ti.exosite.com/views/3194349686/3199082241
Late edit:
- The problem was due to a high current thing, and brings the CC+Exosite FW in the same boat with the Fluke 233 rev.1 @36mA in active mode…
- Preproduction Silicon doesn’t support SDK > 1.1
- Exosite’s guide for those who want to switch from Portals to Murano https://community.exosite.com/t/how-to-use-murano-in-my-own-cc3200-board/316/2
Even later:
- Connection issues are mainly because of the SOP (Sense On Power) Jumpers. Flashing/Programming can be done with 100 configuration, that means only one jumper, placed on position labeled 2.
- Using the programmed configuration will be done removing that SOP jumper
- Uniflash 4.0 can’t be used for CC3200, use instead the old 3.4.x version
- The COM Port speed setting: 921600
heroku cloud application platform
[code]
git clone git://github.com/heroku/ruby-sample.git
cd ruby-sample
heroku create
git push heroku master
heroku open
[/code]
Yes! Simple!
Like that!
exosite as a way to solve IoT problems
exosite IoT enabler: exosite.com
One of the many problems in the IoT field is the data publishing section. Big amount of data and, sometimes, a weak security. A good opportunity is a public, trustworthy, cloud service like Exosite.
Exosite looks like a wonderful platform that comes at great price:
- The free developer account includes 2 devices and 1 user. Extra: + Device Key – $2/month + User Access – $7/month + SMS Text – $0.03/tex
- The whitelabel account costs $100/month and allows you to deliver IoT services to the users under your domain name (TLD).
Exosite IoT enabled Development Kits and projects:
http://exosite.com/solutions/development-kits/ lists AVR/Arduino, Microchip, Renesas, Synapse, TI, but is possible to create “generic devices” with any other platforms.
AVR/Arduino: https://support.exosite.com/hc/en-us/articles/200095728-Arduino-Exosite-Library-
Microchip: DV102412 https://support.exosite.com/hc/en-us/articles/200386150-Microchip-DV102412-Wi-Fi-G-Demonstration-Kit
chipKIT WiFi: https://support.exosite.com/hc/en-us/articles/200428945-Digilent-chipKIT-WiFi-Platform-Arduino-Compatible
Renesas (RX62N RDK): https://renesas.exosite.com
Synapse: http://exosite.com/solutions/development-kits/synapse-wireless/
http://www.synapse-wireless.com/arrowm2mkit
TI: Connected LaunchPad https://support.exosite.com/hc/en-us/articles/200778084-EK-TM4C1294XL-Connected-LaunchPad
FRAM LP + CC3000: https://support.exosite.com/hc/en-us/articles/200095768-MSP430-FRAM-CC3000-WiFi-with-SmartConfig-
Stellaris LP + AT Modem: https://support.exosite.com/hc/en-us/articles/200095758-TI-Stellaris-plus-AT-Modem-project-to-connect-to-Exosite
API & Support
https://github.com/exosite/api
https://github.com/exosite/exoline Application that allows the use of Exosite API commands from a CLI
https://github.com/exosite-labs Libraries
https://support.exosite.com/hc/en-us/categories/200010998-Getting-Started-Support-Basics Getting Started Guide
TI Chronos & Py
https://support.exosite.com/hc/en-us/articles/200095748-TI-Chronos-Watch-RF-Gateway-Project
OpenHAB ++
the name is my.openhab.org
The next step in the BB+Debian+OpenHAB story.
[code lang=”C”]
Apache2 configuration for the ports:
/etc/apache2/ports.conf
Apache2 configuration of the virtual host:
/etc/apache2/sites-available/default
OpenHAB configuration for the ports:
/etc/default/openhab
[/code]
BB+Debian => port 8080 web server root folder: /var/www is the Apache/2.2.22 (Debian) Server
I changed the OpenHAB port to 8888 because I use the Apache2 8080.
but… the org.openhab.io.myopenhab___ addon sends the requests to http://localhost:8080/
…after some errors i changed the OpenHAB back to 8080 and the Apache2 to some other port.
next: get HABDroid or Apple iOS equivalent. Of course check if Java version is 1.7
The HABDroid is incredibly fast!!!
Some links:
https://play.google.com/store/apps/details?id=org.openhab.habdroid&hl=en
https://my.openhab.org/openhab.app?sitemap=yoursitemap.here fill it with one of the sitemaps that is on the running OpenHAB installation
BeagleBone + OpenHAB + Debian: two weeks note
Two weeks of testing the Demo OpenHAB Server configuration on a Debian powered BeagleBone:
Tons of power-off reboots and all works fine.
Only one time it refused to connect to the outside world.
Stability: 5/5
Security: 5/5
(I finally found the documentation https://github.com/openhab/openhab/wiki/Security + added the Android App + cut the port forwarding)
OpenHAB + BeagleBone + Debian
12.2016 Update:
Due to the new debian images and new openhab versions, some users had problems with the whole procedure:
The main changes are:
- After SD creation, the BB takes some minutes for the first boot. Wait until you can see the browser page (see router for DHCP assigned IP Address).
- At the first ssh login cahnge the password for both root and debian users
- The partition (there is only one, mmcblk0) is 3.3GB. Using the fdisk default options you screw things up because the starting point is 8192.
- Use resize2fs only after rebooting.
- Install java (now is oracle-java9-install)
- Install openhab
- Make another account at myopenhab.org
I will make another post with the new versions for all this stuff if needed.
OpenHAB setup on a Debian powered BeagleBone (white)
OpenHAB is simply great!
Create the microSD:
http://beagleboard.org/latest-images/
http://beagleboard.org/project/debian/
Resize the partition (the image is with a 1.6GB, I use a 8GB microSD):
[code lang=”C”]
fdisk -l
# show partitions
fdisk /dev/mmcblk0
# delete the 1.6G partition (p2)
# and create a new one from the same starting point to the end of the disk
shutdown -r
resize2fs /dev/mmcblk0p2
# you may now reboot for verification purposes
[/code]
Then you should update and upgrade. I prefer apt-get but aptitude is available.
Next step: make things confortable – mc and configure it with internal viewer and editor (mcedit), nameserver in /etc/resolv.conf , install ntpd, samba, telnet…. change the hostname in /etc/hostname
Install Java packages:
[code lang=”C”]
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee /etc/apt/sources.list.d/webupd8team-java.list
# adds a java deb repo
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list
# adds a java deb-src repo
apt-key adv –keyserver keyserver.ubuntu.com –recv-keys EEA14886
# install the key
apt-get update
# reads the repo and updates the local db
apt-get install oracle-java7-installer
# installs the java7.
# it also brings up a License Agreement
[/code]
Now the fun part!
OpenHAB has a deb repo! I tried hard with the basic .zip files, but with the repo all is faster and better.
Repo address: http://repository-openhab.forge.cloudbees.com/release/1.5.0/apt-repo/
http://dl.bintray.com/openhab/apt-repo
echo "deb http://dl.bintray.com/openhab/apt-repo stable main" | tee /etc/apt/sources.list.d/openhab.list
or
echo "deb http://dl.bintray.com/openhab/apt-repo stable main" | sudo tee /etc/apt/sources.list.d/openhab.list
Wiki: https://github.com/openhab/openhab/wiki/Apt-Repository
[code lang=”C”]
apt-get install openhab-runtime
apt-get install openhab-addon-action-twitter openhab-addon-action-mail openhab-io-gpio
apt-get install openhab-addon-binding-onewire openhab-addon-binding-gpio
apt-get install openhab-addon-binding-http openhab-addon-binding-ntp
apt-get install openhab-addon-persistence-exec openhab-addon-persistence-logging
apt-get install openhab-addon-persistence-rrd4j
apt-get install openhab-addon-action-twitter
# Change the OpenHAB’s webserver port in /etc/default/openhab
# HTTP_PORT=8888
# You may start now the openhab service
/etc/init.d/openhab start
# Now is all installed and running.
# In order to see the demo: get the demo zip file and unzip it.
# Copy the /configurations content over the one in /etc/openhab/configurations
#
[/code]
The OpenHAB + BeagleBone address is: http://beaglebone_ip_address_here:8888/openhab.app?sitemap=demo
More links:
The OpenHAB Hardware FAQ: https://github.com/openhab/openhab/wiki/Hardware-FAQ
EnOcean Binding: https://github.com/openhab/openhab/wiki/EnOcean-Binding
Round Robin DB Persistence Module: https://github.com/openhab/openhab/wiki/rrd4j-Persistence
Later edit: OpenHAB addons folder is /usr/share/openhab/addons