What is the code in Arduino Wi-Fi Shield? - wifi

I want to learn Wi-Fi for embedded devices, and I come across the Arduino Wi-Fi shield. I know the shield need to connect with a basic Arduino board such as Arduino Uno. There is an Atmel UC3A MCU on the Wi-Fi shield, and there is a ATmega328 on the Uno. I downloaded the Wi-Fi Shield Library, there are some example codes. Yet, I found that the code in the examples are only for the Arduino Uno board.
For example, to connect to a Wi-Fi network, it just sends a command by SPI out, such as SpiDrv::sendCmd(SET_NET_CMD, PARAM_NUMS_1);. I think the UC3A on the Wi-Fi shield board is responsible to receive this message and do something with the Wi-Fi chip HDG104.
In fact, to learn implementing Wi-Fi I think an important part is to learn how the UC3A works with the Wi-Fi chip. Hence where can I get example code which was written for the Wi-Fi shield MCU?
Also, if I want to build the hardware myself, can I just using the UC3A MCU only? UC3A is a powerful MCU, but I worry it will be too busy.

you can find everything on the official github repository!
here the link to the official binary and source code of the official WiFi Shield firmware! you can also find arduino's library, everything has been uploaded just 13 days ago
enjoy
https://github.com/arduino/wifishield/tree/master/firmware

Related

How to broadcast to multiple iOS devices via BLE from a non-iOS device?

I am currently trying to broadcast a message to multiple iOS/Android devices from an Arduino Mega (with HM10 module) or alternatively from a Raspberry Pi Zero W.
What I've learned so far:
BLE only supports one connection at a time
iOS does not support classic Bluetooth unless MFI certified (not an option)
iOS does not support Wi-Fi direct (would solve the multi-connect problem)
Using BLE advertisements would be an option but HM10 apparently does not support advertisements over 1 byte long (need approx. 20)
Also looked into creating a WPAN from the Pi (host) because apparently there is a way (which I have not yet found) to get this to work with iOS devices
There is a straightforward library for ESP32 (GitHub Repo), does anyone have experience with that?
So, in short: BLE only connects to one device, except for advertisements which are limited on HM10 and insanely complicated on the Raspberry Pi; Wi-Fi direct is not supported by iOS
The question: Has anyone solved this problem so far? If no, are there any suggestions on what could help?
Edit: #Emil's comment got me thinking about turning the Arduino/Pi into the client and thr phonrs into slaves. This would mean that multiple phones could connect. The only problem: how do phones 'actively' connect when they are in the peripheral role?
Thanks for your help in advance.

ASCII code on an external device through USB port

Is it possible to send an ASCII code on an external device through USB port using IOS API? I assume that it is possible through bluetooth connection, but I'm not sure through USB connector. Any thoughts?
I would appreciate if someone could put me in the right direction.
Thanking you in advance
That largely depends on the level of sophistication of this "external device". If this external device is just a bare metal embedded device without some sort of operating system you definitely need MFI.
Otherwise, you can run a usbmuxd server (e.g. on Raspberry PI with Linux) to establish a connection via USB. Usbmuxd is basically the technology that Apple uses to communicate between iOS devices and Desktop apps such as iTunes or Xcode. And yes, it is App Store compliant, e.g., Duet Display uses this approach to make an iPad a secondary display for your Desktop via USB.
There are several open source libraries that provide a high level API, e.g., PeerTalk or DarkLightning.

Bluetooth Shield V2.2 for arduino

I recently bought a bluetooth shield for my arduino. I am going to make an iOS app that will control the servos that I will be connecting to the arduino.
I feel stupid asking this because it is hard to find but where do I find the UUID for the bluetooth shield. I need to be able to talk to the arduino through the bluetooth shield? It must be easy because it is hard to find but I may be overthinking it.
Where do I find the UUID for a Bluetooth Shield for an arduino?
1) Try to "scan" available Arduino board with BLE Shield - for example here is an existing iOS app https://itunes.apple.com/us/app/ble-arduino/id547628998?mt=8
2) check your device's documentations
3) try those UUID's https://github.com/michaelkroll/BLE-Shield/blob/master/firmware/BLE-Shield-v2.0.0/BLE-Shield_gatt.xml

How does this iOS app communicate over the USB port?

