Съдържание:

Таблет/телефон като екран на Arduino и осцилоскоп за $ 2: 4 стъпки
Таблет/телефон като екран на Arduino и осцилоскоп за $ 2: 4 стъпки

Видео: Таблет/телефон като екран на Arduino и осцилоскоп за $ 2: 4 стъпки

Видео: Таблет/телефон като екран на Arduino и осцилоскоп за $ 2: 4 стъпки
Видео: #15 HC 05 Bluetooth Modbus Android HMI | Внешний ПЛК Arduino 2024, Юли
Anonim
Таблет/телефон като екран на Arduino и осцилоскоп за $ 2
Таблет/телефон като екран на Arduino и осцилоскоп за $ 2
Таблет/телефон като екран на Arduino и осцилоскоп за $ 2
Таблет/телефон като екран на Arduino и осцилоскоп за $ 2
Таблет/телефон като екран на Arduino и осцилоскоп за $ 2
Таблет/телефон като екран на Arduino и осцилоскоп за $ 2

Докато човек може да си купи евтин сензорен екран с размери 320x240 за проект, базиран на Arduino, може да бъде по-удобно-особено за прототипиране и тестване на скица-да се използва таблет или телефон като сензорен екран и източник на захранване за проект. Можете да имате много по-висока разделителна способност и по-добре изглеждащ дисплей на вашето устройство с Android (например, всичките ви линии ще бъдат с псевдоним).

Екранът, базиран на Android, може да бъде свързан чрез USB Serial, Bluetooth или WiFi (например ESP8266).

За тази цел написах VectorDisplay (източник тук), приложение за Android, което се свързва с библиотека Arduino, която реализира голяма подмножество от интерфейса Adafruit GFX. Можете да напишете код, който след това може лесно да бъде пренесен, за да използвате самостоятелен екран, или да продължите да използвате скицата с дисплей, базиран на Android. И можете да изпращате команди от приложението за Android, за да контролирате скицата на Arduino. Библиотеката Arduino е до голяма степен независима от платката: тя трябва да работи с всяка платка, която осигурява обект на USB сериен порт, наречен Serial, или с ESP8266 през WiFi или с Bluetooth (първо сдвоете дъската си).

Като доказателство за прилагането на концепцията, пренесох проекта STM32-O-Scope с голи кости, за да използвам VectorDisplay вместо дисплея ILI9341. Резултатът е (груб по ръбовете) преносим, захранван с батерии осмилоскоп от 1.7MS/s, който не изисква нищо повече от платка STM32F103C за $ 2 (използвайки ядрото Arduino на базата на libmaple), два проводника, USB OTG кабел и устройство с Android. Разбира се, всичко, което получавате с това, е диапазон от 0 до около 3.3V.

Стъпка 1: Инсталирайте софтуер

Предполагам, че сте настроили Arduino IDE за любимата си платка и че любимата ви платка има USB сериен интерфейс.

Отидете на Sketch | Включване на библиотека | Управление на библиотеки. Поставете "VectorDisplay" в областта за търсене и щракнете върху "Install", след като бъде намерен.

Изтеглете библиотечния цип от тук.

Разархивирайте в папка във вашата папка Arduino/библиотеки.

Изтеглете VectorDisplay от Google Play и го инсталирайте на устройството си с Android. Може да се наложи да активирате инсталирането от неизвестни източници на устройството си с Android. Приложението за Android използва библиотеката UsbSerial и отправната точка беше едно от примерните приложения за библиотеката.

Стъпка 2: Демо скица

Демо скица
Демо скица
Демо скица
Демо скица
Демо скица
Демо скица
Демо скица
Демо скица

Свържете дъската си (в режим на качване, ако е необходимо) към компютъра си и отидете на Файл | Примери | VectorDisplay | кръгове във вашата Arduino IDE. Кликнете върху бутона за качване (стрелка надясно).

Стартирайте приложението VectorDisplay на устройството си с Android. Включете дъската в устройството с Android чрез USB OTG кабел. (Ако вашата платка има USB микро порт, уверете се, че страната на хоста на USB OTG отива към устройството с Android). Сега трябва да получите заявка за разрешение за VectorDisplay. Натиснете OK.

