First WiFi Loco-Nodes, ready for fabrication/assembly

ModelRailroadForums.com is a free Model Railroad Discussion Forum and photo gallery. We cover all scales and sizes of model railroads. Online since 2002, it's one of the oldest and largest model railroad forums on the web. Whether you're a master model railroader or just getting started, you'll find something of interest here.


Status
Not open for further replies.
Motor Control, Consisting, and FX_LED are all now done for Block 0 software

We'll be adding in the battery data next.

LN0001S-V1.5 will be leaving the factory in the next week, it has all of the hardware glitches cleaned up and some improvements.

A black LPI this time too.

Here is all I can back into 5 minutes for the light effects.

The files can be updated down the road without changing out hardware, we'll also include more steam related content once I have some time to figure out what's needed.

Christopher Howard, Layout-IoE
www.layout-IoE.com


[video=youtube;-dwC6I2Uxnk]https://www.youtube.com/watch?v=-dwC6I2Uxnk[/video]
 
new boards are on the way

these fix IBR booting software compatibility and the audio short so everything should be done for hardware

software is progressing with the current boards

the Loco-Node file has motor control and FX_LED finished. we added the battery fuel gauge data and battery charger status. we're now working on the sound engine. today, we should have multiple sound channels up and running so we can play up to 32 independent tracks at the same time. other aspects of sound such as the amplifier control is already working

the new boards should be here by the end of this coming week

there have been some hardware changes such as a TV OUT, we now have a 4 GB eMMC flash

we're also exploring setting up other means of communication than the C# library

the board software is written in C++

1211962145497602_4837065598459059419_n_zpsg0wqjyus.jpg


1211962125497604_8674920224645288879_n_zpsq6joqscf.jpg
 
[video=youtube;p37ref21X-I]https://www.youtube.com/watch?v=p37ref21X-I&feature=youtu.be[/video]

The above is an example of the sound engine. We've made a lot of progress on the sound, its going to be killer. The tones will be overwritten by actual sound recordings of the notches and transitions of the real locomotive. There is a bug in this file, the engine sound wasn't playing at idle but it will be fixed tomorrow.

We'll be working on the bell next.
 


we cleared out a few bugs in the MMC drivers this morning. one more (hopefully the last is being worked on now) the support with Linux 2.6.35 for newer eMMC is lacking so we have to make these modifications

Ilya had a fault with this board, it seems to be traceable to his soldering iron being too hot and spattering of solder underneath the led driver which is BGA. otherwise the boards I have from the new batch have all been tested and have no faults. his board developed a short so we're not making as fast of progress as we could be

the eMMC is appearing and we can read, write, and flash it with the TurboWriter tool but the kernel is not mounting it to the /dev folder

there was a fix posted online with the same new error code so this should be cleared up in the next few minutes

Juan is working on a UBOOT file

with this eMMC properly mounted, and a working UBOOT, we'll be able to load the kernel and get the WiFi up

after that we can use WiFi to upload new files to the board

it appears the hardware is good, we did a bunch of tests with the code we already have and nothing appears defective
 
and just seconds after finishing this update, I got a new conprog

the eMMC now works and mounts!

cd /dev
/dev # ls
blt ram3 tty24 tty50
console ram4 tty25 tty51
cpu_dma_latency ram5 tty26 tty52
fb0 ram6 tty27 tty53
full ram7 tty28 tty54
i2c-0 random tty29 tty55
input rtc0 tty3 tty56
kmsg sysmgr tty30 tty57
loop0 sysmgr1 tty31 tty58
loop1 sysmgr2 tty32 tty59
loop2 sysmgr3 tty33 tty6
loop3 tty tty34 tty60
loop4 tty0 tty35 tty61
loop5 tty1 tty36 tty62
loop6 tty10 tty37 tty63
loop7 tty11 tty38 tty7
mdev.seq tty12 tty39 tty8
mem tty13 tty4 tty9
mmcblk0 tty14 tty40 ttyS0
mmcblk0p1 tty15 tty41 ttyS1
network_latency tty16 tty42 urandom
network_throughput tty17 tty43 vcs
null tty18 tty44 vcs1
port tty19 tty45 vcsa
ptmx tty2 tty46 vcsa1
pts tty20 tty47 video0
ram0 tty21 tty48 watchdog
ram1 tty22 tty49 zero
ram2 tty23 tty5
/dev #
 
