Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 12:44 26 Nov 2024 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : Frontier Silicon powered Internet radio

Author Message
TassyJim

Guru

Joined: 07/08/2011
Location: Australia
Posts: 6098
Posted: 03:41am 19 Feb 2024
Copy link to clipboard 
Print this post

A few years ago I invested in an Internet radio. It is branded as Opus One and was purchased from Altronics in Australia. It probably went under a different name elsewhere.

It has 4 modes FM, DAB+, Internet and streaming off a memory stick.
It is powered by a Frontier Silicon module and that is what is interesting. Frontier Silicon now goes under the name Frontier Smart Technologies.
The same module is found in many Internet radios and the easiest way to tell is try the phone app “unDoc”

I recently purchase a Pure Elan Connect+ which is a cheap portable using the same module. Cheap as around $90 AU. A good price for something to play with.
If UnDoc works, the attached MMBasic program is a wrapper for some of the controls and may be of interest.
There is also a Microsoft app store program “Radio Remote” which is more useful than a phone app.

The Frontier Silicon module incorporates a web interface but the full set of features is hard to find. A Google search for FSapi will find all that is out there.
My radio works well but the backlight for the display has failed and seeing what you are doing is not easy.

The two radios have different features so trying to get one MMBasic program for both was not easy so I stopped trying.

Consider the attached a collection of wrappers for the FSapi and don’t take too much interest in the rest of the program.

I used a cheap rotary encoder for the control but I think I will try a small joystick instead. That will suit me and importantly my wife better.

With Peters webmite+ VS1053, you supply the URL for each stream.
With the FS radios, the radio talks to a portal which maintains the list of streams, sorted into country, genre etc. That has advantages but you are relying on the portal being kept going. There have been some that have pulled the plug leaving radios silent.

The portal for my old radio lets me log in from the PC and go searching in comfort. Streams I like are added to a favorites list and then I use that favorites list to set the presets on the radio.
To use the portal, you need a radio registered with them so it is not open for everyone.

By using the portal on the PC and wireshark, I can find the URL for the stream but it is not in the spirit of things so not something I will do too often.
I think it is also only pointing to a proxy and not the originating address.

The portal for the new radio doesn’t seem to have that feature. Using the “Radio Remote” app is OK, just not as convenient.



The picomite is used as a replacement for the failing display with the advantage of being able to place it where ever I like and have the text big enough to read.
I managed to squeeze it into a short length of 50mm square tube.

In the program, there is only one sub that talks to the radio so it should be relatively easy to convert from WEBmite to any mite with ESP module. The NTP code is not needed but it allows a clock if desired.

The sub that does the talking:
 ' send query, return xml data in buff%()
 ' this is the only sub that uses TCPIP.
SUB getquery query$
 WATCHDOG HW 8300
 ' these lines are needed to stop the radio complaining about HTTP version.
 query$ = query$ +Crlf$ + "Cache-Control: no-cache"+CRLF$
 query$ = query$ + "Host: "+address$+CRLF$
 query$ = query$ + "Connection: Keep-Alive"+CRLF$+CRLF$
 ON ERROR SKIP
 WEB OPEN TCP CLIENT address$, 80
 IF MM.ERRNO THEN
   IF doDebug THEN PRINT "Error1",MM.ERRNO, MM.ERRMSG$
   noconnection = 1
 ELSE
   ON ERROR SKIP
   WEB TCP CLIENT REQUEST query$, buff%(), 7000
   'pause 200
   IF MM.ERRNO THEN
     IF doDebug THEN PRINT "Error2",MM.ERRNO, MM.ERRMSG$
     noconnection = 1
   ELSE
     WEB CLOSE TCP CLIENT
     noconnection = 0
   ENDIF
 ENDIF
END SUB
 


A typical function:
 ' artist and song title
FUNCTION getText$()
 LOCAL value$
 getquery "GET /fsapi/GET/netRemote.play.info.text?pin="+password$+sessionID$+" HTTP/1.1"
 status$ = findNextField$("<status>",1)
 value$ = findNextField$("<value><c8_array>")
 Req_status = (status$ = "FS_OK") '1 = OK, 0 = bad
 IF status$ = "FS_OK" THEN
   getText$ = value$
 ELSE
   getText$ = status$
 ENDIF
END FUNCTION


If anyone dos have a FS driven radio, I can give more details but if not, that’s enough for now.

Jim


opus_one_2.zip
VK7JH
MMedit   MMBasic Help
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4233
Posted: 11:16am 19 Feb 2024
Copy link to clipboard 
Print this post

Nice project Jim !
Keeping the old system alive after the display died, and even enhancing it's features.

Volhout
PicomiteVGA PETSCII ROBOTS
 
Print this page


To reply to this topic, you need to log in.

© JAQ Software 2024