เข้าออฟฟิสวันนี้ได้พัสดุมาอีกล้อตตึง เปิดออกมามีทั้ง Relay Module ที่ลงบอร์ดเรียบร้อยไว้ต่อกับ Wemos D1 mini , บอร์ด ATtiny85 และบอร์ดสุดท้าย STM32 ตอนแรกก็ว่าจะเก็บลงกระป๋องแล้วค่อยหาเวลามาเล่น วันนี้ลงไปกินข้าวตอน 11.30 ไม่ทัน เพราะลงเที่ยงทีไรคนเยอะทุกที
ว่าแล้วก็หยิบมาลองซะหน่อย กะว่าจะลอง STM32 ก่อน อ้าววว ขายังไม่ได้บัดกรีลงบอร์ด Serial to USB ก็อยู่ที่บ้าน ส่วนที่ไม่ได้ซื้อ ST Link มาตั้งแต่แรกเลยก็เพราะอ่านเจอว่าค่อนข้างมีปัญหากับเครื่อง mac วันนี้ก็เลยข้าม STM32 ไปก่อนละกัน มาเล่นน้องเล็กบอร์ดจิ๋วอย่าง ATtiny85 กันดีกว่า
อย่างที่เห็นกันในรูปแหละครับ เล็กมากกก ตอนจับเสียบเข้า usb port ของเครื่องยังกลัวทำหักเลยครับ เทียบขนาดกับอุปกรณ์ตัวอื่นๆแล้ว มาดู Spec กันซะหน่อย
- Support for the Arduino IDE 1.0+ (OSX/Win/Linux)
- Power via USB or External S
- ource – 5v or 7-35v (12v or less recommended, automatic selection)
- On-board 500ma 5V Regulator
- Built-in USB
- 6 I/O Pins (2 are used for USB only if your program actively communicates over USB, otherwise you can use all 6 even if you are programming via USB)
- 8k Flash Memory (about 6k after bootloader)
- I2C and SPI (vis USI)
- PWM on 3 pins (more possible with Software PWM)
- ADC on 4 pins
- Power LED and Test/Status LED
เรียกได้ว่าจิ๋วแต่แจ๋วเหมือนกันนะเนี่ย สำหรับงานที่ไม่ต้องใช้ i/o มากๆ ไม่จำเป็นต้องใช้ WiFi และอยากได้ mcu ขนาดเล็กมี usb ในตัว (แต่ถ้าต้องการ WiFi และใช้ i/o ไม่เกิน 2 Port ก็ใช้ ESP-01 แทน)
คราวนี้เราจะมาเริ่มต้นการใช้งานกันละ เริ่มแรกก็ Add Board กันก่อน ซึ่งตัว IDE ที่ใช้ในการพัฒนาก็เป็น Arduino IDE เหมือนเดิมครับ โดยเข้าไปที่ Arduino Preference แล้วแปะ URL ด้านล่างนี้เพิ่มเข้าไปในส่วนของ Additional Boards Manager URLs ครับ ใครที่มีใส่บอร์ดอื่นอยู่ก่อนหน้าก็ใส่ , (comma) กั้นระหว่าง URL ได้ครับ
http://digistump.com/package_digistump_index.json
จากนั้นก็เข้าไปที่ Tools –> Board –> Boards Manager แล้ว Search คำว่า Digispark จากนั้นก็ทำการ Install เหมือนปกติที่เรา Add Board อื่นๆเข้ามาครับ
เมื่อติดตั้งเสร็จเรียบร้อยแล้วก็พร้อมทดลองโค้ดแรกของการใช้งาน Digispark ATtiny85 กันเลย ซึ่งถ้าเป็นการเขียนโปรแกรมอื่นๆ เรามักจะเริ่มต้นด้วย Hello World แต่ถ้าเป็นการเขียนโปรแกรมเกี่ยวกับ Microcontroller แล้วหละก็ Code แรกที่เรามักจะใช้ทดลองเลยว่าบอร์ดทำงานมั้ย memory หรือ i/o มีปัญหามั้ยก็คือทำไฟกระพริบครับ เรามาดูตัว Code กัน
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(0, OUTPUT); //LED on Model B
pinMode(1, OUTPUT); //LED on Model A
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(0, HIGH); // turn the LED on (HIGH is the voltage level)
digitalWrite(1, HIGH);
delay(1000); // wait for a second
digitalWrite(0, LOW); // turn the LED off by making the voltage LOW
digitalWrite(1, LOW);
delay(1000); // wait for a second
}
Digispark ATtiny85 ที่กระจายกันอยู่ในตลาดมีทั้ง Model A และ Model B ซึ่งขาที่ต่อกับ LED บนบอร์ดจะอยู่ต่างกัน ที่ผมได้มาเป็น Model A คราวนี้เราลองมา Compile แล้ว Upload Code กัน ใน Arduino IDE อย่าลืมเลือกบอร์ดให้ถูกด้วยนครับ ซึ่งใช้เป็น Digispark – Default 16.5MHz
ขั้นตอนในการ Upload อาจจะต่างจากบอร์ดอื่นๆอยู่นิดนึงตรงที่ เมื่อกด Upload แล้วเราค่อยนำบอร์ดของเราเสียบเข้าไปที่ช่อง USB แทนที่จะเสียบคาไว้แต่แรก ใครที่เสียบค้างอยู่ก็ดึงออกเสียบใหม่ครับ บางครั้งต้องเปลี่ยน port ก็มี ซึ่งถ้า Upload เสร็จก็จะขึ้น 100% Complete อย่างรูปด้านบนนี้
เรียบร้อยกับโปรแกรมแรกไฟกระพริบโดยใช้ ATtiny85 ประเด็นแรกที่เจอเลยคือเรื่องของการ debug การทำงานต่างๆ จะไม่เหมือนกับ Arduino หรือ Nodemcu ที่ต่อผ่าน Serial to USB เพื่อใช้ส่งค่าสถานะการทำงานต่างๆแล้วดูผ่าน Serial Monitor ของ Arduino IDE ถ้าโปรแกรมมีการทำงานที่ซับซ้อนขึ้นแล้วต้องการอ่านค่าที่ได้ อาจจะต้องใช้ Software Serial ช่วยในการส่งค่าย้อนกลับมา แล้วมาอ่านค่าจากอีก port แทน ไว้ทดลองแล้วเด่วค่อยมา update กันอีกที วันนี้พอแค่นี้ก่อนละกันครับ
ข้อมูลเพิ่มเติม [Digispark USB Development Board]
ขอบคุณครับ