Ако всичко върви добре, VectorDisplay вече ще показва два бутона от лявата страна на екрана: кръг и цвят. Натискането на кръг изчертава произволен кръг на екрана и Цветът променя цвета на произволен цвят преди следващия кръг.

Ако погледнете скицата на кръговете в IDE, ще видите, че серийният векторен дисплей е деклариран с:

Дисплей SerialDisplayClass;

и след това инициализиран в setup () с:

Display.begin ();

След това командните бутони се искат с Display.addButton (). След това loop () извиква Display.readMessage (), за да търси команди, изпратени чрез командните бутони.

По подразбиране координатната система за дисплея е 240x320. Линиите и текстът обаче са изчертани с помощта на пълната разделителна способност на екрана на вашето устройство с Android, с антиалиасинг за добър външен вид. Ето защо приложението се нарича Vector Display.

Стъпка 3: API

API в библиотеката е във файла VectorDisplay.h. Първо трябва да инициализирате Display обект. За използване чрез USB направете това с:

Дисплей SerialDisplayClass;

Инициализирайте връзката с Display.begin ().

В обекта SerialDisplayClass са налични два набора методи: един набор използва 32-битов цвят (включително алфа) и команди, които са доста близки до USB серийния протокол, който използва моето приложение VectorDisplay, а другият набор е подмножество на стандарта Методи на библиотеката Adafruit GFX, използващи 16-битов цвят. В по-голямата си част можете свободно да смесвате двата набора от команди, с изключение на това, че ако използвате съвместими с Adafruit методи, трябва да използвате 16-битовите цветни команди, чиито имена завършват с 565 вместо 32-битовите.

Можете да зададете координатната система с Display.coordinates (ширина, височина). По подразбиране е ширина = 240 и височина = 320. Ако искате да емулирате дисплей с не квадратни пиксели, можете да използвате Display.pixelAspectRatio (съотношение).

Някои от методите, включително pixelAspectRatio (), вземат аргумент FixedPoint32. Това е 32-битово цяло число, представляващо число с плаваща запетая, където 65536 представлява 1.0. За да преобразувате число с плаваща запетая x в FixedPoint32, направете: (FixedPoint32) (65536. * X) (или просто TO_FP32 (x)).

Освен че могат да изпращат команди от бутоните на Android, събития с докосване на екрана се изпращат и до MCU.

За използване на WiFi вижте примера на circu_esp8266. Ще трябва да натиснете бутона USB в приложението, за да превключите в режим WiFi.

За Bluetooth трябва да можете да правите:

Дисплей SerialDisplayClass (MyBluetoothSerial);

… MyBluetoothSerial.begin (115200); Display.begin ();

и след това продължете точно както в USB серийния калъф, където MyBluetoothSerial е какъвто и да е Stream обект (например Serial2), свързан към вашия Bluetooth адаптер.

Стъпка 4: Осцилоскоп за $ 2

Осцилоскоп за 2 долара
Осцилоскоп за 2 долара
Осцилоскоп за 2 долара
Осцилоскоп за 2 долара
Осцилоскоп за 2 долара
Осцилоскоп за 2 долара

За бързия и мръсен осцилоскоп ще ви трябва синьо или черно (по -лесно за справяне) хапче STM32F103C8 хапче, което можете да получите на Aliexpress за под 2 долара. Описвам как да подготвим дъската за използване със средата Arduino за нея и да инсталирам скици тук.

Изтеглете тази скица на дъската, която е модифицирана версия на скицата STM32-O-Scope на Pingumacpenguin. Редактирайте реда #define BOARD_LED, така че да съответства на вашата дъска. Използвам черно хапче, чийто светодиод е PB12. Сините хапчета (и някои черни хапчета, които имат същия извод като синьото хапче) имат LED на PC13.

Свържете един проводник-заземяваща сонда-към земята на платката, а друг проводник към щифта B0 на платката. Включете дъската в устройство с Android с работещ VectorDisplay и имате преносим осцилоскоп, захранван от батерии.

На снимката имам осцилоскоп, закачен към фототранзистор. Следата на екрана е от телевизионно инфрачервено дистанционно управление.

Препоръчано: