What do I need to develop for a Vending Machine that uses the MDB protocol? - multidrop-bus

I have a project with a Vending Machine. The documentation says that the machine uses the MDB protocol (a standard protocol for vending machines).
How do I develop an application to interact with the machine, and, for example, change the price of a product?
What tools and API's do I need?

You need to have an interface connector, such as the one at http://www.waferstar.com/en/MDB-PC.html as the MDB interface isn't native RS-232.

MDB is a a simple 9 bit serial interface, with a single controller and multiple slaves. A 9bit UART capable of 9600bps is all you need. Bill changers, CC readers, etc are all slaves. You can find the spec online:
www.vending.org/technical/MDB_3.0.pdf
Note that the vending machine itself contains the controller, and all of the controllers have their own peculiarities.

Related

What is the purpose of application processor in a wifi module?

I am just learning about embedded systems and checking about wifi modules. I see in the datasheet they mention about a core processor that is integrated with rf SoC. I also see another processor on the MCU called application processor. I am confused about its purpose. What is it used for? Can someone please clarify? For reference, I was reading about the ATSAMW25 module.
Typically, devices that include wireless technologies (whether its Bluetooth/BLE, WiFi, LoRa, etc) include both the hardware required to manage the wireless connectivity and then separate hardware for running the higher-level application of the system. Frequently, managing the wireless protocol is intensive enough that it is best done with its own small processor running its own firmware to deal with connectivity and sending data over the link and might include a fair amount of proprietary firmware from the vendor (ie, Microchip in your example). To enable programmers to write their own code for the system, these protocol processors are paired with application processors, ones for whom the development tools and documentation are more openly available to developers for implementing whatever they want to do with the module. By separating the two operations (wireless/protocol and application), the code developers implement has less chance of causing fundamental problems for the wireless connectivity (like, application code hanging causes entire WiFi networks to fail) and the proprietary aspects of the system can be better protected (or another way, more documentation can be provided to developers without signing an NDA as the application processor is more "open" while the details of the wireless implementation are usually not).
In the case of the module youre looking at, the wireless hardware is all inside the ATWINC1500 and is accessed via SPI and some other GPIO by the SAMD21G (the application processor). All the code you write for the module end up running on the SAMD21G with some library/driver support to implement the wireless functions (which under the hood, are implemented by talking to the ATWINC1500). The ATWINC1500 simply runs the code the vendor (Microchip) wrote to actually do all the wireless protocol work and provides an interface for another processor (in this module, the SAMD21G) to control it.

API to access GSM signal on computer

Hope this is the right place to ask - assuming so as it is related to programming.
I am looking for some hardware (say a dongle) that would open up an API for my computer to a SIM card. Does that exist anywhere?
The idea would be that I can then use my existing SIM card on its existing network/contract and with a bit of code, send/receive calls and texts. I figured that if a phone can be programmed to do it why can't a computer? I just need the hardware.
Any suggestions if this kind of thing is possible? Even by maybe integrating a phone?
You can use AT commands with any modem or phone, whose driver exposes a modem port when you connect it to a computer. Plug in the phone or modem, and go to Windows Device Manager, and look under "Modems" and see what you've got. From "properties" of the Modem, you can see which COM port it is on.
AT commands are an older method of communicating with a modem. There is a standard set of commands for GSM/GPRS/3G/4G devices available from 3GPP.org, here. Manufacturers add their own proprietary commands for more obscure functions. Many but not all of these are in the public domain.
Some newer plug-in modems may appear as a network adapter (you can see this in Windows), due to their drivers. In this case, you can use the following interfaces:
on Vista: NDIS, proprietary interfaces
on Windows 7 and 8.x Desktop apps: Windows Mobile Broadband API
on Windows 8.x, in the Metro/app area: Windows.Networking and MobileBroadband APIs.
on Windows 10, UWP, there are UWP APIs here. But they do not give as much functionality as the Desktop APIs.
On Windows 8.1 and Windows 10, if the appropriate drives are present it is possible to use the new MBIM interface via the desktop Mobile Broadband DeviceServices API. Mobile Broadband Interface Model spec available here.
On Linux, use AT commands via the serial port.
I'm a bit puzzled by your requirement to make (voice?) calls via a phone connected to a computer. Do you mean Skype? In this case, of course, you wouldn't need any interface for making calls, you would just open an IP connection over a data session - which can be done via any of the above interfaces.
(added this comment as an answer, as there was more information)
I use this GSM device: http://www.mikroe.com/click/gsm2/ connected to a basic UART like: https://www.sparkfun.com/products/718?gclid=CIj1xOzbur4CFUVbfgodCpQASQ
Then use AT COMMANDS.
I also use a piece of software called QNavigator to inspect the modem/gsm: http://www.soselectronic.com/?str=1329

Using a physical network adapter on VMWARE

I just have a server with 2 PCI and 3 PCIx network adapters (offboard of course) already installed. I´d like to use them inside the Virtual Machine that VMWare creates...
I read about it, and as long as I know it´s just possible to use a external network adapter if it has an USB connection.
Do you know any way to do it that I`m trying?
It´s for a use in a specific video system which requires different vm´s and network adapters.
Tks a lot.
Lyniker Aoyagui
There are multiple ways to achieve it. First is to use physical interface state replication, which you can enable in Network adapter entry in Hardware tab of your VM. With that it will treat hardware interfaces just as if you've plugged them directly into the VM.
Other way to go about it, and one that doesn't require hardware network adapters, is to utilize quite robust Virtual network editor (Edit->Virtual Network Editor) which should allow you to replicate most networking conditions you will need.

Control development boards from web interface

I have multiple Raspberry Pi/ Beagle Board/ Panda boards connects to my web server (clouding). Then I want to my clients control the board's GPIO from web interface. I have read many examples on the Internet but in those example the web server is inside every boards.
So, Could anyone help me to use just 1 web server(clouding) outside all of boards to control board's GPIO? Thanks!
You could use NexusDataLink to get your boards connected. This data communication framework allows one to link several devices or systems - the server process may run anywhere. Optionally a REST interface is generated per linked device based on an XML file.

Are the ZigBee APIs still AT commands?

I'm attempting to get some ZigBee equipment to communicate with each other. I've had some success with the XBee USB, but I have had to switch to Telegesis recently. This piece appears to have a specific AT command set. Will it be compatible with ZigBee sensors made by other companies?
Also - I've run across a few APIs for ZigBee. Are they all just AT commands at the core?
AT commands are just used to configure the Telegesis ZigBee module. It's a SoC and can work in any mode (coordinator/router/zed). On the other side, it talks the ZigBee language and can communicate with any ZigBee certified device. So it can be used to create a ZigBee network or can be included in any ZigBee network.
All ZigBee radios should interoperate -- you just need to make sure they are configured to join to each other. With XBee modules, be sure to set ATZS to 2 so the radios form and try to join a true ZigBee network. The default setting of 0 is for non-ZigBee networks.
To have modules join to each other, you'll need to know the PAN ID and possibly link key used to secure the network.
Once you start communicating via ZigBee, expect to use these modules in an API frame mode, where you need to set address information (destination node, source/destination endpoint, cluster) in the headers.

Resources