This app promises to turn your iOS device into a second monitor and uses the standard USB cable to connect to the computer, as opposed to the network which all other similar apps use.
Back when I heard about it, it wasn't yet available so I thought it was a scam. To my surprise, they released the app and it actually works as described.
How does it work ? As far as I know there are no APIs to drive the USB port in iOS, and the computer connected via USB through the standard charging/syncing cable doesn't count as an MFI accessory.
Note that they provide the server software (the one that installs on the Mac and streams the desktop to the device) on their download page for free, reverse-engineering it could shed some light on this but I unfortunately don't have the skills for that.
Dean told about it on his blog.
Duet uses Peertalk, an open source library allowing to pass TCP connections through the USB connection without being part of the MFI program.
The information, code and tools to accomplish generic USB port communication is available to those who join the Apple MFi program. You have to do the paperwork and get licensed by Apple.
http://developer.apple.com/programs/mfi/
The libraries necessary are included in the app and then the usual streaming libraries and code do the rest.

Serial or HID (usb) Communication in iOS (iPhone/iPad)

I want to get data from glucose meter devices by connecting into iPhone or iPad devices. I have different vendors glucose meters some uses simple HID interface for communicate and other uses serial communication.
These are the two possible ways of communication:
USB to 30-Pin connector.
3.5 jack to 30-Pin Connector.
USB or 3.5 jack will be connected to glucose meter and 30 pin connector will be attached with iDevice.
After having hours of research I did not find much help on internet for iOS specific.
I do find ORSSerialPort but I think it is for OS X apps only.
There is RedPark serial Cable but that is for RS232 to 30-Pin communication and secondly that can be only used in internal projects. I want to sell my application on Apple Store.
Someone also was discussing about using IOKit framework. We can communicate with iDevie but that is private framework.
Someone help me with this issue or let me know if that is even possible in iOS application.
Do Apple have any consideration on this type of working?
An iOS device can talk to external devices by following means of communications only:
Wifi
Bluetooth
GPRS &
GSM
USB (Don't exactly know what it is called)
There is no possible way to have RS232 serial port communication with iOS device.
Now What are the options left then?
Get a communication convertor in between your external device & iOS device. It can be
Serial to ethernet adapter
serial to USB adapter etc.
Embedd a wifi/bluetooth module in the external device (If it is being manufactured by you/your firm)
Have something with USB cable & mfi .(Never worked on this, but have seen stuff working with this). By something I meant, register your external device under MFI license & implement USB between devices (Again lack of clarity about USB stuff). Menwhile, I would appreciate edits on my answer by people who might improve it with USB stuff.
Update:
I visited the site of your vendor "glooko". I could not find any clue about them having any libraries for developers. So according to my opinion, they have kept their library private. They don't want you to develop apps based on their communication protocol. If you still need to develop apps for them, contact them here & let them know about your zeal.. M sure they will give you their private code. Anyhow, you don't need to register for any MFI or anything now. What you need is just the code they are using for communication & about that, nobody other than them can help you. So, all the best .. :)
Update 2:
What I understood from your updated question is, you want to create an iOS application that works with various Glucose meters, from different vendors. In a way you can call it as "universal Glucose meter app"
The short and straight answer for this is .."You Can't" . But wait, apple is not responsible for this. Neither it is impossible.
Let me tell you why. When you want your application to talk with a hardware device, there must be a communication channel between you too. You are well aware of those two options available. now, if your app must run on iDevices, the communication channel cables must be registered for mfi. Here that is also not the issue.
What is the issue then?
Different vendons don't generally follow the same communication protocols between their hardware & softwares. What happens if a german commander commands to indian soldier. Obviously, nobody will understand.
So, to achieve your objective, the only way is, you have to include SDK provided by each supported vendors in your app. Let me know if you are not yet clear..:)
There is a device called Lightning Serial Cable, the link is following.Take a look at their SDK.
http://redpark.com/lightning-serial-cable-l2-db9v/
It seems work with your application. I'm also looking for the solution that iOS device can talk to another device via serial port. In PC world, all PC has USB ports, so there is large amount of USB to serial port devices and vendors, such as FTDI and Prolific. I don't know if similar situation happens in iOS world.
Unless you join the Made For iPhone program you can not directly connect anything to an iOS device unless you use Bluetooth or TCP/IP.

Resources