IMG_20151007_112018_hdr_zpszefe8l0g.jpg


Above is an image of the new V1.5 update, as previously stated, the faults from V1.4 appear to have been corrected

Right now, we're focusing on the boot loader

Here are some features:

This is a IoT/IoE product for your locomotive and home layout. The intention is to provide a wireless solution for your entire model railroad that is compatible with Android, iOs, and Windows smart devices

The board is 16 mm x 55 mm. This version, LN0001S has a 32 channel, 16 bit Sound Processor with sample rates up to 48,000 KHz. It support stereo outputs at about 1.5 watts each, compression and active gain plus a full Linux based equalization driver. The board also has a battery fuel gauge and battery charger for 7.4V Li-PO batteries. The batteries can be recharged without removal and during operation. Input for recharge is 13.5 - 24 volts DC and 13.5 - 15 volts AC. 15V DC is the best option. The battery must be used with this board.

Other features are a LED ready 11 output LED driver, fully programmed light effects that are graphically commanded, eCompass/Motion Sensor, and very smooth motor operation.

The boards have a 4 GB flash, that can be updated through WiFi.

There will be some form of SDK released to support this but the intention is to have the first boards go out with basic programming all in place, updates can then be made with WiFi as new features are updated. The hardware is solid and usable for multiple model types, updating the software will change out its sound and other profiles to match specific prototypes.

The main benefit of this over DCC is it opens up a huge potential for growth in prototypical operations and will enable less wiring, overhead, cost, and improve ease of operation.

Christopher Howard, Phoenix-Micron Inc.
 


We rediscovered a cool feature of the CPU, it has IRB (Internal Boot ROM) already embedded which makes everything clear now

This is why the SPINAND didn't work. It goes through a list of ports and tries to find data at address 0. The problem with V1.4 was its flash, even though we could manipulate it and it had one time protect, and error correcting code, had to be turned on to work. So when the board tired to boot, it didn't see it.

Using the new drivers we made for the eMMC, I was able to put the kernel onto a SD card (port SD0) and it booted the board when the card was formatted to FAT 16/32.

It does not need additional boot files to work.

So we do not need a dedicated boot file at this point, we may make one for long term use.

The software tool the manufacturer sent is not burning to the eMMC anything larger than 16 KB for some reason. So we're going to rework our SPINAND flashing tool to work with the eMMC. This will bypass the road block.

We're getting my PC ready for this. Once we have the tool reconfigured we can load the image to eMMC. This will speed things up considerably as we can continue testing while Juan gets a final boot file ready.
 
Juan and I played a bit last night on the eMMC, we got some tools installed in the kernel to format, create partitions, etc.

I also now have a full development suit again after my hard drive failed a few weeks ago, with Virtual Machine up and running which will speed things up as Ilya or Juan can compile on my PC through Team Viewer and access the board which they don't have yet.

The flashing tool will be started in a few hours. This morning we had some hiccups with software, mostly trying to figure it out.

At the 11th hour today, we finally got everything straightened out on how to set up partition lists, create partitions, format the eMMC and mount it to the kernel. The only thing we didn't accomplish today was copying small files to the memory, for some reason they go to SDRAM. That will be next on the TODO list.

The flashing tool will accomplish this for us though, and its configuring will get this new hurdle cleared.

Ilya had a fault on his board, we've traced it to a short inside the voltage regulator. None of the other samples from V1.3, V1.4, and the current batch had this previously and the other 7 boards out of this batch are all OK.

I guess it happens sometimes, parts go bad.

SOOOO, it really comes down to the flashing tool now, if we get that up, we can start building all of the pieces into one product. This will enable full production programming, WiFi, sound files, and anything else we need to tuck in that we can't with the current flashing tool limit.
 
forgot we already had a flashing tool configured for UART to SDRAM we made a few months ago, I have everybody digging up the files, my hard drive crash erased what I had

this will enable us to move a full conprog.bin or any other file under 32 MB to /usr in SDRAM, then we use our move.sh file we created to send it to the eMMC

so if I get all of the files this morning, we can give it a go
 
We got the flashing tool working, we can now upload files to SDRAM after USB booting

The eMMC will mount, we can copy files to it and they remain in place after shutdown

The next and what seems like the biggest hurdle is editing the extended_CSD settings

The eMMC ships from the factory with its boot system off. We need to figure out how to edit this so it will become a boot source
 
we have a patch, debugging it now

kinda sorta figured it all out, editing the eCSD register will enable it to respond to boot commands from the CPU

if this works, we are on the downward slide

the rest is cleaning up stuff we've already compilied
 
still debugging some eCSD patches, the latest has Linux 3.0 drivers merged with our kernel for the eMMC

working on a bit bang for it too

started an install with a Bowser product, the factory electronics are below

IMG_20151015_110737_hdr_zpskbwpwefl.jpg


this was all removed, the Loco-Node is seen to the left

IMG_20151015_112326_hdr_zps2svtdtoa.jpg


motor connections

IMG_20151015_142332_hdr_zpsnktllqp8.jpg


the rail pickups, I replaced all of the wire with silicone wrapped, 30 AWG stranded

IMG_20151015_135112_hdr_zps2fczhfmv.jpg


IMG_20151015_144846_hdr_zps7fvi1cco.jpg


IMG_20151015_150523_hdr_zpskl189tmq.jpg


the speakers were connected above

IMG_20151015_155830_zpsdagpfrmi.jpg


battery and LED connections made

use our own speakers

IMG_20151015_115126_hdr_zpscmf7svrp.jpg
 
eCSD_1_zpsjyooo6zv.png


we've successfully merged a Linux 3.0 kernel with our 2.6.35.4 version for MMC support. it hangs but we now have complete source code to debug

the eMMC is set so it does not boot, we can use this new driver to enable it so the CPU will boot from it

once this is up, there are only two remaining systems to test before V1.5 is ready for mass production
 
I made these three items to support the locomotive installation

There is a clip that will hold the node, and enable it to be taped to the top of the shell interior

The other two items are "pots". One end is cored for a 0402 LED and the other has an opening for a Fiber Optic strand. I am going to use these for lighting the headlights, class lights, and number-boards.

The wires coming from the Loco-Node will act as the main bus wire, I will connect magnet wire from it to the LED's

The pots will have the 0402 secured at the bottom then glued to the shell, then the top of the pot will enable the fiber optic strand to mount. For the number-boards, instead of the fiber optic strand, I will just glue the part that would hold the fiber optic to the back of the number-board

The loco has green, red, and white class lights. Each will be illuminated and selected with the UX

http://shpws.me/KqRg
 
ending at here today:

BusyBox v1.15.2 (2015-10-15 19:05:23 MSK) hush - the humble shell

/ # MMC DBG mmc_send_cxd_data: entry
MMC DBG mmc_send_cxd_data: return OK
mmc0: new MMC card at address 0001
mmc0: report SD insert event to sysmgr
mmcblk0: mmc0:0001 P1XXXX 3.57 GiB
mmcblk0:
p1

/ # /bin/mmc bootpart enable 1 0 /dev/mmcblk0
Opening the device... OK
Reading EXT_CSD... OK
Retriving ext_csd value... OK
Modifying register value... OK

we're adding more debug info, its hanging up at some point after these four operations are complete, hopefully its going to be working soon
 


we got the eMMC drivers fully updated to work correctly

I found some info last night on how to change the values in the eCSD, "echo 9 > boot_config" for example so now we're looking into how to set up exactly what we need

we will likely need a UBOOT file but the development board did boot with just the conprog.bin so we'll try that once we have everything set right
 
Status
Not open for further replies.




Affiliate Disclosure: We may receive a commision from some of the links and ads shown on this website (Learn More Here)

Back
Top